1. 程式人生 > >Xilinx Vivado的使用詳細介紹(5):調用用戶自定義封裝的IP核

Xilinx Vivado的使用詳細介紹(5):調用用戶自定義封裝的IP核

cond 5.4 vba adding 計算機 property with 我們 class

Zedboard OLED Display Controller IP v1

介紹

Author:zhangxianhe

本文檔提供了快速添加,連接和使用ZedboardOLED v1.0 IP內核的說明。運行在ARM處理器系統上的測試應用程序用於通過其驅動程序的功能與IP進行通信。 Vivado設計套件被用作開發環境。硬件驗證是在Zedboard上完成的,然而,這個IP可以很容易地應用於其他主板或嵌入式系統。

平臺

硬件:Zedboard xc7z020clg484-1

軟件:Vivado 2016.3(適用於Vivado 2015.4及以上)

過程

A- Creating a project in Vivado to target the Zedboard

1. 雙擊Vivado2016.3 啟動Vivado;

2. 雙擊Create New Project來新建一個工程,點擊Next;

3. 在下一個窗口中輸入“test_oled”作為項目名稱,項目文件指定存儲在 “D:/oled_test”的目錄下,勾選Create project subdirectory,點擊Next;

技術分享圖片

4. 接下來,指定項目類型,使用默認選擇的RTL Project,並勾選Do not specify sources at this time。RTL代表寄存器傳送語言(Register Transfer Language),通過選擇這個選項,我們可以在以後靈活地添加/修改源文件,點擊Next;

技術分享圖片

5. 接下來,指定要測試項目的電路板,選擇Zedboard Zynq Evaluation and Development Kit,點擊Next然後Finish完成;

技術分享圖片

“新建項目”向導將關閉,剛剛創建的項目將在Vivado中打開。

B- Creating the ARM processor system using the IP Integrator.

1. 單擊Vivado左上方的Project Manager中的Create Block Design;

2. 輸入模塊的名稱,然後單擊OK,對於這個例子,使用名稱:system;

技術分享圖片

3. 點擊OK後,將會在Vivado中顯示一個空白框圖視圖圖形用戶界面。在圖中,我們將添加所需的硬件塊系統。

4. 現在,我們將添加包含ARM處理器的ZYNQ7 Processing System塊通過啟動Add IP技術分享圖片向導來完成,或者可以在程序框圖空白處右擊選擇Add IP..,IP目錄窗口將會出現,顯示在這個設計中添加所有可能的IP;

技術分享圖片

向下滾動到底部或使用關鍵字zynq進行搜索,雙擊ZYNQ7 Processing System。 ZYNQ7處理系統塊已被放置在框圖視圖中。程序框圖中顯示的端口由目標開發板指定的該塊的默認設置定義。在綠色信息欄中單擊 Run Block Automation。確認processing_system7_0並確保選中Apply Board Preset,然後單擊OK。

技術分享圖片

這將為處理系統創建外部端口,並對這些端口應用物理約束,如下圖所示

技術分享圖片

C- Adding the ZedboardOLED IP to the IP repository

在進程導航窗格中,單擊Project Setting選項,選擇IP,然後單擊Add Repository 技術分享圖片按鈕。瀏覽窗口打開,瀏覽到IP核的位置(D:\oled_test\tamu.edu_user_ZedboardOLED_1.0),然後單擊“Select”。

技術分享圖片

註意工具如何在目錄中檢測到新的IP,點擊Apply,然後OK。

技術分享圖片

這樣做後,就可以將ZedboardOLED_v1.0添加到當前項目的IP庫中,下一步是將其添加到塊設計中,並將其從一側連接到Zynq處理系統,並從另一側通過使用外部端口連接到OLED板塊。

D- Connecting the ZedboardOLED IP core

1.在程序框圖空白處右擊選擇Add IP..然後輸入“oled”,ZedboardOLED_V1.0將顯示出來,雙擊IP將其添加到塊設計中。

技術分享圖片

2.看到Designer Assistance現在可以在綠色的信息欄中找到,它將幫助把IP核連接到處理系統的AXI子系統,配置時鐘和復位,為IP分配基地址(0x43C00000),並為互連和同步添加必要的硬件;

點擊Run Connection Automation並選擇/ZedboardOLED_0/S00_AXI。保留Clock Connection設置為Auto,然後單擊OK。(默認選擇)。

技術分享圖片

單擊技術分享圖片(Regenerate Layout)重新生成布局,程序框圖應該看起來類似於這個:

技術分享圖片

註意到Designer Assistance將AXI Interconnect和Processor System Reset自動添加進來了.將鼠標懸停在ZedboardOLED SDIN端口上,直到它變成鉛筆形狀,然後右擊並選擇Make External。(SCLK,DC,RES,VBAT,VDD)端口重復相同的過程。

技術分享圖片

3.右鍵單擊程序框圖上的任意位置,然後選擇Regenerate Layout(重新生成布局),這將整齊地組織設計中的塊。

技術分享圖片

最終的布局和如下所示的相似:

技術分享圖片

單擊Tools,選擇單擊Validate Design,檢查程序框圖是否有誤,結果直接點擊Ok。

技術分享圖片

4.在源窗格中,選擇系統框圖“system.bd”,右擊並選擇Generate Output Products,默認設置,直接點generate,運行結束後,點擊OK。

技術分享圖片技術分享圖片

在源窗格中,選擇系統框圖“system.bd”,右擊並選擇Create HDL Wrapper,選擇第二項 Let Vivado manage Wrapper and auto-update,點擊OK,

