AXI Memory Mapped to PCI Express学习笔记(三)——IP核参数配置

  在配置 AXI Memory Mapped to PCI Express core的过程中,需要根据设计需求调整各种参数,如数据位宽、时钟频率、输入输出接口等。这些参数将直接影响IP核的行为和性能,因此请务必仔细选择和配置。完成配置后,IP核生成,即可将其集成到设计中。

在配置该IP core前,首先从IP Catalog中选择IP,双击所选的IP,或从工具栏或右键菜单中选择“Customize IP”命令,然后,设置各项参数。

一、Basic Parameter settings

在这里插入图片描述
Component Name
输出文件的基本名称是为core生成的,名称必须以字母开头,并且可以由以下字符组成:a到z,0到9,以及“_”。
注:输出文件的名称不能与核心模块的名称相同;例如,“axi_pcie”是一个保留名称。
PCIe Device/Port Type
指出PCIe 的设备类型(Root or Endpoint)。
Reference Clock Frequency
选择提供给refclk输入引脚的参考时钟频率。
Slot Clock Configuration
在Link Status register中通过启用Slot Clock来设置该配置,选择该选项意味着该链路是时钟同步。
Silicon Type
选择Silicon Type。
Additional Transceiver Control and Status Ports
当选择该选项时,启用接收器调试端口。
Enable External GT Channel DRP
外部的GT通道DRP端口被引到core顶层。
Enable External PIPE Interface
当选中该选项时,它将允许外部第三方总线功能模型(BFM)连接到AXI PCIe核心的PIPE接口。请注意,此选项默认是禁用的,只有在Vivado IDE的共享逻辑页面中的“Include Shared Logic (Clocking) in example design”选项被选中时,它才会被启用。

二、 PCIe Link Configuration

在这里插入图片描述
Number of Lanes
可以根据目标设备的通道宽度来选择AXI Memory Mapped to PCI Express core的初始通道宽度。如果选择的初始通道宽度大于目标设备的通道宽度,核心将能够自动调整以适应较小的通道宽度,确保系统的正常通信。
例如,表4-1中列出了8x、4x和1x三种通道宽度,可以根据实际需求选择8x的通道宽度。如果目标设备只支持4x的通道宽度,那么该IP core会自动适应并调整到4x的通道宽度进行通信。
在这里插入图片描述
Link Speed
允许选择设备支持的最大链路速度。表4-2定义了设备所支持的通道宽度和链路速度。可以根据目标设备的性能要求,在该IP中配置适当的最大链路速度。如果设备支持较高的链路速度,但与之连接的PCI Express设备仅支持较低的链路速度,那么该IP core会自动调整以适应这种较低的速度,确保两者之间能够正常通信。
在这里插入图片描述
PCIe Block Location
可以在Xilinx FPGA中选择PCI Express硬件模块,用于实现PCI Express协议的功能。

三、PCIe ID Settings

在这里插入图片描述
Vendor ID
标识设备或应用程序的制造商。默认值10EEh是Xilinx的供应商ID。在此处输入您的供应商识别号码。FFFFh是保留值。
Device ID
应用程序的唯一标识符;默认值取决于所选的配置,格式为70h。这个字段可以是任何值;根据应用程序的需要更改此值。
注:由于DeviceID参数是根据设备系列(在7系列IP的情况下为7)、端点(EP)或根端口(RP)模式、链路宽度和链路速度来评估的,因此当这些参数中的任何一个发生变化时,它都会发生变化。建议首先更改链路宽度、链路速度和设备端口类型,然后再更改DeviceID的值。
Revision ID
指示设备或应用程序的修订版本;是DeviceID的扩展。默认值为00h;请输入适合应用程序的值。
Subsystem Vendor ID
进一步限定设备或应用程序的制造商。在此处输入Subsystem Vendor ID;默认值为10EEh。通常,此值与Vendor ID相同。将该值设置为0000h可能会导致合规性测试问题。
Subsystem ID
进一步限定设备或应用程序的制造商。此值通常与DeviceID相同;默认值取决于所选的通道宽度和链路速度。将该值设置为0000h可能会导致合规性测试问题。
Class Code
用于标识设备的一般功能,并被分为三个字节大小的字段。Vivado IDE可以通过选中“Enter Class Code Manually”复选框来手动输入24位值(默认),或者使用Class Code lookup assistant来填充该字段。取消选中复选框可启用Class Code lookup assistant。
• Base Class:大致标识设备执行的功能类型。
• Sub-Class:更具体地标识设备功能。
• Interface:如果有的话,定义特定的寄存器级编程接口,允许与设备无关的软件与设备进行交互。
使用Class Code Look-up Assistant可以简化配置过程,确保为设备选择了正确的类代码值。通过选择设备的一般功能,系统会自动填充Base Class、Sub-Class和Interface,可以直接将这些值输入到设备的配置中。

