使用Zynq处理器模拟自定义IP核


先决条件


在Vivado 2015.1和SDK 2015.1中创建

这个演示是伟大的ZYBO,但也适用于任何微火焰设计。本教程使用microblaze项目模拟自定义IP核心,以避免与ZYNQ BFM核心和AXI BFM核心相关的额外许可。不幸的是,这导致模拟的设置非常复杂,但是在Vivado中为series-7板提供了一个内置许可的模拟解决方案。

我们将使用在Zybo中编写的PWM核心创建自定义IP核指南


1.打开vivado,用Nexys4 DDR板创建一个新项目

1.1)创建一个名为“ip_core_simulation”的新项目。

1.2)点击下一个

1.3)选择Nexys4 DDR

1.4)点击完成

2.创建微火焰块设计

2.1)选择创建块设计

2.2)点击好吧

2.3)添加microblaze IP块。

2.4)添加My_PWM_Core。

2.5)运行块自动化和连接自动化。
2.6)做好外部连接PMW0、PWM1、PWM2、PWM3。

2.7)将输入时钟源改为单端时钟。

2.8)双击时钟向导块,将重置类型改为活性低

2.9)创建HDL包装

3.运行综合,实现和导出硬件设计

3.1)点击运行实现

3.2)点击文件→出口→出口硬件

3.3)点击好吧

3.4)启动SDK。

4.创建程序来测试你的IP核

4.1)创建新的应用程序。

4.2)输入项目名称“custom_ip_simulation”,点击下一个

4.3)选择空应用程序并点击完成

4.4)添加c
4.5)我们将从创建一个自定义IP核心教程的程序开始,并修改它以进行模拟。原始代码是这样的:
#include "xparameters.h" #include "xil_io.h" #define MY_PWM XPAR_MY_PWM_CORE_0_S00_AXI_BASEADDR int main(){int num, i;While (1){if(num == 100) num = 0;其他num + +;Xil_Out32 (MY_PWM num);Xil_Out32 ((MY_PWM + 4), num);Xil_Out32 ((MY_PWM + 8), num);Xil_Out32 ((MY_PWM + 12), num);(我= 0;< 300000;我+ +);}}
一个300000的延迟环路将需要一段时间来模拟,所以选择一个更小的数字,比如30,将会加快模拟速度。将延迟环路更改为30。保存项目并退出SDK。

5.将在SDK中创建的ELF与microblaze设计相关联

5.1)右击模拟源.点击添加资源

5.2)选择添加或创建仿真源.点击下一个

5.3)点击绿色加号。选择添加文件…

5.4)导航到“你的工作文件夹”/ ip_core_simulation.sdk / custom_ip_core /调试/.添加custom_ip_simulation.elf

5.5)点击完成

5.6)右击custom_ip_core.elf.点击副精灵文件… 注意:如果Vivado要求生成输出产品,那么单击generate output products并重复此步骤。

5.7)点击...按钮

5.8)选择custom_ip_simulation.elf.点击好吧

6.创建测试夹具

6.1)添加一个新的模拟文件test.v。
6.2)将以下代码复制到" test.v "中:
' timescale 1ns / 1ps模块测试();线PWM0_tb;线PWM1_tb;线PWM2_tb;线PWM3_tb;Reg CLK = 0;设计_1_wrapper uut(.PWM0(PWM0_tb), .PWM1(PWM1_tb), .PWM2(PWM2_tb), .PWM3(PWM3_tb), .clk_in1(clk), .reset(1));CLK <= ~ CLK;endmodule

7.运行仿真

点击运行行为模拟

8.庆祝

它的工作原理!我们现在可以模拟IP核了