xilinx-PCIE2.0接口-EP端设计总结_第1页
xilinx-PCIE2.0接口-EP端设计总结_第2页
xilinx-PCIE2.0接口-EP端设计总结_第3页
xilinx-PCIE2.0接口-EP端设计总结_第4页
xilinx-PCIE2.0接口-EP端设计总结_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1. PCIE说明PCIE协议定义了多种设备:根复合体(Root Complex),交换器(Switch),端点(Endpoingt),断就(Port),PCIE到PCI/PCI-X的桥(Bridge)等。根复合体是将CPU和主存储器连接到PCIE线路结构上的设备,能带包CPI启动PCIE事务和访问主存储器;交换器可以将任务由一个端口路由到另一个端口,在系统中用于多设备的互联,具体的路由方法包括ID路由,地址路由,隐含路由;Endpoint是指一个世纪的设备(请求者或完成者);port是设备与链路的接口;Bridge则是用来实现PCIE设备与PCI/PCI-X设备之间的连接,实现两种不同协议之

2、间的相互转换。PCIE核在多种模式中使用包来互换信息。包是在事务和数据链层中形成来从发送端到接收端的信息传递。必要的信息被添加到传输的包中。在接收结束,接收单元的每一层处理接收到的包,提取相关的信息并发送包到下一层。接收到的包是从他们物理层发送到数据链层和事务层的。PCIe 规范对于设备的设计采用分层的结构,有事务层、数据链路层和物理层组成,各层有都分为发送和接收两功能块。PCIe的事务层是协议的最上层,其主要功能是根据应用层提供的信息生成相应的请求包传递给数据链路层,并且处理由数据链路层发来的包,将其转换成应用层能识别的信息,协助数据链路层完成信用管理,实现协议规定的配置事务,IO事务,存储

3、事务和消息事务。在设备的发送部分,首先根据来自设备核和应用程序的信息,在事务层形成事务层包(TLP),储存在发送缓冲器里,等待推向下层;在数据链路层,在TLP 包上再串接一些附加信息,这些信息是对方接收TLP 包时进行错误检查要用到的;在物理层,对TLP 包进行编码,占用链路中的可用通道,从查封发送器发送出去。事务层包(TLP),数据链路层包(DLLP),物理层(PLP)产生于各自所在层,最后通过电或光等介质和另一方通讯。这其中数据链路层包(DLLP),物理层(PLP)的包平常不需要关心,在 IP核中封装好了。在 FPGA上做 PCIe的功能,变成完成事务层包(TLP)的处理。待移动数据的PC

4、I-Express协议的请求均由主CPU发出。l 当CPU向存储器映射输入/输出(MMIO)地址存储器发出命令时,数据向下游移动。Root Complex通常会生成一个具有对应MMIO位置地址、字节使能和寄存器内容的存储器写TLP。Endpoint接收存储器写TLP更新响应的本地寄存器后事务即终止。l 当CPU发出从MMIO地址加载寄存器的命令时,数据向上游移动。Root Complex通常会生成一个具有响应MMIO位置地址和字节使能的存储器读TLP。Endpoint在收到存储器读TLP后会生成带数据完成型TLP。完成包传送到Root Complex,有效载荷加载至目标寄存器后事务即完成。2.

5、 PICE核接口2.1系统接口表1 系统信号信号名方向定义Sys_rst_nInput异步信号。sys_rst_n在上电和热复位操作期间,必须被断言至少1500nsSys_clkOutput参考时钟:可选频率为100MHZ,125MHZ或者500MHZ2.2 PCIE接口PCIE接口由不同的发送(对)和接收(对)所构成的多线程组成。一个PCIE线由一对发送差分信号(pci_exp_txp, pci_exp_txn)和一对接收差分信号(pci_exp_rxp, pci_exp_rxn)组成。单线的只支持0线,双线只支持01线,四线支持0-3线,八线支持0-7线。下表2定义了4线核的发送和接收信号

6、。(只给了一线的信号)表2 PCIE接收和发送信号线信号名字方向定义0pci_exp_txp0OutputPCIE发送正:串行差分输出0pci_exp_txn0OutputPCIE发送负: 串行差分输出0pci_exp_rxp0InputPCIE接收正:串行差分输入0pci_exp_rxn0InputPCIE接收负:串行差分输入1pci_exp_txp1OutputPCIE发送正:串行差分输出1pci_exp_txn1OutputPCIE发送负: 串行差分输出1pci_exp_rxp1InputPCIE接收正:串行差分输入1pci_exp_rxn1InputPCIE接收负:串行差分输入2pci

