• 免费注册   
  • 会员登录   
  • 设为首页
  • 加入收藏
  • 咨询热线:1388-225-1054

    JESD204B IPCore仿真和使用说明

    * 作者 : admin * 发表时间 : 2018-08-23 * 浏览 :

    JESD204B IPCore仿真流程和使用说明

    JESD204B协议首次在QII13.1的版本中以单独的IPCore形式提供的,目前支持Subclass0Subclass1Converter Device,支持的FPGA系列包括ArriaVStratixV

    由于JESD204B IPCore的使用需要结合外部的ADCDAC器件,所以前期通过仿真来熟悉IPCore的特性,就会方便很多。Altera官方网站上提供了现成的参考设计,可以基于这些设计进行仿真。还可以按照IPCore userguide介绍的方法进行仿真,但是其中的说明并不是很详细。下面的步骤比较详细的介绍了整个仿真流程,可能由于Altera提供的相关仿真的方法并不是很完善,显得会比较繁琐。所以这个流程只是作为尽快熟悉IPCore的一种方法,仅供参考。

    另外会有介绍IPCore的一些使用问题,包括相关信号定义的说明。

    1. 直接通过Megawizard例化一个IPCoreIPCore namejesd204b),在生成IPCore时勾选生成Example Design。下图为IPCore生成之后对应ed_sim/testbench目录结构。

    2. 修改ed_sim/testbench/目录下的run_tb_top.tcl文件,指定msim_setup.tcl的位置:

    set SETUP_SCRIPTS ../setup_scriptsàset SETUP_SCRIPTS ../../../../../jesd204b_sim/mentor

    source $SETUP_SCRIPTS/mentor/msim_setup.tclàsource $SETUP_SCRIPTS/msim_setup.tcl


    3. 打开ModelSim,指定到ed_sim/testbench/mentor目录下,运行do run_tb_top.tcl,出现以下报错:

    # ** Error: (vlog-7) Failed to open design unit file "./..//altera_xcvr_native_av/altera_xcvr_functions.sv" in read mode.


    4. QII下运行jesd204b_example_design/altera_jesd204/ed_synth/gen_quartus_synth.tcl脚本,生成example_design目录


    5. example_designjesd204b_sim目录下相关子目录拷贝至ed_sim/testbench目录下


    6. 修改run_tb_top.tcl,再次执行do run_tb_top.tcl,还会有报错信息。再次修改run_tb_top.tcl文件。

    修改部分:

    dev_com > #dev_com

    #vlog     "$dir/control_unit/*.v"> 去掉#的标注

    #vlog     "$dir/spi/*.v" –> 去掉#的标注

    #vlog     "$dir/pll/*.v"> 去掉#的标注

    #vlog     "$dir/transport_layer/*.sv"> 去掉#的标注

    #vlog     "$dir/pattern/*.v"> 去掉#的标注

    添加部分:

    vlog     "$dir/core_pll_reconfig_module/*.v"

    vlog     "$dir/core_pll_reconfig_module/submodules/*.v"

    vlog     "$dir/XCVR_reconfig_module/*.v"

    vlog     "$dir/XCVR_reconfig_module/submodules/*.sv"

    vlog     "$dir/XCVR_reconfig_module/submodules/*.v"

    vlog     "$dir/xcvr_reset_control_module/*.v"

    vlog     "$dir/xcvr_reset_control_module/submodules/*.sv"


    7. 修改ed_sim/testbenchjesd204b.v文件,将module的名称jesd204b改为altera_jesd204b,在ModelSim下单独执行以下命令,即可开启仿真

    vlog     "$QSYS_SIMDIR/jesd204b.v"

    elab_debug

    do $tb_top_waveform

    radix hex

    run -all


    8. 仿真之后部分信号无法显示,需要修改tb_top_waveform.do文件,可以参照ModelSimsim标签栏所显示的模块结构进行修改


    9. Altera网站上提供的一个参考设计为例,在AVGTAD9250连接的Demo中,相关参数设置如下:

    AD9250内转换器的个数

    M

    2

    AD9250FPGA连接的SERDES通道数

    L

    2

    AD9250每帧包含8位字节数

    F

    2

    AD9250采样位数

    N

    14

    JESD204B字大小(4个半字节)

    N

    16

    AD9250每帧包含样本数

    S

    1

    AD9250每个多帧包含的连续帧数

    K

    32

    AD9250侧的Device Clock


    245.76MHz

    FPGA侧的Device ClockGXB参考时钟)


    122.88MHz

    JESD204B SERDES速率


    4915.2Mbps


    10. N值的选择:

    a) N = 半字节数(4bitsx 4

    b) 一般来说,12位转换器 > N=1214位和16位转换器 > N=16


    11. S值的选择:

    a) 对于低速简单的转换器,S通常为1;对于高速复杂的转换器,S的值基于以下公式

    b) S = JESD204数据率)/(帧时钟FC

    JESD204数据率 = M x ADC采样率)/ADC抽取系数)

    c) 以上公式是基于ADC单位时间采样样本总数来计算的


    12. SERDES速率是基于以下公式计算出来的

    a) SERDES速率 = (M x S x N’ x 10/8 x FC) / L

    b) 以上公式计算是需要考虑到ADC数据传输带宽必须和SERDES去除8B/10B开销之后的理论带宽相匹配


    13. F的值是基于以下公式计算出来的

    F = (M x S x N’) / (8 x L)


    14. FPGAADC内部时钟之间的参考关系参见以下的表和图。需要注意的是,FPGA IPCore并行数据宽度是固定的32bits

    a) SERDES速率为4915.2Mbps,并行数据宽度为32位,Link Clock即为:

    4915.2 x 0.8 / 32 = 122.88MHz

    b) 8位字符时钟Character Clock491.52MHz

    (122.88MHz x 4) x 8bits = 4915.2Gbps x 0.8

    c) Frame Clock245.76MHz

    (122.88MHz x 2) x (2(F=2) x 8bits) = 4915.2Gbps x 0.8

    d) Multi-Frame Clock7.68MHz

    245.76MHz/32 = 7.68MHz

    e) SYSREF如果是周期性信号,其周期必须是LMFC的整数倍。DemoR=1,所以SYSREF和多帧时钟的频率相同

    Clock Name

    Ratio (w.r.t. Multi-frame clock)

    Related JESD204B parameter/range

    SYSREF Clock

    1/R

    R=integer

    Local Multi-frame Clock (LMFC)

    1


    Frame Clock

    x K

    ceil(17/F) <= K <= min(32,floor(1024/F))

    Character/Octet Clock

    x K x F

    F = 1…256

    Link Clock

    (x K x F ) / 4

    32 bit data instead of 8 bit data width

    Bit Clock/Serial Clock

    x K x F x 10

    8b/10b encoding

    Sample Clock

    x K x S

    S = 1…32

    Device Clock

    x D

    Reference Clock for the PLL

    (for >6pack, Reference clock == Link Clock)


    15. IPCore提供了Avalon-MM总线作为寄存器配置和状态接口。一般来说,在IPCore中已经设置了JESD204B的相关参数,如果不需要对参数进行实时配置,或者不需要进行状态的监控。是可以不用对MM总线进行操作的。


    16. 对于RX方向来说,当jesd204_rx_link_valid信号变高的时刻,就是接收数据有效的时刻。对于TX方向来说,当jesd_tx_frame_ready信号变高的时刻,用户就可以发送有效数据。当jesd_tx_link_ready信号变高,表示链路进入用户数据阶段。


    17. jesd204_tx_link_data[L*32]jesd204_rx_link_data[L*32]两组总线作为TXRX方向并行数据接口,是纯粹的用户数据接口。关于链路的特定数据帧格式,以及字符替代的功能,完全由DLL数据链路层来实现。


    18. 如果系统中有多个ADCDAC的器件,需要例化多个IPCore


    19. 在多个ADC的系统中,每一个IPCore都会对应有1dev_lane_alignedalldev_lane_aligned的信号。需要将每一个IPCoredev_lane_aligned信号进行组合,然后分别输出给每一个IPCorealldev_lane_aligned信号。


    20. 对于TX方向来说,IPCore提供了sync_n(Input)dev_sync_n(Output)两个信号。按照手册上的说法,dev_sync_n信号是一个clean synchronization request。也就是说,sync_n信号是作为DAC器件输出的重新同步或error reporting的指示信号。而dev_sync_n信号是将sync_n信号的error reporting功能屏蔽掉之后的输出指示信号,仅作为重新同步的指示。


    21. 在多个DAC的系统中,如果是Subclass1器件,每一个DACsync_n信号会输入给IPCoresync_n管脚,然后分别将每一个IPCoredev_sync_nmdev_sync_n进行连接。如果是Subclass0器件,需要将每一个IPCoredev_sync_n信号进行组合,然后分别输出给每一个IPCoremdev_sync_n信号。


    22. JESD204B的相关控制和状态寄存器的说明,是以网页的形式提供的:

    http://www.altera.com/literature/ug/altera_jesd204_tx_regmap.html

    http://www.altera.com/literature/ug/altera_jesd204_rx_regmap.html


    23. 对于TX方向来说,subclass12ILAS阶段的固定为4个多帧,subclass0可以设置4个以上的多帧。在名为dll_ctrlTX寄存器中进行设置,相关定义为ilas_multiframe


    24. 对于RX方向来说,可以设置RBD的帧数小于一个多帧。在名为syncn_sysref_ctrlRX寄存器中进行设置,相关定义为rbd_offset