简介
近期在项目中需要用到JESD204B接口,而我之前从来没有用过这个接口,所以花了很多时间去搜集资料、查看资料、编写代码、仿真验证、上板调试等等。目前还没有搞完,一边调试一边在这里做个记录,也希望能帮助到后来的人吧!分成如下几个部分:
- 项目情况简介;
 - 一些有用的资料;
 - 过程中遇到的一些问题;
 - 其它。
 
![图片[1]-JESD204B接口调试记录-FPGA常见问题社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2023/01/31673702321.png)
项目的情况就是上面这张图了:
- 采样率2.4Gsps,分辨率14bit,选用了AD9689;
 - JESD204B使用子类1,相关参数如下:
序号 项目 代号 参数 说明 1 ADC与FPGA连接的SERDES通道数 L 8 用了8条lane 2 ADC转换器个数 M 1 只用了单通道 3 ADC每帧包含8位字节数 F 2 每帧包含16bit 4 ADC每个多帧包含的连续帧数 K 32 每个多帧包含32帧 5 ADC采样位数 N 14 项目要求分辨率为14bit 6 JESD204B字大小(4个半字节) N` 16 扩展到16bit 7 ADC每帧包含样本数 S 1 一般都是1  - 使用LMK04828产生AD9689和FPGA的device时钟和sysref信号。
 
一些重要参数计算如下:
![图片[2]-JESD204B接口调试记录-FPGA常见问题社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2023/01/01673702324.png)
LMK04828
- 芯片手册相关资料,在TI官网下载:LMK04828 数据表、产品信息和支持 | 德州仪器 TI.com.cn
 - 除了手册,还需要下载和使用TICSPRO-SW,产生所需要的时钟芯片配置参数:TICSPRO-SW 应用软件和框架 | TI.com.cn
 - 网络上找到的一些有用的文章:
 
- JESD204B高速AD开发(一)基于FPGA的LMK04821时钟芯片设计_阿Q不再画圆~的博客-CSDN博客_基于fpga的芯片设计
 - JESD204B高速AD开发(二)LMK04821时钟芯片配置代码详解_阿Q不再画圆~的博客-CSDN博客_lmk04821
 - LMK04828 SPI时序控制_FPGA Learner的博客-CSDN博客_lmk04828
 - 使用 TICS Pro 配置时钟芯片_Riwuarua的博客-CSDN博客_tics pro
 - lmk04821_朝阳群众&热心市民的博客-CSDN博客_lmk04821
 - https://blog.csdn.net/u014586651/article/details/126876503?spm=1001.2014.3001.5506
 
AD9689
- 芯片手册相关资料,在ADI官网下载:AD9689 | 标准高速模数转换器 | 亚德诺(ADI)半导体 (analog.com)
 - 除了手册,在ADI官网还能找到一些有用的资料:比如配套的开发板资料,里面有参考代码;再比如一些工程师写的文档,还有它的技术论坛
 
JESD204B 协议及Xilinx JESD204B IP
- Xilinx IP相关资料,在Xilinx官网下载:pg066-jesd204,pg198-jesd204-phy
 - 在Xilinx FPGA上快速实现 JESD204B_yundanfengqing_nuc的博客-CSDN博客
 - JESD204接口调试总结——目录_十年老鸟的博客-CSDN博客
 - JESD204B接口和Xilinx IP核学习笔记_fractial的博客-CSDN博客_jesd204b xilinx
 - JESD204B 使用说明_朝阳群众&热心市民的博客-CSDN博客_jesd204b sysref
 - FPGA之JESD204B接口——总体概要 首片_Jason噗噗的博客-CSDN博客_jesd204b接口
 - JESD204B协议基础知识_weiweiliulu的博客-CSDN博客_jesd204b
 - JESD 204B调试手册_中文_TI.pdf-原创力文档 (book118.com)
 - JESD204B 系统复位与同步选项_Brad.Ji的博客-CSDN博客
 - Xilinx_JESD204B_AXI配置 – 代码天地 (codetd.com)
 - 基于JESD204 IP核的设计实现方法 | 电子创新网赛灵思社区 (eetrend.com)
 - JESD204b实战操作笔记 | 电子创新网赛灵思社区 (eetrend.com)
 
目录
一、介绍下项目历史情况
二、为什么要用fs×4模式?
三、为什么要将采样率改成2.5Gsps?
四、时钟芯片参数如何设置?
五、AD芯片参数如何设置?
六、FPGA工程里JESD204 IP如何设置?
七、传输层如何解包?
八、测试中遇到的问题
一、介绍下项目历史情况
先说下我们的硬件配置:
- 时钟芯片:LMK04828
 - ADC芯片:AD9689
 - FPGA芯片:XC7K410T-FFG900-2
 
![图片[3]-JESD204B接口调试记录-FPGA常见问题社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2023/01/51673701615.png)
如上图所示,使用JESD204B的子类1接口模式。原来的需求是单通道14bit,采样率为2.4Gsps。相关参数设置如下:
| 
 序号  | 
 项目  | 
 代号  | 
 参数  | 
 说明  | 
| 
 1  | 
 ADC与FPGA连接的SERDES通道数  | 
 L  | 
 8  | 
 用了8条lane  | 
| 
 2  | 
 ADC转换器个数  | 
 M  | 
 1  | 
 只用了单通道  | 
| 
 3  | 
 ADC每帧包含8位字节数  | 
 F  | 
 2  | 
 每帧包含16bit  | 
| 
 4  | 
 ADC每个多帧包含的连续帧数  | 
 K  | 
 32  | 
 每个多帧包含32帧  | 
| 
 5  | 
 ADC采样位数  | 
 N  | 
 14  | 
 项目要求分辨率为14bit  | 
| 
 6  | 
 JESD204B字大小(4个半字节)  | 
 N`  | 
 16  | 
 扩展到16bit  | 