7、_exp_txp2OutputPCIE发送正:串行差分输出2pci_exp_txn2OutputPCIE发送负: 串行差分输出2pci_exp_rxp2InputPCIE接收正:串行差分输入2pci_exp_rxn2InputPCIE接收负:串行差分输入3pci_exp_txp3OutputPCIE发送正:串行差分输出3pci_exp_txn3OutputPCIE发送负: 串行差分输出3pci_exp_rxp3InputPCIE接收正:串行差分输入3pci_exp_rxn3InputPCIE接收负:串行差分输入2.3 事务接口事务接口为用户设计提供了一个机制来产生和消耗TLP。2.4 发送接口

8、信号名位宽方向描述S_axis_tx_tlast1O帧发送结尾:标记包的结尾,只有在S_axis_tx_tvalid申明时才有效。S_axis_tx_tdata64O发送的数据S_axis_tkeep8O传输数据选通,决定所给定拍子数据有效字节。数据在s_axis_tx_tvalid 和 s_axis_tx_tready都有效时才有效。此信号的最低位决定数据低字节的有效性。当last信号没有断言时,只有0xFF有效。当last信号已断言时,只有0x0F和0xFF是有效的。S_axis_tx_tvalid1O数据有效信号,拉高表明发哦少年宫数据已准备好。S_axis_tx_tready1I置1表

9、明核准备好接收数据。S_axis_tx_tuser3O传输停止。可以在开始传输后的任意时间断言。S_axis_tx_tuser2O传输流。表明一个包在连续时钟周期上被提供并且在链路上能在确认的包写入核之前开始传输。S_axis_tx_tuser1O此信号标志当前进程中的包是错误的。此信号能在开始到结束传输的任意时刻被拉高。但是tx_err_fwd信号必须在s_axis_tx_tuser2断言时拉低。S_axis_tx_tuser0O端对端循环冗余检查摘要被附加。必须在TLP的开始时就被断言。Tx_buf_av6I发送buffer可用:表明核中空闲发送buffer的数量。每个空闲的传输buffe

10、r能够调节TLP来支持最大负载size。发送buffer的最大数量由支持的MPS和所选的块RAM配置决定。Tx_err_drop1I传输错误。表明核因为长度不匹配或者流传的时候数据在连续时钟周期上没有提供而丢弃了一个包。Tx_cfg_req1I发送配置请求。当核准备好发送一个配置或者其他内部生成的TLP时置1.Tx_cfg_gnt1O1.同意传输配置。是配置请求的响应。允许核传输一个内部产生的TLP。2.tx_cfg_req信号子在核生成的包已被服务,在任何请求生成之前总算解除断言的。因此,用户设计能够根据tx_cfg_req的上升沿来决定什么时候断言tx_cfg_gnt。3.在tx_cfg_

11、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信号,因为最初的断言已经被捕捉到。7.如果不想改变内部生成TLP传输的优先次序,保持此信号为高。2.5 接收接口信号名位宽方向描述m_axis_rx_tlast1I接收帧结尾:包结尾信号。在tva

12、lid断言时才有效。m_axis_rx_tdata64I接收的数据m_axis_rx_tkeep8I接收数据选通决定接收数据的有效字节。m_axis_rx_tlast信号没有断言时,只有0xFF为有效值m_axis_rx_tlast信号断言时,有效值为0x0F额0xFFm_axis_rx_tvalid1I接收数据有效。m_axis_rx_tready1O接收端准备好接收数据。m_axis_rx_tuser9:2rx_bar_hit7:0I接收bar:表明当前接收事务的目标bar,从包的开头到m_axis_rx_tlast都保持断言。 (rx_bar_hit0)m_axis_rx_tuser2:

13、 BAR0 (rx_bar_hit1)m_axis_rx_tuser3: BAR1 (rx_bar_hit2)m_axis_rx_tuser4: 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

14、 for future use.m_axis_rx_tuser1I接收有错误m_axis_rx_tuser0I表明当前包存在EREC无措。只有在包的帧结尾才会断言3. PCIE设计参考3.1 设计64位事务层接口下图代表了典型的32位可寻址内存写请求TLP(Transaction Layer Specification)图3-1 PCIE字节命令基础规范PCIE标头各字段定义如下:l Fmt1:0定义了头标长度和该TLP是否有数据载荷的信息。l Type4:0与Fmt1:0共同定义了TLP的事务类型、头标长度和是否有数据载荷l TC2:0 (优先级设定)定义了设备核施加于请求TLP及完成TLP

