【分享】PCIE IP核介绍
一. 什么是PCIE
在介绍IP核之前,先了解下PCIE是什么。
PCIE是一种高速串行计算机扩展总线标准,属于高速串行点对点双通道高带宽传输,所连接的设备分配独享通道带宽,不共享总线带宽,支持主动电源的管理,错误报告,端对端的可靠性传输,热插拔以及服务质量等功能。优点有数据传输速率高,发展潜力相当大。
二. PCIE IP核
PCI-Express IP核,可以实现PCIE协议物理层到数据链路层、再到事务层的协议接口信号转换。因此这里选择在PCIE协议 IP核的基础上,直接在PCIE协议的事务层进行DMA控制器的设计。
IP核是知识产权模块的意思,EDA开发中具有相当的地位。IP主要分为软IP、固IP和硬IP。软IP是用Verilog/VHDL等硬件描述语言描述的功能块,但是并不涉及用什么具体电路元件实现这些功能。固IP是完成了综合的功能块。硬IP提供设计的最终阶段产品——掩膜。
IP核将一些在数字电路中比较常用,但是复杂的功能块,如、SDRAM控制器、等设计成可修改参数的模块。但是CPLD/FPGA的规模越来越大,设计越来越复杂,所以设计者的任务难度大大的提升了。但是调用IP核能避免重复劳动,减轻工程师的负担,因此使用IP核是能够缩短大量产品上市时间。
利用IP核设计电子系统,引用方便,修改基本元件的功能容易。具有复杂功能和商业价值的IP核一般具有知识产权,尽管IP核的市场活动还不规范,但是仍有许多公司从事IP核的设计、开发和营销工作。
IP核有三种不同的存在形式,分别对应我们常说的三类IP内核:软核、固核和硬核。这种分类主要依据产品交付的方式,而这三种IP内核实现方法也各具特色。
固核是和硬核的折衷。大多数应用于FPGA的IP内核均为软核,软核有助于用户调节参数并增强可复用性。软核通常以加密形式提供,这样实际的 RTL对用户是不可见的,但布局和布线灵活。在这些加密的软核中,如果对进行了参数化,那么用户就可通过头文件或图形(GUI)方便地对参数进行操作。对于那些对时序要求严格的内核(如接口内核),可预布线特定信号或分配特定的布线资源,以满足时序要求。这些内核可归类为固核,由于内核是预先设计的代码模块,因此这有可能影响包含该内核的整体设计。由于内核的建立、保持时间和握手信号都可能是固定的,因此其它电路的设计时都必须考虑与该内核进行正确地接口。如果内核具有固定布局或部分固定的布局,那么这还将影响其它电路的布局。
PCIE DMA控制器在发送和接收数据时需要严格按照PCIE协议进行组包和拆包,同时由于每次DMA传输的数据量等传输参数不尽相同,还需要设计DMA状态控制模块,配置与DMA操作相关的寄存器。此外,还需要实现DDR3到PCIE DMA控制器的接口转换模块和DDR3控制器。
发送引擎主要负责将待发送数据按照PCIE协议组织成不同类型的TLP数据包,并发送给PCIE IP核;发送DMA控制模块主要负责把DDR3中读取的数据转换成TLP格式,并传送给发送引擎;接收引擎用于从PCIE IP核接收不同类型的TLP数据,接收DMA控制模块用于实现存储器读请求包的发送流量控制及接收数据位宽的转换;DMA状态控制寄存器模块主要用来解析来自PC对模块内部寄存器的命令和配置,并通知发送引擎模块、接收引擎模块及其他模块作出相应执行。
以上就是IP核的介绍,想要学习更多内容的同学,可以留言评论。
来源:CSDN
作者:MDYFPGA
链接:https://blog.csdn.net/MDYFPGA/article/details/103821088