使用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板创建一个新项目

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

1.2)点击下一个

1.3)选择Nexys4 DDR

1.4)点击完成

2.创建微火焰块设计

2.1)选择创建块设计

2.2)点击好吧

2.3)添加微火焰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_ax_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;我+ +);} }
4.6) 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要求生成输出产品,请点击生成输出产品并重复此步骤。

5.7)点击...按钮

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

6.创建测试夹具

添加一个新的模拟文件test.v。
6.2)将以下代码复制到test.v中:
' timescale 1ns / 1ps module test();线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));始终#5 CLK <= ~ CLK;endmodule

7.运行仿真

点击运行行为模拟

8.庆祝

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