15、的传输类别编号。PCIE总线规定了8种传输类型,分别为TC0TC7,默认值为TC0,该字段与PCIE的QoS相关。PCIE设备以传输类别(TC)、虚通道(VC)、TC/VC映射以及优先级仲裁机制为TLP传输提供有区别的服务质量。传输类别对应TLP头标中的3位TC字段,由软件根据TLP的紧要程度设置。虚通道是设备端曰中的TLP缓冲器,每个端口中可设置l8个VC缓冲器,对应可编号为VC0VC7,每个编号的VC中可以缓冲若干个TLP。PCIE设备内部有逻辑电路负责将不同TC的TLP到推入到对应编号VC中,每个TLP只能被映射到一个VC中,使通过该端口的TLP在对应编号的VC缓冲器中排队送上链路。l

16、TDTLP的Digest(ECRC)字段存在位。若TD=1,表明TLP含有Digest字段,其值是ECRC;若TD=0,则表明TLP不含有Digest字段。l EP错误和中毒位。EP=1,则表示事务正常完成,但是应该将包视为无效。l Attr2:0位5为宽松排序位:为1时,表示使用PCI-X式宽松排序;为0时,表明使用PCI式严格排序。位4为不监听Cache位:为1时,表明TLP不存在处理器Cache一致性问题,不要求系统硬件去监听处理器Cache;为0时,则要求PCI时的Cache监听。l 长度Length9:0 指示TLP的数据载荷长度,以双字DW为单位,最大长度为1024双字,即4KBl

17、 AT字段 AT字段与PCIE总线的地址转换相关。在一些PCIE设备中设置了ATC(Address Translation Cache)部件,这个部件的主要功能是进行地址转换。只有在支持IOMMU技术的处理器系统中,PCIE设备才能使用该字段。AT字段可以用作存储器域与PCI总线域之间的地址转换,但是设置这个地段的主要目的是为了方便多个虚拟主机共享同一个PCIE设备。(此处设置为0)l Requester ID字段 :Requester ID用来标识事务的请求者,以便对应的完成能够返回,在Requester ID15:0中,15:8为总线号,7:3为设备号,2:0为功能l Tag字段 :标签T

18、ag字段用来用来标识由请求者发出的未完成的非转发事务的请求序号,以便相应的完成返回时带有与原请求相同的序号,请求者将事务包与相应挂起的请求对号,解除对应的挂起请求。l 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_tda

19、ta23:16或者m_axis_rx_tdata23:16所对应的位。在第二个64位数据组合时,就是PCIE的第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是否包含有效负载。其具体含

20、义如下表所示。表3.1 TLP类型字段定义Fmt2:0TLP的格式0b000TLP大小为3个双字,不带数据。0b001TLP大小为4个双字,不带数据。0b010TLP大小为3个双字,带数据。0b011TLP大小为4个双字,带数据。0b100TLP Prefix其他PCIe总线保留其中所有读请求TLP都不带数据,而写请求TLP带数据,而其他TLP可能带数据也可能不带数据,如完成报文可能含有数据,也可能仅含有完成标志而并不携带数据。在TLP的Type字段中存放TLP的类型,即PCIe总线支持的总线事务。该字段共由5位组成,其含义如下表所示。表3-2 PCIE总线事务类型TLP类型Fmt2:0Typ

21、e4:0描述MRd存储器读请求0b0000b0010b0 00003DW,不带数据4DW,不带数据MRdLk带锁的存储器读请求0b0000b0010b0 00013DW,不带数据4DW,不带数据MWr存储器写请求0b0100b0110b0 00003DW,带数据4DW,带数据IORdIO读请求0b0000b0 00103DW,不带数据IOWrIO写请求0b0100b0 00103DW,带数据CfgRd0配置0读请求0b0000b0 01003DW,不带数据CfgWr0配置0写请求0b0100b0 01003DW,带数据CfgRd1配置1读请求0b0000b0 01013DW,不带数据。CfgW

22、r1配置1写请求0b0100b0 01013DW,带数据TCfgRd0b0100b1 1011对这两种总线事务不做介绍。TCfgWr0b0010b1 1011Msg消息请求0b0010b1 0r2r1r04DW,不带数据。“rrr”字段是消息请求报文的Route字段,下文将详细介绍该字段。MsgD带数据的消息请求0b0110b1 0r2r1r04DW,带数据Cpl完成0b0000b0 10103DW,不带数据。包括存储器、配置和I/O写完成。CplD带数据的完成0b0100b0 10103DW双字,包括存储器读、I/O读、配置读和原子操作读完成。CplLk锁定的完成0b0000b0 10113

