Xilinx 千兆以太网TEMAC IP核简介

 Xilinx 公司提供了千兆以太网MAC控制器的可参数化LogiCORET™IP解决方案,通过这个IPCore可以实现FPGA与外部网络物理层芯片的互连。基于Xilinx FPGA 的以太网设计,大大降低了工程的设计复杂度,缩短了开发周期,加快了产品的面市速度。

Xilinx公司的千兆以太网解决方案按IP类型可以分为三态以太网软核、嵌入式三态以太网硬核、以太网AVB和Ethernet 1000BASE-X PCS/PMA等。基于40nm工艺技术制造而成的Vitex-6 FPGA,内部集成了4个三态以太网MAC硬核,采用三态以太网MAC硬核可以减少工程设计和验证工作量,并节省以太网接口控制的逻辑单元。与三态以太网软核相比,以太网MAC硬核特有的功能包括:集成的1000BASE-XPCS/PMA和SGMI物理接口:最高的接口速率可达2.5Gbps(16位1000BASE-X模式);提供的配置接口可以灵活地对RGMII/SGMII状态寄存器进行配置。

1 千兆以太网IP核简介

 Xilinx公司在2001年推出了用于Virtex-1FPGA平台的干兆以太网媒体访问控制器(Gigabit Ethernet Media Access Controller,GEMAC)的IPCore,这也是业界针对FPGA开发并优化的第一个完整的千兆以太网解决方案,Virtex-1后续平台都支持GEMAC核。从Xilinx Virtex-5平台开始,FPGA内部集成了以太网MAC的硬核,可以轻松实现以太网MAC功能,不需要消耗FPGA内部的可编程资源。出于兼容性的考虑,支持10/100/1000Mbos的三态以太网MAC核逐断取代了GEMAC,现在的Xilinx设计环境中,以太网MAC(EMAC)作为一个库原语,特指三态以太网MAC(Tri-mode Ethernet MAC. TEMAC)

Xilinx公司的TEMAC核是可参数化内核,特别适用于交换机和路由器等网络设备使设计者能够实现大量集成式以太网设计,从低成本的10/100Mbps以太网顺利过渡到高性能的千兆以太网。TEMAC的设计符合IEEE802.3规范要求,具备3种工作模式:10Mbps、100Mbps和1000Mbps。此外,TEMAC还支持半/全观工操作。在10/100Mbps模式下,TEMAC采用MII接口:在1000Mbos模式下,TEMAC通过GMII/RGMII接口连接器件;TEMAC同时还支持SGMII/1000BASE-XPCS/PMA接口,综上所述,TEMAC能够提供全面、高度灵活,用于实现以太网链路层和物理层的解决方案。

 Xilinx公司的Virtex-6系列FPGA对以太网MAC有着更好的支持,其内部整合了4个TEMAC模块(即硬核),其主要特性有:

■ 符合IEEE 802.3规范的要求:

■ 可配置的全双工模式(10/100/1000Mbps)和可配置的半双工模式(10/100 Mbps);

■ 支持MII、GMII、RGMII、SGMI和1000BASE-XPCS/PMA:

■ 通过管理数据的输入/输出接口(MDIO)管理对象的物理层;

■ 通过AX14-Lite接口进行核配置和状态监测:

■ 支持 VLAN帧:

■ 全双工操作模式下实现可配置的帧间间隔调整(IFG);

■ 通过MAC控制暂停帧实现可配置的对称或非对称的流量控制:

■ 支持任意长度的Jumbo帧。

2 TEMAC核的典型应用

TEMAC核的典型应用是实现以太网交换机、路由器或嵌入式处理器的以太网通信接口。如图1所示为基于TEMAC的以太网交换机或路由器的典型设计,TEMAC核的 PHY侧接口可以连接到外部集成的以太网PHY设备,支持10BASE-T、100BASE-T和1000BASE- T标准,也可以连接符合GMIIMII、RGMII或SGMII接口的PHY设备;TEMAC核的用户侧通过FIFO与用户进行互连,实现一个连接多接口的交换机或路由器。

图1 基于TEMAC核的以太网交换机/路由器设计

如图2所示为基于TEMAC核的嵌入式处理器以太网通信端口设计。MAC核的 PHY侧接口支持10BASE-T、100BASE-T和1000BASE-T标准和GMII/MII、RGMII或 SGMII接口设备。TEMAC核的用户侧接口可以通过DMA(Direct MemoryAccess)引擎连接到嵌入式处理器,处理器运行TCP/IP等协议实现以太网功能。

图2 基于TEMAC核的嵌入式处理器以太网通信端口设计

3  TEMAC核开发优势

