reference: https://www.cnblogs.com/mouou/p/5851736.html
1、新建一個測試工程
工程化的設計方法是離不開工程的,第一步往往都是新建工程,后面我會學習去工程化的開發方法,可能會更加高效。
2、利用向導完成IP封裝
2.1、啟動IP向導
方法為:ToolsàCreate and Package IP…,如圖1所示。
圖1 創建或者打包IP
點擊Create and Package IP…命令,彈出向導,如圖2所示。
圖2 創建和封裝IP向導
直接NEXT,進入下一界面,如圖3所示。選擇操作類型,我們這里不是新建IP,也不是要打包當前工程,而是要把runled_src文件夾下封裝成一個IP,所以選擇第2項。NEXT。
圖3 選擇操作類型為封裝特定目錄
接下來一步要注意了,選擇你要打包的資源所在的文件夾,我這里是把要打包的3個文件放在了my_ip/runled_src下面,所以選擇了這個路徑,如圖4所示。
圖4 待打包資源所在文件夾
接下來,向導提示需要為IP工程制定一個名字和存儲地址,如圖5所示。這里采用默認名稱即可,這個工程是臨時的,IP封裝完之后就會消失,再次編輯IP時才會再重新建立。
圖5 臨時工程名稱、存儲路徑
NEXT,接下來就是最后一步了,是一些提示信息,大家可以自己看一下。點擊Finish結束向導。
圖6 summary
2.2、IP參數設置
注意,這里已經進入了edit_ip_project工程,是為打包IP核新建的那個工程,我們在上面指定了名稱和路徑(見圖5). 點擊:Project Manager --> IP Catalog打開如下:
對打包后的IP進行一些參數配置,如供應商,分類(默認是BaseIP,使用時要到該分類下查找我們封裝的IP)等信息,這里不一一詳述了,需要時,自行修改即可。
圖7 IP參數設置
下一步:不做屬性上的修改,直接進入最后一步(單擊Review and Package),點擊圖8中的Package IP按鈕,開始打包。
圖8 開始打包
打包完成后,edit_ip_project工程會自動關閉,返回我們建立的測試工程。
3、查看IP封裝結果
在Flow Navigator子窗體下找到Project Manager à IP Catalog,單擊IP Catalog,右側會彈出IP Catalog子窗體,將BaseIP目錄展開,發現runled_top_v1_0已經成功導入。
到這里,封裝已經完成了,本文要敘述的主題也已經完畢。
設置IP路徑
------------------------------------------------------分割線---------------------------------------------------------------
但由於是第一次使用,不太放心,所以測試一下,接下愛來各小節是測試用的,不想看的可以直接略過。
4、測試
建立一個Block Design,將runled_top_v1_0添加進去,添加輸入輸出端口,最終結果如圖9所示。
圖9 Block Design
5、添加約束、綜合、實現、生成Bitstream
約束文件:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
#In the following the XDC constraint is matched to the origanal UCF constraint, XDC above, UCF below # Commented
set_property PACKAGE_PIN Y9 [get_ports {iClk}]
set_property IOSTANDARD LVCMOS33 [get_ports {iClk}]
#NET GCLK LOC = Y9 | IOSTANDARD=LVCMOS33; # "GCLK"
# Bank 33, Vcco = 3.3V
#set_property IOSTANDARD LVCMOS33 [get_ports -filter { IOBANK == 33 } ]
set_property PACKAGE_PIN T22 [get_ports {oLed[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports {oLed[0]}]
#NET LD0 LOC = T22 | IOSTANDARD=LVCMOS33; # "LD0"
set_property PACKAGE_PIN T21 [get_ports {oLed[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {oLed[1]}]
#NET LD1 LOC = T21 | IOSTANDARD=LVCMOS33; # "LD1"
set_property PACKAGE_PIN U22 [get_ports {oLed[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {oLed[2]}]
#NET LD2 LOC = U22 | IOSTANDARD=LVCMOS33; # "LD2"
set_property PACKAGE_PIN U21 [get_ports {oLed[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {oLed[3]}]
#NET LD3 LOC = U21 | IOSTANDARD=LVCMOS33; # "LD3"
set_property PACKAGE_PIN V22 [get_ports {oLed[4]}]
set_property IOSTANDARD LVCMOS33 [get_ports {oLed[4]}]
#NET LD4 LOC = V22 | IOSTANDARD=LVCMOS33; # "LD4"
set_property IOSTANDARD LVCMOS33 [get_ports {oLed[5]}]
set_property PACKAGE_PIN W22 [get_ports {oLed[5]}]
#NET LD5 LOC = W22 | IOSTANDARD=LVCMOS33; # "LD5"
set_property PACKAGE_PIN U19 [get_ports {oLed[6]}]
set_property IOSTANDARD LVCMOS33 [get_ports {oLed[6]}]
#NET LD6 LOC = U19 | IOSTANDARD=LVCMOS33; # "LD6"
set_property IOSTANDARD LVCMOS33 [get_ports {oLed[7]}]
set_property PACKAGE_PIN U14 [get_ports {oLed[7]}]
#NET LD7 LOC = U14 | IOSTANDARD=LVCMOS33; # "LD7"
# Bank 34, Vcco = Vadj
#set_property IOSTANDARD LVCMOS18 [get_ports -filter { IOBANK == 34 } ]
set_property IOSTANDARD LVCMOS18 [get_ports {iRst_n}]
set_property PACKAGE_PIN P16 [get_ports {iRst_n}]
#NET BTNC LOC = P16 | IOSTANDARD=LVCMOS18; # "BTNC"
|
生成Bitstream以便進行板級測試。
6、測試
利用Vivado內置的Hardware Manager向導將Bitstream燒寫進FPGA,流水燈順利出現,OK!