友晶Altera Cyclone V GX Starter Kit开发板使用ADC-第一篇
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-第一篇的更多相关文章
- Microsoft IoT Starter Kit 开发初体验-反馈控制与数据存储
在上一篇文章<Microsoft IoT Starter Kit 开发初体验>中,讲述了微软中国发布的Microsoft IoT Starter Kit所包含的硬件介绍.开发环境搭建.硬件 ...
- Microsoft IoT Starter Kit 开发初体验
1. 引子 今年6月底,在上海举办的中国国际物联网大会上,微软中国面向中国物联网社区推出了Microsoft IoT Starter Kit ,并且免费开放1000套的申请.申请地址为:http:// ...
- 介绍使用Cordova和Web Starter Kit开发Android
介绍 如今,每个人都想制作移动应用程序,为什么不呢?世界上有更多的移动设备比任何其他用户设备.Android尤其流行,但是为什么不从一个众所周知的跨平台应用的基础开始呢?Android的开发显然比其他 ...
- Microsoft IoT Starter Kit
Microsoft IoT Starter Kit 开发初体验 1. 引子 今年6月底,在上海举办的中国国际物联网大会上,微软中国面向中国物联网社区推出了Microsoft IoT Starter K ...
- 转-友晶Sdram_Control_4Port的全页操作Bug?
http://www.cnblogs.com/edaplayer/p/3678897.html 以前在学校初学fpga的时候碰到sdram就搞不定了,现在突然发现网上有好多现成的代码,友晶的,alte ...
- 首先看一下友晶DE-SOC开发板的user manual
对于友晶DE-SOC系列开发板来说,由于其内部自带ARM 的cortex-A9硬核,所以使用nios II开发来说其实是不划算的,但是这里重点是为了学习NIOS II的开发,所以对于用DS-5来开发A ...
- Window 64bit环境搭建Web Starter Kit
最近在学习https://developers.google.com/web/fundamentals/这里的内容,其中就有一部分是安装Web Starter Kit的教程,我总结一下自己的安装过程. ...
- 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是一个电子商务的实例, ...
- React Starter Kit 中文文档
最近没事又翻译了个玩意. Github上的一个Star 非常高的 React 样板程序. 由Node.js,Express,GraphQL和React构建,可选加入Redux等,并可以包含Webpac ...
随机推荐
- Struts2与Hibernate联合开发步骤
hibernate与struts2的联合开发步骤: 1. 建立web工程 2. 加入jar包,struts2.hibernate.数据库连接的包 3. 数据表和bean之间的映射,以及相应的映射文件* ...
- BZOJ1009:[HNOI2008]GT考试(AC自动机,矩乘DP)
Description 阿申准备报名参加GT考试,准考证号为N位数X1X2....Xn(0<=Xi<=9),他不希望准考证号上出现不吉利的数字. 他的不吉利数学A1A2...Am(0< ...
- STL - next_permutation 全排列函数
学习: http://blog.sina.com.cn/s/blog_9f7ea4390101101u.html http://blog.csdn.net/ac_gibson/article/deta ...
- Linux 学习总结(五)-linux 文件系统及相关命令
一 linux文件系统概要 linux系统结构有别用于windos,他是树状结构的文件系统,在linux下我们称一切皆文件,我们将一个目录,可以成称为目录文件.linux只有一个单独的顶级目录结构.所 ...
- 2019.1.7 Mac的Vscode插件总结
Vscode插件 通用插件 Chinese 配置中文界面 HTML Snippets H5代码片段以及提示 HTML CSS Support 让 html 标签上写class 智能提示当前项目所支持的 ...
- 富文本使用之wangEditor3
一.介绍: wangEditor —— 轻量级 web 富文本编辑器,配置方便,使用简单.支持 IE10+ 浏览器. 二.使用方式: 直接下载:https://github.com/wangfupen ...
- form表单上传文件
一.formData()直接获取form表单数据 例子:获取form表单的id给formData(),然后传给后台. 要求: 传入值的name值必须与后台接受的name相对应. form表单不能嵌套, ...
- maven 打包时动态替换properties资源文件中的配置值
pom build节点下面添加resource配置: <resources> <resource> <directory>src/main/resources/&l ...
- loading等待效果
效果预览:这两个球一直在转,不能进行其他操作 div放在最外层 <div id="loadingImg" style="height: 100%;width: 10 ...
- HDU 2086 P - A1 = ?(推表达式)
传送门:http://acm.geekxiong.tech/vjudge/contest/view.action?cid=14#problem/P P - A1 = ? Time Limit:1000 ...