2022年xilinxPCIE2.0接口EP端设计总结 .pdf
《2022年xilinxPCIE2.0接口EP端设计总结 .pdf》由会员分享,可在线阅读,更多相关《2022年xilinxPCIE2.0接口EP端设计总结 .pdf(47页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1. PCIE 说明PCIE协议定义了多种设备:根复合体 (Root Complex) , 交换器 (Switch) , 端点 (Endpoingt) ,断就(Port) , PCIE 到 PCI/PCI-X 的桥(Bridge) 等。根复合体是将 CPU 和主存储器连接到PCIE线路结构上的设备,能带包CPI 启动 PCIE 事务和访问主存储器;交换器可以将任务由一个端口路由到另一个端口, 在系统中用于多设备的互联, 具体的路由方法包括ID 路由,地址路由,隐含路由;Endpoint 是指一个世纪的设备 (请求者或完成者); port 是设备与链路的接口; Bridge则是用来实现 PCIE
2、 设备与 PCI/PCI-X 设备之间的连接,实现两种不同协议之间的相互转换。PCIE 核在多种模式中使用包来互换信息。包是在事务和数据链层中形成来从发送端到接收端的信息传递。 必要的信息被添加到传输的包中。在接收结束, 接收单元的每一层处理接收到的包,提取相关的信息并发送包到下一层。接收到的包是从他们物理层发送到数据链层和事务层的。PCIe 规范对于设备的设计采用分层的结构,有事务层、数据链路层和物理层组成,各层有都分为发送和接收两功能块。PCIe 的事务层是协议的最上层,其主要功能是根据应用层提供的信息生成相应的请求包传递给数据链路层, 并且处理由数据链路层发来的包,将其转换成应用层能识别
3、的信息,协助数据链路层完成信用管理,实现协议规定的配置事务,IO 事务,存储事务和消息事务。在设备的发送部分,首先根据来自设备核和应用程序的信息,在事务层形成事务层包(TLP) ,储存在发送缓冲器里,等待推向下层;在数据链路层,在TLP 包上再串接一些附加信息, 这些信息是对方接收TLP 包时进行错误检查要用到的; 在物理层,对 TLP 包进行编码,占用链路中的可用通道,从查封发送器发送出去。设备核A事务层数据链路层物理层设备核A事务层数据链路层物理层TxTxRxRxSTP Seq HDR DataDigLCRCEndSeq HDR DataDigLCRCHDR DataDigSTP Seq
4、HDR DataDigLCRCEndSeq HDR DataDigLCRCHDR DataDig事务层包( TLP) ,数据链路层包( DLLP) ,物理层( PLP)产生于各自所在层,最后通过电或光等介质和另一方通讯。这其中数据链路层包(DLLP ) ,物理层( PLP)的包平常不需要关心,在 IP 核中封装好了。 在 FPGA 上做 PCIe 的功能,变成完成事务层包 (TLP)的处理。名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 1 页,共 47 页 - -
5、 - - - - - - - 待移动数据的 PCI-Express协议的请求均由主CPU 发出。当 CPU 向存储器映射输入 /输出(MMIO )地址存储器发出命令时, 数据向下游移动。Root Complex 通常会生成一个具有对应MMIO 位置地址、字节使能和寄存器内容的存储器写 TLP。Endpoint 接收存储器写 TLP 更新响应的本地寄存器后事务即终止。当 CPU 发出从 MMIO 地址加载寄存器的命令时,数据向上游移动。Root Complex 通常会生成一个具有响应MMIO 位置地址和字节使能的存储器读TLP。 Endpoint 在收到存储器读 TLP 后会生成带数据完成型TL
6、P。完成包传送到Root Complex,有效载荷加载至目标寄存器后事务即完成。2. PICE 核接口2.1 系统接口表 1 系统信号信号名方向定义Sys_rst_nInput异步信号。 sys_rst_n 在上电和热复位操作期间,必须被断言至少1500nsSys_clkOutput参 考 时 钟 : 可 选 频 率 为100MHZ,125MHZ或 者500MHZ2.2PCIE接口PCIE 接口由不同的发送(对)和接收(对)所构成的多线程组成。一个PCIE 线由一对发送差分信号(pci_exp_txp, pci_exp_txn) 和一对接收差分信号 (pci_exp_rxp, pci_exp_
7、rxn) 组成。单线的只支持 0 线,双线只支持 01 线,四线支持 0-3 线,八线支持0-7 线。下表 2 定义了 4线核的发送和接收信号。 (只给了一线的信号)表 2 PCIE 接收和发送信号线信号名字方向定义0pci_exp_txp0OutputPCIE 发送正:串行差分输出0pci_exp_txn0OutputPCIE 发送负 : 串行差分输出0pci_exp_rxp0InputPCIE 接收正:串行差分输入0pci_exp_rxn0InputPCIE 接收负:串行差分输入1pci_exp_txp1OutputPCIE 发送正:串行差分输出1pci_exp_txn1OutputPCI
8、E 发送负 : 串行差分输出名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 2 页,共 47 页 - - - - - - - - - 1pci_exp_rxp1InputPCIE 接收正:串行差分输入1pci_exp_rxn1InputPCIE 接收负:串行差分输入2pci_exp_txp2OutputPCIE 发送正:串行差分输出2pci_exp_txn2OutputPCIE 发送负 : 串行差分输出2pci_exp_rxp2InputPCIE 接收正:串行差分输
9、入2pci_exp_rxn2InputPCIE 接收负:串行差分输入3pci_exp_txp3OutputPCIE 发送正:串行差分输出3pci_exp_txn3OutputPCIE 发送负 : 串行差分输出3pci_exp_rxp3InputPCIE 接收正:串行差分输入3pci_exp_rxn3InputPCIE 接收负:串行差分输入2.3事务接口事务接口为用户设计提供了一个机制来产生和消耗TLP。2.4发送接口信号名位宽方向描述S_axis_tx_tlast 1 O 帧发送结尾:标记包的结尾,只有在S_axis_tx_tvalid申明时才有效。S_axis_tx_tdata 64 O 发
10、送的数据S_axis_tkeep 8 O 传输数据选通,决定所给定拍子数据有效字节。数据在s_axis_tx_tvalid 和 s_axis_tx_tready都有效时才有效。此信号的最低位决定数据低字节的有效性。当 last信号没有断言时,只有0 xFF 有效。当 last信号已断言时,只有0 x0F 和 0 xFF 是有效的。S_axis_tx_tvalid 1 O 数据有效信号,拉高表明发哦少年宫数据已准备好。名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 3
11、 页,共 47 页 - - - - - - - - - S_axis_tx_tready 1 I 置 1 表明核准备好接收数据。S_axis_tx_tuser 3 O 传输停止。可以在开始传输后的任意时间断言。S_axis_tx_tuser 2 O 传输流。表明一个包在连续时钟周期上被提供并且在链路上能在确认的包写入核之前开始传输。S_axis_tx_tuser 1 O 此信号标志当前进程中的包是错误的。此信号能在开始到结束传输的任意时刻被拉高。但是tx_err_fwd信号必须在s_axis_tx_tuser2断言时拉低。S_axis_tx_tuser 0 O 端对端循环冗余检查摘要被附加。必
12、须在TLP 的开始时就被断言。Tx_buf_av 6 I 发送 buffer可用:表明核中空闲发送buffer的数量。每个空闲的传输buffer能够调节TLP来支持最大负载size 。 发送buffer的最大数量由支持的MPS和所选的块RAM 配置决定。Tx_err_drop 1 I 传输错误。表明核因为长度不匹配或者流传的时候数据在连续时钟周期上没有提供而丢弃了一个包。Tx_cfg_req 1 I 发送配置请求。当核准备好发送一个配置或者其他内部生成的 TLP时置 1. Tx_cfg_gnt 1 O 1. 同意传输配置。是配置请求的响应。允许核传输一个内部产生的 TLP。2.tx_cfg_r
13、eq信号子在核生成的包已被服务,在任何请求生成之前总算解除断言的。因此,用户设计能够根据tx_cfg_req的上升沿来决定什么时候断言tx_cfg_gnt。3. 在 tx_cfg_req给定要传输的用户创建的TLP相对于核生成的 TLP更高的优先级之后保持tx_cfg_gnt为非断言状态。4. 在断言 tx_cfg_gnt一个时钟州后当tx_cfg_erq断言导致下一个要输出的包为核内部生成的包时拉高tx_cfg_gnt一个时钟周期。5. 当没有buffer空间来存储内部包时,tx_cfg_req甚至在tx_cfg_gnt已经断言后保持断言状态。6. 设计需要再次断言tx_cfg_gnt信号,
14、 因为最初的断言已经被捕捉到。7. 如果不想改变内部生成TLP 传输的优先次序,保持此信号为高。名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 4 页,共 47 页 - - - - - - - - - 2.5接收接口信号名位宽方向描述m_axis_rx_tlast1I接收帧结尾:包结尾信号。在tvalid 断言时才有效。m_axis_rx_tdata64I接收的数据m_axis_rx_tkeep8I接收数据选通决定接收数据的有效字节。m_axis_rx_tlast信
15、号没有断言时,只有0 xFF 为有效值m_axis_rx_tlast信号断言时,有效值为0 x0F 额 0 xFFm_axis_rx_tvalid1I接收数据有效。m_axis_rx_tready1O接收端准备好接收数据。m_axis_rx_tuser9:2 rx_bar_hit7:0I接收bar:表明当前接收事务的目标bar,从包的开头到m_axis_rx_tlast都保持断言。? (rx_bar_hit0)m_axis_rx_tuser2: BAR0 ? (rx_bar_hit1)m_axis_rx_tuser3: BAR1? (rx_bar_hit2)m_axis_rx_tuser4:
16、BAR2? (rx_bar_hit3)m_axis_rx_tuser5: BAR3? (rx_bar_hit4)m_axis_rx_tuser6: BAR4? (rx_bar_hit5)m_axis_rx_tuser7: BAR5? (rx_bar_hit6)m_axis_rx_tuser8: Expansion ROM Address ? m_axis_rx_tuser8:4 不适用于Root端口配置? m_axis_rx_tuser9 is reserved for future use. m_axis_rx_tuser1I接收有错误m_axis_rx_tuser0I表明当前包存在EREC
17、 无措。只有在包的帧结尾才会断言名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 5 页,共 47 页 - - - - - - - - - 3. PCIE 设计参考3.1设计 64 位事务层接口下图代表了典型的 32位可寻址内存写请求 TLP(Transaction Layer Specification )图3-1PCIE 字节命令基础规范PCIE 标头各字段定义如下:Fmt1:0 定义了头标长度和该TLP是否有数据载荷的信息。Type4:0 与Fmt1:0 共同定
18、义了 TLP 的事务类型、头标长度和是否有数据载荷TC2:0 (优先级设定) 定义了设备核施加于请求TLP 及完成 TLP的传输类别编号。 PCIE总线规定了 8种传输类型, 分别为 TC0TC7 ,默认值为 TC0,该字段与 PCIE 的QoS相关。PCIE设备以传输类别 (TC) 、虚通道 (VC) 、TC/VC 映射以及优先级仲裁机制为TLP 传输提供有区别的服务质量。传输类别对应TLP头标中的 3位TC字段,由软件根据 TLP 的紧要程度设置。虚通道是设备端曰中的 TLP 缓冲器,每个端口中可设置l8个VC缓冲器,对应可编号为VC0 VC7,每个编号的 VC中可以缓冲若干个TLP。PC
19、IE 设备内部有逻辑电路负责将不同TC 的TLP到推入到对应编号 VC中,每个TLP只能被映射到一个VC中,使通过该端口的 TLP在对应编号的 VC缓冲器中排队送上链路。TD TLP的Digest (ECRC )字段存在位。若TD=1 ,表明 TLP 含有Digest 字段,其值是ECRC ;若TD=0 ,则表明 TLP不含有 Digest 字段。EP 错误和中毒位。 EP=1 ,则表示事务正常完成,但是应该将包视为无效。Attr2:0 位5为宽松排序位:为1时,表示使用PCI-X 式宽松排序;为0时,表明使用PCI式严格排序。位 4为不监听 Cache 位:为 1时,表明 TLP不存在处理器
20、 Cache 一致性问题,不要求系统硬件去监听处理器Cache ;为0时,则要求 PCI时的Cache 监听。名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 6 页,共 47 页 - - - - - - - - - 长度Length9:0 指示 TLP的数据载荷长度,以双字DW 为单位,最大长度为1024 双字,即4KB AT 字段AT 字段与 PCIE 总线的地址转换相关。在一些PCIE 设备中设置了ATC (Address Translation Cache)部
21、件,这个部件的主要功能是进行地址转换。只有在支持IOMMU 技术的处理器系统中, PCIE 设备才能使用该字段。AT字段可以用作存储器域与PCI 总线域之间的地址转换,但是设置这个地段的主要目的是为了方便多个虚拟主机共享同一个PCIE 设备。(此处设置为 0)Requester ID字段:Requester ID用来标识事务的请求者,以便对应的完成能够返回,在Requester ID15 :0中,15:8为总线号, 7:3为设备号, 2:0为功能Tag字段 :标签Tag 字段用来用来标识由请求者发出的未完成的非转发事务的请求序号,以便相应的完成返回时带有与原请求相同的序号,请求者将事务包与相应
22、挂起的请求对号,解除对应的挂起请求。First DW BE 和Last DW BE 为字节使能字段, 连个字节是能位以允许比整双字小的数据长度和偏离DW边界的起止地址。当使用 AXI4-Stream 接口时,包被安排在确定的64位数据通路上。下图展示了在AXI4-Stream 接口上的包的例子。从图上可看到,包的第0字节就是 s_axis_tx_tdata31:24(发送)或者m_axis_rx_tdata31:24 (接收 )的对应位。同样,第1字节在 s_axis_tx_tdata23:16或者m_axis_rx_tdata23:16所对应的位。在第二个64 位数据组合时,就是PCIE 的
23、第 8字节对应的s_axis_tx_tdata31:24或者 m_axis_rx_tdata31:24所对应位。发送到核的包必须遵从TLP的传输规则。图3-2断点综合块字节用户应用负责确认包的有效性。核不会去检查包的格式是否正确并且这样可能导致传输一个畸形的TLP。给定的 TLP 变化的精确度依赖于正在传输的包的类型。Fmt和 Type字段确认当前 TLP使用的总线事务,TLP头的大小是由 3 个双字还是 4 个双字组成(32 位地址为 3DW ,64位地址则对应 4DW ),当前 TLP是否包含有效负载。其具体含义如下表所示。表 3.1 TLP 类型字段定义Fmt2:0 TLP的格式0b00
24、0 TLP大小为 3 个双字,不带数据。名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 7 页,共 47 页 - - - - - - - - - Fmt2:0 TLP的格式0b001 TLP大小为 4 个双字,不带数据。0b010 TLP大小为 3 个双字,带数据。0b011 TLP大小为 4 个双字,带数据。0b100 TLP Prefix 其他PCIe 总线保留其中所有读请求 TLP都不带数据,而写请求TLP带数据,而其他 TLP可能带数据也可能不带数据,如完成
25、报文可能含有数据,也可能仅含有完成标志而并不携带数据。在TLP的 Type字段中存放 TLP的类型,即 PCIe 总线支持的总线事务。该字段共由5 位组成,其含义如下表所示。表 3-2 PCIE 总线事务类型TLP类型Fmt2:0 Type4:0 描述MRd 存储器读请求0b000 0b001 0b0 0000 3DW ,不带数据4DW ,不带数据MRdLk 带锁的存储器读请求0b000 0b001 0b0 0001 3DW ,不带数据4DW ,不带数据MWr 存储器写请求0b010 0b011 0b0 0000 3DW ,带数据4DW ,带数据IORd IO 读请求0b000 0b0 001
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年xilinxPCIE2.0接口EP端设计总结 2022 xilinxPCIE2 接口 EP 设计 总结
限制150内