基于Xilinx FPGA的TEMAC核为板卡级和芯片级互连提供了兼容千兆以太网技术的全套解决方案,TEMAC核的应用优势包括:

■ TEMAC核是可参数化内核,其物理接口速率可配置,用户可根据外围器件需求

灵活选择 10/100/1000Mbps自适应或特定的通信速率,特别适用于高密度千兆以太网通信和存储设备的开发;

■ TEMAC核与外围物理层器件无关,支持铜缆或光纤介质网络,可以灵活地实现以太网链路层和物理层功能;

■ 基于TEMAC的以太网解决方案充分利用IP核的“黑盒”优势,能够快捷高效地实现协议,从而降低了设计风险,缩短了开发周期;

■ Xilinx的可定制 TEMAC内核使得系统设计者能够实现大量集成化的以太网设计,从低成本的10/100Mbps以太网顺利升级为高性能的千兆以太网,从而降低设计成本;

■ 采用XilinxFPGA内嵌的TEMAC硬核可以有效地减少设计和验证工作,并节省逻辑资源。

4 TEMAC整体结构

TEMAC硬核是一个支持多数据端口、多参数配置的复杂组件,其封装文件使用户只需要对特定应用所需端口的参数和接口进行定义便可完成TEMAC的设置,大大简化了时钟和物理I/O资源的使用。如图3所示为三态以太网 TEMAC核结构图,它包括嵌入式以太网MAC、AXI4-Lite封装接口模块、统计矢量译码模块(Statistics Vector Decode)和PHY物理接口模块4个部分。根据TEMAC接口方向和类型,可以将其接口信号分为3个部分,即用户接口信号(AXI4-Stream)、管理接口信号(AX14-Lite)和物理接口信号。

图3 三态以太网TEMAC核结构图

(1)嵌入式以太网MAC核

嵌入式以太网MAC核通过HDL示例设计形式提供,包括了使用MAC硬核时需要的基本模块。

(2)AXI4-Stream 接口

AX14-Stream接口使用户数据可以连接到MAC核内部的发送引擎和接收引擎。基于标准的AX14-Stream 协议,用户可以向MAC核发送数据或接收MAC核的数据。

(3)AXI4-Lite 封装

AXI4-Lite封装使用户可以通过AXI4-Lite接口连接到MAC核。用户通过AXI4-Lite接口对MAC核内部的寄存器进行配置,可以实现对MAC核控制/状态寄存器的访问及控制 MDIO主模式等功能。

(4)统计矢量译码

统计矢量译码模块用于解析MAC硬核在通信过程中产生的发送统计矢量和接收绩计矢量,并生成统计计数器的控制信号。

(5)PHY物理接口

PHY物理接口提供连接到RGMII.GMII.MII.SGMII找口或1000BASE-X PCS/PMA接口所需要的控制逻辑。当接入外部PHY设备时,使用由XilinxCORE Generator1™提供的并行接口标准(GMII/MII或RGMII)或串行标准(SGMII/或1000BASE-X PCS/PMA)。

5 嵌入式以太网MAC功能简介

如图4所示为嵌入式以太网MAC内部功能模块,主要包括发送引擎、接收引擎、流量控制,16或8位宽的用户接口,MII/GMI/RGMI接口、PCS/PMA子层、管理接口和MDIO裁决等。

4 嵌入式以太网 MAC内部功能模块

(1)发送引擎

发送引擎从发送接口(TXInterface)接收数据并转化为所需要的格式(如GMII),对于待发送的数据,由发送引擎添加前导码(Preamble)和帧校验序列(FCS)。根据数据帧长度,在需要时也可以添加一定长度的填充字段(Pad)来满足以太网帧长度的传输要求。发送引擎为每一个数据包提供发送统计矢量(Transmit Statistics Vector),该引擎同时也支持发送流量控制模块产生的暂停控制帧。

(1)接收引擎

接收引擎从MII/GMII/RGMI接口接收数据,检查数据帧是否符合IEEE802.3协议标准,负责去除数据帧的填充区域,并对接收到的数据帧提供正确/错误指示信号。该引擎同时也为接收到的数据帧提供接收统计矢量(Receive Statistics Vector)。

(3)流量控制

流量控制根据IEEE802.3标准设计,通过暂停控制帧的收发实现:在以太网MAC全双工模式下配置流量控制功能,通过发送引擎发送的暂停控制帧附带可变的暂停值,接收引擎在接收后按照设定值进行处理。

(4)16或8位宽的用户接口

以太网 MAC的1000BASE-X物理接口具有超频特性,允许用户数据总线增加到16位。这种 16位模式只适用于物理接口为1000BASE-XPCS/PMA的情况,支持2Gbps(125MHz)或2.5Gbps(156.25MHz)。

