4

就业班学员高速AD采集项目学习笔记(全)

 1 year ago
source link: https://blog.51cto.com/u_14636286/5907077
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

就业班学员高速AD采集项目学习笔记(全)

精选 原创

本文为明德扬原创文章,转载请注明出处!

以下是我在做高速AD项目的调试经验,现在分享出来,希望可以给大家提供一定的帮助。如果发现sync一直没有同步上,即一直为低,那么就需要检查同步条件,具体操作如下。

1、检查是时钟的正确性

1)需要使用示波器测量时钟的正确性,示波器设置如下

就业班学员高速AD采集项目学习笔记(全)_寄存器

2)表笔设置,使用前需要自行校准表笔,校准方法这里不再赘述,不会的同学可以在网上搜索方法。

就业班学员高速AD采集项目学习笔记(全)_数据_02

3)测量点

接着对参考时钟和同步时钟进行测量,这两个测量点都是AD9516给AD9144的时钟,给FPGA的时钟需要直接测量芯片引脚,比较危险,不建议测。主要测量有无输出和时钟频率是否正确。

AD9516的配置软件生成的寄存器值不一定正确,部分寄存器的值需要自行修改。之前就遇到过同步时钟的输出频率不对的问题,修改了AD9516的0x19B寄存器的值,问题得到解决。分频系数=M+N+2,其它寄存器的分频系数计算方式与此相同。

参考时钟在开发板上的位置如下:

就业班学员高速AD采集项目学习笔记(全)_FPGA培训_03

同步时钟在开发板上的位置如下:

就业班学员高速AD采集项目学习笔记(全)_IP_04

2、AD9144的寄存器正确设置

ACE软件生成出来的值基本是正确的,但是要注意一下几点:

1)正确设置DAC PLL,如下图所示,其中Ref_clk = 参考时钟;Fin = 这个时钟作用不清楚;FDAC = DAC每通道的实际工作频率,这个值包含插值。

注意:要点应用

就业班学员高速AD采集项目学习笔记(全)_寄存器_05

2)正确设置采样率如下图所示,

就业班学员高速AD采集项目学习笔记(全)_IP_06

因为乘法器输出的频率范围是6-12GHZ,所以DAC的工作频率要≥375MHZ,如果不够,可以通过增加插值的方式来提高频率,同时也可以不用PLL(此方法未测试)

AD9144对寄存器的配置顺序有要求,具体顺序可以阅读数据手册或者看明德扬潘老师的上位机代码。配置的顺序特别注意一个0X300的寄存器,这个寄存器第一次配置要设置为0,第二次配置设置为1

就业班学员高速AD采集项目学习笔记(全)_数据_07

AD9144的要在AD9516配置完成之后等待一段时间才能开始配置,具体等待输出时钟稳定的时间可以看AD9516的数据手册,程序里面的延时是调出来的。AD9144的寄存器的配置速度不能太快,不然也会出现无法同步的现象,具体原因未知,程序里面的延时也是调出来的。

3、IP核设置

公式计算和IP核设置的F,S,K,Lane,等参数是由选择的DAC工作模式确定的,其他参数如SCR等,需要怎么设置在AD9144数据手册里面第50页(不同版本的数据手册页数可能会有偏差)开始有详细介绍。        IP核是高电平复位的,这里要注意:如果复位住了这几个会一直等于0,并且无法同步

就业班学员高速AD采集项目学习笔记(全)_IP_08
就业班学员高速AD采集项目学习笔记(全)_FPGA培训_09

4、AXI总线配置

具体配置方法参考明德扬潘老师的文档,经过一次简单的测试,这个可以不配置也能正常工作,具体没有详细测试。

IP核的tx_core_clk需要PLL产生一个合适的时钟并且经过BUFG给JESD204B IP核使用;Drp_clk动态调整时钟我这里没有用到,但是必须给一个时钟,并且要和IP核里面设置的频率相同;AXI时钟频率和IP核内设置的相同即可。

6、参数计算

参考明德扬潘老师的文档,特别注意是要 * 还是 \ 。

举个例子:20MHZ正弦波,16个点组成一个正弦波,2通道,16bit,插值=2(使用DAC PLL的时候频率必须≥375MHZ,这例子速率不够所以要X2)。

1)有效传输:20MHZ16个点2通道*16bit=10.24Gbit;

2)实际经过8b/10b编码的速率是:10.24Gbit * 1.25=12.8Gbit这就是4条Lane总共要传输的速率;

3)单通道的DAC采样率(sample_clock):20MHZ16个点=320MHZ(因为插值=2所以这个值填入ACE的时候要2=640MHZ,计算的时候依旧使用320MHZ);

4)帧频率(frame_clock):sample_clock / S=320 / 1 = 320MHZ(S值由DAC模式决定);

5)字符频率(character_clock):frame_clockF=320MHZ1=320MHZ(F值由DAC模式决定);

6)Bit频率(bit_clock):character_clock10=320MHZ10=3.2Gbit;

7)多帧频率(multi_frame_clock):frame_clock / K=320MHZ / 32 =10MHZ(K由DAC模式决定);

8)同步时钟(sysref_clock):multi_frame_clock / R =5MHZ(R=2),AD9144数据手册规定,同步时钟的最大值是:fdata / (K * S)  fdata是哪个没有细看;

9)设置时钟(device_clock):multi_frame_clock * D =80MHZ(D取8);

10)Ref_clk:每条Lane的速率/ 40 =3.2Gbit / 40 = 80MHZ;

11)device_clock要≥ref_clk,最好是等于;

12)实际上设置的频率是160MHZ主要是考虑到插值=2,实际上应该设为80MHZ也能工作(未测试)。

7、实现同步

经过上面的设置应该就能同步上了,具体表现为tx_sync信号持续为高电平

8、DAC输出波形

必须拉高DAC的输出使能引脚,不然会没有波形输出!!!

AD9144是电流型输出DAC,并且板子上使用变压器进行放大,所以,不能输出直流波形只能输出交变的波形,目前已经测试能输出正弦波。三角波 和 方波可能无法输出或者输出失真。

9、DAC的数据映射

用一个示例展示给大家。

2路DAC输出 4调lane

波形数据是:

输入到IP核的数据(tx_tdata)00057fc000cfa58900057fc000cfa589

00 05 7f c0

00 cf a5 89

00 05 7f c0

00 cf a5 89

第2路 DAC(顺序得看数据手册)

00        05     7f       c0     lane 3

00        cf     a5       89     lane 2

0x0000  0xcf05  0xa57f  0x89c0

第1路 DAC(顺序得看数据手册)

00       05      7f      c0     lane 1

00       cf      a5      89     lane 0

0x0000  0xcf05  0xa57f  0x89c0

以上就是高速AD项目中实现sync同步的小经验,不同情况遇到的问题有所不同,希望我的思路可以给大家带来帮助,同学们也可以在留言评论中与我进行讨论。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK