1. 关于P-tile Avalon® Intel® FPGA IPs for PCI Express
2. IP架构和功能描述
3. 高级特性
4. 接口
5. 参数
6. 测试台
7. 故障排除/调试(Troubleshooting/Debugging)
8. P-tile Avalon® Streaming Intel FPGA IP for PCI Express* 用户指南归档
9. P-Tile Avalon® Streaming Intel® FPGA IP for PCI Express* 用户指南文档修订历史
A. 配置空间寄存器
B. Root Port枚举
C. Endpoint模式下地址转换服务(ATS)的实现
D. 在TLP Bypass模式下转发到用户应用程序的数据包
E. 使用Avery BFM进行Intel P-Tile PCI Express Gen4 x16仿真
F. 对独立热复位的分叉端点支持
G. P-Tile Avalon Streaming Intel FPGA IP for PCI Express的裕度掩模
3.2.2.5.1. VirtIO通用配置功能寄存器(地址:0x012)
3.2.2.5.2. VirtIO通用配置BAR指示器寄存器(地址:0x013)
3.2.2.5.3. VirtIO通用配置BAR偏移寄存器(地址:0x014)
3.2.2.5.4. VirtIO通用配置结构长度寄存器(地址:0x015)
3.2.2.5.5. VirtIO通知功能寄存器(地址:0x016)
3.2.2.5.6. VirtIO通知BAR指示器寄存器(地址:0x017)
3.2.2.5.7. VirtIO通知BAR偏移寄存器(地址:0x018)
3.2.2.5.8. VirtIO通知结构长度寄存器(地址:0x019)
3.2.2.5.9. VirtIO通知Notify Off乘数寄存器(地址:0x01A)
3.2.2.5.10. VirtIO ISR状态功能寄存器(地址:0x02F)
3.2.2.5.11. VirtIO ISR状态BAR指示器寄存器(地址:0x030)
3.2.2.5.12. VirtIO ISR状态BAR偏移寄存器(地址:0x031)
3.2.2.5.13. VirtIO ISR状态结构长度寄存器(地址:0x032)
3.2.2.5.14. VirtIO特定于器件的功能寄存器(地址:0x033)
3.2.2.5.15. VirtIO特定于器件的BAR指示器寄存器(地址:0x034)
3.2.2.5.16. VirtIO特定于器件的BAR偏移寄存器(地址:0x035)
3.2.2.5.17. VirtIO特定于器件的结构长度寄存器(地址:0x036)
3.2.2.5.18. VirtIO PCI配置访问功能寄存器(地址:0x037)
3.2.2.5.19. VirtIO PCI配置访问BAR指示器寄存器(地址:0x038)
3.2.2.5.20. VirtIO PCI配置访问BAR偏移寄存器(地址:0x039)
3.2.2.5.21. VirtIO PCI配置访问结构长度寄存器(地址:0x03A)
3.2.2.5.22. VirtIO PCI配置访问数据寄存器(地址:0x03B)
5.2.3.1. 器件功能(Device Capabilities)
5.2.3.2. VirtIO参数
5.2.3.3. 链路功能(Link Capabilities)
5.2.3.4. 传统中断管脚寄存器(Legacy Interrupt Pin Register)
5.2.3.5. MSI功能(MSI Capabilities)
5.2.3.6. MSI-X功能(MSI-X Capabilities)
5.2.3.7. 插槽功能(Slot Capabilities)
5.2.3.8. 延迟容忍报告(Latency Tolerance Reporting,LTR)
5.2.3.9. 进程地址空间ID (Process Address Space ID,PASID)
5.2.3.10. 器件序列号功能(Device Serial Number Capability)
5.2.3.11. 页面请求服务(Page Request Service,PRS)
5.2.3.12. 访问控制服务(Access Control Service,ACS)功能
5.2.3.13. 电源管理(Power Management)
5.2.3.14. 供应商特定扩展功能(Vendor Specific Extended Capability,VSEC)寄存器
5.2.3.15. TLP处理提示(TLP Processing Hints,TPH)
5.2.3.16. 地址转换服务(Address Translation Service,ATS)功能
6.3.5.1. ebfm_barwr程序
6.3.5.2. ebfm_barwr_imm程序
6.3.5.3. ebfm_barrd_wait程序
6.3.5.4. ebfm_barrd_nowt程序
6.3.5.5. ebfm_cfgwr_imm_wait程序
6.3.5.6. ebfm_cfgwr_imm_nowt程序
6.3.5.7. ebfm_cfgrd_wait程序
6.3.5.8. ebfm_cfgrd_nowt程序
6.3.5.9. BFM配置程序
6.3.5.10. BFM共享存储器访问程序
6.3.5.11. BFM日志和消息程序
6.3.5.12. Verilog HDL格式化函数
A.3.1. 英特尔定义的VSEC功能标头(偏移00h)
A.3.2. 英特尔定义的供应商特定标头(偏移04h)
A.3.3. 英特尔标记(Intel Marker (Offset 08h))
A.3.4. JTAG Silicon ID (Offset 0x0C - 0x18)
A.3.5. 用户可配置器件和板级ID(偏移0x1C - 0x1D)
A.3.6. 通用控制和状态寄存器(偏移0x30)
A.3.7. 不可纠正的内部错误状态寄存器(偏移0x34)
A.3.8. 不可纠正的内部错误掩模寄存器(偏移0x38)
A.3.9. 可纠正的内部错误状态寄存器(偏移0x3C)
A.3.10. 可纠正的内部错误屏蔽寄存器(偏移0x40)
7.1.1.3. 其他调试工具
使用P-Tile Avalon® -ST IP for PCI Express上的Hard IP重配置接口和PHY重配置接口来访问其他寄存器(例如:接收器检测,通道反转等)。
图 70. 用于调试的寄存器访问
使用Hard IP重配置接口
请参考Hard IP重配置接口部分来了解关于此接口和相关地址映射的详细信息。
下表列出了PHY状态寄存器的地址偏移和比特设置。请使用Hard IP重配置接口访问这些只读寄存器。
| 偏移(Offset) | 比特位置 | 寄存器 | |
|---|---|---|---|
| x16 (Port 0) | x8 (Port 1) | ||
| 0x0003E8 | 0x0003B0 | [3:0] | Lane select (0x0: Lane 0, 0x1: Lane 1, …, 0xF: Lane15) |
| 0x0003EA | 0x0003B2 | [0] | RX polarity |
| [1] | RX detection | ||
| [2] | RX Valid | ||
| [3] | RX Electrical Idle | ||
| [4] | TX Electrical Idle | ||
| 0x0003EC | 0x0003B4 | [7] | Framing error |
| 0x0003ED | 0x0003B5 | [7] | Lane reversal |
请按照以下步骤使用Hard IP重配置接口访问PHY状态的Hard IP重配置接口寄存器映射中的寄存器:
- 使用IP Parameter Editor使能Hard IP重配置接口(User Avalon® -MM interface)。
- 使用Hard IP重配置接口信号对地址hip_reconfig_addr_i[20:0]使用hip_reconfig_writedata_i[7:0]上的通道编号的写数据来执行read-modify-write操作,从而设置您想要读取状态的通道编号。
- hip_reconfig_write_i = 1’b1
- hip_reconfig_addr_i[20:0] = 0x0003E8
- hip_reconfig_writedata_i[3:0] = <Lane number>,其中 Lane number = 4’h0 for lane 0, 4’h1 for lane 1, 4’h2 for lane 2, …
- 通过使用Hard IP重配置接口信号从地址hip_reconfig_addr_i[20:0]执行一个读操作来读取您想要的寄存器状态。
- hip_reconfig_read_i = 1’b1
- hip_reconfig_addr_i[20:0] = <offset>
Offset = 请参考PHY状态的Hard IP重配置接口寄存器映射来了解偏移映射(offset mapping)。
- hip_reconfig_readdata_o[7:0] = 请参考PHY状态的Hard IP重配置接口寄存器映射来了解比特位置映射。
示例1:使用寄存器读取Lane0的RX检测状态
- 使用IP Parameter Editor使能Hard IP重配置接口
- 使用Hard IP重配置接口信号对地址0x0003E8执行read-modify-write操作,将通道编号(lane number)设置为0。
- hip_reconfig_write_i = 1’b1
- hip_reconfig_addr_i[20:0] = 0x0003E8
- hip_reconfig_writedata_i[3:0] = 4'h0
- 通过使用Hard IP重配置接口信号从地址0x0003E9[1]执行读操作,以读取RX检测寄存器的状态。
- hip_reconfig_read_i = 1’b1
- hip_reconfig_addr_i[20:0] = 0x0003EA
- hip_reconfig_readdata_o[1] = 1'b1 (检测到远端接收器)
使用Hard IP重配置接口来使能和读取ECRC和LCRC错误计数
| 偏移(Offset) | 比特位置 | 寄存器 | |
|---|---|---|---|
| x16 (Port 0) | x8 (Port 1) | ||
| 0x000119 | 0x000119 | [0] | 使能CRC检查 |
| 0x000340 | 0x000308 | [1:0] | 事件计数器清零。 设置为2'b01,对寄存器0x00343和0x00342中定义的特定事件错误计数器清零。 设置为2'b11,对所有事件的错误计数器清零。 |
| [4:2] | 事件计数器使能。 设置为3'b111。 |
||
| 0x000341 | 0x000309 | [7:0] | 事件计数器通道选择。 设置为0x00。 |
| 0x000342 | 0x00030A | [7:0] | 事件编号。 对于LCRC错误计数,设置为0x01。 对于ECRC错误计数,设置为0x02。 |
| 0x000343 | 0x00030B | [7:0] | 组编号。 对于LCRC错误计数,设置为0x02。 对于ECRC错误计数,设置为0x03。 |
| 0x000344 | 0x00030C | [7:0] | 错误计数器数据比特[7:0]。 |
| 0x000345 | 0x00030D | [7:0] | 错误计数器数据比特[15:8]。 |
| 0x000346 | 0x00030E | [7:0] | 错误计数器数据比特[23:16]。 |
| 0x000347 | 0x00030F | [7:0] | 错误计数器数据比特[31:24]。 |
请按照以下步骤使用Hard IP重配置接口访问上表中的寄存器:
- 使用IP Parameter Editor使能Hard IP重配置接口(User Avalon-MM接口)。
- 通过使用p#_hip_reconfig_writedata[7:0]上的写数据对地址p#_hip_reconfig_address[20:0]执行read-modify-write操作来使能CRC检查。
- 通过使用p#_hip_reconfig_writedata[7:0]上的写数据对地址p#_hip_reconfig_address[20:0]执行read-modify-write操作来设置组编号。
- 通过使用p#_hip_reconfig_writedata[7:0]上的写数据对地址p#_hip_reconfig_address[20:0]执行read-modify-write操作来设置事件编号。
- 通过使用p#_hip_reconfig_writedata[7:0]上的写数据对地址p#_hip_reconfig_address[20:0]执行read-modify-write操作来设置事件计数器通道选择。
- 通过使用p#_hip_reconfig_writedata[7:0]上的写数据对地址p#_hip_reconfig_address[20:0]执行read-modify-write操作来设置事件计数器使能。
- 通过从地址p#_hip_reconfig_address[20:0]的读取操作来读取错误计数数据。
示例: 若要使用寄存器读取x16 Port0的LCRC错误计数:
- 使用IP Parameter Editor使能Hard IP重配置接口(User Avalon-MM接口)。
- 对地址0x000119执行read-modify-write操作以使能CRC检查。
- p0_hip_reconfig_write = 1’b1
- p0_hip_reconfig_address[20:0] = 0x000119
- p0_hip_reconfig_writedata[7:0] = 8'h01
- 对地址0x000343执行read-modify-write操作以设置Group编号。
- p0_hip_reconfig_write = 1’b1
- p0_hip_reconfig_address[20:0] = 0x000343
- p0_hip_reconfig_writedata[7:0] = 8'h02
- 对地址0x000342执行read-modify-write操作以设置Event编号。
- p0_hip_reconfig_write = 1’b1
- p0_hip_reconfig_address[20:0] = 0x000342
- p0_hip_reconfig_writedata[7:0] = 8'h01
- 对地址0x000341执行read-modify-write操作以设置Event计数器通道选择。
- p0_hip_reconfig_write = 1’b1
- p0_hip_reconfig_address[20:0] = 0x000341
- p0_hip_reconfig_writedata[7:0] = 8'h00
- 对地址0x000340执行read-modify-write操作以使能事件计数器。
- p0_hip_reconfig_write = 1’b1
- p0_hip_reconfig_address[20:0] = 0x000340
- p0_hip_reconfig_writedata[7:0] = 8'h1C
- 通过从寄存器0x000344、0x000345、0x000346和0x000347执行读操作来读取错误计数器数据。
使用PHY重配置接口
请参考PHY重配置接口部分来了解关于如何使用此接口的详细信息。