(5)MII/GMII/RGMII接口

发送引擎和接收引擎将数据转换为GMII格式,而MII/GMI/RGMII接口模块实现了简化转换所需外部接口的必要的逻辑。

(6)PCS/PMA子层

当以太网MAC的物理接口配置为MI/GMII/RGMII时,相关信号将通过标准输入/输出接口连接到外部的物理接口上。当以太网MAC的物理接口配置为1000BASE-XPCS/ PMA或SGMII时,PCS/PMA子层模块的接口直接连接到串行收发器上。PCS/PMA子层模块将内部并行接口(MI/GMI/RGMI)转换为串行接口(1000BASE-X或SGMID),申行接口通过市行收发器(Serial Transceiver)与外部的光收发器进行通信,如图5所示。

图5 以太网的PCS/PMA子层

(7)管理接口

嵌入式以大网MAC管理楼口采用AXI4-Lite总线,主要配置MAC内部寄存器

(MACConfiguration)和MDIO接口(MDIO Interface),提供的功能包括对MAC控制/状态寄存器的访问和对MDIO主模式(MDIOMaster)的控制。

(8)MDIO裁决

MDIO接口根据MAC的配置可以工作在主模式或从模式下,如图6所示,当用户侧通过MDIO接口对PCS管理寄存器进行访问时,MDIO裁决模块裁定TEMAC核的 MDIO接口工作在主模式,PCS管理寄存器为从模式,从而实现MDIO接口和PCS管理寄存器的通信。

图6  MIDO楼口的主模式

当外部PHY访问PCS管理寄存器时,MDIO裁决模块裁定外部PHY工作在主模式, PCS管理寄存器为从模式,如图7所示,MDIO裁决模块确保了PCS管理寄存器在这两种模式下都可用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/612470.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

大数据Scala教程从入门到精通第六篇:Scala源文件编写和运行

