自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(81)
  • 收藏
  • 关注

原创 万兆以太网MAC设计(14)FPGA实现巨型以太网数据帧传输

万兆以太网设计最终章节,巨型以太网数据帧传输设计。对于标准以太网而言,数据传输范围为46-1500字节,当大于1500字节后数据将无法传输。在IP层的报文描述当中,有一个分片字段,通过该字段即可实现将巨型数据帧拆分为多个小于1500字节的数据进行传输。

2024-05-16 19:53:09 1100

原创 PCIE学习(2)PCIE配置空间详解

图片来自:https://zhuanlan.zhihu.com/p/463518877。

2024-05-10 20:24:08 1256

原创 PCIE学习(1)PCIE简介

PCIE是一种串行通信协议。在低速情况下,并行结构绝对是一种非常高效的传输方式,但是当传输速度非常高,并行传输的致命性缺点就出现了。因为时钟在高速的情况下,因为每一位在传输线路上不可能严格的一致,并行传输的一个字节中的每个位不会同时到达接受端就被放大了。而串行传输一位一位传输就不会出现这个问题。串行的优势就出现了,串行因为不存在并行的这些问题,就可以工作在非常高的频率下,用频率的提升掩盖它的劣势。

2024-05-10 19:03:13 663

原创 IP,TCP,UDP,ICMP校验和的区别和计算

IP校验和 = IP头部的计算TCP,UP校验和 = 伪首部+TCP/UDP报头+数据ICMP校验和 = ICMP报头+数据。

2024-05-05 10:13:28 576 1

原创 万兆以太网MAC设计(13)主机与FPGA之间进行PING

在上班尝试进行PING操作的时候,发现一直是请求超时的情况,结果排查发现是首部校验和没有计算的问题。在UDP层,我们不进行校验和是不会影响数据正常收发的,但是在ICMP层不可以,FPGA没有进行校验和主机是无法正常进行PING板卡的。

2024-05-05 10:13:17 653 1

原创 万兆以太网MAC设计(12)万兆UDP协议栈上板与主机网卡通信

通过wireshark可以看到发送数据过程,首先是主机发送一个ARP请求,然后板卡会返回ARP回复包,然后主机即可获取板卡的MAC地址信息,我们设置的正是01020040506,接下来主机向板卡发送数据,板卡接收到数据后返回给主机,一发一收全部正常。然后数据进行回环测试,主机向板卡发送数据然后板卡向主机返回相同的数据。通过网口调试助手发送数据,可以看到数据正确被回环。在UDP协议栈当中设置IP地址和UDP端口。顶层模块设置源MAC地址。

2024-04-29 18:41:35 1074

原创 万兆以太网MAC设计(11)完整UDP协议栈仿真

目前除了巨帧处理逻辑之外,所有的准备工作都已经结束了,先进行整体的功能验证。

2024-04-28 09:44:00 1704

原创 万兆以太网MAC设计(10)UDP协议解析以及模块设计

参考:https://sunyunqiang.com/blog/udp_protocol/

2024-04-28 09:12:01 1258

原创 万兆以太网MAC设计(9)数据流仲裁模块

c0和c1表示输入的俩个数据通道,c0优先级高,P_ARBITER_LAYER 表示当前是在IP层进行仲裁还是MAC层,可复用于俩个模块。二、模块功能描述MAC层负责接收来自IP层和ARP层的数据,IP层负责ICMP和UDP层数据,所以MAC层和IP层需要对上层协议的数据包进行仲裁,以决定先发送哪个上层数据。于MAC层而言,ARP应当具有更高的优先级,于IP层而言,ICMP具有更高的优先级。输入数据全部先进入FIFO,当任何一个通道的FIFO不为空时,即可开启仲裁锁,因为此时必然会有一个通道获得仲裁结果

2024-04-25 11:18:16 397

原创 万兆以太网MAC设计(8)ICMP协议详解以及ICMP层模块设计

ICMP (Internet Control Message Protocol) 协议被设计用来向 IP 源端报告差错及其它相关信息, IP 协议本身只设置有 Checksum 机制来保证数据的正确性, 它本身提供不可靠的服务, ICMP 协议可以用来当发送差错时向源端报告相应的问题, 可以一定程度上提高 IP Datagram 交付的可靠性, 其协议的标准文档为 1981 年 9 月发布的 RFC 792, 本文讨论 ICMP 协议的设计,ICMP 不是 IP 协议之上的协议, ICMP 的 PDU 被封

