仅对英特尔可见 — GUID: brr1548808519857
Ixiasoft
10.5.1. ebfm_barwr规程
10.5.2. ebfm_barwr_imm处理过程
10.5.3. ebfm_barrd_wait处理过程
10.5.4. ebfm_barrd_nowt处理过程
10.5.5. ebfm_cfgwr_imm_wait处理过程
10.5.6. ebfm_cfgwr_imm_nowt处理过程
10.5.7. ebfm_cfgrd_wait处理过程
10.5.8. ebfm_cfgrd_nowt处理过程
10.5.9. BFM配置处理过程
10.5.10. BFM共享存储器访问处理过程
10.5.11. BFM日志和消息处理过程
10.5.12. Verilog HDL格式化函数
仅对英特尔可见 — GUID: brr1548808519857
Ixiasoft
9.4. 使用CRA接口读写BAR0的实例
可使用CRA接口发送TLP请求。TLP Header的Fmt和Type字段提供了用于确定TLP Header剩余部分大小所需的信息,以及数据包是否包含随着该Header而加载的数据。
图 67. TLP头格式

CRA接口使用地址为0x2000和0x2004的寄存器发送TLP,并使用地址为0x2008和0x200C的寄存器查看Completion状态。请参阅表格“根端口TLP数据寄存器”了解有关这些寄存器的更多详细信息。
以下是如何使用Type 0配置TLP从BAR0读取并对其写入的实例。
- 使用CRA接口,通过如下格式的Type 0 配置TLP读取一个未初始化的BAR0:
要使用CRA接口发送TLP,请按如下步骤:
- 将0x0400_0001写入CRA接口地址0x2000。
- 将0x0000_0001写入CRA接口地址0x2004 (数据包开头)。
- 将0x0000_170F写入CRA接口地址0x2000。
- 将0x0000_0000写入CRA接口地址0x2004(继续)。
- 将0x0100_0010写入CRA接口地址0x2000。
- 将0x0000_0000写入CRA接口地址0x2004(继续)。
- 将0x0000_0000写入CRA接口地址0x2000(虚数据 以实现对齐)。
- 将0x0000_0002写入CRA接口地址0x2004(数据包结尾)。
查看使用CRA接口相应的Completion。Completion TLP有4个双字,首3个双字(如下所示),紧接着是未初始化的BAR0值(为0xFFEF0010,如下图)的一个双字。
要使用CRA接口读取Completion,请按照以下步骤:- 保持读取CRA接口地址0x200C直到位[0] = 0x1(显示Completion数据包已到达,您可在下一步骤中接收SOP)。
- 读取CRA接口地址0x2008。本实例中读数据值为0x4A00_0001。
- 读CRA接口地址0x200C。本实例中,位[1:0] = 0,表示下一步骤中读取的值仍然位于数据包当中。
- 读CRA接口地址0x2008。读数据值是0x0100_0004。
- 读CRA接口地址0x200C。本实例中,位[1:0] = 0,表示下一步骤中读取的值仍然位于数据包当中。
- 读CRA接口地址0x2008。读数据值是0x00001700。
- 读CRA接口地址0x200C。本实例中,位[1:0] = 2,表示下一步骤中读取的值是数据包的EOP。
- 读CRA接口地址0x2008。读数据值是BAR0的未初始化值0xFFEF0010。
- 使用CRA接口,通过如下格式的Type 0配置TLP初始化具有0xFFFF_FFFF的BAR0:
要使用CRA接口发送TLP,请按照以下步骤:
- 将0x0400_0001写入CRA接口地址0x2000。
- 将0x0000_0001写入CRA接口地址0x2004(数据包开头)。
- 将0x0000_110F写入CRA接口地址0x2000。
- 将0x0000_0000写入CRA接口地址0x2004(继续)。
- 将0x0100_0010写入CRA接口地址0x2000。
- 将0x0000_0000写入CRA接口地址0x2004(继续)。
- 将0xFFFF_FFFF写入CRA接口地址0x2000。
- 将0x0000_0002写入CRA接口地址0x2004(数据包结尾)。
使用CRA接口查看相应的完成。Completion TLP
有三个双字,显示如下:要使用CRA接口读取Completion, 请按照以下步骤:- 保持读取CRA接口地址0x200C直到位[0] = 0x1(表示Completion数据包已到达,您可在下一个步骤接收SOP)。
- 读CRA接口地址0x2008。读数据值为0x0A00_0000。
- 读CRA接口地址0x200C。本实例中,位[1:0] = 0,显示为下一步骤中读取的值仍然在数据包当中。
- 读CRA接口地址0x2008。读数据值为0x0100_0004。
- 读CRA接口地址0x200C。本实例中,位[1:0] = 0,表示下一步骤中读取的值仍然在数据包当中。
- 读CRA接口地址0x2008。读数据值是0x00001100。
- 读CRA接口地址0x200C。本实例中,位[1:0] = 2,表示下一步骤中读取的值是数据包的EOP。
- 读CRA接口地址0x2008。读数据值是BAR0的大小。
将0xFFFF_FFFF写入其中后,可重复步骤1读取BAR0,并重复步骤2配置BAR0地址空间。
使用相同方法配置BAR1,BAR2,BAR3,BAR4和BAR5。