![图片[4]-JESD204B接口调试记录-FPGA常见问题社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2023/01/11673701618.png)
二、为什么要用fs×4模式?
在原来需求的基础上,要将单通道改成双通道。那么线速率就会变为原来的2倍,也就是12Gbps。但是我们这款FPGA芯片最高只支持10.3Gbps,如下图PG066中所述,那从单通道直接改为双通道就不行了。
![图片[5]-JESD204B接口调试记录-FPGA常见问题社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2023/01/101673701620.png)
不过AD9689提供了fs×4模式,芯片手册中有如下描述:fS × 4 mode adds a separate packing mode to a JESD204B transmitter/receiver to set the serial lane rate at four times the sample rate (fS).
如果采样率还是2.4Gsps,那么线速率就是2.4G*4=9.6Gbps<10.3 Gbps,FPGA应该能支持了。不过有一点需要注意:fs×4模式只支持12bit,而原来是14bit,ADC的分辨率降低了。
三、为什么要将采样率改成2.5Gsps?
虽然9.6Gbps的线速率确实没有超过最大线速率的要求,但是很不幸,这款FPGA芯片实在是太“傲娇”了,还是不支持,如下图所示:
![图片[6]-JESD204B接口调试记录-FPGA常见问题社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2023/01/71673701621.png)
查看DS182,要找很久,才能找到如下描述:
![图片[7]-JESD204B接口调试记录-FPGA常见问题社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2023/01/51673701627.png)
其实,JESD204 IP的底层调用的还是transceiver,所以我们可以直接打开transceiver IP,如下图所示。这里的提示就很清楚了,只支持0.5-8.0和9.8-10.3125之间的线速率。
![图片[8]-JESD204B接口调试记录-FPGA常见问题社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2023/01/81673701635.png)
既然9.6Gbps还是不支持,就近的选择就是10Gbps了,那么对应的采样率就是2.5Gsps。
四、时钟芯片参数如何设置?
时钟芯片选择clkin0输入,两级PLL结构。VCO0是2500M,DCLKOUT0是250M,SYSREF分频比320频率7.8125MHz。
![图片[9]-JESD204B接口调试记录-FPGA常见问题社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2023/01/01673701637.png)
![图片[10]-JESD204B接口调试记录-FPGA常见问题社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2023/01/11673701639.png)
五、AD芯片参数如何设置?
AD9689配置较为简单,主要是要将0x570配置为0xFE,即使能fs×4模式;
LMF这几个参数按要求进行配置,不配置也可以,因为使能fs×4模式之后会自动配置这些参数。
![图片[11]-JESD204B接口调试记录-FPGA常见问题社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2023/01/31673701640.png)
另外,手册上存在一些描述性错误,如下图所示,按以下配置即可0x58B=0x87, 0x58F=0x0F。
![图片[12]-JESD204B接口调试记录-FPGA常见问题社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2023/01/101673701642.png)
六、FPGA工程里JESD204 IP如何设置?
Vivado里JESD204B IP的配置选项比较少,很简单。
![图片[13]-JESD204B接口调试记录-FPGA常见问题社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2023/01/81673701643.png)
![图片[14]-JESD204B接口调试记录-FPGA常见问题社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2023/01/71673701644.png)
![图片[15]-JESD204B接口调试记录-FPGA常见问题社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2023/01/81673701646.png)
![图片[16]-JESD204B接口调试记录-FPGA常见问题社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2023/01/21673701647.png)
七、传输层如何解包?
这部分比较麻烦,记录几个要点:
- 每64bit发送5个采样点,每个采样点12bit,最后4bit补0;
 - ADC0使用Lane0-3,ADC1使用Lane4-7;
 - 原来256bit解析出16个采样点,现在需要解析出20个采样点;
 - 解析格式如下,这里只列出了ADC0的解析数据格式:
 
