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 yum安装mysql

    参考此文档:http://www.jb51.net/article/116032.htm http://www.jb51.net/article/95399.htm 1.在官网下载mysql57-co ...

  2. 微信小程序开发工具快捷键

    格式调整 //保存文件 Ctrl+S //代码行缩进 Ctrl+[, Ctrl+] //折叠打开代码块 Ctrl+Shift+[, Ctrl+Shift+] //复制粘贴,如果没有选中任何文字则复制粘 ...

  3. es6之函数扩展与对象扩展

    一.函数扩展 1.参数默认值 参数有默认值,后面不可以再加没有默认值的变量.如以下test函数中,不可以加写成 function test(x,y="word",z){ } fun ...

  4. 论文笔记 | A Closer Look at Spatiotemporal Convolutions for Action Recognition

    ( 这篇博文为原创,如需转载本文请email我: leizhao.mail@qq.com, 并注明来源链接,THX!) 本文主要分享了一篇来自CVPR 2018的论文,A Closer Look at ...

  5. HDU 1735 字数统计(模拟+一点点贪心的思想)

    题目戳我 字数统计 Time Limit: 1000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  6. ios Block详细用法

    ios Block详细用法 ios4.0系统已开始支持block,在编程过程中,blocks被Obj-C看成是对象,它封装了一段代码,这段代码可以在任何时候执行.Blocks可以作为函数参数或者函数的 ...

  7. Selenium基本用法以及元素定位

    一.Selenium 简介 Selenium是ThroughtWorks公司一个强大的开源Web功能测试工具系列,提供一套测试函数,用于支持Web自动化测试.函数非常灵活,能够完成界面元素定位.窗口跳 ...

  8. oracle入门(一)

    ### 一.体系结构 1. 数据库 : 只有一个数据库 2. 实例 : 后台运行的一个进程 3. 表空间: 逻辑存储单位 4. 数据文件: 物理存储单位 5. 用户:面向用户管理,由用户来管理表空间, ...

  9. python类的使用(类定义,构造器,类属性,方法)

    注:这里只描述使用方法,具体类的概念长篇大论就不要为难我这个懒人了. 总之一句话编程语言只是一个工具,会用就行,好用就行.打破砂锅问到底,我觉得有必要研究一下C,汇编,电子链路等. class clt ...

  10. C++ Primer学习笔记_1_快速入门

    C++快速入门 一 编写简单程序 // main是操作系统唯一显示调用的函数int main() {/**return返回的值是一个状态指示器 0:成功 非0:返回错误给OS*以echo $?命令可以 ...