1. 拿到板子在,做工很好,属于GX系列,GX应该是高速收发器

2. 去探究下GX是什么用途,大约有6个型号,这个板子是5CGXFX5,有77 LE逻辑单元,这个收发器不知道是什么?6个 3.125G Transceivers收发器。

3. 进去下载的资料发现有个ADC的例程,打算研究下ADC的例程

4. 这个板子有个配套的上位机ControlPanel软件,猜测是通过电脑的下载接口USB Blaser给板子下发指令,让板子去执行相应的操作。这个软件的操作就不说了。参考C5G_User_Manual.pdf第二章

5. 正式开始ADC的学习,板子试用ADC是LTC2308,看下它的介绍,8通道,12位的ADC,SPI接口

The LTC2308 is a low noise, 500ksps, 8-channel, 12-bit ADC with an SPI/MICROWIRE compatible serial interface. The internal conversion clock allows the external serial output data clock (SCK) to operate at any frequency up to 40MHz.

6. 看下接口图,正板子上有Arduino的接口

7. 看下原理图,U17,FPGA的电平难道是1.2V的?74AVC4T774电平转换,LTC2308和FPGA有4根线,标准的SPI接口

8. 通信的时序图

9. 打开工程看一下,本次还是用NIOS系统

 module C5G_ADC(

     //////////// CLOCK //////////
CLOCK_125_p,
CLOCK_50_B5B,
CLOCK_50_B6A,
CLOCK_50_B7A,
CLOCK_50_B8A, //////////// LED //////////
LEDG,
LEDR, //////////// KEY //////////
CPU_RESET_n,
KEY, //////////// SW //////////
SW, //////////// ADC SPI //////////
ADC_CONVST,
ADC_SCK,
ADC_SDI,
ADC_SDO, //////////// GPIO, GPIO connect to GPIO Default //////////
GPIO
);
input CLOCK_125_p;
input CLOCK_50_B5B;
input CLOCK_50_B6A;
input CLOCK_50_B7A;
input CLOCK_50_B8A; //////////// LED //////////
output [:] LEDG;
output [:] LEDR; //////////// KEY //////////
input CPU_RESET_n;
input [:] KEY; //////////// SW //////////
input [:] SW; //////////// ADC SPI //////////
output ADC_CONVST;
output ADC_SCK;
output ADC_SDI;
input ADC_SDO;
//////////// GPIO, GPIO connect to GPIO Default //////////
inout [:] GPIO; wire ADC_SCK_DELAY;
C5G_QSYS u0 (
.clk_clk (CLOCK_50_B5B), // clk.clk
.reset_reset_n (CPU_RESET_n), // reset.reset_n
.sw_external_connection_export (SW), // sw_external_connection.export
.adc_ltc2308_conduit_end_CONVST (ADC_CONVST), // adc_ltc2308_conduit_end.CONVST
.adc_ltc2308_conduit_end_SCK (ADC_SCK), // .SCK
.adc_ltc2308_conduit_end_SDI (ADC_SDI), // .SDI
.adc_ltc2308_conduit_end_SDO (ADC_SDO), // .SDO
.adc_ltc2308_conduit_end_SCK_DELAY (ADC_SCK_DELAY) // .SCK_DELAY
);
assign GPIO[] = ADC_SCK;
assign GPIO[] = ADC_SCK_DELAY;
assign GPIO[] = ADC_SDI;
assign GPIO[] = ADC_SDO;
signaltap_pll u_sig_pll(
.refclk(CLOCK_50_B7A), // refclk.clk
.rst('b0), // reset.reset
.outclk_0(), // 200MHz for signaltap sample clock.
.locked() // locked.export
);
endmodule

10. 不明白上面的GPIO是什么用途?

11. 搞完这些,需要用C语言去开发上层了,估计要用到EDS软件。

12. NIOS II EDS是用来搞NIOS软核处理器的开发软件,是Quartus自带的软件。还有个SOC EDS软件,是搞Cyclone V系列,带ARM内核的,需要另外安装

13. 打开NIOS II EDS软件,选择工作空间的时候,选择E:\FPGA\cyclone_v_gx\Demonstrations\C5G_ADC\software,这个路径,直接就添加了工程,有2个工程,一个是库BSP,类似于底层的。一个是我们自己写的工程,其中HAL库这个很重要,包括了很多需要用到的库函数。

14. 研究下mian.c代码

 #include <stdio.h>
#include <io.h>
#include <unistd.h> #include "system.h" void main(void){
int ch = ;
const int nReadNum = ; // max 1024
int i, Value, nIndex=; printf("ADC Demo\r\n");
while(){
ch = IORD(SW_BASE, 0x00) & 0x0F; printf("======================= %d, ch=%d\r\n", nIndex++, ch);
// set measure number for ADC convert
IOWR(ADC_LTC2308_BASE, 0x01, nReadNum); // start measure
IOWR(ADC_LTC2308_BASE, 0x00, (ch << ) | 0x00);
IOWR(ADC_LTC2308_BASE, 0x00, (ch << ) | 0x01);
IOWR(ADC_LTC2308_BASE, 0x00, (ch << ) | 0x00);
usleep(); // wait measure done
while ((IORD(ADC_LTC2308_BASE,0x00) & 0x01) == 0x00); // read adc value
for(i=;i<nReadNum;i++){
Value = IORD(ADC_LTC2308_BASE, 0x01);
printf("CH%d=%.3fV (0x%04x)\r\n", ch, (float)Value/1000.0, Value);
} usleep(*);
} // while
}

15. 先下载FPGA工程,插上USB线,USB BLASTER接口,驱动正确识别。拨码开关SW11到RUN模式。