23、DW,不带数据。CplDLk带数据的锁定完成0b0100b0 10113DW,带数据。由上表所示,存储器读和写请求,IO读和写请求,及配置读和写请求的type字段相同,如存储器读和写请求的Type字段都为0b0 0000。此时PCIe总线规范使用Fmt字段区分读写请求,当Fmt字段是“带数据”的报文,一定是“写报文”;当Fmt字段是“不带数据”的报文,一定是“读报文”。PCIe总线规定所有Non-Posted存储器请求使用Split总线方式进行数据传递。当PCIe设备进行存储器读、I/O读写或者配置读写请求时,首先向目标设备发送数据读写请求TLP,当目标设备收到这些读写请求TLP后,将数据和完

24、成信息通过完成报文(Cpl或者CplD)发送给源设备。其中存储器读、I/O读和配置读需要使用CplD报文,因为目标设备需要将数据传递给源设备;而I/O写和配置写需要使用Cpl报文,因为目标设备不需要将任何数据传递给源设备,但是需要通知源设备,写操作已经完成,数据已经成功地传递给目标设备。在PCIe总线中,进行存储器或者I/O写操作时,数据与数据包头一起传递;而进行存储器或者I/O读操作时,源设备首先向目标设备发送读请求TLP,而目标设备在准备好数据后,向源设备发出完成报文。PCIe总线规范还定义了MRdLk报文,该报文的主要作用是与PCI总线的锁操作相兼容,但是PCIe总线规范并不建议用户使用

25、这种功能,因为使用这种功能将极大影响PCIe总线的数据传送效率。与PCI总线并不相同,PCIe总线规范定义了Msg报文,即消息报文。分别为Msg和MsgD,这两种报文的区别在于一个报文可以传递数据,一个不能传递数据。PCIe总线支持四种事务配置事务,IO事务,存储事务和消息事务,如表3-3所示。PCIe设备使用路由的方式来实现事务认领,路由方式基于事务类型,系统存储器和IO地址分配等因素。路由方式分为三种,分别是地址路由,ID路由和隐含路由。存储事务和IO事务仅使用地址路由方式,配置事务和完成使用ID路由方式,消息事务可以使用任何一种路由方式,每种事务所对应的具体路由方式如表3-4所示。表3-

26、3 PCIE地址空间和事务类型地址空间事务类型用途存储器读写传送数据自/至系统存储器空间的单元IO读写传送数据自/至系统IO空间的单元配置读写传送数据自/至PCI兼容的设备配置空间的单元消息底线/厂商定义通常用于带内的消息传递和时间报告表3-4 PCIE TLP的路由选择TLP类型使用的路由方法MRd、MRdlk、MWr地址路由IDRd、IOWr地址路由CfgRd0,CfgRd1、CfgWr0、CfgWr1ID路由Msg、MsgD地址路由,ID路由或隐含路由CpldID路由3.2 事务层关键技术3.2.1 事务层发送部分事务层接收Device Core的信息,产生相应的事务层包(TLP),存放

27、在虚拟通道中的VC缓冲器里等待发送。TLP的主要组成是:头标,数据载荷和可选的ECRC。事务层包中包含数据类型,数据长度和路由方式等信息。3.2.2 事务层接收部分事务层接发来的事务层包,存放在接收VC缓冲器里。接收端检查ECRC字段,确定事务层包在通过线路结构的过程中是否发生错误,若无错误,ECRC字段被剥除,剩下的TLP头标信息及数据载荷被送到设备核。3.2.3 流量控制在PCI中,当接收方没有足够的空间接收发送方发出的事务时,会以切断信号来阻止事务发送,然后每隔一段时间后会自动重发,直到发送成功。但是往往这个间隔时间并不能使接收方有足够的空间来接收上次被阻止的事务,不断的重试造成了资源的