四、PCIe Base Address Registers

PCIe基址寄存器(Base Address Registers,BARs)(如图4-4所示)用于设置端点(Endpoint)配置的基址寄存器空间。每个BAR(从0到5)都配置了物理功能的BAR Aperture Size和控制属性,如表4-3所述。
在这里插入图片描述
BARs在PCI(Peripheral Component Interconnect)和PCIe(PCI Express)设备中扮演着重要角色。它们是一组寄存器,用于描述设备所需的资源,如内存地址空间和I/O端口空间。每个BAR寄存器的大小可以是32位或64位,具体取决于PCI或PCIe的版本和配置。BARs的值可以通过PCIe配置空间的寄存器进行访问和配置。
在这里插入图片描述
在Endpoint配置中,AXI Memory Mapped to PCI Express core支持最多三个32位BAR或三个64位BAR。而在Root Port配置中,该IP core支持一个32位BAR或一个64位BAR。
所有BAR寄存器都具备以下选项:
勾选框
点击勾选框以启用BAR。取消勾选以禁用BAR。
类型
BAR仅可作为Memory apertures。Memory BARs可以是64位或32位。对于64位,启用Prefetch(预取);对于32位,则不启用。当BAR被设置为64位时,它会使用下一个BAR作为扩展地址空间,从而使其变得不可访问。
大小
可用的Size范围取决于PCIe设备/端口类型以及所选的BAR类型。

根据当前选择为BAR分配的值。
PCIe到AXI转换
此文本字段应设置为适当的值,以执行从PCI Express基址到所需AXI基址的转换。

五、 PCIe Miscellaneous

在这里插入图片描述
Interrupt Pin
将要使用Legacy中断,即传统中断。
MSI Vectors Requested
该IP core需要的MSI向量个数。
Completion Timeout Configuration
由于未完成的内存读取请求而导致的传入完成的超时值。这有助于确保在设备读取内存时,如果操作未能及时完成,系统可以做出相应的响应。
Dynamic Slave Bridge Address Translation
允许通过AXI4-Lite接口动态更改AXI Memory Mapped to PCI Express桥接逻辑内的地址转换向量。这提供了更大的灵活性和配置选项,以适应不同的系统需求和应用场景。

六、AXI Base Address Registers

AXI基址寄存器(BARs)设置如图4-6所示,用于设置AXI基址寄存器以及AXI内存空间与PCI Express内存空间之间的转换关系。每个BAR都包含基址、高地址和转换字段,这些字段可以通过Vivado IDE进行配置。
在这里插入图片描述
Number of BARs
启用的AXI BAR的数量。BARs是顺序启用的。
64-bit Enable
允许32位的AXI地址空间映射到64位的PCIe地址空间。
Aperture Base Address
为AXI BAR的地址空间设置基地址。
Aperture High Address
为AXI BAR的地址空间设置地址上限阈值。
AXI to PCIe Translation
配置AXI和PCI Express地址空间之间的转换映射。

七、AXI System

在这里插入图片描述
AXI(Advanced Extensible Interface)是一种高性能、低延迟的接口协议,广泛应用于高性能处理器和存储器之间的连接。AXI System提供了一个直观的配置界面,用于定义AXI接口的寻址方式和互联参数。
BASEADDR
设置设备的AXI基地址。
HIGHADDR
设置设备的地址上限阈值
S AXI ID WIDTH
设置AXI从接口的ID宽度。
S AXI ADDR WIDTH
AXI支持32位寻址,因此这个值要设置成32.
S AXI DATA WIDTH
AXI从接口的数据总线宽度的设置。AXI从接口的数据总线宽度可以设置为64位或128位,具体取决于你的需求。对于X4G2和X8G1这两种特定的配置或核心,仅支持128位的数据总线宽度,以实现最大的性能。
M AXI ADDR WIDTH
AXI支持32位寻址,因此这个值要设置成32.
M AXI DATA WIDTH
AXI主接口的数据总线宽度的设置。AXI主接口的数据总线宽度可以设置为64位或128位,具体取决于你的需求。对于X4G2和X8G1这两种特定的配置或核心,仅支持128位的数据总线宽度,以实现最大的性能。
注:在AXI主接口中,确实不支持多个ID。这意味着与ID相关的所有信号在AXI主接口上都是不可用的。
S AXI SUPPORTS NARROW BURST
配置IP接受窄突发事务。当未启用此功能时,IP会进行相应的优化。
在AXI协议中,突发事务是一种数据传输模式,其中主设备会发送一系列连续的数据请求给从设备。窄突发事务指的是突发长度较短的事务,即主设备在连续请求中传输的数据量较少。