2024-04-24 15:41:25 697

原创 万兆以太网MAC设计(7)ARP协议报文格式详解以及ARP层模块设计

硬件类型:表示硬件地址的类型。它的值为1表示以太网地址协议类型:表示要映射的协议地址类型。它的值为0x0800即表示IP地址硬件地址长度和协议地址长度:分别指出硬件地址和协议地址的长度,以字节为单位。操作类型(OP):1表示ARP请求,2表示ARP应答。

2024-04-24 10:43:41 1715 1

原创 万兆以太网MAC设计(6)IP协议报文格式详解以及IP层模块设计

这篇文章内容很丰富,建议看看Version: 长度为 4 比特, 表征 IP 协议的版本号, 对 IPv4 来说该字段的值为 4IHL: 长度为 4 比特, IHL 是 Internet Header Length 的缩写, 以 4 字节为单位指示 IP Header 的长度, 对于 IPv4 来说, Header 的最小长度为 20 字节, 因此该字段的最小值为 5。

2024-04-23 15:43:53 1689

原创 UltraScale+的100G Ethernet Subsystem IP核使用

前面关于U+系列的10G、40G以太网我们都了解了,本文将开始使用100G以太网 IP核。需要额外使用俩个100G的光模块。

2024-04-22 11:15:14 880

原创 UltraScale+的40G/50G Ethernet Subsystem IP核使用(2)

上文介绍了40G/50G Ethernet Subsystem IP核的使用,对于每个QSFP都单独使用一个GT参考时钟,本文将基于此介绍GT时钟共享。

2024-04-21 15:30:21 165

原创 UltraScale+的40G/50G Ethernet Subsystem IP核使用

上文介绍了10G/25G Ethernet Subsystem IP核使用,本文将在此基础上介绍40G/50G Ethernet Subsystem IP核的使用,总体区别不大。

2024-04-21 13:46:10 543

原创 UltraScale+的10G/25G Ethernet Subsystem IP核使用

前面我们学习了很多基于XILINX 7系列的高速接口使用,本文将介绍xilinx UltraScale+的10G/25G Ethernet Subsystem IP核的使用。大体使用与7系列相差无几,甚至更加简单。大家如果看过7系列那部分的内容,这个上手非常快。

2024-04-19 19:36:40 1450

原创 关于万兆以太网IP核仿真相关问题

一般来说我们自己进行仿真时候该信号都直接给1,之前的高速IP核好像并没有出过错误,但是10G PCSPMS IP核进行仿真的时候,该信号必须要先置为0,等待用户复位结束之后在coreclk上升沿拉高该信号,才能使得仿真时候的rx_resetdone正常拉高。信号拉高,否则XGMII_TX接口处的数据正确,接收端也无法接收数据。用户输入XGMII数据的时候,必须要等待。

2024-04-16 14:33:14 246

原创 万兆以太网MAC设计(5)MAC_TX模块设计以及上板带宽测试

MAC_RX的设计暂时告一段落,本节将开始进行MAC_TX的设计。

2024-04-16 14:23:40 756

原创 万兆以太网MAC设计(4)CRC_process模块

上文介绍的MAC_RX模块当中增加了CRC校验和比对的功能,本文将根据CRC校验的结果,来决定将数据输出到上层用户还是丢弃。完整代码参考:https://github.com/shun6-6/Ten_gig_eth_design。

2024-04-14 13:27:33 631 2

原创 万兆以太网MAC设计(3)MAC_RX模块添加CRC

上文介绍的MAC_RX模块实现了接受字节对齐的功能,但是尾端存在4字节CRC校验未处理。该模块整体来说变得很复杂了已经,完整模块代码参考:https://github.com/shun6-6/Ten_gig_eth_design。

2024-04-13 11:44:52 1108

原创 万兆以太网MAC设计(2)MAC_RX模块

上文我们打通了了万兆以太网物理层和数据链路层,其实就是会使用IP核了,本文将正式开始MAC层设计第一篇,接收端设计。

