这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
基于arm_fpga的高速ad采集传输实验_ad9226 [2020/01/14 16:54] zgf |
基于arm_fpga的高速ad采集传输实验_ad9226 [2022/03/18 15:49] (当前版本) sean |
||
---|---|---|---|
行 2: | 行 2: | ||
|技术支持电话|**0379-69926675-801**||| | |技术支持电话|**0379-69926675-801**||| | ||
|技术支持邮件|Gingko@vip.163.com||| | |技术支持邮件|Gingko@vip.163.com||| | ||
- | |技术论坛|http://www.eeschool.org||| | ||
^ 版本 ^ 日期 ^ 作者 ^ 修改内容 ^ | ^ 版本 ^ 日期 ^ 作者 ^ 修改内容 ^ | ||
- | | V1.0 |2020-01-14| gingko | 初次建立 | | + | | V1.0 | 2020-01-14 | gingko | 初次建立 | |
行 15: | 行 14: | ||
==== 二、实验设备及平台 ==== | ==== 二、实验设备及平台 ==== | ||
- | - iCore3 双核心板( FPGA型号为EP4CE10F17,ARM型号为STM32F407IGT6)。 | + | - iCore3 双核心板( FPGA型号为EP4CE10F17,ARM型号为STM32F407IGT6)。[[https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-251734908.16.351d704dx6vdgW&id=524229438677|点击购买]] |
- | - 高速AD转换模块ADM9226。 | + | - 高速AD转换模块ADM9226。[[https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-251734908.34.4113769ffqyiV5&id=555671202016|点击购买]] |
- | - Blaster(或相同功能的)仿真器和USB线缆。 | + | - Blaster(或相同功能的)仿真器和USB线缆。[[https://item.taobao.com/item.htm?id=554869837940|点击购买]] |
- QuartusII开发软件(本实验中使用的是13.1版本)和commix.exe。 | - QuartusII开发软件(本实验中使用的是13.1版本)和commix.exe。 | ||
- | {{ :icore3:icore3_fpga_33_1.png?nolink&700 |图33-1 核心板和ADM9226模块连接图}} | + | {{ :icore3:icore3_fpga_33_1.png?direct&700 |图33-1 核心板和ADM9226模块连接图}} |
- | {{ :icore3:icore3_fpga_33_1.png?direct |}} | + | |
**注意事项1:** 注意FPC转接板和核心板之间引脚要对齐(如图31-1中红圈中细节图所示,转接板和核心板排针连接处下边缘要对齐)。\\ | **注意事项1:** 注意FPC转接板和核心板之间引脚要对齐(如图31-1中红圈中细节图所示,转接板和核心板排针连接处下边缘要对齐)。\\ | ||
行 31: | 行 29: | ||
* ADM9226模块是一款双通道高速AD采样模块,采用了两片12位精度、65Msps的高速AD转换芯片AD9226。关于AD9226芯片的相关细节,建议大家仔细查阅芯片手册。阅读过手册可以看到如下的数据采样时序图。也就是只需为AD9226提供时钟信号,便可在芯片的数据输出引脚得到二进制的转换数据,驱动较为方便。 | * ADM9226模块是一款双通道高速AD采样模块,采用了两片12位精度、65Msps的高速AD转换芯片AD9226。关于AD9226芯片的相关细节,建议大家仔细查阅芯片手册。阅读过手册可以看到如下的数据采样时序图。也就是只需为AD9226提供时钟信号,便可在芯片的数据输出引脚得到二进制的转换数据,驱动较为方便。 | ||
- | {{ :icore3:icore3_fpga_33_2.png?nolink |图33-2 ADM9226 采样时序图}} | + | {{ :icore3:icore3_fpga_33_2.png?direct |图33-2 ADM9226 采样时序图}} |
* iCore 3开发板是ARM+FPGA架构。FPGA采用的cyclone IV 系列,负责AD芯片的驱动和数据的存储。FPGA调用IP核在内部构建两个存储深度为1024的RAM作为数据缓存,且输出时钟信号驱动两路AD9226对模拟信号进行采样。在接收到STM32F407发送的“写”指令后将采样数据分别存储在两个RAM中。ARM采用的是STM32F407IGT6,一款基于Cortex-M4内核的高性能微控制器,具有丰富的外设。STM32F407芯片将FPGA内RAM作为外挂存储器,通过FSMC分别对两个RAM里的值进行读取和指令的传输,然后通过UART将从RAM中读取的数据上传至PC。 | * iCore 3开发板是ARM+FPGA架构。FPGA采用的cyclone IV 系列,负责AD芯片的驱动和数据的存储。FPGA调用IP核在内部构建两个存储深度为1024的RAM作为数据缓存,且输出时钟信号驱动两路AD9226对模拟信号进行采样。在接收到STM32F407发送的“写”指令后将采样数据分别存储在两个RAM中。ARM采用的是STM32F407IGT6,一款基于Cortex-M4内核的高性能微控制器,具有丰富的外设。STM32F407芯片将FPGA内RAM作为外挂存储器,通过FSMC分别对两个RAM里的值进行读取和指令的传输,然后通过UART将从RAM中读取的数据上传至PC。 | ||
* 系统框图如下图所示: | * 系统框图如下图所示: | ||
- | {{ :icore3:icore3_fpga_33_3.png?nolink |图33-3 高速AD采样系统框图}} | + | {{ :icore3:icore3_fpga_33_3.png?direct |图33-3 高速AD采样系统框图}} |
* STM32的FSMC以及和PC通信的UART可以通过STM32CubeMX进行配置,包括引脚、时钟、电压的配置。 | * STM32的FSMC以及和PC通信的UART可以通过STM32CubeMX进行配置,包括引脚、时钟、电压的配置。 | ||
* 这里主要讲一下FPGA部分。 | * 这里主要讲一下FPGA部分。 | ||
行 47: | 行 45: | ||
* 本实验是基于ARM+FPGA系统的,因此在代码的实现上也包括ARM程序和FPGA程序,ARM程序主要是对串口接收数据的处理以及指令的传输。详细的代码讲解请参考对应的ARM例程,这里主要讲解一下FPGA的代码实现。 | * 本实验是基于ARM+FPGA系统的,因此在代码的实现上也包括ARM程序和FPGA程序,ARM程序主要是对串口接收数据的处理以及指令的传输。详细的代码讲解请参考对应的ARM例程,这里主要讲解一下FPGA的代码实现。 | ||
=== FPGA代码讲解 === | === FPGA代码讲解 === | ||
- | {{ :icore3:icore3_fpga_33_4.png?nolink |图33-4 FPGA代码RTL视图}} | + | {{ :icore3:icore3_fpga_33_4.png?direct |图33-4 FPGA代码RTL视图}} |
* 首先看一下FPGA综合的RTL视图,从图中可以看到,主要功能模块有三个,分别是fsmc_ctrl模块和ad9226_store模块。其中fsmc_ctrl模块负责和ARM通信, ad9226_store则负责采样数据的存储。 | * 首先看一下FPGA综合的RTL视图,从图中可以看到,主要功能模块有三个,分别是fsmc_ctrl模块和ad9226_store模块。其中fsmc_ctrl模块负责和ARM通信, ad9226_store则负责采样数据的存储。 | ||
* 这里主要讲解一下ad9226_store文件和fsmc_ctrl文件。先看一下fsmc_ctrl文件,这个文件中主要是对fsmc接口信号的处理以及对ARM发送的指令进行解析。因为ARM的fsmc外设是连接到FPGA内的RAM上的,所以这里FPGA将fsmc接口和RAM的相关信号建立连接。 | * 这里主要讲解一下ad9226_store文件和fsmc_ctrl文件。先看一下fsmc_ctrl文件,这个文件中主要是对fsmc接口信号的处理以及对ARM发送的指令进行解析。因为ARM的fsmc外设是连接到FPGA内的RAM上的,所以这里FPGA将fsmc接口和RAM的相关信号建立连接。 | ||
行 160: | 行 158: | ||
- 在串口软件发送区输入“set:1\CR\LF”字符,并点击发送,可以看到接收区返回的指令以及采样数据,如下图红框所示: | - 在串口软件发送区输入“set:1\CR\LF”字符,并点击发送,可以看到接收区返回的指令以及采样数据,如下图红框所示: | ||
- | {{ :icore3:icore3_fpga_33_5.png?nolink |图33-5 串口发送指令及数据接收效果图}} | + | {{ :icore3:icore3_fpga_33_5.png?direct |图33-5 串口发送指令及数据接收效果图}} |
==== 六、拓展实验 ==== | ==== 六、拓展实验 ==== | ||