八、Shared Logic

通过选择一个或在多个实例化之间共享公共块此页面上的更多选项。

九、Add. Debug Options

Figure 4-8包含一个选项,用于启用JTAG调试器进行调试。
在这里插入图片描述
该特性为以下方面提供了调试可用性:
1、 集成PCIe调试选项到IP核顶部,用户需要在设计中包含这一选项,
2、 假设将使用外部时钟。
3、LTSSM状态转换,展示了从链路建立开始的所有LTSSM(链路训练与状态机)状态转换。
4、 PHY复位有限状态机(FSM)转换,这展示了PHY复位FSM的转换情况。
5、接收器检测,展示了所有成功完成接收器检测的通道。
以下是操作步骤:
1、打开一个新的Vivado设计套件并连接到开发板。
2、hw_axi_1应该已经存在。
在这里插入图片描述
3、在Vivado Tcl控制台中输入source test_rd.tcl。
4、对于后处理,双击以下脚本:
draw_ltssm.tcl(Windows系统)或 wish draw_ltssm.tcl
draw_reset.tcl(Windows系统)或 wish draw_reset.tcl
draw_rxdet.tcl(Windows系统)或 wish draw_rxdet.tcl
这些脚本用于生成图形化表示的LTSSM状态转换、PHY复位状态转换和接收器检测状态。

  • 19
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的 AXI Quad SPI IP核配置MICRON芯片的初始化程序,仅供参考: ```c #include "xparameters.h" #include "xspi.h" #include "micron_chip.h" #define SPI_DEVICE_ID XPAR_SPI_0_DEVICE_ID XSpi SpiInstance; /* The instance of the SPI device */ int main() { int Status; u8 WriteBuffer[256]; u8 ReadBuffer[256]; // 初始化 AXI Quad SPI IP核 XSpi_Config *ConfigPtr; ConfigPtr = XSpi_LookupConfig(SPI_DEVICE_ID); if (ConfigPtr == NULL) { return XST_FAILURE; } Status = XSpi_CfgInitialize(&SpiInstance, ConfigPtr, ConfigPtr->BaseAddress); if (Status != XST_SUCCESS) { return XST_FAILURE; } XSpi_SetOptions(&SpiInstance, XSP_MASTER_OPTION | XSP_CLK_ACTIVE_LOW_OPTION | XSP_CLK_PHASE_1_OPTION); XSpi_SetSlaveSelect(&SpiInstance, 0x01); // 配置MICRON芯片 micron_chip_init(); // 初始化MICRON芯片 // 写入命令 WriteBuffer[0] = 0x06; // 写入寄存器命令 Status = XSpi_Transfer(&SpiInstance, WriteBuffer, NULL, 1); if (Status != XST_SUCCESS) { return XST_FAILURE; } // 写入配置数据 WriteBuffer[0] = 0x01; // 工作模式 WriteBuffer[1] = 0x03; // 时序参数 WriteBuffer[2] = 0x00; // 地址 Status = XSpi_Transfer(&SpiInstance, WriteBuffer, NULL, 3); if (Status != XST_SUCCESS) { return XST_FAILURE; } // 检验配置 WriteBuffer[0] = 0x05; // 读取寄存器命令 Status = XSpi_Transfer(&SpiInstance, WriteBuffer, ReadBuffer, 1); if (Status != XST_SUCCESS) { return XST_FAILURE; } if (ReadBuffer[0] != 0x01) { return XST_FAILURE; } return XST_SUCCESS; } ``` 这段代码中,我们首先使用 XSpi_LookupConfig 函数获取 AXI Quad SPI IP核配置信息,然后调用 XSpi_CfgInitialize 函数初始化 SPI 设备。接着使用 XSpi_SetOptions 函数设置 SPI 设备的传输参数,XSpi_SetSlaveSelect 函数设置 SPI 设备的从设备地址。 在初始化 SPI 设备之后,我们调用 micron_chip_init 函数初始化 MICRON 芯片。然后向 MICRON 芯片发送写入命令,再写入配置数据,最后读取 MICRON 芯片的寄存器,检验配置是否生效。如果配置成功,返回 XST_SUCCESS;否则返回 XST_FAILURE。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值