使用Zynq处理器模拟自定义IP核
先决条件
-
完成了Zybo入门指南
-
完成了Zybo创建自定义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核了