| 
 adc0_data 0_0  | 
 7  | 
 6  | 
 5  | 
 4  | 
 3  | 
 2  | 
 1  | 
 0  | 
 15  | 
 14  | 
 13  | 
 12  | 
| 
 adc0_data 0_1  | 
 23  | 
 22  | 
 21  | 
 20  | 
 19  | 
 18  | 
 17  | 
 16  | 
 31  | 
 30  | 
 29  | 
 28  | 
| 
 adc0_data 1_0  | 
 11  | 
 10  | 
 9  | 
 8  | 
 39  | 
 38  | 
 37  | 
 36  | 
 35  | 
 34  | 
 33  | 
 32  | 
| 
 adc0_data 1_1  | 
 27  | 
 26  | 
 25  | 
 24  | 
 55  | 
 54  | 
 53  | 
 52  | 
 51  | 
 50  | 
 49  | 
 48  | 
| 
 adc0_data 2_0  | 
 47  | 
 46  | 
 45  | 
 44  | 
 43  | 
 42  | 
 41  | 
 40  | 
 71  | 
 70  | 
 69  | 
 68  | 
| 
 adc0_data 2_1  | 
 63  | 
 62  | 
 61  | 
 60  | 
 59  | 
 58  | 
 57  | 
 56  | 
 87  | 
 86  | 
 85  | 
 84  | 
| 
 adc0_data 3_0  | 
 67  | 
 66  | 
 65  | 
 64  | 
 79  | 
 78  | 
 77  | 
 76  | 
 75  | 
 74  | 
 73  | 
 72  | 
| 
 adc0_data 3_1  | 
 83  | 
 82  | 
 81  | 
 80  | 
 95  | 
 94  | 
 93  | 
 92  | 
 91  | 
 90  | 
 89  | 
 88  | 
| 
 adc0_data 4_0  | 
 103  | 
 102  | 
 101  | 
 100  | 
 99  | 
 98  | 
 97  | 
 96  | 
 111  | 
 110  | 
 109  | 
 108  | 
| 
 adc0_data 4_1  | 
 119  | 
 118  | 
 117  | 
 116  | 
 115  | 
 114  | 
 113  | 
 112  | 
 127  | 
 126  | 
 125  | 
 124  | 
- ADC1的解析数据格式只要在ADC0的解析数据格式里加上128bit即可,可以在excel表格里操作好,然后再复制粘贴到Verilog代码里:
 
![图片[17]-JESD204B接口调试记录-FPGA常见问题社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2023/01/71673701648.png)
测试结果如下图所示:
![图片[18]-JESD204B接口调试记录-FPGA常见问题社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2023/01/61673701649.png)
![图片[19]-JESD204B接口调试记录-FPGA常见问题社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2023/01/71673701651.png)
八、测试中遇到的问题
用JTAG抓取波形,查看sync信号会间隔性地被拉低,如下图:
![图片[20]-JESD204B接口调试记录-FPGA常见问题社区-FPGA CPLD-ChipDebug](http://chipdebug.com/wp-content/uploads/2023/01/21673701654.png)
- 读取AD9689芯片的0x56F寄存器,显示PLL已锁定;
 - 将FPGA芯片改为-3等级,然后直接将单通道改为双通道跑12Gbps,测试发现可以正常工作,说明硬件能够支持跑10Gbps;
 - 再次检查参数配置,确认没有问题;
 - 给JESD204的复位增加VIO控制,复位后发现可以正常工作,说明在AD芯片配置完成后,还需要给FPGA JESD204复位一次;
 
在时钟芯片和ADC芯片配置完成后,需要将JESD204 IP再次复位,以保证建链成功!





没有回复内容