[基于FPGA的AD9226数据采集系统设计与验证]
| 工程源码 | |----设计实例 |--------ACX720_AD9226_GMII.zip | 帖子最后附设计文件
| ---------------------------- | ----------------------------------------------------- |
| 相关视频课程 | 暂无相关视频课程 |
| 本实验对各开发板支持情况 |
| 开发板型号 | ACX720 |
文档所涉及文件说明
本次实验配套的文件压缩包名为ACX720_AD9226_GMII.zip,解压后可得到配套的工程文件,说明文档和调试工具。

图 1 实验配套的文件
1、ACX720_AD9226_GMII.zip:基于ACX720开发板VIVADO平台AD9226数据采集系统源工程
2、 ADCdata_to_wave_v2_2.m:基于MATLAB的采样结果数据处理函数
3、实验简易说明
4、sscom5.13.1: 网口调试工具
导读
本节介绍了基于FPGA的AD9226数据采集系统实验步骤。结合两片 ADI 公司的单芯片、12 位、65
MSPS 模数转换器(ADC)AD9226芯片,实现了通过千兆网口对AD9226数据采样的指令控制并采集输出。
工程目标
本工程通过利用学习开发板上资源,实现ACM9226模块的网口数据采集功能。
本工程在实验条件下,期望达到如下功能要求:
1、 实验通过数据采集模块实现模数转换,传递给开发板。在这里,我们采用ACM9226双通道数据采集模块作为数据采集卡进行数据采集。为了真实模拟数据采集的实验环境,我们借助信号发生器作为信号源,使用时可以通过设置其不同频率进行采样观察效果。
2、 使用相关的网口通信软件,通过网口下发指令,可以设定需要采集的字节数,选择采集通道号,启动采集。
3、 使用相关的网口通信软件,可以按设定的采集参数,接收采集的数据。数据通过网口发送到网口调试软件(后期可开发对应PC上位机)。将读取到的数据我们进行DAT文件的保存,便于后期分析。
4、 采集到的数据经过matlab波形分析,能够得到和输入波形一致的输出波形,无数据丢失,无杂波。
指令设置与管脚绑定
AD9226的控制指令,由8个字节的数据组成,前两个字节D0,D1用55 A5,最后一个字节D7帧尾用F0,标明这是一个接收的指令,第三个字节D2,标明的是控制存储地址,本工程中,我们定义00是发送启动命令,01是采样通道号,02是采样深度。
网口一次发送的数据内容为1个字节,为了实现通过网口修改这些寄存器的值,需要发送多个字节才能实现,为此,设计了简单的数据帧,该帧一帧数据共8个字节,包含帧头、帧尾、地址段(决定任务设定目标)、数据段。帧格式如下表 1所示:
表 1指令帧格式
数据 |
D0 |
D1 |
D2 |
D3 |
D4 |
D5 |
D6 |
D7 |
功能 |
帧头0 |
帧头1 |
地址 |
data[31:24] |
data[23:16] |
data[15:8] |
data[7:0] |
帧尾 |
值 |
0x55 |
0xA5 |
xx |
xx |
xx |
xx |
xx |
0xF0 |
下面讲解一下典型的参数设置方法:
如果采512字节的数据,则设置为:55 A5 02 00 00 01 00 F0
如果采65536个的数据,则设置为:55 A5 02 00 01 00 00 F0
采样速率如果是5k,整个字节为:55 A5 00 00 00 27 0F F0
采样通道如果是9226的第一通道,则设置为:55 A5 01 00 00 00 01 F0
采样通道如果是9226的第二通道,则设置为:55 A5 01 00 00 00 02 F0
这里对采样速率的设置做一个说明,这里是设置一个计数的值27 0F,而如果为0,采样和时钟保持一致50M时钟就是50M,设置计数值后就可以改变采样频率,设置为1就是25M。27 0F换算成十进制是9999,采样速率设置是5k,他们的关系如下:
设置计数值= Fclk/Fs - 1
Fs是期望的采样率,Fclk是系统时钟。
在此再次特别提醒:在引脚绑定的时候,我们要特别注意ACM9226模块的LSB引脚和MSB引脚,AD9226的12位输出数据接口中,bit11为
LSB、bit0为MSB。这与我们FPGA中对于多位宽信号的高低位的处理恰好相反,ACM9226模块对应的LSB是数据位最高位,而对应的MSB是数据位的最低位。如果在绑定引脚芯片的时候没有注意,则有可能会得到没有规律的输出数据。所以使用时,要么在分配引脚时直接调换过来,要么在程序中对所有位的高低位置进行调换,不然采集到的数据将无法进行准确分析。下表 2为AD9226数据接口引脚分配表。
表 2 引脚分配表
Signial Name |
Pin NO. |
Signial Name |
Pin NO. |
Clk |
Y18 |
gmii_rx_clk |
T21 |
led |
M22 |
gmii_tx_clk |
U22 |
reset_n |
B21 |
gmii_rxd[7] |
V20 |
ad_clk1 |
A13 |
gmii_rxd[6] |
V19 |
ad_clk2 |
C14 |
gmii_rxd[5] |
U20 |
ad_in1[11] |
D14 |
gmii_rxd[4] |
T20 |
ad_in1[10] |
B13 |
gmii_rxd[3] |
R19 |
ad_in1[9] |
C13 |
gmii_rxd[2] |
P19 |
ad_in1[8] |
E14 |
gmii_rxd[1] |
V18 |
ad_in1[7] |
E13 |
gmii_rxd[0] |
V17 |
ad_in1[6] |
F14 |
gmii_txd[7] |
AA20 |
ad_in1[5] |
F13 |
gmii_txd[6] |
AB21 |
ad_in1[4] |
A19 |
gmii_txd[5] |
AA21 |
ad_in1[3] |
A18 |
gmii_txd[4] |
AB22 |
ad_in1[2] |
A16 |
gmii_txd[3] |
Y22 |
ad_in1[1] |
A15 |
gmii_txd[2] |
W21 |
ad_in1[0] |
A14 |
gmii_txd[1] |
W22 |
ad_in2[11] |
F16 |
gmii_txd[0] |
U21 |
ad_in2[10] |
C19 |
eth_reset_n |
V22 |
ad_in2[9] |
C18 |
gmii_rxdv |
AB18 |
ad_in2[8] |
B18 |
gmii_txen |
AA19 |
ad_in2[7] |
B17 |
|
|
ad_in2[6] |
D16 |
|
|
ad_in2[5] |
E16 |
|
|
ad_in2[4] |
C17 |
|
|
ad_in2[3] |
D17 |
|
|
ad_in2[2] |
B16 |
|
|
ad_in2[1] |
B15 |
|
|
ad_in2[0] |
C15 |
|
|
基于PFGA开发板的功能测试
对系统功能设计完成并仿真验证通过之后,准备好硬件设施,连接好硬件,就可以对设计的工程进行板级验证测试实验功能。
系统所需硬件
1、 对应实验开发板。
2、 AD9226数据采集模块。
3、 电源线。
4、 程序下载线。
5、 网线。
6、 信号发生器。
硬件连接
根据前面的描述准备好硬件,我们可以进行连接:
1、 连接好ACM9226模块到开发板。
2、 信号发生器的输出端连接到ACM9226模块的通道输入端,可根据设置连接不同通道。
3、 连接好FPGA开发板网线。
4、 连接好开发板电源。
5、 连接好开发板下载器。

图 2 硬件连接图
在以上所有模块和线路连接好之后就可以打开开关,开始下载程序。
在信号发生器上设定好采样频率,可使用示波器对信号发生器输入的数据进行观察,确认输入数据是否正常,和采集的数据进行对比验证。
数据采集与分析
打开sscom5.13.1网口调试工具,依次设定好UDP端口,端口连接设置,然后打开网口。点击多字符串,点击勾选四个指令栏,填入指令:
采65536个数据,则设置为:55 A5 02 00 01 00 00 F0
采样通道为第一通道,则设置为:55 A5 01 00 00 00 01 F0
采样通道为第二通道,则设置为:55 A5 01 00 00 00 02 F0
采集测试用数据,通道则设置为:55 A5 01 00 00 00 00 F0
采样的速率为50M,指令设置为:55 A5 03 00 00 00 00 F0,
采样的速率为5k,指令设置为:55 A5 03 00 00 27 0F F0
采集使能指令帧设置为:55 A5 00 00 00 00 00 F0
清空计数器和接收区后,从上到下依次点击勾选的1,2,3,4条数据串发送按钮,数据设定完成后开始采集,网口调试助手设置界面如图 3 所示。

图 3 网口调试设置
通过调试窗口可以对采集的数据量和下发的指令是否匹配,对采集的数据做进一步的分析可以验证数据采集是否符合期望,可对采集数据利用MATLAB进行绘图分析。
通过网口调试助手可以判断采集的数据量是否准确,采样得到的数据是否是和信号发生器输出一致,仅凭人工,很难完成这个分析工作。因此我们需要借助matlab的绘制函数图形的功能。
图 4中可以看到,点击网口助手保存数据会产生两个数据文件,第一个是DAT格式的数据文件,第二个是文本格式的数据文件,读者可根据自身需求对不同格式的文件进行调用,本次实验调用的的是DAT格式的数据文件。采集数据文件路径都与安装的调试助手的路径有关,在网口调试窗口中点击数据保存时会有显示,下图显示的是sscom5.13.1网口调试工具安装于桌面的数据保存路径。

图 4 保存数据位置信息
文件为二进制格式DAT文件,调用时可复制文件到MATLAB安装路径下,这样修改文件名就可以进行图像绘制。DAT文件如图 5所示。

图 5 DAT文件
打开ADCdata_to_wave_v2_2.m,MATLAB采样结果数据处理函数如图 6所示。

图 6 MATLAB数据分析程序
打开matlab代码的工程文件,修改好文件路径,进行保存后点击运行就可以进行图形的绘制。在进行新一次的数据绘制分析前要关闭前一次的图形绘制窗口,否则会导致新数据的图形绘制无法加载。输出得到的波形如图 7,图为绘制采集的20kHz输入信号波形图。

图 7 绘制的数据波形图
这样,通过观察绘制的数据图形就可以对上板实验采集数据进行验证。通过分析,绘制数据与信号发生器和在示波器上显示的数据一致,数据采集无误,采集系统功能验证符合设计要求。
修订记录