当前位置:   article > 正文

Aurora 64B/66B 设计,仿真验证数据传输速率_aurora 64b/66b 仿真

aurora 64b/66b 仿真

项目需求:要求使用Aurora协议,采集光口传输四通道传输的数据。

环境:Vivado 2017.4

器件:Kintex-7      xc7k325tffg676-2

一、创建新的空工程

对应器件选型来创建Aurora_test的工程。

略。

二、添加IP core

 三、配置IP

xilinx官方文档pg074有对应每一个选项下的介绍,采用简单粗暴的stearming式传输。

四、IP核例化

  1. `timescale 1ns / 1ps
  2. module Aurora_test
  3. (
  4. sys_clk_p ,
  5. sys_clk_n ,
  6. sys_rst_n
  7. GTH_MCLK0_P ,
  8. GTH_MCLK0_N ,
  9. txp ,
  10. txn ,
  11. rxp ,
  12. rxn )
  13. input wire sys_rst_p ;
  14. input wire sys_clk_n ;
  15. input wire sys_clk_n ;
  16. input wire GTH_MCLK0_P ;
  17. input wire GTH_MCLK0_N ;
  18. output wire [3:0] txp ;
  19. output wire [3:0] txn ;
  20. input wire [3:0] rxp ;
  21. input wire [3:0] rxn ;
  22. reg [31:0] s_axi_tx_tdata ;
  23. reg s_axi_tx_tvalid ;
  24. wire s_axi_tx_tready ;
  25. wire [255:0] m_axi_rx_tdata ;//to ddr4 to pcie
  26. wire m_axi_rx_tvalid ;
  27. wire hard_err ;
  28. wire soft_err ;
  29. wire channel_up ;
  30. wire lane_up ;
  31. wire reset ;
  32. wire gt_reset ;//user_rst
  33. wire [ 3:0] loopback ;
  34. wire drpclk_in ;
  35. wire [ 8:0] drpaddr_in ;
  36. wire drpen_in ;
  37. wire [15:0] drpdi_in ;
  38. wire drprdy_out ;
  39. wire [15:0] drpdo_out ;
  40. wire drpwe_in ;
  41. wire tx_lock ;
  42. wire tx_resetdone_out ;
  43. wire rx_resetdone_out ;
  44. wire link_reset_out ;
  45. wire init_clk_in ;
  46. wire user_clk_out ;//user_clk to wirte ddr4
  47. wire pll_not_locked_out ;
  48. wire sys_reset_out ;
  49. wire gt_reset_out ;
  50. wire gt_refclk1_out ;
  51. wire gt0_pll0refclklost_out;
  52. wire quad1_common_lock_out;
  53. wire gt0_pll0outclk_out ;
  54. wire gt0_pll1outclk_out ;
  55. wire gt0_pll0outrefclk_out;
  56. wire gt0_pll1outrefclk_out;
  57. wire locked ;
  58. reg [10:0] gt_reset_cnt ;
  59. reg start_flag ;
  60. reg [31:0] data_cnt ;
  61. reg [11:0] err_cnt ;
  62. wire mmcm_not_locked_out ;
  63. reg channel_up_r ;
  64. reg lane_up_r ;
  65. reg [23:0] pma_init_cnt ;
  66. assign reset = (pma_init_cnt== 24'hFFFFFF) ? 0:1;
  67. //assign sys_rst_n = ~gt_reset;
  68. assign gt_reset = (pma_init_cnt>= 24'h8FFFFF) ? 0:1;
  69. always @(posedge user_clk_out) begin
  70. if(~sys_rst_n)begin
  71. pma_init_cnt <= 24'b0;
  72. end
  73. else if(pma_init_cnt< 24'hFFFFFF)
  74. pma_init_cnt <= pma_init_cnt + 1'b1;
  75. else if(pma_init_cnt>= 24'hFFFFFF)
  76. pma_init_cnt <= pma_init_cnt;
  77. else
  78. pma_init_cnt <= pma_init_cnt;
  79. end
  80. /*************ip 例化****************/
  81. aurora_64b66b_0 inst_aurora
  82. (
  83. .s_axi_tx_tdata (s_axi_tx_tdata),
  84. .s_axi_tx_tvalid (s_axi_tx_tvalid),
  85. .s_axi_tx_tready (s_axi_tx_tready),
  86. .m_axi_rx_tdata (m_axi_rx_tdata),
  87. .m_axi_rx_tvalid (m_axi_rx_tvalid),
  88. .rxp (rxp),
  89. .rxn (rxn),
  90. .txp (txp),
  91. .txn (txn),
  92. .hard_err (hard_err),
  93. .soft_err (soft_err),
  94. .channel_up (channel_up),
  95. .lane_up (lane_up),
  96. .user_clk_out (user_clk_out),//dushuju
  97. .sync_clk_out (),
  98. .reset_pb (reset),
  99. .gt_rxcdrovrden_in (1'b0),
  100. .power_down (1'b0),
  101. .loopback (loopback),
  102. .pma_init (gt_reset), //gt_reset
  103. .gt0_drpdo (), //output
  104. .gt0_drprdy (), //output
  105. .gt0_drpaddr (9'b0), //
  106. .gt0_drpdi (16'b0),
  107. .gt0_drpen (1'b0),
  108. .gt0_drpwe (1'b0),
  109. .init_clk (clk100m), //参考时钟
  110. .link_reset_out (link_reset_out),
  111. .gt_pll_lock (),
  112. .gt_refclk1_p (GTH_MCLK0_P),
  113. .gt_refclk1_n (GTH_MCLK0_N),
  114. .gt_refclk1_out (),
  115. .gt_powergood (),
  116. .gt_qpllclk_quad1_out (),
  117. .gt_qpllrefclk_quad1_out (),
  118. .gt_qplllock_quad1_out (),
  119. .gt_qpllrefclklost_quad1_out (),
  120. .sys_reset_out (),
  121. .mmcm_not_locked_out (),
  122. .gt_reset_out (),
  123. .tx_out_clk ()
  124. );

五、IP core仿真

 右击添加的IP ,打开IP的Example Design。Run simulation之后,等待仿真完毕,添加这两个例化信号:

 重新仿真一次,我的仿真过程有点慢不知道是什么原因,等待一段时间之后,IP的仿真波形如下:

 找到TX_D和RX_D,这两个信号代表着在PL端传输的数据,添加两根参考线,可以得到TX_D一个数据传输所用的时间6.44ns。

六、仿真速率的计算

1s传输多少个字节:1s ÷ 6.44ns = 155,279,503.1055901 个

一个字节根据协议在数据通道传输是66位:

用上面的字节数在乘上66 bit = 10,248,447,204.96894 bps ≈ 10.25Gbps

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/482154
推荐阅读
  

闽ICP备14008679号