28、浪费13。在PCIe中,接收方会以信用的方式定期向发送方报告自己接收缓冲中的剩余空间,以此来保证没有不能被接收的事务发出,从而提高了总线效率。流控过程如图3-3所示:图3-3 流控制过程3.2.4 服务质量,传输类别和虚拟通道PCIe提供QoS,即以有区别的优先级和确定的等待时间及带宽运输来自不同应用的包。PCIe所提供的服务质量与传输类别(TC)和虚拟通道(VC)密切相关。PCIe设备以传输类别(TC),虚通道(VC),TC/VC映射以及优先级仲裁来支持服务质量(QoS)。从传输要求的角度来看,PCI Express事务可分为等时事务和异步事务。等时事务要求在每个相等的,固定的时间间隔里保证

29、固定的数量传送;异步事务是除等时事务以外的其它事务。无论是哪种事务,从系统的角度来看,就是有不同的优先级,各类事务以一个TC(Traffic Class)值表达所想要得到的QoS(Quality of Service),PCIe配置软件能够建立起传输类别的值与设备端口虚拟通道(VC)之间的映射关系。理论上等时事务所对应的VC应被配置为最高优先级,等时事务的请求者,完成者及中间路过设备都应该将TC所映射的VC配置为最高优先级。等时事务的请求者以所要求的速率(服务间隔)将等时包注入线路结构,沿路的中间设备将具有该TC的等时包投入对应的VC,以接受仲裁,仲裁的结果是等时事务得到所想要的带宽和等待时间

30、。虚拟通道的主体是缓冲器,位于设备端口处的事务层内,虚通道数可配置,最多支持8个(VC0VC7)。VC0为默认虚通道,VC1VC7可配置。规范要求下列事务只使用TC0/VC0配置事务,IO事务,INTx消息事务,电源管理消息事务,错误报告消息事务,解锁消息事务,设置插槽电源限额消息事务。端口VC的配置,事务TC值到端口VC的映射以及端口仲裁和VC仲裁都由VC配置寄存器实现,这些VC配置寄存器组成虚通道能力寄存器组,位于设备的扩展配置空间内,有系统软件对他们进行设置。每三个资源寄存器为一组,服务于不同的虚通道。3.2.5 端口仲裁和VC仲裁不同TC号的包通过交换开关时,从多个入端口进来的,涌向同

31、一个出端口的包,竞争该出端口的使用权,交换开关对该出端口执行两方面的仲裁:端口仲裁和VC仲裁。端口仲裁是对在不同入端口上到达的都映射到公共出端口的同一虚通道上的包进行仲裁;VC仲裁发生在端口仲裁之后,对已经进入不同VC的,要从同一端口发送到连路上的包进行仲裁。端口仲裁方法分为硬件固定仲裁方式和加权轮转仲裁方式。VC仲裁方法有以下三种:a) 对所有VC执行严格优先序仲裁;b) 分组是优先序仲裁;c) 对所有VC执行轮转优先序仲裁(均等轮转仲裁和加权的轮转仲裁)。3.2.6 事务排序PCIe中的事务分为三种,转发事务,非转发事务和完成。针对每个事务都有其独立的缓存空间,因此不同类型的事务间没有排序

32、的问题。但是同种类型的事务会严格按照先后顺序执行,有时候急需的事务会因为先前事务未完成而被阻塞,对于映射到统一VC中的事务,宽松事务排序位为1的事务被允许可以插到宽松式无排序位为0的同类事务前执行。3.2.7 电源管理事务层支持电源管理。事务层中的硬件在某种情况下能自主的将设备置入低功耗电源状态,这种自动的电源管理不涉及软件,被称为主动的电源管理。3.2.8 配置寄存器设备的配置寄存器是与事务层联系在一起的,在初始化和总线枚举期间,配置软件对这些寄存器的进行配置,然后,由运行期软件/OS使用核访问。3.3 outbound传输包3.3.1 基础TLP传输操作7系列FPGA集成块的PCIE核会自

33、动传输这些类型的包。l 完成一个远程设备响应配置空间的请求l 核的inbound请求的错误消息响应是畸形或者不被认可的Note:某些未被认可的请求,例如:意想不到的完成,只能被负责生成合适响应的用户应用侧被检测到。用户应用程序负责这些类型的outbound包类型:l 内存,Atomic Ops,和远程设备的I/O请求l 完成对用户应用程序请求进行响应。例如:内存读请求。l 在允许的情况下,完成对用户执行配置空间请求的应答。这些请求包括PCI 遗留功能寄存器寄存器侧的地址BFh和PCIE扩展功能寄存器侧的地址1FFh。当配置为断点时,核关注用户应用程序的内部生成的通过断言tx_cfg_req来调