2024-04-12 11:18:42 1000

原创 万兆以太网MAC设计(1)10G PCS PMA IP核使用

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

2024-04-11 15:33:57 1028

原创 XILINX 7系列时钟资源

本文主要参考xilinx手册ug472。

2024-04-09 16:47:57 1275

原创 SRIO学习(3)使用SRIO IP核进行设计

本文将通过使用SRIO IP核实现数据通信,重点在于打通数据链路,具体的协议内容设计并非重点,打通了链路大家自己根据设计需求来即可。复位和时钟模块在上一篇介绍时钟和复位的时候进行了介绍。与之前高速接口不同的是RapidIO有一套自己的交互协议规范,所以在基于FPGA进行设计的时候,需要按照规范进行传输数据和解析数据。我们重点不在于这块,因为我没有接触过这方面的需求,所以暂时只是可以使IP核实现正常的通信即可。以下是一个很简单的数据收发模块,参考。

2024-04-09 00:15:00 858

原创 SRIO学习(2)SRIO IP核时钟和复位

通过对时钟和复位的理解可以更好的了解IP核的工作过程,不过不理解也不影响使用,example design帮我们都做好了。gt_clk:由链路速率决定gt_pcs_clkgt_pcs_clk的频率是gt_clk的一半。phy_clkphy_clk(gt_clk * 链路Line宽度)/4log_clkLOG(逻辑层)在log_clk域上运行。为了达到最佳吞吐量,log_clk应至少与phy_clk一样快。这是为了PHY层接收到的数据不会在BUF里一直停留。cfg_clk必须等同于log_clk。

2024-04-08 02:00:00 871

原创 SRIO学习(1)SRIO介绍以及IP核详解

参考1:https://www.ti.com.cn/general/cn/docs/gencontent.tsp?参考2:https://blog.csdn.net/qq_33904382/article/details/130330299串行RapidIO针对高性能嵌入式系统芯片间和板间互连而设计。在嵌入式系统应用领域,DSP,FPGA,PowerPC等嵌入式处理器的出现后,工程师将多种处理器组合,形成模块。模块通过背板相连,形成整机,实现更大的系统应用。架构独立,不依赖具体的硬件和软件。

2024-04-08 00:15:00 1340

原创 AURORA64B66B IP核使用

前面我们基于GT 64B66B设计了自定义PHY层,并且也介绍过了基于AURORA8B18B IP核的使用,AURORA8B18B IP核的使用可以说是与AURORA8B18B IP核完全一致,可参考前文:https://blog.csdn.net/m0_56222647/article/details/137261729?

2024-04-07 11:18:38 946

原创 GT收发器64B66B协议(3)添加解扰和加扰模块

上文我们通过回环测试验证了自定义PHY收发模块的正确性,但是没有加扰和解扰是没办法通过光纤进行传输的,本文我们增加该模块。

2024-04-06 16:44:40 278

原创 GT收发器64B66B协议(2)自定义PHY设计

有了对64B66B协议的认识以及我们之前设计8B10B自定义PHY的经验,本文开始对64B66B自定义PHY的设计。

2024-04-04 16:15:21 1316

原创 GT收发器64B66B协议(1)IP核配置和example design

在前面我们基于GT收发器进行了PHY层设计,其中采用的编码方式为8B10B,为进一步提高传输效率,从本文开始,将采用基于GT高速收发器采用64B66B编码方式进行设计。

2024-04-03 17:20:38 706

原创 64B66B编码详解

64B66B是我们在高速通信协议中的一种处理PHY层发送数据的编码。为何我们要编码,直接把原数据发送出去不行吗?答案是当然不行,我们8B10B中了解到:串行通信中长连1与长连0对接收端恢复时钟造成了很大的挑战,因此我们将8bit的数据扩展到10bit,在1024种编码中精心挑选256种最优码值用于传输,避免的过大的长连1与长连0。这也是我们所说的“直流平衡”。前面我们介绍过的8B10B编码,它的效率较低,只有80%。64b/66b编码技术是IEEE 802.3工作组为10G以太网提出的,

2024-04-02 19:28:48 1107

原创 Aurora8b10b(2)上板验证

