本文包含有关Vivado Design Suite中对AXI Memory Mapped to PCI Express core进行仿真的示例设计信息。
一、仿真设计概述
在仿真设计中,事务是从Root Port模型发送到配置为Endpoint的AXI Memory Mapped to PCI Express core,并在AXI块RAM控制器设计中进行处理。
AXI-PCIe块的Endpoint配置的示例仿真设计由几部分组成:
Root Port模型
这是模拟PCIe总线操作的测试平台,它模拟了一个PCIe Root Port的行为,用于与AXI-PCIe块的Endpoint进行通信。这个模型能够生成PCIe事务,并检查来自Endpoint的响应是否正确。此外,它还可以捕获和记录总线上的流量,以便进行进一步的分析和验证。
AXI Memory Mapped to PCI Express core
这是作为Endpoint配置的PCIe core,它接收来自Root Port的PCIe事务,并将它们转换为AXI接口可以理解的格式。
AXI块RAM控制器
它则代表了AXI接口的存储器映射端。它实现了AXI接口协议,使得AXI-PCIe块能够与FPGA上的其他AXI兼容组件进行通信。在此示例设计中,AXI块RAM控制器被用作一个简单的存储器,模拟了Endpoint配置中AXI接口的功能。
这个示例设计提供了一个完整的PCIe通信链路模拟环境,用于验证AXI-PCIe块的功能和性能。但是,这只是一个示例设计,用于说明AXI-PCIe块如何与Root Port和AXI接口进行交互。
图5-1展示了AXI Memory Mapped to PCI Express core的仿真设计。
注意:这个例程支持Verilog作为目标语言。
二、定义和生成例程
在“Customize IP”对话框中,为例程进行以下选择:
1、在“PCIE:Basics”页面上,示例设计仅支持Endpoint(EP)设备。
2、支持默认的“PCIE:ID”设置。
3、支持默认的“PCIE:BARS”设置。
4、支持默认的“PCIE:Misc”页面设置。
5、在“AXI:BARS”页面上,为基地址、高地址以及AXI到PCIe转换值分配默认值。
6、支持默认的“AXI:System”页面设置。
注意:在自定义IP core后,右键单击组件名称,然后选择“Open IP Example Design”。这将打开一个单独的例程。请按照下一节中的步骤来仿真IP core。
三、模拟示例设计
示例设计可以使用以下任一配置来运行:
• Vivado模拟器
默认情况下,模拟器设置为Vivado模拟器。要运行仿真,请在Flow Navigator中点击“运行行为仿真”(Run Behavioral Simulation)。
•Cadence IES模拟器
在模拟器标签页上,选择“运行仿真”(Run Simulation)> “运行行为仿真”(Run behavioral simulation)。
• Mentor Graphics Questa高级模拟器
对于Questa高级模拟器仿真,需要执行以下步骤:
1、在Vivado IDE中,更改仿真设置如下:
目标模拟器:Questa Advanced Simulator/ModelSim
2、在模拟器标签页上,选择“运行仿真”(Run Simulation)> “运行行为仿真”(Run behavioral simulation)。
注意:为了成功运行Cadence IES或Mentor Graphics Questa高级模拟器,可能需要在开发环境中安装相应的模拟器软件,并确保它们与Vivado IDE正确集成。此外,某些模拟器可能需要特定的库文件或配置设置才能与您的设计兼容。
• VCS模拟器
对于VCS仿真,需要执行以下步骤:
1、在Vivado IDE中,更改仿真设置,选择目标模拟器为Verilog Compiler Simulator (VCS)。VCS是一个高性能的Verilog和SystemVerilog仿真器,广泛用于硬件设计和验证。
2、在模拟器标签页上,选择“运行仿真”(Run Simulation)> “运行行为仿真”(Run behavioral simulation)。这将启动VCS仿真器,并加载您的设计以进行仿真。
另外,VCS通常也提供了一些高级功能和选项,如编译优化、性能分析和调试工具等。可以根据需要启用这些功能,以提高仿真性能和调试效率。
四、实施设计
为了实施设计,AXI块RAM控制器可以用作向块RAM位置写入和读取的暂存存储器。
1、AXI Memory Mapped to PCI Express core封装内容
• 一个示例Verilog HDL或VHDL封装(实例化核心和示例设计)。
定义了如何实例化PCIe core和其他必要的组件来构建完整的示例设计。这个文件将包括所有必要的端口映射和连接,以确保core和其他组件之间的正确通信。
• 一个可定制的演示测试平台,用于模拟示例设计。
这个测试平台是一个模拟环境,用于运行示例设计并验证其功能。它通常包括测试向量(即,输入数据和预期输出),用于驱动示例设计的输入端口,并检查输出端口的行为是否符合预期。测试平台还可能包括一些辅助函数和工具,用于初始化仿真环境、控制仿真流程以及收集和报告结果。
通过运行这个可定制的测试平台,可以在仿真环境中模拟示例设计的行为,并检查其是否按预期工作。这有助于在硬件实现之前发现和修复设计中的问题,从而节省时间和成本。
2、示例设计输出结构
图5-2展示了示例设计的输出结构。该图提供了一个可视化的表示,说明了示例设计在仿真或实际硬件运行期间产生的输出数据的组织和布局。
通常,输出结构会包括以下几个关键组成部分:
PCIe事务输出
显示了通过PCIe接口发送和接收的事务。这可能包括数据包、帧或其他PCIe协议层的数据单元。这些事务可能包括读请求、写请求、完成包等,具体取决于设计的PCIe功能和所执行的操作。
AXI接口输出
示例设计可能通过AXI接口与其他组件(如AXI块RAM控制器)进行通信。AXI接口的输出将显示通过这些接口传输的数据和命令。这可能包括AXI读写请求、响应以及数据传输等。
状态和控制信号
输出结构还可能包括各种状态和控制信号,用于指示设计的当前状态或控制其操作。例如,可能有信号指示PCIe链路的连接状态、事务的完成状态、错误状态等。
调试和监视信息
为了方便调试和性能分析,输出结构还可能包含调试和监视信息。这可能包括内部信号的状态、时序信息、性能计数器等。
Table 5-1 提供了对示例设计目录内容的描述。