34、节传输数据通路的TLP。用户应用程序能够通过始终置高tx_cfg_gnt信号来选择给定核生成的TLP的优先级。以此来防止在核生成的TLP等待时,传输了用户应用程序生成的TLP。或者用户应用程序能够通过拉低tx_cfg_gnt直到用户传输完成来保留生成的TLP的优先级从而越过核生成的TLP而。当用户传输完成时,用户应用程序能够断言tx_cfg_gnt信号至少一个时钟周期来允许传输核生成的TLP。断言tx_cfg_gnt信号的时候不能延迟,因为延迟的话可能导致请求方完成超时。为了传输一个TLP,用户应用程序必须在传输事务接口上执行这一系列的事务:1.用户应用程序逻辑断言s_axis_tx_tval

35、id并且在s_axis_tx_tdata63:0信号上附上第一个TLP QWORD。如果核断言s_axis_tx_tready,那么这个QWORD就会被立马接收。否则,用户应用程序必须保持QWORD不变直到核断言s_axis_tx_tready。2.用户应用程序断言s_axis_tx_tvalid并且在随后的时钟周期中在s_axis_tx_tdata63:0信号上附上剩余的TLP QWORDS。(s_axis_tx_tready有效的情况下)3.用户应用程序在传输最后的QWORD数据时,同时断言s_axis_tx_tvalid和s_axis_tx_tlast信号。如果所有的最后传输8个数据字节

36、是有效的,并且s_axis_tx_tkeep信号被驱动为0xFF。否则,s_axis_tx_tkeep信号被驱动为0xFF,则s_axis_tx_tdata31:0信号的4个字节数据被有效传输。4.在成功传输s_axis_tx_tdata63:0数据有效的下个时钟周期,用户应用程序驱动s_axis_tx_tvalid为低。下图显示了不传输数据的只有3个DWORD的TLP包头。32位可寻址内存读请求。当用户断言s_axis_tx_tlast信号时,同时将s_axis_tx_tkeep的值设为0x0F,表明s_axis_tx_tdata只有低32位数据为有效数据。图3-3 3个DWORD的TLP头

37、传输下图显示了不传输数据的有4个DWORD的TLP包头。32位可寻址内存读请求。当用户断言s_axis_tx_tlast信号时,同时将s_axis_tx_tkeep的值设为0xFF,表明s_axis_tx_tdata信号的64数据都有效数据。图3-4 4个DWORD的TLP头传输下图显示了一个带有数据的3个DWORD的TLP事务传输。此图keep信号最终为0xFF,表明64位数据都有效。(如果以32位数据为一个单位,就是奇数个单位。)图3-5 3个DWORD的TLP事务传输下图显示了一个带有数据的4个DWORD的TLP事务传输。此图keep信号最终为0x0F,表明低32位数据有效。(如果以32

38、位数据为一个单位,就是4DWORD带有奇数个单位。)图3-6 3个DWORD的TLP事务传输下图显示了拼接形式的事务传输。从图可看出,传输了两个TLP事务,当第一个事务传输完成并且last断言时,valid保持高,继续传输第二个TLP事务,知道2个事务都传输完成。图3-7 传输接口上的对头拼接事务当用户应用程序在某个时钟周期上没有数据需要传输时,保持valid为低。如下图:图3-8 无连续数据传输PCIE核的buffer如果没有空间剩余来接收一个新的TLP时,就会遏制用户的传输。而这只会在链路处理输入数据的速度与用户端相同或者比用户端更低时才会出现。如下图:图3-9 不可连续接收数据如果核传输

39、AXI4流接口通过置高s_axis_tx_ready信号,确认接收了TLP事务的包头,则就保证有足够的空间来接收PCIE设备能力寄存器中定义的最大数据负载所对应的数据量。当核接收了TLP的第一个64位时,就一定会将此TLP事务接收完。当然事务的数据大小不能超过PCIE的最大数据大小。核的接口只有在一下情况时会驱动s_axis_tx_tready信号为低:l 核没有足够用的bufferl 当核正在传输一个内部生成的TLP,在用户应用程序通过置高tx_cfg_gnt来充分利用传输数据通道以后。在传输内部生成的TLP后,核紧随的置高s_axis_tx_tready信号。l 当电源管理控制状态寄存器的

