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. Codeforces Round #533 (Div. 2) B. Zuhair and Strings 【模拟】

    传送门:http://codeforces.com/contest/1105/problem/B B. Zuhair and Strings time limit per test 1 second ...

  2. xampp安装及使用时的问题总结

    本文主要介绍易错点,具体安装过程可参考链接1 1.首先要以管理员身份运行,否则报错. 2.如果你的网站首页名字不是index,那么你在访问的时候就必须输入你首页的全称. 3.htdocs就是网站的根目 ...

  3. PAT——1013. 数素数

    令Pi表示第i个素数.现任给两个正整数M <= N <= 104,请输出PM到PN的所有素数. 输入格式: 输入在一行中给出M和N,其间以空格分隔. 输出格式: 输出从PM到PN的所有素数 ...

  4. 【题解】洛谷P3435 [POI2006] OKR-Periods of Words(KMP)

    洛谷P3435:https://www.luogu.org/problemnew/show/P3435 思路 来自Kamijoulndex大佬的解释 先把题面转成人话: 对于给定串的每个前缀i,求最长 ...

  5. 一点一点看JDK源码(三)java.util.ArrayList 前偏

    一点一点看JDK源码(三)java.util.ArrayList liuyuhang原创,未经允许禁止转载 本文举例使用的是JDK8的API 目录:一点一点看JDK源码(〇) 1.综述 ArrayLi ...

  6. Jmeter的实例应用

    目标: 获取城市的天气数据: 第一步: 发送request 获取城市的城市代号http://toy1.weather.com.cn/search?cityname=上海 从这个请求的response ...

  7. react-router-dom和本地服务本地开发 (node、webpack)

    场景 使用react 做开发,避免会使用react-router React Router 已经是V4的版本 React Router 目前已经被划分成了三个包:react-router,react- ...

  8. 用JQ实现的一个简单轮播

    <!DOCTYPE html><html><head> <meta charset="utf-8"> <title>lb ...

  9. 网页股票期货历史数据(API)

    //[和讯数据] //大商所DCE.郑商所CZCE.上期所SHFE3.中金所CFFEX //期货1分钟线http://webftcn.hermes.hexun.com/ ... I1709&d ...

  10. PHP中如何对二维数组按某个键值进行排序

    $arr=[     array(         'name'=>'张三',         'age'=>28     ),     array(         'name'=> ...