文章目录
- 前言
- 一、IP核配置
- 二、设计框图
- 三、上板效果
- 总结
前言
前面我们基于GT 64B66B设计了自定义PHY层,并且也介绍过了基于AURORA8B18B IP核的使用,AURORA8B18B IP核的使用可以说是与AURORA8B18B IP核完全一致,可参考前文:https://blog.csdn.net/m0_56222647/article/details/137261729?spm=1001.2014.3001.5502
一、IP核配置
与8B10B大题是一样,接口也类似
 
二、设计框图
设计框图与8B10B一致,模块功能也是一样的,大部分模块都直接使用example design当中的即可,只有aurora_64b66b_0_CLOCK_MODULE模块进行了简单的修改,将INIT_CLK的双端转单端放到了顶层模块。
 
module aurora64b66b_module(input               i_init_clk_100M         ,input               i_rst                   ,input               gt_refclk_p             ,input               gt_refclk_n             ,output [1 :0]       gt_txp                  ,output [1 :0]       gt_txn                  ,input  [1 :0]       gt_rxp                  ,input  [1 :0]       gt_rxn                  ,input  [63:0]       s_axi_tx_0_tdata        ,input  [7 :0]       s_axi_tx_0_tkeep        ,input               s_axi_tx_0_tlast        ,input               s_axi_tx_0_tvalid       ,output              s_axi_tx_0_tready       ,output [63:0]       m_axi_rx_0_tdata        ,output [7 :0]       m_axi_rx_0_tkeep        ,output              m_axi_rx_0_tlast        ,output              m_axi_rx_0_tvalid       ,output              o_hard_err_0            ,output              o_soft_err_0            ,output              o_channel_up_0          ,output              o_lane_up_0             ,input  [2 :0]       i_loopback_0            ,output              o_user_clk_0            ,output              o_user_rst_0            ,input  [63:0]       s_axi_tx_1_tdata        ,input  [7 :0]       s_axi_tx_1_tkeep        ,input               s_axi_tx_1_tlast        ,input               s_axi_tx_1_tvalid       ,output              s_axi_tx_1_tready       ,output [63:0]       m_axi_rx_1_tdata        ,output [7 :0]       m_axi_rx_1_tkeep        ,output              m_axi_rx_1_tlast        ,output              m_axi_rx_1_tvalid       ,output              o_hard_err_1            ,output              o_soft_err_1            ,output              o_channel_up_1          ,output              o_lane_up_1             ,input  [2 :0]       i_loopback_1            ,output              o_user_clk_1            ,output              o_user_rst_1          );IBUFDS_GTE2 IBUFDS_GTXE2_CLK1  
(.O               (i_gtref_clk   ),.ODIV2           (              ),.CEB             (1'b0          ),.I               (gt_refclk_p   ),.IB              (gt_refclk_n   )
);aurora_64b66b_0_gt_common_wrapper gt_common_support
(.gt_qpllclk_quad1_out       (gt_qpllclk_quad1_in    ),.gt_qpllrefclk_quad1_out    (gt_qpllrefclk_quad1_in ),.GT0_GTREFCLK0_COMMON_IN    (i_gtref_clk            ), //----------------------- Common Block - QPLL Ports ------------------------.GT0_QPLLLOCK_OUT           (gt0_qplllock_in        ),.GT0_QPLLRESET_IN           (gt0_qpllreset_out      ),.GT0_QPLLLOCKDETCLK_IN      (i_init_clk_100M        ),.GT0_QPLLREFCLKLOST_OUT     (gt0_qpllrefclklost_in  ),//---------------------- Common DRP Ports ----------------------.qpll_drpaddr_in            (0),.qpll_drpdi_in              (0),.qpll_drpclk_in             (0),.qpll_drpdo_out             (), .qpll_drprdy_out            (), .qpll_drpen_in              (0), .qpll_drpwe_in              (0)
);aurora64b66b_channel aurora64b66b_channel_u0(.i_init_clk_100M            (i_init_clk_100M        ),.i_rst                      (i_rst                  ),.i_gtref_clk                (i_gtref_clk            ),.gt_txp                     (gt_txp[0]              ),.gt_txn                     (gt_txn[0]              ),.gt_rxp                     (gt_rxp[0]              ),.gt_rxn                     (gt_rxn[0]              ),.s_axi_tx_tdata             (s_axi_tx_0_tdata       ),.s_axi_tx_tkeep             (s_axi_tx_0_tkeep       ),.s_axi_tx_tlast             (s_axi_tx_0_tlast       ),.s_axi_tx_tvalid            (s_axi_tx_0_tvalid      ),.s_axi_tx_tready            (s_axi_tx_0_tready      ),.m_axi_rx_tdata             (m_axi_rx_0_tdata       ),.m_axi_rx_tkeep             (m_axi_rx_0_tkeep       ),.m_axi_rx_tlast             (m_axi_rx_0_tlast       ),.m_axi_rx_tvalid            (m_axi_rx_0_tvalid      ),.o_hard_err                 (o_hard_err_0           ),.o_soft_err                 (o_soft_err_0           ),.o_channel_up               (o_channel_up_0         ),.o_lane_up                  (o_lane_up_0            ),.i_loopback                 (i_loopback_0           ),.o_user_clk                 (o_user_clk_0           ),.o_user_rst                 (o_user_rst_0           ),.gt0_qplllock_in            (gt0_qplllock_in        ),.gt0_qpllrefclklost_in      (gt0_qpllrefclklost_in  ),.gt0_qpllreset_out          (gt0_qpllreset_out      ),.gt_qpllclk_quad1_in        (gt_qpllclk_quad1_in    ),.gt_qpllrefclk_quad1_in     (gt_qpllrefclk_quad1_in ) 
);aurora64b66b_channel aurora64b66b_channel_u1(.i_init_clk_100M            (i_init_clk_100M        ),.i_rst                      (i_rst                  ),.i_gtref_clk                (i_gtref_clk            ),.gt_txp                     (gt_txp[1]              ),.gt_txn                     (gt_txn[1]              ),.gt_rxp                     (gt_rxp[1]              ),.gt_rxn                     (gt_rxn[1]              ),.s_axi_tx_tdata             (s_axi_tx_1_tdata       ),.s_axi_tx_tkeep             (s_axi_tx_1_tkeep       ),.s_axi_tx_tlast             (s_axi_tx_1_tlast       ),.s_axi_tx_tvalid            (s_axi_tx_1_tvalid      ),.s_axi_tx_tready            (s_axi_tx_1_tready      ),.m_axi_rx_tdata             (m_axi_rx_1_tdata       ),.m_axi_rx_tkeep             (m_axi_rx_1_tkeep       ),.m_axi_rx_tlast             (m_axi_rx_1_tlast       ),.m_axi_rx_tvalid            (m_axi_rx_1_tvalid      ),.o_hard_err                 (o_hard_err_1           ),.o_soft_err                 (o_soft_err_1           ),.o_channel_up               (o_channel_up_1         ),.o_lane_up                  (o_lane_up_1            ),.i_loopback                 (i_loopback_1           ),.o_user_clk                 (o_user_clk_1           ),.o_user_rst                 (o_user_rst_1           ),.gt0_qplllock_in            (gt0_qplllock_in        ),.gt0_qpllrefclklost_in      (gt0_qpllrefclklost_in  ),.gt0_qpllreset_out          (),.gt_qpllclk_quad1_in        (gt_qpllclk_quad1_in    ),.gt_qpllrefclk_quad1_in     (gt_qpllrefclk_quad1_in ) 
);endmodule
三、上板效果
数据收发一切正常
 
总结
整体设计与8B10B完全一致,完整工程代码可参考:https://github.com/shun6-6/AURORA64B66B_Pro