JESD204接口调试总结——Xilinx JESD204B IP testbench解析
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
JESD204接口调试总结——Xilinx JESD204B IP testbench解析
- IP核配置
- testbench工程
- 部分代码解读
IP核配置
1、IP核为接收功能
2、LMFC buffer设定为最大
3、4条lane
4、sysref下降沿采样 (前面的帖子有说明为什么下降沿)
1、选择第二种,保持更大灵活性(不然更多的功能被包在了IP核中)
1、SYSREF always 前面博文有介绍
2、不开扰码
3、F K参数与外面transceiver器件设定相匹配
4、SYSREF Required on Re-Sync 前面博文有介绍
1、线速率 9.8304Gbps
2、参考时钟 122.88
3、DRP时钟 122.88
生成IP核后,右击IP核,点击example design,一个tb工程就自动生成了。
testbench工程
以下是xilinx jesd手册文档描述的接收testbench工程
序号 | 项目 | 代号 | 参数 | 说明 |
---|---|---|---|---|
1 | ADC转换器个数 | M | 4 | 已知前提条件 |
2 | ADC与FPGA连接的SERDES通道数 | L | 4 | 已知前提条件 |
3 | ADC每帧包含8位字节数 | F | 4 | 根据1,2,5,6计算出来 |
4 | ADC采样位数 | N | 14 | 已知前提条件 |
5 | JESD204B字大小(4个半字节) | N` | 16 | 根据4计算出来 |
6 | ADC每帧包含样本数 | S | 1 | 已知前提条件 |
7 | ADC每个多帧包含的连续帧数 | K | 32 | 可配置 |
8 | ADC侧的Device Clock | 491.52MHz | 根据10,1,5计算出来 | |
9 | FPGA侧的Device Clock(Core CLK) | 122.88MHz | 根据10计算出来 | |
10 | JESD204B SERDES速率 | 9.8304Gpbs | 已知前提条件 |
这里要注意,因为例程中M = LANE数,相当于1条lane对应1个转化器
而一条lane 数据输入或输出接口是 在245.76M下的32bit输出
而转化器是491.52下的14(16)bit输入或输出。
因此相当于一个时钟下两个采样点并行输入输出。
在接收校验模块中 jesd204_ip_4rx_ad_sig_chk.v
在一个clk时钟下接收到了2个数据,即可说明上述说法是正确的
//Channel 0signal0_sampl0_expected <= sine_lut64_14bit[index0];signal0_sampl1_expected <= sine_lut64_14bit[index0+1];signal0_cntrl0_expected <= index0; //clipped to two bitssignal0_cntrl1_expected <= index0+1; //clipped to two bitsindex0 <= index0+2;
(在实际应用中,一般是存在IQ两路数据的,I/Q分别都需要一个转换器,4个转换器相当于2对IQ了)
相关计算过程如下:
1、F的值根据 MSN`/(8L) = 4116/(84) = 2
1、serdes速率为9.8304Gbps,并行数据宽度为32位,core clock为 9.8304G * 0.8 / 32 = 245.76MHz
2、8位字符时钟character clock为
245.76MHz*4 = 983.4MHz
3、Frame clock 为491.52MHz (F=2,四个字节一个frame)
4、Multi - Frame clock 为 491.52MHz/32 = 15.36MHz
5、SYSREF周期数必须是Multi - Frame clock的整数倍分频,可以更小,不能更大。
(This generate a periodic SYSREF with period = 4 Multiframes 3.84)
部分代码解读
下面涉及两个任务
Task:rx_stimulus_send_column 将字节经过8B10B编码后,
通过Task:rx_stimulus_send_10b_column发送出去。其中里面还包含一个8B10B编码函数,因为相对来说比较固定,这里不做解读,只要知道经过了这个函数后,8bit就变成了10bit即可。
ILA 4个多帧,一个多帧(F = 2 K = 32)64字节,那么4个多帧256个字节
------------------------------多帧1------------------------------
字节1 : K28.0 8’h1C (R)
字节2-63: 数字:0 – 61 (D)
字节64 : K28.3 8’h7C (A)
------------------------------多帧2------------------------------
字节1 : K28.0 8’h1C (R)
字节2 : K28.4 8’h9C (Q)
字节3 : pDID 8’h55
字节4 : {pADJCNT, pBID} 4’h0 4’hA
字节5 ([4:0]) : LANEID(如果有4个lane,那么每个lane这个字节分别为0-3)
([7:5]) : {1’b0, pADJDIR, pPHADJ} 0 0
字节6 : {pSCR, 2’b0, pL} pSCR = 0 pL = Lane的个数- 1
字节7 : pF – 1 pF即参数F
字节8 : pK – 1 pK即参数K
字节9 : pM = Lane的个数 – 1
字节10 : {pCS, 1’b0, pN} pCS = 2’d2 pN = 5’d13 查询一下,AD位数14bit
字节11 :{pSUBCV, pNt} 3’b001 5’d15
字节12 :{pJESDV, pS} 3’b001 5’d0
字节13 :{pHD, 2’b0, pCF}
字节14 :{pHD, 2’b0, pCF} 1’b0 5’d1
字节15 :{ pRES1} 8’h5A
字节16 :{ pRES2} 8’hA5
字节17 :prechecksum + LANEID
字节18-63 :数字:0 – 46
字节64 : K28.3 8’h7C (A)
------------------------------多帧3------------------------------
字节1 : K28.0 8’h1C (R)
字节2-63: 数字:0 – 61 (D)
字节64 : K28.3 8’h7C (A)
------------------------------多帧4------------------------------
字节1 : K28.0 8’h1C (R)
字节2-63: 数字:0 – 61 (D)
字节64 : K28.3 8’h7C (A)
发射端在检测到sync后,遇到sysref上升沿开始发送ILA。红色箭头所示
接收端收到了4个多帧后(前后带K码),很快tvalid信号拉高,则可以数据接收准备好,可以取数据了
tb中的axi_write如果IP核中配置正确的话下面代码在实际应用中可以不需要
// 0x008: Support ILAaxi_write(2,32'h00000001);// 0x00C: Scrambling dissabledaxi_write(3,32'h00000000);// 0x010: Sysref onceaxi_write(4,32'h00000001);// 0x014: Tx Only register// 0x018: Test mode = Normal operationaxi_write(6,32'h00000000);// 0x020: Octets per Frame F=2axi_write(8,32'h00000001);// 0x024: Frames per Multiframe K=32axi_write(9,32'h0000001F);// 0x028: Lanes in useaxi_write(10,32'd15);// 0x02C: Device subclass 1axi_write(11,32'h00000001);// 0x030: Rx buffer delayaxi_write(12,32'h00000000);// 0x034: Error reporting via ~syncaxi_write(13,32'h00000000);
只需要对 写这个即可
axi_write(1,32'h00000001);
看明白了接收,那么发射也就不难了,这里就不再说明了
写于2021年11月6日。
如需交流,可以评论区留言,然后加QQ:172146579
JESD204接口调试总结——Xilinx JESD204B IP testbench解析相关推荐
- JESD204接口调试总结——Xilinx JESD204B IP AXI寄存器简介
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 JESD204接口调试总结--Xilinx JESD204B IP AXI寄存器简介 一般来说,如果在IPcore配置正确的话,不太需 ...
- JESD204接口调试总结——Xilinx JESD204B IP 工程应用
JESD204接口调试总结--Xilinx JESD204B IP 工程应用 Tb看完了,那我们需要对example 进行改造才能进行上板调试. 很明显,作为一个ADC和DAC接口,我们需要构建一个顶 ...
- JESD204接口调试总结——Xilinx JESD204B数据手册的理解
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 JESD204接口调试总结--Xilinx JESD204B数据手册的理解 时钟架构 Subclass 1 SYSREF Sampli ...
- JESD204接口调试总结——Xilinx JESD204C IP AXI寄存器简介
JESD204接口调试总结--Xilinx JESD204C IP AXI寄存器简介 关于JESD204C的寄存器如下所示: 重要的寄存器: 020: 复位 这个复位和JESD204B的复位不太一样, ...
- JESD204接口调试总结——Xilinx JESD204C IP工程应用
JESD204接口调试总结--Xilinx JESD204C IP工程应用 JESD204C上板调试,我直接跳过了看它的example的过程,因为example blockdesign设计的内容比较多 ...
- JESD204接口调试总结——目录
JESD204接口调试总结--目录 写在前面 目录 写在前面 JESD204B调试是我来**的第一个任务,而且是一个全新的射频器件(***79xx),对于我这个之前从来没接触过高速接口的人来说真的是压 ...
- Xilinx JESD204B IP AXI驱动代码
说明:Xilinx JESD204B IP AXI驱动代码,通过VIO进行JESD204B IP和寄存器的读写. 参考博客:Xilinx_JESD204B 效果简单展示如下: 方便调试,将AXI_Li ...
- JESD204接口调试总结——JESD204+In-system-ibert
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 JESD204接口调试总结--JESD204+In-system-ibert 前言 IP核的设置 IP核连线 调试jtag界面 总结 ...
- JESD204接口调试总结——JESD204C协议的介绍
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 JESD204接口调试总结--JESD204C协议的介绍 前言 JESD204C变化总结 新术语 传输层 数据链路层 物理层 第二部分 ...
最新文章
- 软件架构设计之常用架构模式
- 地球那么大的开放世界游戏怎么做?腾讯云高级架构师为开发者设计了一套方案
- Windows中非常实用的命令
- HuggingFace又出炼丹神器!稀疏矩阵运算进入平民化时代!
- Vijos1240 朴素的网络游戏
- 【华为云技术分享】数据管理服务DAS 之 数据库自动化运维功能展播4:慢SQL
- LOCK TABLES
- javascript Date日期类
- 237.删除链表中的节点
- mathtype——小白安装
- 如何调试 chrome插件
- Python学习路线(课程大纲+Python视频教程+下载地址)
- 微信公众号开发 获取openid时报错40163:code been used问题的解决
- LeetCode - 720 - 词典里最长的单词(longest-word-in-dictionary)
- DirectX11 SDK下载地址
- LeetCode 1723 完成所有工作的最短时间 题解
- CTF初学笔记解题-密码1
- Costco已来华,会员制电商是否迎来爆发增长期?
- java rgb十六进制数据转图片
- 27个机器学习图表,帮你作弊一般飞速成长!