40、电源状态域的PCI管理能力结构变为一个non-D0状态时。当这种情况出现时,任何待传的TLP被完全接收,并且s_axis_tx_tready随之拉低,不允许用户应用程序继续发送一个新的事务。当核将s_axis_tx_tready置0后,用户应用程序的所有控制和数据信号保持到s_axis_tx_tready置1为止。用户终止传输用户应用程序可以通过将s_axis_tx_tuser3 (tx_src_dsc) 置1来终止事务的传输。当然,此情况必须要在valid和ready都有效的情况下,才会终止。在新的包传输的开始tx_src_dsc信号必须为0。tx_src_dsc信号可以在包传输的第一个拍子

41、被接收以后的任何周期上被拉高(包括last信号有效时)。终止传输不会影响数据被接收,只会终止下一个数据被传输。如果流模式没有使用,s_axis_tx_tuser2 = 0b(tx_str),并且包被终止,然后包会在串行链路上继续传输数据之前被丢弃。如果流模式被使用,那么包终止的同时串行链路上会有EDB标志。图3-10 源驱动发送接口终止传输目的端丢弃事务核传输AXI4-Stream接口丢弃TLP的三个原因:l PCIE链路连接失败l 改变PCIE设备性能寄存器的值,从而改变TLP的最大负载大小。不能违反设备控制寄存器的最大数据负载大小。s_axis_tx_tuser2(tx_str)被拉高并且

42、数据在时钟周期上不连贯,就是valid信号在TLP传输的过程中被拉低。下图给定一个TLP事务被丢弃的时序图:图3-11 目的传输接口丢弃事务用户可以通过保持s_axis_tx_user2为高来使能传输TLP的Streaming模式。在传输TLP期间,用户必须保持valid为高。如果在一个TLP传输中间valid被拉低,会导致真个TLP被丢弃。如下图:图3-12 streaming模式传输用户可以在一个TLP传输的开始将s_axis_tx_tuser0(tx_ecrc_gen)信号拉高一个有效周期,来使能ECRC generation,从而让输出的TLP有一个digest。在包允许插入一个dig

43、est后,这个包传输结束后,ready信号会被拉低一个时钟周期。如下图:图13 生成EREC3.4 inbound接收包3.4.1 基础TLP接收操作1. 当用户应用程序准备好接收数据时,置高m_axis_rx_tready信号2. 当核准备好传输数据时,核会将m_axis_rx_tvalid信号拉高并且将数据准备好。3. 核保持m_axis_rx_valid为高时,并且将TLP QWORD在随后的时钟周期附上数据线。4. 核将valid和last拉高,并且将最后的QWORD附上数据线。0xFF对应64位有效,0x0F对应32位有效。5. 如果在下个时钟周期没有可用的TLP,核会将valid信

44、号在传输最后一个数据后拉低。用户只需根据valid来驱动ready是否拉高,其他data,keep,last等信号都不会关心。valid信号永远不会再包传输的中间被拉低。4. PCIE核生成参数配置4.1 基本参数配置(1) Component Name核名称(2) PCIE Device /Port Type选择PCIE逻辑设备类型(3) PCIe Block Location从可用的集成块中选择块来产生本地特定的约束文件和引脚。当Xilinx Development Board已选时,此选项无效(4) Xilinx Development Board选择Xilinx Development

45、 Board来产生Xilinx Development Board特定约束文件。(5) Silicon Revision选择硅版本。可用选择为Initial_ES和GES_and_Produciton(6) Number of Lanes链路数量。(7) Maximum Link Speed最大链路速度。Lane WidthLink speedX12.5 Gb/s, 5 Gb/sX22.5 Gb/s, 5 Gb/sX42.5 Gb/s, 5 Gb/sX82.5 Gb/s, 5 Gb/s(8) AXI Interface FrequencyAXI接口频率。1lane2.5 Gb/s64 bit6

46、2.5 MHZ125 250 MHZ1lane56462.5125 2502lane2.56462.5125 2502lane5641252504lane2.5641252504lane564250-4lane5128125-8lane2.564250-8lane2.5128125-8lane5128250-(9) Reference Clock Frequency(10) Additional Transceiver Control and Status Ports(11) Enable External GT Channel DRP使能额外的GT和DRP端口 ext_ch_gt_drpdo

47、15:0 ext_ch_gt_drpdi15:0 ext_ch_gt_drpen0:0 ext_ch_gt_drwe0:0 ext_ch_gt_drprdy:0 ext_ch_gt_drpaddr8:0(12) Enable Pipe Simulation(13) Enable External PIPE Interface4.2 PCIE用户可定制信息(1) ID Initial ValuesVendor Values :标识期间或应用制造商。默认为10EEh为xilinx供应商ID。Device ID :应用唯一性标识符。可以为任意值Revision ID :指示器件或者应用版本,Devi