一:Scala源文件编写和运行 1:源代码比较 public class HelloJava{public static void main(String[] args){System.out.println("hello scala")} } object HelloScala{//用于声明方法 入参是一个String类型的数组。返回值类型为空def main…

用云手机打造海外社媒矩阵

在全球经济一体化的大背景下,中国出海企业及B2B外贸公司正将海外社交媒体营销作为重要的市场拓展策略。为更好地触及不同受众群体,构建跨平台的社媒矩阵已成为企业营销的关键步骤。本文将探讨如何利用云手机技术,高效管理并运营多个海外社交媒…

泰迪智能科技携手新乡学院开展“泰迪智能双创工作室”共建交流会

为深化校企合作,实现应用型人才培养目标。5月8日,广东泰迪智能科技股份有限公司河南分公司市场总监张京瑞到访新乡学院数学与统计学院参观交流,数学与统计学院院长赵国喜、副院长皮磊、张秦,教研室主任许寿方、姚广出席本次交流会…

【研发日记】Matlab/Simulink避坑指南(十二)——Initialize Function执行Bug

文章目录 前言 背景介绍 问题描述 分析排查 解决方案 总结归纳 前言 见《研发日记,Matlab/Simulink避坑指南(七)——数据溢出钳位Bug》 见《研发日记,Matlab/Simulink避坑指南(八)——else if分支结构Bug》 见《研发日记,Matlab/Simuli…

【matlab基础知识代码】(十六)代数方程的图解法多项式型方程的准解析解方法

>> ezplot(exp(-3*t)*sin(4*t2)4*exp(-0.5*t)*cos(2*t)-0.5,[0 5]), line([0 5],[0 0]) 验证 >> t0.6738; >> exp(-3*t)*sin(4*t2)4*exp(-0.5*t)*cos(2*t)-0.5 ans -2.9852e-04 >> ezplot(x^2*exp(-x*y^2/2)exp(-x/2)*sin(x*y)) >> hold on; …

使用hdc TCP模式无线方式连接OpenHarmony设备

本文将介绍如何使用hdc工具 tcp模式以无线的方式连接OpenHarmony设备。 1. usb连接方式切换为tcp模式。 将usb线将OpenHarmony设备和电脑端连接,并且将两个连接至同一个局域网。 # 执行 tmode port port-number,port-number设置为端口号。 hdc tmode …

2024年首季:AGV项目大盘点,有过1亿的项目

导语 大家好,我是智能仓储物流技术研习社的社长,老K。专注分享智能仓储物流技术、智能制造等内容。 新书《智能物流系统构成与技术实践》 2024年第一季度,中国智慧物流行业迎来了一个重要的里程碑。 根据新战略移动机器人产业研究所的初步统计…

如何用python的Turtle绘画?

目录 一、画一个圆和正方形 二、简单的方式来画一个美女 三、Turtle是一个用于绘制图形的标准库 一、画一个圆和正方形 import turtle# 创建一个图形窗口 window turtle.Screen() window.bgcolor("white")# 创建一个海龟画笔 pen turtle.Turtle() pen.shape(&q…

鸿蒙内核源码分析(VFS篇) | 文件系统和谐共处的基础

基本概念 | 官方定义 VFS(Virtual File System)是文件系统的虚拟层,它不是一个实际的文件系统,而是一个异构文件系统之上的软件粘合层,为用户提供统一的类Unix文件操作接口。由于不同类型的文件系统接口不统一&#x…

nginx配置文件和配置命令详解案例

一.nginx.conf配置结构 1.1配置结构图 1.2 nginx中配置nginx.conf配置内容 #user nobody; user root; # 表示worker进程是有root用户去执行的 worker_processes 2; events {# 默认使用epolluse epoll;# 每个worker链接最大数据worker_connections 1024; } http {include …

PCIE协议-2-事务层规范-MEM/IO/CFG request rules

2.2.7 内存、I/O和配置请求规则 以下规则适用于所有内存、I/O和配置请求。每种类型的请求还有特定的额外规则。 所有内存、I/O和配置请求除了常见的头标字段外,还包括以下字段:requester ID[15:0]和Tag[9:0],形成事务ID。Last DW BE[3:0] a…

uniapp百度地图聚合

// loadBMap.js ak 百度key export default function loadBMap(ak) {return new Promise((resolve, reject) > {//聚合API依赖基础库,因此先加载基础库再加载聚合APIasyncLoadBaiduJs(ak).then(() > {// 调用加载第三方组件js公共方法加载其他资源库// 加载聚合API// Ma…

定时任务执行 报错command not found 解决方案

目录 写在前面所需知识 问题复现解决方式方法1. 使用绝对路径的命令:方法2. 重新加载环境变量:成功解决截图 原理 写在前面 定时任务脚本出现command not found报错,解决方案。 所需知识 定时任务shell脚本环境变量 问题复现 编写了一个…

HaDoop Hive

目录 1.VMware 的配置 2.JDK的部署 3.防火墙,SElinux,时间同步设置 4.云平台 5.阿里云 6.UCloud 7.Hadoop理论 7.1 Hadoop理论 7.2 VMware Hadoop实践 7.3集群部署常见问题解决 7.4 云服务器上 Hadoop实践 7.5 HDFS 的 shell 7.6…

android进阶-Binder

参考:Android——Binder机制-CSDN博客 机制:Binder是一种进程间通信的机制 驱动:Binder是一个虚拟物理设备驱动 应用层:Binder是一个能发起进程间通信的JAVA类 Binder相对于传统的Socket方式,更加高效Binder数据拷贝…

​​​【收录 Hello 算法】5.1 栈

目录 5.1 栈 5.1.1 栈的常用操作 5.1.2 栈的实现 1. 基于链表的实现 2. 基于数组的实现 5.1.3 两种实现对比 5.1.4 栈的典型应用 5.1 栈 栈(stack)是一种遵循先入后出逻辑的线性数据结构。 我们可以将栈类比为桌面上的一摞盘子…

融资融券概念和操纵流程,案例解析

融资融券是一种金融工具,它允许投资者在证券市场上进行杠杆交易。简单来说,融资就是借钱买股票,融券就是借股票卖出。这种交易方式可以帮助投资者在短期内获得更高的收益,但同时也伴随着较高的风险。 案例背景: 假设…

JavaWeb--13Mybatis(2)

Mybatis(2) 1 Mybatis基础操作1.1 需求和准备工作1.2 删除员工日志输入参数占位符 1.3 新增员工1.4 修改员工信息1.5 查询员工1.5.1 根据ID查询数据封装 1.5.3 条件查询 2 XML配置文件规范3 MyBatis动态SQL3.1 什么是动态SQL3.2 动态SQL-if更新员工 3.3 …

C语言 | Leetcode C语言题解之第82题删除排序链表中的重复元素II

题目: 题解: struct ListNode* deleteDuplicates(struct ListNode* head) {if (!head) {return head;}struct ListNode* dummy malloc(sizeof(struct ListNode));dummy->next head;struct ListNode* cur dummy;while (cur->next && cu…

【回溯 状态压缩 深度优先】37. 解数独

本文涉及知识点 回溯 状态压缩 深度优先 LeetCode37. 解数独 编写一个程序,通过填充空格来解决数独问题。 数独的解法需 遵循如下规则: 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只…