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

    CycloneV SERDES仿真

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

    CycloneV SERDES仿真

    QII中调用CycloneVSERDESreconfig模块时,IPCore会自动生成以子目录形式存在相关仿真文件(ArriaVStratixV也是一样的)。按照Altera提供的相关文档,可以通过执行自动生成的脚本文件,或者自己编写脚本文件,实现对SERDES的仿真。对于第一种方法,需要使用quartus_sh的命令执行脚本文件,尝试了一下并没有成功。其实在Modelsim下自行创建do文件的方式,可以更容易理解需要哪些仿真文件,并且这种方式会更加通用,适用于所有的仿真流程。

    仿真所用到软件环境包括Modelsim SE 10.0eQII 12.0 SP1

    1. 调用CycloneV Custom PHYTransceiver Reconfiguration Controller

    在例化PHY IPCore时,使能“Enable embedded reset controller”,PHY自带reset模块,“tx_ready”和“rx_ready”状态输出指示。

    在例化PHY IPCore时,可以发现下面信息栏有提示需要与2reconfiguration模块相连,一个是连接到transceiver channel,一个是连接到transmit PLL。所以在例化reconfiguration模块时,在“Number of reconfiguration interfaces”栏内填写的参数为2,这样才可以保证PHYreconfiguration模块的“reconfig_to_xcvr”和“reconfig_from_xcvr”两个信号的数据位宽相匹配。(PHY IPCore仅例化了一个SERDES通道)

    Custom PHY的相关参数设置,是需要通过Avalon-MM PHY Management Interface进行访问的,参数的设置都是以寄存器方式进行读写。参照Altera Transceiver PHY IP Core User Guide”,设置SERDES自回环,使能RX字节对齐模块。对应地址偏移为0x061phy_mgmt_writedata”设为32d1;地址偏移为0x085,“phy_mgmt_writedata”设为32d1


    2. 生成Custom PHYReconfiguration IPCore之后,在工程目录下会分别生成两个不同的目录,包括IPCore的设计和仿真文件。


    3. 在工程当前目录下新建Modelsim文件夹,相关tesetbench和仿真产生的文件都会存于此目录下。


    4. 创建simlib.do文件,对除了工程相关文件之外的所需仿真文件,进行编译。文件内容如下:

    set LIBPATH c:/altera/12.0/quartus/eda/sim_lib/

    #指定sim_lib目录

    set PHYPATH ../gxb_1g25_sim/altera_xcvr_custom_phy

    #指定Custom PHY目录

    set RECONFPATH ../gxb_reconf_sim/alt_xcvr_reconfig

    #指定Reconfiguration目录


    vlib sim_lib

    vmap sim_lib sim_lib

    #创建sim_lib仿真库,将相关仿真库文件编译至此库中


    vlog -work sim_lib $LIBPATH/220model.v

    vlog -work sim_lib $LIBPATH/altera_mf.v

    vlog -work sim_lib $LIBPATH/sgate.v

    vlog -work sim_lib $LIBPATH/altera_primitives.v

    #添加常规需要的仿真库文件之外,其中下面5个文件,作为CycloneV系列在Modelsim下推荐编译的仿真库文件

    vlog -work sim_lib $LIBPATH/altera_lnsim.sv

    vlog -work sim_lib $LIBPATH/mentor/cyclonev_atoms_ncrypt.v

    vlog -work sim_lib $LIBPATH/cyclonev_atoms.v

    vlog -work sim_lib $LIBPATH/mentor/cyclonev_hssi_atoms_ncrypt.v

    vlog -work sim_lib $LIBPATH/cyclonev_hssi_atoms.v


    #以下仿真库文件为当前工程调用PHYReconfiguration IPCore的相关文件

    #header file

    vlog -work sim_lib $PHYPATH/alt_xcvr_csr_common_h.sv

    vlog -work sim_lib $PHYPATH/*_h.sv


    #common function

    vlog -work sim_lib $PHYPATH/altera_xcvr_functions.sv


    #low latency phy

    vlog -work sim_lib $PHYPATH/*.v

    vlog -work sim_lib $PHYPATH/*.sv


    # compile simulation files for reconfig instance

    vlog -work sim_lib $RECONFPATH/alt_xcvr_reconfig_h.sv

    vlog -work sim_lib $RECONFPATH/*.v

    vlog -work sim_lib $RECONFPATH/*.sv


    5. 创建sim.do文件,将工程相关文件进行编译。文件内容如下:

    #do simlib.do


    vlib work

    vmap work work

    #创建work仿真库,将工程相关仿真库文件编译至此库中


    vlog +acc -work work -incr -f run.f

    #将工程相关带路径的文件名存放在run.f的文件中,对其进行编译。Run.f为任意命名的文件


    vsim -novopt  -L sim_lib -l run_modelsim.log  \

    +transport_int_delays +transport_path_delays \

    work.tb_top

    #work仿真库的tb_top模块进行仿真,其中tb_toptestbench中的module名称,仿真记录信息存放于run_modelsim.log日志文件中,“+transport_int_delays +transport_path_delays”参数建议添加,表示当前为高速信号仿真


    6. 创建run.f文件,将工程相关文件名称存放在此文件中,并带有相对路径。文件内容如下,除了tb_top.vtestbench文件在当前所建的modelsim目录下,其余文件都在上一级,即当前工程目录下。

    ../gxb_1g25.v

    ../gxb_reconf.v

    ../mayuan.v

    ../phy_mgmt_ctrl.v

    ../top.v

    tb_top.v


    7. 创建wave.do文件,执行上一步创建的sim.do文件,并将需要观察的信号置于wave窗口,并运行仿真。文件内容如下:

    quit -sim

    do sim.do

    add wave sim:/tb_top/u1_top/*

    add wave -divider phy_mgmt_ctrl

    add wave sim:/tb_top/u1_top/phy_mgmt_ctrl_inst/*

    radix -hex

    run 50us


    8. 打开Modelsim,通过File->Change Directory命令将工作目录指定到创建的modelsim目录下。由于是第一次运行仿真,可以先执行一次“do simlib.do”命令,即编译除工程文件之外的仿真库文件。以后再次运行仿真时,即可跳过此步骤。直接执行“do wave.do”命令,因为wave.do文件中已经嵌套了sim.do文件。


    9. 仿真结果

    可以看到程序中在tx_ready信号变高之后,开始发送数据。在rx_ready信号变高之后一段时间,开始接收到正确的数据。