上一篇内容我们已经详细介绍了基于aurora8b10b IP核的设计,本文将基于此进一步完善并且进行上板验证。

2024-04-02 17:05:34 588

原创 Aurora8b10b(1)IP核介绍并基于IP核进行设计

参考xilinx文档pg046Aurora 是一个用于在点对点串行链路间移动数据的可扩展轻量级链路层协议。这为物理层提供透明接口,让专有协议或业界标准协议上层能方便地使用高速收发器。虽然使用的逻辑资源非常少,但 Aurora 能提供低延迟高带宽和高度可配置的特性集。在 Xilinx FPGA 上使用是免费的,而且在 ASIC 上能以名义成本通过单独的许可证协议得到支持。高带宽,仅受限于收发器的数据速率支持大量键合线路,实现较高的总带宽支持全双工和单工通道无限帧尺寸/灵活组帧。

2024-04-02 15:33:12 1401

原创 FPGA设计_加法器

在之前一篇介绍7系列FPGA底层资源的时候,我们提到过每一个slice当中有一个CARRY4,CARRY4本质上就是用来实现最基本的加、减法运算的,在了解CARRY4之前,我们需要对1bit以及多bit的二进制加法及其FPGA实现做一个了解。1bit的二进制加法可以分为两类:无底层进位的半加器与有底层进位的全加器。减法运算本质上仍是一种加法运算,在二进制电路中采用加上负数的补码实现。

2024-04-01 22:15:56 821

原创 基于8B10B的GT收发器PHY层设计(4)上板验证

在前面三篇内容当中详细介绍了基于GT的PHY设计,本篇内容进行上板测试,主要查看接收数据是否能正确对齐。

2024-03-31 14:41:56 501

原创 基于8B10B的GT收发器PHY层设计(3)PHY层设计

上一篇内容当中我们已经将gt_module模块设计完成,本篇开始进行PHY收发模块设计。

2024-03-31 14:07:46 914

原创 基于8B10B的GT收发器PHY层设计(2)GT_module模块设计

根据官方的example design设计一个自定义协议的高速PHY设计那么现在我们需要进行GT设计的时候,只需要正确配置时钟信号,然后控制输入输出数据以及K码指示信号等用户数据接口即可,需要例化多个GT channel的话就再gt_module当中例化多个gt_channel模块即可,不可以例化多次gt_module,因为包含在gt_module中,而只能例化一次参考FPGA奇哥系列网课。

2024-03-30 16:44:52 1073

原创 基于8B10B的GT收发器PHY层设计(1)IP核配置

根据前面的知识储备,我们已经了解了GT的基本工作原理,以及GT基本结构和时钟关系,本章内容将基于K7系列GTX设计一个自定义协议的PHY层。

2024-03-30 14:19:36 600

原创 GT收发器第六篇_GT channel内部时钟关系

RXOUTCLK必须来自SIPO恢复的时钟(因为RXOUTCLK来源于QUAD的参考时钟或者线路恢复时钟),RXUSRCLK必须来自RXOUTCLK(因为RXUSCLK2和RXUSCLK来源于RXOUTCLK或者TXOUTCLK)。RXUSCLK2和RXUSCLK来源于RXOUTCLK或者TXOUTCLK(具体可见线路恢复时钟的介绍),TXOUTCLK来源于QUAD的参考时钟,RXOUTCLK来源于QUAD的参考时钟或者线路恢复时钟。(1)如果使能TXBUFFER,则XCLK来源于TXOUTCLK。

2024-03-30 10:36:13 596

原创 GT收发器第五篇_TXUSRCLK和TXUSRCLK2

FPGA的TX接口是FPGA与GTX/GTH收发器TX数据路径的通道。应用程序通过在TXUSRCLK2的上升沿写入数据到TXDATA端口来通过GTX/GTH收发器传输数据。端口的宽度可以配置为两个、四个或八个字节宽。端口的实际宽度取决于TX_DATA_WIDTH和TX_INT_DATAWIDTH属性以及TX8B10BEN端口设置。端口宽度可以是16、20、32、40、64和80位。接口上的并行时钟(TXUSRCLK2)的速率由TX线速率、TXDATA端口的宽度以及是否启用8B/10B编码来确定。

2024-03-29 10:31:03 908

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除