当前位置: 首页 > news >正文

XILINX 10G PCS PMA IP核使用

文章目录

  • 一、设计框图
  • 二、模块设计
  • 三、IP核配置
  • 四、上板验证
  • 五、总结

一、设计框图

关于GT高速接口的设计一贯作风,万兆以太网同样如此,只不过这里将复位逻辑和时钟逻辑放到了同一个文件ten_gig_eth_pcs_pma_0_shared_clock_and_reset当中。如果是从第一篇高速接口设计看到现在,应该很熟悉了。
在这里插入图片描述

二、模块设计

ten_gig_eth_pcs_pma_0_shared_clock_and_reset模块将输入的用户复位信号i_rst进行同步然后产生相应的复位信号给到IP核,同时也根据IP核输出的txoutclk产生一系列用户时钟,与之前的高速接口设计不同的是,万兆以太网的用户时钟不再是txusrclk2,而是coreclk

module TEN_GIG_ETH_PCSPMA(input               i_gt_refclk             ,input               i_sys_clk               ,input               i_rst                   ,input               i_qplllock              ,input               i_qplloutclk            ,input               i_qplloutrefclk         ,output              o_qpllreset             ,output              txp                     ,output              txn                     ,input               rxp                     ,input               rxn                     ,input               i_sim_speedup_control   ,output              o_xgmii_clk             ,   input  [63 : 0]     i_xgmii_txd             ,input  [7  : 0]     i_xgmii_txc             ,output [63 : 0]     o_xgmii_rxd             ,output [7  : 0]     o_xgmii_rxc             ,output              o_block_sync            ,output              o_rst_done              ,output              o_pma_link              ,output              o_pcs_rx_link           ,output              o_tx_disable            
);wire                coreclk                 ;
wire                txusrclk                ;
wire                txusrclk2               ;
wire                txoutclk                ;
wire                areset_coreclk          ;
wire                gttxreset               ;
wire                gtrxreset               ;
wire                txuserrdy               ;
wire                reset_counter_done      ;
(* MARK_DEBUG = "TRUE" *)wire                tx_resetdone            ;
(* MARK_DEBUG = "TRUE" *)wire                rx_resetdone            ;wire [7 :0]         core_status             ;
wire [447:0]        status_vector           ;
wire [535:0]        configuration_vector    ;
wire                drp_req                 ;assign o_xgmii_clk      = coreclk;
assign o_block_sync     = core_status[0];
assign o_rst_done       = tx_resetdone & rx_resetdone;
assign o_pma_link       = status_vector[18];
assign o_pcs_rx_link    = status_vector[226];
assign configuration_vector[399:384] = 16'h4C4B;
assign configuration_vector[535:400] = 136'd0;
assign configuration_vector[383:1]   = 384'd0;
assign configuration_vector[0:0]     = 0;//PMA LOOPBACKten_gig_eth_pcs_pma_0_shared_clock_and_reset ten_gig_eth_pcs_pma_shared_clock_reset_block
(.areset                 (i_rst              ),.refclk                 (i_gt_refclk        ),.coreclk                (coreclk            ),.txoutclk               (txoutclk           ),.qplllock               (i_qplllock         ),.areset_coreclk         (areset_coreclk     ),.gttxreset              (gttxreset          ),.gtrxreset              (gtrxreset          ),.txuserrdy              (txuserrdy          ),.txusrclk               (txusrclk           ),.txusrclk2              (txusrclk2          ),.qpllreset              (o_qpllreset        ),.reset_counter_done     (reset_counter_done )
);ten_gig_eth_pcs_pma_0 ten_gig_eth_pcs_pma_u0 (.rxrecclk_out           (                       ),  // output wire rxrecclk_out.coreclk                (coreclk                ),  // input wire coreclk.dclk                   (i_sys_clk              ),  // input wire dclk.txusrclk               (txusrclk               ),  // input wire txusrclk.txusrclk2              (txusrclk2              ),  // input wire txusrclk2.areset                 (i_rst                  ),  // input wire areset.txoutclk               (txoutclk               ),  // output wire txoutclk.areset_coreclk         (areset_coreclk         ),  // input wire areset_coreclk.gttxreset              (gttxreset              ),  // input wire gttxreset.gtrxreset              (gtrxreset              ),  // input wire gtrxreset.txuserrdy              (txuserrdy              ),  // input wire txuserrdy.qplllock               (i_qplllock             ),  // input wire qplllock.qplloutclk             (i_qplloutclk           ),  // input wire qplloutclk.qplloutrefclk          (i_qplloutrefclk        ),  // input wire qplloutrefclk.reset_counter_done     (reset_counter_done     ),  // input wire reset_counter_done.txp                    (txp                    ),  // output wire txp.txn                    (txn                    ),  // output wire txn.rxp                    (rxp                    ),  // input wire rxp.rxn                    (rxn                    ),  // input wire rxn.sim_speedup_control    (i_sim_speedup_control  ),  // input wire sim_speedup_control.xgmii_txd              (i_xgmii_txd            ),  // input wire [63 : 0] xgmii_txd.xgmii_txc              (i_xgmii_txc            ),  // input wire [7 : 0] xgmii_txc.xgmii_rxd              (o_xgmii_rxd            ),  // output wire [63 : 0] xgmii_rxd.xgmii_rxc              (o_xgmii_rxc            ),  // output wire [7 : 0] xgmii_rxc.configuration_vector   (configuration_vector   ),  // input wire [535 : 0] configuration_vector.status_vector          (status_vector          ),  // output wire [447 : 0] status_vector.core_status            (core_status            ),  // output wire [7 : 0] core_status.tx_resetdone           (tx_resetdone           ),  // output wire tx_resetdone.rx_resetdone           (rx_resetdone           ),  // output wire rx_resetdone.signal_detect          (1                      ),  // input wire signal_detect.tx_fault               (0                      ),  // input wire tx_fault.drp_req                (drp_req                ),  // output wire drp_req.drp_gnt                (drp_req                ),  // input wire drp_gnt.drp_den_o              (                       ),  // output wire drp_den_o.drp_dwe_o              (                       ),  // output wire drp_dwe_o.drp_daddr_o            (                       ),  // output wire [15 : 0] drp_daddr_o.drp_di_o               (                       ),  // output wire [15 : 0] drp_di_o.drp_drdy_o             (                       ),  // output wire drp_drdy_o.drp_drpdo_o            (                       ),  // output wire [15 : 0] drp_drpdo_o.drp_den_i              (0                      ),  // input wire drp_den_i.drp_dwe_i              (0                      ),  // input wire drp_dwe_i.drp_daddr_i            (0                      ),  // input wire [15 : 0] drp_daddr_i.drp_di_i               (0                      ),  // input wire [15 : 0] drp_di_i.drp_drdy_i             (0                      ),  // input wire drp_drdy_i.drp_drpdo_i            (0                      ),  // input wire [15 : 0] drp_drpdo_i.tx_disable             (o_tx_disable           ),  // output wire tx_disable.pma_pmd_type           (3'b101                 )   // input wire [2 : 0] pma_pmd_type
);endmodule