16. 编程EDS下载测试。需要修改环境变量,和包含的头文件路径,编译工程。

17. 下载运行,先点菜单栏的RUM -> RUN configuration,选择目标连接Target Connection,点击Refresh刷新一下,看到板子,然后点击Run按钮。

18. 看到Nios II Console有输出

19. 这次剩下的疑问,ADC_LTC2308_BASE这个地址的寄存器是什么样子的?在C语言实现的原理是什么?

比如下面的代码,设置ADC的测量精度,0x01代表什么?如果是寄存器,那么每个寄存器的位的说明文档在哪里?如果不是寄存器,那是什么?

 // set measure number for ADC convert
IOWR(ADC_LTC2308_BASE, 0x01, nReadNum);

友晶Altera Cyclone V GX Starter Kit开发板使用ADC-第一篇的更多相关文章

  1. Microsoft IoT Starter Kit 开发初体验-反馈控制与数据存储

    在上一篇文章<Microsoft IoT Starter Kit 开发初体验>中,讲述了微软中国发布的Microsoft IoT Starter Kit所包含的硬件介绍.开发环境搭建.硬件 ...

  2. Microsoft IoT Starter Kit 开发初体验

    1. 引子 今年6月底,在上海举办的中国国际物联网大会上,微软中国面向中国物联网社区推出了Microsoft IoT Starter Kit ,并且免费开放1000套的申请.申请地址为:http:// ...

  3. 介绍使用Cordova和Web Starter Kit开发Android

    介绍 如今,每个人都想制作移动应用程序,为什么不呢?世界上有更多的移动设备比任何其他用户设备.Android尤其流行,但是为什么不从一个众所周知的跨平台应用的基础开始呢?Android的开发显然比其他 ...

  4. Microsoft IoT Starter Kit

    Microsoft IoT Starter Kit 开发初体验 1. 引子 今年6月底,在上海举办的中国国际物联网大会上,微软中国面向中国物联网社区推出了Microsoft IoT Starter K ...

  5. 转-友晶Sdram_Control_4Port的全页操作Bug?

    http://www.cnblogs.com/edaplayer/p/3678897.html 以前在学校初学fpga的时候碰到sdram就搞不定了,现在突然发现网上有好多现成的代码,友晶的,alte ...

  6. 首先看一下友晶DE-SOC开发板的user manual

    对于友晶DE-SOC系列开发板来说,由于其内部自带ARM 的cortex-A9硬核,所以使用nios II开发来说其实是不划算的,但是这里重点是为了学习NIOS II的开发,所以对于用DS-5来开发A ...

  7. Window 64bit环境搭建Web Starter Kit

    最近在学习https://developers.google.com/web/fundamentals/这里的内容,其中就有一部分是安装Web Starter Kit的教程,我总结一下自己的安装过程. ...

  8. asp.net的3个经典范例(ASP.NET Starter Kit ,Duwamish,NET Pet Shop)学习资料

    asp.net的3个经典范例(ASP.NET Starter Kit ,Duwamish,NET Pet Shop)学习资料 NET Pet Shop .NET Pet Shop是一个电子商务的实例, ...

  9. React Starter Kit 中文文档

    最近没事又翻译了个玩意. Github上的一个Star 非常高的 React 样板程序. 由Node.js,Express,GraphQL和React构建,可选加入Redux等,并可以包含Webpac ...

随机推荐

  1. Centos7 搭建jupyter远程服务器

    前提:已经安装好jupyter 和Ipython,个人安装anaconda自带jupyter和Ipython 步骤1:生成配置文件: jupyter notebook --generate-confi ...

  2. [19/03/27-星期三] 容器_Iterator(迭代器)之遍历容器元素(List/Set/Map)&Collections工具类

    一.概念 迭代器为我们提供了统一的遍历容器的方式 /* *迭代器遍历 * */ package cn.sxt.collection; import java.security.KeyStore.Ent ...

  3. 大数据-图表插件-echarts 样式修改(迭代)

    修改折线图大小   myChart.setOption({             title:{                     text:"价格指数"          ...

  4. python2.7 安装Django

    目前Django最新版是2.0,不支持Python2,在使用pip 安装的时候会报错,pip默认安装的是最新的稳定版本 使用pip指定安装的版本:pip install django==1.11.4 ...

  5. Servlet是线程安全的吗

    Servlet默认是单例模式,在web容器中只创建一个实例,所以多个线程同时访问Servlet是不安全的. 解决此类问题的办法是: 只要Servlet实现 SingleThreadModel 接口

  6. 十一、IntelliJ IDEA 中的版本控制介绍(上)

    咱们已经了解了很多关于 IntelliJ IDEA 的使用方法,至少可以独立的运用 IntelliJ IDEA 进行项目开发啦!但是一个人进行项目开发更趋向于理想化,更多的则是团队协同开发.这时,咱们 ...

  7. 删除oracle实例

    1.在开始菜单中,点击ORAHOME目录下的"Configuration and Migration Tools"下的"Database Configuration As ...

  8. maven下载依赖jar包失败处理方法--下载jar包到本地并安装到maven仓库中

    所有maven依赖jar包地址:https://repo1.maven.org/maven2/org/apache/ 1. 安装jar包失败报错: The following artifacts co ...

  9. oracle整理

    1.安装oracle数据库2.创建数据库实例(可选)3.创建用户.角色.授权(可选) 查询数据库名:select name,dbid from v$database;查询实例名 :select ins ...

  10. 『ACM C++』 Codeforces | 1003C - Intense Heat

    今日兴趣新闻: NASA 研制最强推进器,加速度可达每秒 40 公里,飞火星全靠它 链接:https://mbd.baidu.com/newspage/data/landingsuper?contex ...