xzy610030

一起探讨,一起进步,一起分享!

vivado设计四:自定义IP核测试

0
阅读(13639)

在vivado设计三中:http://blog.chinaaet.com/detail/37177已经建立了vivado工程和封装好了自定义IP核。

那么接下来,我们对这个自定义IP核进行测试了:我们已经回到了主界面。

1. create block design

这部分和vivado设计中:是类似的,就不贴图了,

clip_image002

2. 添加我们自定义的IP核

Add IP,输入led

clip_image004

3. 连接

clip_image006

4. 连接后,拖动一下,使得好看一些:

clip_image008

5. 引出LED管脚

clip_image010

clip_image012

6. 选择Tools -> Validate Design,使设计生效,没有error

clip_image014

7. 右键design_1.bd, 选择Create HDL Wrapper

clip_image015

clip_image017

8. 下面添加约束文件,vivado的约束文件的是xdc文件而不是ucf文件

clip_image019

Next,我们create file

clip_image021

9. 编写xdc文件


set_property PACKAGE_PIN M14 [get_ports LED[0]]
set_property IOSTANDARD LVCMOS33 [get_ports LED[0]]
set_property PACKAGE_PIN M15 [get_ports LED[1]]
set_property IOSTANDARD LVCMOS33 [get_ports LED[1]]
set_property PACKAGE_PIN G14 [get_ports LED[2]]
set_property IOSTANDARD LVCMOS33 [get_ports LED[2]]
set_property PACKAGE_PIN D18 [get_ports LED[3]]
set_property IOSTANDARD LVCMOS33 [get_ports LED[3]]


10. 接下来综合

clip_image023

综合通过:

clip_image025

这里cancel,因为下一步我们直接产生bit流文件、

clip_image027

clip_image029

点击generate

11.产生bit流文件,Open Implemented Design

clip_image031

clip_image033

产生bit流文件后,就是愉快的导入SDK了:

File-》Export-》Export Hardware for SDK

clip_image035

建立Application Project

clip_image037

Next,选择空工程

clip_image039

可以看到:

clip_image041

Tools –》Repositories

clip_image043

设置好路径后,点击ok,退出

右键project_2_bsp,选择Board Support Package Settings,drivers下选择我们的led_ip

clip_image045

这样我的bsp(board support Package)才有led_ip.h这些文件:

编写一个main.c文件


#include "xparameters.h"
#include "xutil.h"
#include "led_ip.h"
//====================================================
int main (void) 
{
   int i;
   xil_printf("-- Start of the Program --\r\n"); 
   while (1)
   {		  
	  // output dip switches value on LED_ip device
	  LED_IP_mWriteReg(XPAR_LED_IP_0_S_AXI_BASEADDR, 0, 1);
	  for (i=0; i<9999999; i++);
	  LED_IP_mWriteReg(XPAR_LED_IP_0_S_AXI_BASEADDR, 0, 2);
	  for (i=0; i<9999999; i++);
	  LED_IP_mWriteReg(XPAR_LED_IP_0_S_AXI_BASEADDR, 0, 4);
	  for (i=0; i<9999999; i++);
	  LED_IP_mWriteReg(XPAR_LED_IP_0_S_AXI_BASEADDR, 0, 8);
	  for (i=0; i<9999999; i++);

   }
}


LED_IP_mWriteReg在led_ip.h中可以找到。编译生成elf文件。

由于vivado和zybo很久没用,突然连接不上了,测试结果就暂时不能贴上来了。。。有空补上吧。