三、IP核配置

整个IP核配置页面和使用都非常简单。难点在于后续基于此IP核进行万兆以太网MAC层的设计,该部分内容将在后续更新。
在这里插入图片描述

四、上板验证

这里写的用户逻辑很简单,我们不做关注,后续会进行完整的设计,这里主要看主机网卡发送过来的数据是否正常。
大家需要准备一张万兆网卡,与FPGA进行连接。
在这里插入图片描述

在这里插入图片描述

五、总结

初步打通了万兆以太网高速接口,后续将基于此进行完整的MAC层设计。

http://www.lryc.cn/news/336650.html

相关文章:

  • Scrapy框架内存泄漏问题及解决
  • app 创建快捷入口 在手机上面多个icon
  • 【网安小白成长之路】6.pkachu、sql-lbas、upload-lbas靶场搭建
  • vue 项目中添加DES加密
  • 【记录问题】如何测试虚拟机已经可以连接网络
  • MySQL数据库的详解(1)
  • Python 网络爬虫技巧分享:优化 Selenium 滚动加载网易新闻策略
  • Apache SeaTunnel 社区 3 月月报
  • ElasticSearch 的 ConstantScoreQuery 的理解
  • 【RV1106的ISP使用记录之一】基础环境搭建
  • mars3d.MaterialType.Image2修改配置面状:图片2的speed数值实现动画效果说明
  • Elasticsearch部署安装
  • Android零基础入门(一)配置环境和安装Android Studio
  • Golang编译优化——消除Copy指令
  • Java IO流对象流实操
  • Mapbox教程:一个简单Demo
  • 看AI赋能数智化 | Gooxi AI服务器闪耀CITE 2024
  • 大话设计模式——21.中介者模式(Mediator Pattern)
  • Linux 计算机网络
  • bash脚本中‘-b -u -p’‘$# -eq’‘#!/bin/bash’‘sed -i “s/\r//“ $1’的用法说明
  • 【人工智能】Gitee AI 天数智芯有奖体验开源AI模型,一定能有所收货,快来体验吧
  • Ceph学习 -8.认证管理-用户基础
  • 大创项目推荐 深度学习+opencv+python实现昆虫识别 -图像识别 昆虫识别
  • Python小工具提升工作效率【附完整版,可下载word】
  • k8s-Pod
  • 智能网络新纪元:机器学习赋能未来计算机网络高速发展
  • 大数据之kafka应用
  • 嵌入式操作教程_数字信号处理_音频编解码:3-6 AAC音频解码实验
  • 【从浅学到熟知Linux】冯诺依曼体系结构及进程概念详谈!
  • word转pdf(前后端最全保姆级别)