用于 PCI Express* 的 Intel® FPGA R-tile Avalon® Streaming IP用户指南

ID 683501
日期 3/28/2022
Public

本文档可提供新的版本。客户应 单击此处 前往查看最新版本。

文档目录

3.2.2.4. VirtIO PCI配置访问接口

要访问VirtIO器件区域,pci_cfg_data将会向偏移cap.offset处的给定cap.bar (0x0 – 0x5)提供大小为cap.length(1、2或者4字节)的窗口(cap.length的倍数)。用户应用逻辑的详细接口映射如下表所示。

对于VirtIO器件,在检测到驱动程序对pci_cfg_data的写访问后,用户应用端的VirtIO器件必须适用从pci_cfg_data来的第一个cap.length字节在cap.bar选择的BAR中cap.offset位置执行写访问。此外,在检测到驱动程序对pci_cfg_data的读访问后,用户应用端的VirtIO器件必须在cap.bar选择的BAR中cap.offset位置执行长度为cap.length的读访问,并将第一个cap.length字节存储在pci_cfg_data中。

表 16.  VirtIO PCI配置访问接口
名称 方向 描述 时钟域
pX_virtio_pcicfg_vfaccess_o其中X = 0, 1 O

指示驱动程序访问的是VF。

virtio_pcicfg_vfnum_o的值识别对应的Virtual Function。

slow_clk
pX_virtio_pcicfg_vfnum_o[VFNUM_WIDTH-1:0]其中X = 0, 1 O

指示与当前Physical Function相关联的Virtual Function的对应编号,该Physical Function是驱动程序的读写访问对象。

virtio_pcicfg_vfaccess_o,和驱动程序到pci_cfg_data的写访问权限,或者驱动程序到pci_cfg_data的读访问权限进行验证。

slow_clk
pX_virtio_pcicfg_pfnum_o[PFNUM_WIDTH-1:0]其中X = 0, 1 O

指示相应的Physical Function编号,该Physical Function是驱动程序的写或读访问对象。

由驱动程序到pci_cfg_data的写访问,或者驱动程序到pci_cfg_data的读访问来验证。

slow_clk
pX_virtio_pcicfg_bar_o[7:0]其中X = 0, 1 O

指示BAR保持PCI configuration access structure。驱动程序通过写入cap.bar来设置要访问的BAR。值0x0到0x5指定一个BAR,而该BAR属于PCI Configuration Space中位于10h开始处的功能。 该BAR可以是32-bit或64-bit。

由驱动程序到pci_cfg_data的写访问,或者驱动程序到pci_cfg_data的读访问来验证。

使用从virtio_pcicfg_p/vfnum_o来的值识别对应的PF或VF。

slow_clk
pX_virtio_pcicfg_length_o[31:0]其中X = 0, 1 O

指示结构的长度。该长度可能包括padding(填充),或驱动程序未使用的字段,或者未来的扩展。该驱动程序将1、2或4写入cap.length来设置访问的大小。

由驱动程序到pci_cfg_data的写访问,或者驱动程序到pci_cfg_data的读访问来验证。

使用从virtio_pcicfg_p/vfnum_o来的值识别对应的PF或VF。

slow_clk
pX_virtio_pcicfg_baroffset_o[31:0]其中X = 0, 1 O

指示该结构相对于BAR相关的基地址的开始位置。该驱动程序通过写入cap.offset来设置BAR内的偏移。

由驱动程序到pci_cfg_data的写访问,或者驱动程序到pci_cfg_data的读访问来验证。

使用从virtio_pcicfg_p/vfnum_o来的值识别对应的PF或VF。

slow_clk
pX_virtio_pcicfg_cfgdata_o[31:0]其中X = 0, 1 O

指示BAR访问的数据。pci_cfg_data将在偏移cap.offset处提供一个cap.length大小的窗口到给定cap.bar中。

由驱动程序到pci_cfg_data的写访问,或者驱动程序到pci_cfg_data的读访问来验证。

使用从virtio_pcicfg_p/vfnum_o来的值识别对应的PF或VF。

slow_clk
pX_virtio_pcicfg_cfgwr_o其中X = 0, 1 O

指示驱动程序对pci_cfg_data的写访问。

使用从virtio_pcicfg_p/vfnum_o来的值识别对应的PF或VF。

slow_clk
pX_virtio_pcicfg_cfgrd_o其中X = 0, 1 O

指示驱动程序对pci_cfg_data的读访问。

使用从virtio_pcicfg_p/vfnum_o来的值识别对应的PF或VF。

slow_clk
pX_virtio_pcicfg_appvfnum_i[VFNUM_WIDTH-1:0]其中X = 0, 1 I

指示与当前Physical Function相关联的Virtual Function的对应编号,当前Physical Function使用的是application config数据存储器。

virtio_pcicfg_rdack_i验证。

slow_clk
pX_virtio_pcicfg_apppfnum_i[PFNUM_WIDTH-1:0]其中X = 0, 1 I

指示application config数据存储器存储的对应Physical Function编号。

virtio_pcicfg_rdack_i验证。

slow_clk
pX_virtio_pcicfg_rdack_i其中X = 0, 1 I

指示应用程序读访问数据确认储存pci_cfg_data中的config数据。通常合理的确认延迟不超过10个周期。

使用从virtio_pcicfg_appvfnum_i来的值识别对应的Virtual Function。

slow_clk
pX_virtio_pcicfg_rdbe_i[3:0]其中X = 0, 1 I

指示virtio_pcicfg_data_i内应用程序已使能的字节。

virtio_pcicfg_rdack_i验证。

使用从virtio_pcicfg_appvfnum_i来的值识别对应的Virtual Function。

对于Hard IP的当前实现,这些信号被绑定到高电平。

slow_clk
pX_virtio_pcicfg_data_i[31:0]其中X = 0, 1 I

指示将要存储在PCI Configuration Access数据寄存器中的应用程序数据。

virtio_pcicfg_rdack_ivirtio_pcicfg_rdbe_i来验证。

使用从virtio_pcicfg_appvfnum_i来的值识别对应的Virtual Function。

slow_clk