本文主要是介绍AD9371 Crossbar 和 I、Q数据 映射JESD204B传输层,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
AD9371 系列快速入口
AD9371+ZCU102 移植到 ZCU106 : AD9371 官方例程构建及单音信号收发
ad9371_tx_jesd -->util_ad9371_xcvr接口映射: AD9371 官方例程之 tx_jesd 与 xcvr接口映射
AD9371 官方例程 时钟间的关系与生成 : AD9371 官方例程HDL详解之JESD204B TX侧时钟生成(一)
JESD204B相关IP端口信号 : AD9371 官方例程HDL JESD204B相关IP端口信号
裸机程序配置 AD9528、AD9371、FPGA IP: AD9371 官方例程裸机SW 和 HDL配置概述(一)
AD9371 主函数: AD9371 官方例程 NO-OS 主函数 headless 梳理(一)
AD9371 主函数: AD9371 官方例程 NO-OS 主函数 headless 梳理(二)
文章目录
- 前言
- 一、TXDeframer 的 DAC Crossbar 和 Lane Crossbar
- 二、RXFramer 的 ADC Crossbar 和 Lane Crossbar
- 三、ObsRxFramer 的 ADC Crossbar 和 Lane Crossbar
- 四、TX 的 I、Q 映射关系
- 五、RX 的 I、Q 映射关系
前言
从FPGA中的 JESD204B 传输层 tx/rx 基带数据时,I、Q两路 谁占据传输层 组/解帧 时转换器 M0 的位置,谁占据转换器 M1 的位置,才能正确通过AD9371射频 ?
TX传输层要求格式 , [ M3S1, M3S0, M2S1, M2S0, M1S1, M1S0, M0S1, M0S0]
RX传输层输出格式 , [ M3S0, M2S0, M1S0, M0S0]
RX_OS传输层输出格式,[ M1S1, M1S0, M0S1, M0S0]
Lane通道之间的连接关系见 AD9371 官方例程之 tx_jesd 与 xcvr接口映射
一、TXDeframer 的 DAC Crossbar 和 Lane Crossbar
官方例程 TX 分配 4个 LANE和4个转换器M
DAC Crossbar 被一直配置为 framerADC_XBar = 0xB1 = 1011 0001
Lane crossbar 被一直配置为 laneXbar= 0xE4 = 1110 0100;
即 :
LANE0 —> DEFRAMER INPUT 0 —> DEFRAMER OUTPUT 0 —> Tx1 I
LANE1 —> DEFRAMER INPUT 1 —> DEFRAMER OUTPUT 1 —> Tx1 Q
LANE2 —> DEFRAMER INPUT 2 —> DEFRAMER OUTPUT 2 —> Tx2 I
LANE3 —> DEFRAMER INPUT 3 —> DEFRAMER OUTPUT 3 —> Tx2 Q
即:
SERDIN0 ——> LANE 0 ——>DEFRAMER INPUT 0 ——> DAC0 ——> DEFRAMER OUTPUT 0 ——> Tx1 I
SERDIN1 ——> LANE 1 ——>DEFRAMER INPUT 1 ——> DAC1 ——> DEFRAMER OUTPUT 1 ——> Tx1 Q
SERDIN2 ——> LANE 2 ——>DEFRAMER INPUT 2 ——> DAC2 ——> DEFRAMER OUTPUT 2 ——> Tx2 I
SERDIN3 ——> LANE 3 ——>DEFRAMER INPUT 3 ——> DAC3 ——> DEFRAMER OUTPUT 3 ——> Tx2 Q
二、RXFramer 的 ADC Crossbar 和 Lane Crossbar
官方例程 RX 分配 2个 LANE和4个转换器M
ADC Crossbar 被一直配置为 framerADC_XBar = 0xB1=1011 0001
Lane Crossbar 根据RX 转换器M 的数量
M=4,framerLaneXbar = 0x08=0000 1000; 使用 Rxframer outputs 0 and 2
M=2,framerLaneXbar = 0x04; 使用 Rxframer outputs 0 and 1
文章后续默认 M=4,framerLaneXbar = 0x08;
Rx1 I ——>RXFramer INPUT 0 ——>ADC0 ——> RXFramer OUTPUT 0 ——> LANE 0 ——> SERDOUT0
Rx1 Q ——>RXFramer INPUT 1 ——>ADC1 ——> RXFramer OUTPUT 0 ——> LANE 0 ——> SERDOUT0
Rx2 I ——>RXFramer INPUT 2 ——>ADC2 ——> RXFramer OUTPUT 2 ——> LANE 1 ——> SERDOUT1
Rx2 Q ——>RXFramer INPUT 3 ——>ADC3 ——> RXFramer OUTPUT 2 ——> LANE 1 ——> SERDOUT1
三、ObsRxFramer 的 ADC Crossbar 和 Lane Crossbar
官方例程 ObsRx 分配 2个 LANE和2个转换器M
ADC Crossbar 被一直配置为 framerADC_XBar = 0xB1=1011 0001
Lane Crossbar 被一直配置为 framerLaneXbar = 0x40=0100 0000; 使用 ObsRxframer outputs 0 and 1
Rx_OS I ——> ObsRxFramer INPUT 0 ——>ADC0 ——> ObsRxFramer OUTPUT 0 ——> LANE 2 ——> SERDOUT2
Rx_OS Q ——>ObsRxFramer INPUT 1 ——>ADC1 ——> ObsRxFramer OUTPUT 1 ——> LANE 3 ——> SERDOUT3
四、TX 的 I、Q 映射关系
结合 Lane通道之间的连接关系 AD9371 官方例程之 tx_jesd 与 xcvr接口映射 ,可得到
TX:
tx_phy0(tx_jesd) ——> SERDIN0 ——> Tx1 I
tx_phy1(tx_jesd) ——> SERDIN1 ——> Tx1 Q
tx_phy2(tx_jesd) ——> SERDIN2 ——> Tx2 I
tx_phy3(tx_jesd) ——> SERDIN3 ——> Tx2 Q
链路层:
而在 axi_ad9371_tx_jesd/tx IP核逻辑中输入数据 tx_data 经过加扰,字符替换标志后生成 phy_data
tx_data(tx_jesd) ——> phy_data (tx_jesd)
phy_data [ 31: 0] (tx_jesd) = tx_phy0(tx_jesd)
phy_data [63:32] (tx_jesd) = tx_phy1(tx_jesd)
phy_data [95:64] (tx_jesd) = tx_phy2(tx_jesd)
phy_data [127:96] (tx_jesd)= tx_phy3(tx_jesd)
传输层
dac_ddata(tpl_core) ——> link_tdata(tpl_core) ——> tx_data(tx_jesd)
dac_ddata 格式 :[ M3S1, M3S0, M2S1, M2S0, M1S1, M1S0, M0S1, M0S0]
经过 组帧得到 link_tdata,link_tdata格式 Octets LSB first :
[ M3S1[OL], M3S0[OL], M2S1[OL], M2S0[OL], M1S1[OL], M1S0[OL], M0S1[OL], M0S0[OL]]
注意 : MmSn[OL] = { MmSn [7:0] ,MmSn [15:8] }
即:
M0S1, M0S0 ——> M0S1[OL], M0S0[OL] ——> tx_phy0(tx_jesd) ——> SERDIN0 ——> Tx1 I
M1S1, M1S0 ——> M0S1[OL], M0S0[OL] ——> tx_phy1(tx_jesd) ——> SERDIN1 ——> Tx1 Q
M2S1, M2S0 ——> M0S1[OL], M0S0[OL] ——> tx_phy2(tx_jesd) ——> SERDIN2 ——> Tx2 I
M3S1, M3S0 ——> M0S1[OL], M0S0[OL] ——> tx_phy3(tx_jesd) ——> SERDIN3 ——> Tx2 Q
五、RX 的 I、Q 映射关系
RX 和 RX_OS:
Rx1 Q 、Rx1 I ——> SERDOUT0 ——> rx_phy0(rx_jesd)
Rx2 Q 、Rx2 I ——> SERDOUT1 ——> rx_phy1(rx_jesd)
Rx_OS I —— > SERDOUT2 ——> rx_phy2(rx_os_jesd)
Rx_OS Q ——> SERDOUT3 ——> rx_phy3(rx_os_jesd)
未完。。。
这篇关于AD9371 Crossbar 和 I、Q数据 映射JESD204B传输层的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!