在vivado設計三中:http://blog.chinaaet.com/detail/37177已經建立了vivado工程和封裝好了自定義IP核。
那么接下來,我們對這個自定義IP核進行測試了:我們已經回到了主界面。
1. create block design
這部分和vivado設計中:是類似的,就不貼圖了,
2. 添加我們自定義的IP核
Add IP,輸入led
3. 連接
4. 連接后,拖動一下,使得好看一些:
5. 引出LED管腳
6. 選擇Tools -> Validate Design,使設計生效,沒有error
7. 右鍵design_1.bd, 選擇Create HDL Wrapper
8. 下面添加約束文件,vivado的約束文件的是xdc文件而不是ucf文件
Next,我們create file
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. 接下來綜合
綜合通過:
這里cancel,因為下一步我們直接產生bit流文件、
點擊generate
11.產生bit流文件,Open Implemented Design
產生bit流文件后,就是愉快的導入SDK了:
File-》Export-》Export Hardware for SDK
建立Application Project
Next,選擇空工程
可以看到:
Tools –》Repositories
設置好路徑后,點擊ok,退出
右鍵project_2_bsp,選擇Board Support Package Settings,drivers下選擇我們的led_ip
這樣我的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很久沒用,突然連接不上了,測試結果就暫時不能貼上來了。。。有空補上吧。