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.mzph.cn/news/809508.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#常见的数据缓存方式详解与实例

在C#开发中,数据缓存是一种优化应用程序性能的常见技术。合理的缓存策略可以减少对数据源的访问次数,提高数据处理速度,从而改善用户体验。下面将详细介绍几种在C#中常见的数据缓存方式,以及相应的实例。 1. 使用System.Runtime.…

C 头文件

头文件是扩展名为 .h 的文件,包含了 C 函数声明和宏定义,被多个源文件中引用共享。有两种类型的头文件:程序员编写的头文件和编译器自带的头文件。 在程序中要使用头文件,需要使用 C 预处理指令 #include 来引用它。前面我们已经…

基于一阶微分的图像增强-梯度法(不丢弃任何像素变化--信息的提取作用)

首先我大致说一下前一小节的内容:反锐化掩模与高提升滤波处理 图像的锐化方法,其实有很多。锐化的定义提升突变像素的灰度级,减少变化缓慢像素的灰度级。 为什么可以利用模糊图像来进行锐化呢?因为模糊图像的模糊位置通常都是原…

第十二篇-jQuery理论

jQuery定义 jQuery是一个快速、简洁的JavaScript库,它能够简化HTML文档遍历、事件处理、动画设计和Ajax交互。jQuery的设计目标是通过尽可能少的代码实现更多的功能,并且提供一种优雅的方式来处理HTML文档、处理事件、创建动画效果以及实现Ajax交互。. …

《前端防坑》- JS基础 - 你觉得Boolean(‘false‘) === false吗?

问题 你觉得Boolean(false) false吗, Boolean([]) false吗? 答案 Boolean(false) true, Boolean([]) true 验证 原因 Boolean 对象表示两个值:"true" 或 "false" 但是能使Boolean为flase的只有6种情况&#xff…

科技的成就(五十八)

543、神经网络应用于机器翻译 2003 年 2 月,神经网络开始应用于机器翻译。约书亚本吉奥等发表论文“A Neural Probabilistic Language Model”。他们的研究团队基于神经网络开发出了一个语言模型,改善了统计机器翻译中的问题,这项研究为未来神…

嵌入式单片机入职第二天-EEPROM与IIC

上午: 1.安装Jlink驱动,死活没反应,因为昨天才装完系统,领导让我装电脑主板驱动 领导方法进惠普官网通过查询电脑型号,里面几十个驱动搞得我眼花,领导告诉我进官网就去开会了,可能因为是外网&…

idea如何debug看springsecurity的过滤器顺序

idea如何debug看springsecurity的过滤器顺序 先配置一个Spring启动对象,后续需要根据这个对象来获取SpringSecurity的过滤器链 设置一个输出信息,需要在输出信息这里打上断点,才方便查看过滤器链 public static void main(String[] args) {//此时不…

Qt | 信号与槽 原理、连接、断开(面试无忧)

1、信号和槽是用于对象之间的通信的,这是 Qt 的核心。为此 Qt 引入了一些关键字,他们是slots、signals、emit,这些都不是 C++关键字,是 Qt 特有的,这些关键字会被 Qt 的 moc转换为标准的 C++语句。 2、Qt 的部件类中有一些已经定义好了的信号和槽,通常的作法是子类化部件…

yolov5旋转目标检测遥感图像检测-无人机旋转目标检测(代码和原理)

YOLOv5(You Only Look Once version 5)是一个流行且高效的实时目标检测深度学习模型,最初设计用于处理图像中的水平矩形边界框目标。然而,对于旋转目标检测,通常需要对原始YOLOv5架构进行扩展或修改,以便能…

达梦数据库安装教程

达梦数据库安装包与常规的数据库安装逻辑一致。 下载安装包 首先,您需要从达梦官方网站下载适用于您的操作系统的达梦数据库安装包(这一步要注意区分硬件芯片类型。请注意,选择与您的操作系统和硬件平台相匹配的安装包,以免在安…

ChatGPT之道:发掘AI工具在论文写作中的妙用

ChatGPT无限次数:点击直达 ChatGPT之道:发掘AI工具在论文写作中的妙用 随着人工智能技术的快速发展,ChatGPT作为一款先进的自然语言处理工具,在各个领域展现出了非凡的潜力。本文将探讨ChatGPT在论文写作中的应用,以及如何利用其…

Imagination APXM-6200 CPU:性能卓越,安全可信

随着消费类和工业应用行业的不断发展,对创新性能和效率的需求永不停歇,我们自豪地推出旗下 Catapult CPU 系列的第二款产品:Imagination APXM-6200 CPU 。这款 64 位的高效 RISC-V 应用处理器具有强大的 AI 功能及性能密度,能够为…

阿里云服务器项目部署docker-compose+vue+redis+nginx+minio+springboot

1 阿里云服务器项目部署-单机部署 docker-compose 1.1 搭建背景 服务器 阿里云服务器 前端 vue 后端 springboot 服务 redis 、nginx、minio 都做单机模式部署,不做集群部署 博客内容参考了其他博文&#xff0c;会贴出来 1.2 <重要>端口开放前提说明 任何开放的端…

【迅为iTOP-4412-linux 系统制作(4)】ADB 或者 TF 卡烧写测试

准备工作 编译生成的内核镜像uImage 和设备树 dtb 文件“exynos4412-itop-elite.dtb”已经可以使用了。 把编译生成的uimage和dtb文件。拷贝fastboot工具。官方的u-boot-iTOP-4412.bin 也拷贝到 platform-tools 文件夹目录内。system.img 也拷贝到 platform-tools 文件夹目录…

11 nacos 的 配置获取 和 服务注册

前言 nacos 在微服务体系中有两大个功能, 作为配置中心 和 服务发现 最近碰到了一些 nacos 的相关问题, 整理了一下 这方面的东西 nacos client 的配置读取 这一系列主要是在 NacosManager 这个 bean 的相关业务流程的过程中处理的 NacosManager 初始化的时候, 会向 naco…

iOS 二进制重排

原理&#xff1a;减少page fault次数&#xff0c;将启动用到的代码都放到一个page里。 操作&#xff1a; 统计启动过程中用到的函数。 http://yulingtianxia.com/blog/2019/09/01/App-Order-Files/ Other C flag里加上-fsanitize-coveragefunc,trace-pc-guard&#xff0c;C/C…

力扣HOT100 - 48. 旋转图像

解题思路&#xff1a; 要求原地旋转 可以先上下翻转&#xff0c;再沿主对角线反转&#xff08;左上到右下的对角线&#xff09; class Solution {public void rotate(int[][] matrix) {int n matrix.length;// 上下翻转for (int i 0; i < n / 2; i) {for (int j 0; j &…

软考学习之路-系统集成项目管理工程师-考试要点记录1

软考学习之路-系统集成项目管理工程师-考试要点记录 前言介绍必考知识点1、项目管理五大过程组启动过程组规划规程组执行过程组监控过程组收尾过程组 2、项目整合管理3、项目范围管理4、项目时间管理5、项目成本管理6、项目质量管理7、人力资源管理8、项目沟通管理9、项目风险管…

YOLOv9最新改进系列:YOLOv9融合BoTNet模块,融合CNN+自然语言处理技术的优势,有效提升检测效果!

YOLOv9最新改进系列&#xff1a;YOLOv9融合BoTNet模块&#xff0c;融合CNN自然语言处理技术的优势&#xff0c;有效提升检测效果&#xff01; YOLOv9原文链接戳这里&#xff0c;原文全文翻译请关注B站Ai学术叫叫首er B站全文戳这里&#xff01; 详细的改进教程以及源码&…