没有合适的资源?快使用搜索试试~ 我知道了~
xilinx PCIE2.0接口 EP端设计总结.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 4 下载量 146 浏览量
2022-10-30
21:18:10
上传
评论
收藏 3.22MB PDF 举报
温馨提示
试读
47页
。
资源推荐
资源详情
资源评论
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 设备之间的连接,实现两种不同协议之间的相互转换。
PCIE 核在多种模式中使用包来互换信息。包是在事务和数据链层中形成来从发送端到接
收端的信息传递。必要的信息被添加到传输的包中。在接收结束,接收单元的每一层处理接收
到的包,提取相关的信息并发送包到下一层。接收到的包是从他们物理层发送到数据链层和事
务层的。
PCIe 规范对于设备的设计采用分层的结构,有事务层、数据链路层和物理层组成,各层
有都分为发送和接收两功能块。
PCIe 的事务层是协议的最上层,其主要功能是根据应用层提供的信息生成相应的请求包
传递给数据链路层,并且处理由数据链路层发来的包,将其转换成应用层能识别的信息,协助
数据链路层完成信用管理,实现协议规定的配置事务,IO 事务,存储事务和消息事务。
在设备的发送部分,首先根据来自设备核和应用程序的信息,在事务层形成事务层包
(TLP),储存在发送缓冲器里,等待推向下层;在数据链路层,在TLP 包上再串接一些附加
信息,这些信息是对方接收 TLP 包时进行错误检查要用到的;在物理层,对 TLP 包进行编码,
占 用 链 路 中 的 可 用 通 道 , 从 查 封 发 送 器 发 送 出 去 。
设备核A
设备核A
HDR Data Dig
事务层
事务层
HDR Data Dig
Seq HDR Data Dig LCRC
数据链路层
数据链路层
Seq HDR Data Dig LCRC
STP Seq HDR Data Dig LCRC End
物理层
Rx Tx Rx
物理层
Tx
STP Seq HDR Data Dig LCRC End
事务层包(TLP),数据链路层包(DLLP),物理层(PLP)产生于各自所在层,最后通过
电或光等介质和另一方通讯。这其中数据链路层包(DLLP),物理层(PLP)的包平常不需要
关心,在 IP 核中封装好了。在 FPGA 上做 PCIe 的功能,变成完成事务层包(TLP)的处理。
待移动数据的 PCI-Express 协议的请求均由主 CPU 发出。
当 CPU 向存储器映射输入/输出(MMIO)地址存储器发出命令时,数据向下游移动。
Root Complex 通常会生成一个具有对应 MMIO 位置地址、字节使能和寄存器内容的
存储器写 TLP。Endpoint 接收存储器写 TLP 更新响应的本地寄存器后事务即终止。
当 CPU 发出从 MMIO 地址加载寄存器的命令时,数据向上游移动。Root Complex 通
常会生成一个具有响应 MMIO 位置地址和字节使能的存储器读 TLP。Endpoint 在收到
存储器读 TLP 后会生成带数据完成型 TLP。完成包传送到 Root Complex,有效载荷
加载至目标寄存器后事务即完成。
2. PICE 核接口
2.1 系统接口
表 1 系统信号
信号名
Sys_rst_n
Sys_clk
方向
Input
Output
定义
异步信号。sys_rst_n 在上电和热复位操作期间,必须
被断言至少 1500ns
参 考 时 钟 : 可 选 频 率 为 100MHZ,125MHZ 或 者
500MHZ
2.2 PCIE 接口
PCIE 接口由不同的发送(对)和接收(对)所构成的多线程组成。一个PCIE 线由一对发
送差分信号(pci_exp_txp, pci_exp_txn)和一对接收差分信号(pci_exp_rxp, pci_exp_rxn)组成。
单线的只支持 0 线,双线只支持 01 线,四线支持 0-3 线,八线支持 0-7 线。下表 2 定义了 4
线核的发送和接收信号。(只给了一线的信号)
表 2 PCIE 接收和发送信号
线
0
0
0
0
1
1
信号名字
pci_exp_txp0
pci_exp_txn0
pci_exp_rxp0
pci_exp_rxn0
pci_exp_txp1
pci_exp_txn1
方向
Output
Output
Input
Input
Output
Output
定义
PCIE 发送正:串行差分输出
PCIE 发送负: 串行差分输出
PCIE 接收正:串行差分输入
PCIE 接收负:串行差分输入
PCIE 发送正:串行差分输出
PCIE 发送负: 串行差分输出
1
1
2
2
2
2
3
3
3
3
pci_exp_rxp1
pci_exp_rxn1
pci_exp_txp2
pci_exp_txn2
pci_exp_rxp2
pci_exp_rxn2
pci_exp_txp3
pci_exp_txn3
pci_exp_rxp3
pci_exp_rxn3
Input
Input
Output
Output
Input
Input
Output
Output
Input
Input
PCIE 接收正:串行差分输入
PCIE 接收负:串行差分输入
PCIE 发送正:串行差分输出
PCIE 发送负: 串行差分输出
PCIE 接收正:串行差分输入
PCIE 接收负:串行差分输入
PCIE 发送正:串行差分输出
PCIE 发送负: 串行差分输出
PCIE 接收正:串行差分输入
PCIE 接收负:串行差分输入
2.3 事务接口
事务接口为用户设计提供了一个机制来产生和消耗 TLP。
2.4 发送接口
信号名
S_axis_tx_tlast 1
位宽 方向
O
描述
帧发送结尾:标记包的结尾,只有在S_axis_tx_tvalid 申明
时才有效。
发送的数据
传输数据选通,决定所给定拍子数据有效字节。数据在
s_axis_tx_tvalid 和 s_axis_tx_tready 都有效时才有效。
此信号的最低位决定数据低字节的有效性。
当 last 信号没有断言时,只有 0xFF 有效。
当 last 信号已断言时,只有 0x0F 和 0xFF 是有效的。
S_axis_tx_tdata
S_axis_tkeep
64
8
O
O
S_axis_tx_tvalid 1 O 数据有效信号,拉高表明发哦少年宫数据已准备好。
S_axis_tx_tready 1
S_axis_tx_tuser
S_axis_tx_tuser
[3]
[2]
I
O
O
置 1 表明核准备好接收数据。
传输停止。可以在开始传输后的任意时间断言。
传输流。表明一个包在连续时钟周期上被提供并且在链路上
能在确认的包写入核之前开始传输。
此信号标志当前进程中的包是错误的。此信号能在开始到结
束传输的任意时刻被拉高。但是
tx_err_fwd 信号必须在
s_axis_tx_tuser[2]断言时拉低。
端对端循环冗余检查摘要被附加。必须在 TLP 的开始时就被
断言。
发送 buffer 可用:表明核中空闲发送 buffer 的数量。每个
空闲的传输 buffer 能够调节 TLP 来支持最大负载 size。发送
buffer 的最大数量由支持的 MPS 和所选的块 RAM 配置决定。
传输错误。表明核因为长度不匹配或者流传的时候数据在连
续时钟周期上没有提供而丢弃了一个包。
发送配置请求。当核准备好发送一个配置或者其他内部生成
的 TLP 时置 1.
1.同意传输配置。是配置请求的响应。允许核传输一个内部
产生的 TLP。
2.tx_cfg_req 信号子在核生成的包已被服务,在任何请求生
成之前总算解除断言的。因此,用户设计能够根据 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 信号,因为最初的断言已经
被捕捉到。
7.如果不想改变内部生成 TLP 传输的优先次序,保持此信号
为高。
S_axis_tx_tuser [1] O
S_axis_tx_tuser [0] O
Tx_buf_av 6 I
Tx_err_drop 1 I
Tx_cfg_req 1 I
Tx_cfg_gnt 1 O
2.5 接收接口
信号名
m_axis_rx_tlast
m_axis_rx_tdata
m_axis_rx_tkeep
1
64
8
位宽 方向
I
I
I
描述
接收帧结尾:包结尾信号。在 tvalid 断言时才有效。
接收的数据
接收数据选通
决定接收数据的有效字节。
m_axis_rx_tlast 信号没有断言时,只有 0xFF 为有效值
m_axis_rx_tlast 信号断言时,有效值为 0x0F 额 0xFF
m_axis_rx_tvalid
m_axis_rx_tready
m_axis_rx_tuser
1
1
[9:2]
rx_bar_hit[7:0]
I
O
I
接收数据有效。
接收端准备好接收数据。
接收 bar:表明当前接收事务的目标 bar,从包的开头到
m_axis_rx_tlast 都保持断言。
• (rx_bar_hit[0])m_axis_rx_tuser[2]: BAR0
• (rx_bar_hit[1])m_axis_rx_tuser[3]: BAR1
• (rx_bar_hit[2])m_axis_rx_tuser[4]: BAR2
• (rx_bar_hit[3])m_axis_rx_tuser[5]: BAR3
• (rx_bar_hit[4])m_axis_rx_tuser[6]: BAR4
• (rx_bar_hit[5])m_axis_rx_tuser[7]: BAR5
• (rx_bar_hit[6])m_axis_rx_tuser[8]: Expansion ROM Address
• m_axis_rx_tuser[8:4] 不适用于 Root端口配置
• m_axis_rx_tuser[9] is reserved for future use.
m_axis_rx_tuser
m_axis_rx_tuser
[1]
[0]
I
I
接收有错误
表明当前包存在 EREC 无措。只有在包的帧结尾才会断言
剩余46页未读,继续阅读
资源评论
- weixin_387162052023-03-11终于找到了超赞的宝藏资源,果断冲冲冲,支持!
- 顾印钞2023-09-15资源简直太好了,完美解决了当下遇到的难题,这样的资源很难不支持~
- lzgjxh2023-11-21资源有很好的参考价值,总算找到了自己需要的资源啦。
- 2301_769757912023-08-22非常有用的资源,有一定的参考价值,受益匪浅,值得下载。
不吃鸳鸯锅
- 粉丝: 8291
- 资源: 2万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功