48、ce ID的扩展符。默认为00hSubsystem Vendor ID :进一步标识器件或者应用的制造商。默认值为10EE,通常与Vendor ID相同。若设置为0000h,会导致复合型测试问题。Subsystem ID : 同上(2) class Code用于区分设备的一般功能,分为3种类型:1. Base Class :概括地标识器件所执行功能的类型2. Sub-Class :较具体地标识器件功能3. Interface :定义特定的寄存器级变成接口,供独立于期间的软件与期间进行连接。4. class code :编码信息,由Base Class,Sub-Class,interface组成

49、。5. Cardbus CIS 指针用于carbus 系统中,并且指向响应的Card 信息结构。如果该值为非0,则必须有响应的Card信息结构,默认值为0000_0000h,取值范围为hFFFFFFFFh。4.3 基地址寄存器设置支持6个32位的BAR或者3个64位的BAR。使用存储器类型时,同时支持32bit和64bit,且支持可预取。若某个BAR设置为64bit,则下一个BAR用于扩展地址空间,使得下一个BAR对于用户来说不可读写。(1)BAR支持两种规格:(区别)32bit BARs : 地址空间最小为16B,最大为2GB;可用于存储器或I/O64bit BARs : 地址空间最小为12

50、8B,最大为8GB;只可用于存储器(3) BAR寄存器通用选项复选框(根据BAR使用情况来选择是否需要用05BAR)类型:与所选的核的设备类型有关,当选择PCIE Endpoint Device 时,只可用memory。当选择Legacy PCIE Endpoint Device或者ROOT PORT of PCIE Root Complex设备类型时,BAR类型可选为memory和I/O类型。大小 : 大小范围由PCIR设备类型和BAR类型决定。(避免小于4Kb的存储器空间,在所有涉及中都应避免使用I/O空间)PCIE设备BAR类型BAR大小范围PCIE Endpoint32bit存储器12

51、8B2GB64bit存储器128B8ExabutesLegacy PCIE Endpoint32bit存储器16B2GB64bit存储器16B8ExabytesI/O16B2GB预读取:标示存储器空间具有可预取能力值 :根据当前BAR所选选项给定BAR值4.4 配置寄存器设置可配置设备能力寄存器、设备能力2寄存器、BlockRAM。(1) Capabilities Register Capabilities Verision :指示PCI-SIG定义的PCIE功能结构版本号,不能修改Device Port/Type :指示PCIE逻辑器件类型(已选).Slot Implemented : 指示

52、与PCIE链路相关的端口与插槽连接,仅在RC的root端或PCIE Switch的下游端口上有效。Capabilities Register :显示传送到Xilinx PCIE核的capablities register寄存器的值,不可编辑。(2) Device Capabilities RegisterMax Payload Size :指示期间可支持的最大TLP有效载荷。Extened Tag Field : 指示支持请求的最大Tag数目,选择的时候表示支持8bit Tag,否则表示支持5bit Tag。Acceptable L0是Latency : 指示从L0s状态想L0状态过渡时End

53、point可承受的总延迟。Acceptable L1s Latency :指示从L1状态向L0状态过渡时Endpoint可承受的延迟。Device Capabilities Register :显示传送到核的Device Capabilities Register寄存器值,不可修改。(3) Device Capabilities 2Disable Completion Timeout :支持完成包超时机制。Completion Timeout :设备功能支持可选的完成包超时机制。Device Capabilities 2 Register :显示Device Capabilities 2 Re

54、gister寄存器的值,不可编辑(4) BRAM Configuration Opitions Buffering Optimized for Bus Mastering Applications :此选项引起设备对Bus Mastering 应用进行优化。Finite Completions :如果选择该选项,则设备需要发布给链路合作伙伴接收缓存中完成信用的数量。Performance Level:选择性能级别,决定了接收缓存和发送缓存的大小。(1) link Capabilities Registersupported link speeds :指示给定PCIE链路的链路速度maximum

55、 link width :此值设置为在第一个GUI屏幕中指定的初始通道宽度,不可修改ASPM optionality :DLL link Active Reporting Capability : 指示可选的data link control and anagement state machine 的激活状态link capabilities register :显示传送到核的寄存器值(2)link control registerHardware Autonomous Speed Disable :若选择该选项,则硬件除非因为链路协商时改变链路速率,否则将无法改变链路速率。Read Completion Boundary :对Root Port 给出度完成边界。Target Link Speed :用

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论