- 博客(50)
- 收藏
- 关注
原创 PCIe简介-配置空间
每个PCIe设备都有一段空间,Host软件可以读取它获得该设备的一些信息,也可以通过它来配置该设备,所以这段空间就被称为配置空间。PCie的配置空间是协议规定好的,每一个字段都是有定义的。配置空间在PCI/PCI-X时代就已经出现了,只不过那时的配置空间大小为256字节。
2024-05-27 15:23:26 2138 1
转载 PCIe简介-部件简介
PCIe的架构主要由五个部分组成:Root Complex,PCIe Bus,Endpoint,Port and Bridge,Switch。
2024-05-26 12:29:37 396
原创 10G UDP协议栈 (9)UDP模块
UDP协议和TCP协议同位于传输层,介于网络层(IP)和应用层之间:UDP数据部分为应用层报文,而UDP报文在IP中承载。UDP 报文格式相对于简单,如下图:源端口:端口号0-65535,1-1024保留端口号,为标准的服务端口目的端口:无须多解释UDP长度:header+data 总长度UDP校验和:伪头部,头部,data 三部分校验和。数据:上层应用层的数据。UDP校验和计算-CSDN博客。
2024-05-22 11:34:15 520
原创 10G UDP协议栈 (8)仲裁模块
(1)在UDP层会有两种数据,一种为UDP数据,另外一种为ICMP数据,所以再将数据由UDP层传输到IP层的过程中需要对两种数据进行仲裁。(2)在IP层会有两种数据,一种为IP数据包,另外一种为ARP数据包,所以再将数据由IP层数据传递到MAC层的过程中需要对两种数据进行仲裁。
2024-05-19 12:15:27 272
原创 10G UDP协议栈 (8)ICMP功能
CMP是 Internet Control Message Protocol 的缩写,即互联网控制消息协议。它是互联网协议族的核心协议之一。它用于 TCP/IP 网络中发送控制消息,提供可能发生在通信环境中的各种问题反馈,通过这些信息,使网络管理者可以对所发生的问题作出诊断,然后采取适当的措施解决问题。虽然 ICMP 是网络层协议,但是它不像 IP 协议和 ARP 协议一样直接传递给数据链路层,而是。所以在 IP 数据包中如果协议类型字段的值是 1 的话,就表示 IP 数据是 ICMP 报文。
2024-05-18 17:21:29 312
原创 SGMII工程搭建
根据前两面所讲的文章,本文通过一个Tri Mode Ethernet MAC IP核和1G/2.5G PCS/PMA IP核搭建一个SGMII接口的工程。此工程的符合以下的应用场景。
2024-05-17 17:23:19 317
原创 1G/2.5G Ethernet PCS/PMA or SGMII
SGMII即Serial GMII,串行GMII,收发各一对差分信号线,时钟频率625MHz,在时钟信号的上升沿和下降沿均采样,所以总的数据速率为1.25Gbps=625Mbps*2。参考时钟RX_CLK由PHY提供,是可选的,主要用于MAC侧没有时钟的情况,一般情况下,RX_CLK不使用。收发都可以从数据中恢复出时钟。在TXD发送的串行数据中,每8比特数据会插入TX_EN/TX_ER 两比特控制信息,同样,在RXD接收数据中,每8比特数据会插入RX_DV/RX_ER 两比特控制信息。
2024-05-17 17:05:27 5361
转载 Tri-mode-eth-mac IP设置与使用
本文是关于tri-mode-eth-mac IP学习过程中的设置与代码使用详解。tri-mode-eth-mac IP是FPGA做以太网设计时的MAC IP。它支持10/100 Mb/s, 1 Gb/s, 2.5 Gb/s, 或者10/100/1000 Mb/s自适应类型。支持RGMII、GMII、以及MII接口,支持全双工/半双工控制。
2024-05-17 12:26:09 1029
原创 10G UDP协议栈 (7)ARP设计
但是仅有IP地址是不够的,因为IP报文必须封装成帧才能通过物理网络发送,因此发送方还需要知道接收方的物理地址(即MAC地址),这就需要一个通过IP地址获取物理地址的协议,以完成从IP地址到MAC地址的映射。主机或三层网络设备上会维护一张ARP表,用于存储IP地址和MAC地址的映射关系,一般ARP表项包括动态ARP表项和静态ARP表项。注意:标准以太网帧的最小长度为64字节,上述全部的字节数为42字节,所以在发送ARP报文的时候需要补充0。ARP_RX接收ARP请求报文或者ARP的响应报文,对于。
2024-05-16 17:32:35 666
原创 10G UDP协议栈 IP层设计-(5)IP RX模块
1、解析目的IP是否是本节点的源IP,如果是则进行如下的处理,如果不是则无需上上级传递2、提取MAC层发送过来的IP报文,并提取其中的数据字段(上层协议字段),传递给上级3、提取IP报文头中的关键字段,例如数据长度、标识、是否分片、分片偏移等,组合成user数据传递给上级。
2024-05-14 14:32:07 239 1
原创 PCIe总线-PCIe简介
PCIe总线是由PCI/PCI-X发展而来,但是两者之间有很大的不同。PCI/PCI-X采用的是并行总线,最大支持的频率为PCI-X2.0 的133MHz,传输速率最大仅为4262MB/s。同时使用并行总线,在PCB上也会造成布线资源紧张,线与线之间的串扰较大。因此在高速领域,由并行转换成串行已经成为了一种趋势。PCIe总线就是采用串行传输协议,传输速率极高,并且由于采用了8B/10B编码、128B/130B编码,所以抗干扰能力强,传输距远。
2024-05-13 16:47:31 2399
原创 AMBA总线介绍
AMBA(Advanced Microcontroller Bus Architecture)是由ARM(Advanced RISC Machines)公司设计的一种高性能、高带宽的总线架构。AMBA总线广泛应用于各种嵌入式系统中,包括数字信号处理器、图形处理器、嵌入式处理器以及SoC(System-on-Chip)等。
2024-05-08 23:45:00 668
原创 APB总线协议
高级外围设备总线(APB)是高级微控制器总线架构(AMBA)总线层次结构的一部分,并为最小的功耗和降低接口复杂性进行了优化。AMBA APB应用于连接到任何低带宽且不需要流水线总线接口的高性能的外设。
2024-05-08 23:45:00 310
原创 GT资源-Clock资源
FPGA TX接口包括两个并行时钟: TXUSRCLK和TXUSRCLK2。TXUSRCLK2是数据进入GT Transceiver TX一侧的同步时钟,TXUSRCLK2和TXUSRCLK具有基于TX_DATA_WIDTH(整数)和TX_INT_DATAWIDTH设置的固定速率关系。4-byte mode:TX_DATA_WIDTH = 32、40和TX_INT_DATWIDTH = 1。4-byte mode:TX_DATA_WIDTH = 32、40和TX_INT_DATWIDTH = 0。
2024-05-07 16:49:41 999
原创 以太网基础-IP、ICMP、ARP协议
IP协议(Internet Protocol)是TCP/IP协议族中最核心的协议,提供不可靠的、无连接的、尽力而为的数据报传输服务。
2024-05-05 12:00:11 1095 1
原创 10GUDP协议栈 MAC层设计-(4)MAC TX模块
MAC TX模块就是要将IP层传输过来的数据封装前导码、MAC地址、帧类型以及进行CRC校验,并与CRC值一块组成以太网帧。
2024-05-04 22:27:16 643
原创 10GUDP协议栈 MAC层设计-(2)MAC RX模块
MAC RX模块主要的难点就在于数据KEEP信号的处理以及相应的64bit的 CRC-32模块的实现。KEEP信号要考虑到开始、结束字符的位置,因此需要处理多种情况。而CEC模块的那点主要在于对于多Bytw数据,一次输入的数据可能不是全部有效的,所以也是需要考虑多种情况。
2024-04-29 15:30:25 923
原创 10GUDP协议栈 MAC层设计-(1)10G Ethernet PCS/PMA
对于10G以太网MAC层的实现,Xilinx提供了 3种IP核,分别是 10G Ethernet MAC、10G Ethernet PCS/PMA、10G Ethernet Subsystem。本篇简要介绍10G Ethernet PCS/PMA IP核的使用,以及XGMII接口的主要时序。(1)选择XGMII的位宽为64bit,DRP的时钟为100M.(2)将共享逻辑饱汉子例子工程中参考:PG0687系列需要提供156025MHz的时钟64bit数据位宽的XGMII接口包含Data Bus、Control
2024-04-29 14:29:01 2305
原创 CRC计算-Verilog实现
循环冗余校验(Cyclic Redundancy Check, CRC)是一种根据网络数据包和计算机文件等数据产生简短固定位数校验码的一种信道编码技术,主要用来检测或校验数据传输或者保存后可能出现的错误。(只能检验错误,而不能纠错)。在此不做过多的赘述。
2024-04-28 17:01:56 1399
原创 FPGA秋招-笔记整理(2)
以门级网表(Netlist)的生成为界限,将整个流程分为前端和后端。布局布线之前可以认为是前端,布局布线之后为后端。
2024-04-23 20:37:04 2574
原创 SRIO系列-时钟逻辑与复位逻辑
上一篇讲述了SRIO协议的基本概念,传输的HELLO帧格式、事务类型等,本篇说一下SRIO IP核的时钟关系。
2024-04-17 21:58:24 1277
原创 SRIO系列-基本概念及IP核使用
RapidIO互连架构是一种高性能的数据包交换、互连技术,旨在与最流行的集成通信处理器、主机处理器和网络数字信号处理器兼容。它解决了高性能嵌入式行业对系统内互连中的可靠性、更高的带宽和更快的总线速度的需求。RapidIO标准被定义为三个层:逻辑、传输和物理。逻辑层定义了总体协议和数据包格式。这是端点启动和完成事务所必需的信息。传输层提供了数据包从端点移动到端点所需的路由信息。物理层描述了设备级的接口细节,如数据包传输机制、流量控制、电气特性和低级错误管理。
2024-04-17 15:13:10 2334
原创 64B/66B编码 自定义PHY层设计
商用的PHY芯片肯定比这些要复杂的多,我们在这边只要了解64B/66B编码的原因,以及PHY的原理和处理过程、思想就好了。
2024-04-16 12:19:53 1522
原创 64B/66B编码
8B/10B编码主要作用的优化直流平衡,从8bit中插2个bit进去,这样的话最终效果能够使长0或者长1的位数不超过5位,达到很好的效果。但是由于8B/10B编码的带宽利用率非常低,10G的带宽只有8G在传输有效数据,2G的带宽全部浪费掉了。所以需要一种带宽利用率高的编码。64B/66B的带宽利用率为64/66=96.9%,所以64B/66B能避免过高的带宽浪费。64B/66B编码技术-CSDN博客。
2024-04-14 11:24:18 1588 2
原创 GT资源-GT_COMMON
7系列GT_COMMON包含一个QPLL,在线速率超过6.6Gbps时,必须使用QPLL,CPLL此时无法使用。GT_COMMON为一个Quad中4个通道的共享资源,下图为示意图。从上图可以看出输入到GT Quad的参考时钟一共有3个,分别是本地的两个参考时钟(最左侧的IBUFDS),来自南向的两个参考时钟(REF Distribution下面),来自北向的参考时钟(REF Distribution上面)。
2024-04-13 16:43:30 795 1
原创 Aurora 8b/10b IP核使用
Aurora 协议是一个用于在点对点串行链路间移动数据的可扩展轻量级链路层协议(由Xilinx开发提供)。这为物理层提供透明接口,让专有协议或业界标准协议上层能方便地使用高速收发器。Aurora协议在Xilinx的FPGA上有两种实现方式:8B/10B 与 64B/10B。Aurora 8B/10B 常用于芯片(FPGA)与芯片(FPGA)之间通信。它用于使用一个或多个收发器在设备之间传输数据。连接可以是全双工(双向数据)或单工。最多可实现(GTX,GTP或GTH),吞吐量可从。
2024-04-12 11:42:13 1710
原创 GT资源-GT Transceiver 整体架构
7系列中,按支持的最高线速率排序,GTP是最低的,GTZ是最高的。GTP被用于A7系列,GTZ被用于少数V7系列。从K7到V7,最常见的是GTX和GTH。GTH的最高线速率比GTX稍微高一点点。在UG476中指出7系列支持GTX和GTH两种类型的Transceiver,其中GTX的线速率可以支持500Mbps到12.5Gbps,GTH的最高线速率更是达到了13.1Gbps。7系列FPGA通常按照bank来分,对于GTX的bank,一般称为一个Quad。下图为XC7K325T中Quad分布图。
2024-04-12 09:31:16 941
原创 基于8B/10BGT收发器的PHY层设计(1)
1、打开7系列GT IP核选择将共享逻辑放入到例子工程中,方便我们后续使用2、线速率、参考时钟选择(CPLL应该是6.6G以下可以使用)3、编码/时钟选择4、COMMOA对齐和均衡COMMOA的作用只是标记一帧的开始和结束,同时进行时钟矫正。在从串行数据转换为并行数据的过程中,会按位流动的检测COMMOA符号,当检测到所设置的COMMOA时,证明有数据到来。5、PCIe、SATA所使用的选项只勾选LOOPBACK选项6、时钟矫正。
2024-04-11 14:37:06 543
原创 错题记录-华为海思
在这两个系统任务中,被读取的数据文件的内容只能包含:空格、换行、制表格、注释、二进制或十六进制的数字。数字中不能包含位宽说明和格式说明,对于$readmemb和$readmemh系统任务,每个数字可以是二进制或者十六进制数字。$readmemh(h,hexadecimal,十六进制)用来读取16进制的数据,而$readmemb(b,binary,2进制)则用来读取2进制的数据。除了可以在仿真的任何时刻被执行使用外,根据综合工具的不同,也可以用来对RAM或者ROM进行初始化(Vivado支持)。
2024-04-10 15:41:46 1263 1
原创 System Verilog系列-(2)
动态数组在声明时不指定空间个数,在使用时用new[]操作符分配空间,同时可以将已经存在的数组名通过new[]操作符将已有的数组复制到新建的动态数组。
2024-04-05 22:49:54 286 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人