技術分享圖片技術分享圖片

現在我們通過AXI接口將IP連接到處理系統,下一步是將IP核的外部端口連接到OLED模塊的實際Zynq引腳。

5. 在Flow Navigator窗口中,從Project Manager部分選擇Add Sources。Add Sources對話框將打開。選擇 Add or Create Constraints。進行管腳約束。

技術分享圖片

點擊 Next,然後點擊 Create File, 選擇 XDC 作為文件類型然後輸入oled_constraints作為文件的名字。

技術分享圖片

點擊OK,點擊Finish創建文件並關閉對話框。

技術分享圖片

在Sources窗口中, 展開Constraints 文件夾並通過雙擊oled_constraints.xdc來打開新創建的XDC文件。

技術分享圖片

將下列行添加到約束文件中,或者可以從源文件復制它們文件包oled_constraints.xdc。

 1 set_property PACKAGE_PIN U10 [get_ports DC]
 2 set_property PACKAGE_PIN U9 [get_ports RES]
 3 set_property PACKAGE_PIN AB12 [get_ports SCLK]
 4 set_property PACKAGE_PIN AA12 [get_ports SDIN]
 5 set_property PACKAGE_PIN U11 [get_ports VBAT]
 6 set_property PACKAGE_PIN U12 [get_ports VDD]
 7 set_property IOSTANDARD LVCMOS33 [get_ports DC]
 8 set_property IOSTANDARD LVCMOS33 [get_ports RES]
 9 set_property IOSTANDARD LVCMOS33 [get_ports SCLK]
10 set_property IOSTANDARD LVCMOS33 [get_ports SDIN]
11 set_property IOSTANDARD LVCMOS33 [get_ports VBAT]
12 set_property IOSTANDARD LVCMOS33 [get_ports VDD]

這將ZedboardOLED IP內核的外部端口連接到Zynq器件的特定引腳。特定引腳連接到Zedboard上的OLED模塊。按(Ctrl + S)保存約束文件。

E- Generating Bitstream

在 Flow Navigator窗口中的Program and Debug部分,單擊Generate Bitstream,將出現一個對話框,要求保存所做的修改,單擊Save保存;也可能會出現一個對話框,顯示“No Implementation Result Available”,單擊Yes運行綜合和實現。 生成比特流可能會在綜合後執行整個實現過程,單擊是以在出現提示時運行實現。 實現可能需要一段時間才能完成,具體取決於計算機的性能。

執行Generate Bitstream這個過程時首先會自動進行分析綜合和實現。(這裏也可以直接先點擊Run Synthesis進行綜合,然後點擊Run Implementation進行實現,然後再點擊Generate Bitstream生成比特流) 。完成後,可直接點Cancel.

技術分享圖片

F- Exporting hardware design to SDK

1.點擊 File > Export > Export Hardware, 確保勾選Include bitstream 選項

技術分享圖片技術分享圖片

2.選擇File>Launch SDK,打開SDK,註意所有與設計相關的文件(包括IP)已經在上一步導出到SDK中,導出的資源中包括ZedboardOLED_v1_0 IP核的驅動。

G- Working with SDK

1.在SDK中, 選擇File > New > Application Project.

技術分享圖片

2. 在下一個窗口中, 輸入文件名以及默認如下參數:

技術分享圖片

點擊Next,在下一個窗口中,從可用模板中選擇Empty Application,然後單擊Finish。這將編譯BSD和相關的驅動程序。

3. 展開oled_test_bsp>ps7_cortexa9_v2_0>libsrc>zedboardoled_v1_0>src, 然後檢查ZedboardOLED.c和ZedboardOLED.h以實現與OLED屏幕一起使用的功能。

技術分享圖片

4.現在我們將編寫一個使用這些函數的簡單應用程序,擴展oled_test目錄,右擊src目錄,選擇New-> Source File,在下一個窗口中顯示出來,在源文件中輸入“mian.c”,然後點擊Finish。

技術分享圖片

復制並粘貼下面的C代碼到“main.c”中,點擊保存或點擊(Ctrl + S),這樣oled_test應用程序和它的BSP都會被自動編譯,生成可執行文件.elf文件。

1 int main(void){
2 clear();
3 print_message("OLED_Test_zhang",0);
4 print_message("NJUPT__xian_he_",1);
5 print_message("PS_And_ARM_PL_S",2);
6 print_message("Anniversary1229",3);
7 return (1);
8 }

Cick Project-> clean (in case you get any errors with the BSD).

H- Downloading the bitstream and running the application (Hardware verifications)

硬件準備:兩條USB線,一條連接 micro-usb cable between the PC and the PROG port of the board;另外一條 micro-usb cable between the PC and the UART port of the board,.打開Zedboard板的電源,打開電源之後POWER燈會亮;

1.選擇Xilinx Tools-> Program FPGA來下載Bitstream ( this will take few seconds ).

技術分享圖片

2.右擊oled_test 文件夾選擇Run As->Run Configurations, 按如下圖示配置,(註意STIDIO connection配置時端口號根據自己的電腦進行配置)。單擊Apply,然後點擊Run。即在ARM processor上運行oled_test application。

技術分享圖片

技術分享圖片

運行結果,在OLED屏幕上看到以下消息:

技術分享圖片

至此,此實驗完成。

嘗試不同的排版寫文檔。

如果有同學想要OLED IP核就評論我吧

Xilinx Vivado的使用詳細介紹(5):調用用戶自定義封裝的IP核