你也可以使用MB_Halted信號來觸發(fā)一個集成邏輯分析器,或者在多核系統(tǒng)中,暫停其他MicroBlaze軟核(連接到它們的DBG_STOP端)。
當(dāng)啟動擴展調(diào)試功能時,交叉觸發(fā)功能可以和MDM一起使用。MDM在所有連接的處理器中,提供可編程的交叉觸發(fā)功能,包括外部觸發(fā)的輸入端和輸出端。可以查閱MicroBlaze Debug Module Product Guide手冊查看細節(jié)。
MicroBlaze最多支持8個交叉觸發(fā)動作。交叉觸發(fā)動作由相對應(yīng)的MDM交叉觸發(fā)輸出產(chǎn)生,兩者通過調(diào)試總線連接。
可以有兩個地方設(shè)置擴展調(diào)試功能:一個是前面提到的調(diào)試配置頁,另一個是在運行MicroBlaze的Block Antomation時,選擇該功能。
另外,還要在MDM模塊的配置頁中,使能交叉觸發(fā)功能(Enable Cross Trigger)。MDM模塊可以最多配置4組外部觸發(fā)的輸入和輸出。
最后,運行Connection Automation,連接交叉觸發(fā)信號到ILA(ILA教程)。
...
五、自定義邏輯
Vivado的IP管理器允許用戶和第三方IP核開發(fā)者將自定義的IP核添加到Vivado的IP核目錄中。這樣用戶就能在Vivado中實例化第三方IP核了。
當(dāng)IP開發(fā)者使用Vivado的IP管理器打包IP核時,IP的使用者對xilinx提供的IP核,還是第三方IP,亦或用戶定義的IP,都有一樣的使用體驗。
IP開發(fā)者可以使用IP管理器打包IP文件,并把數(shù)據(jù)放入ZIP文件。IP使用者接收這個ZIP文件,安裝到Vivado的IP目錄中,然后用戶就可以使用這個IP核了。
推薦:為了保證IP核的質(zhì)量,建議IP開發(fā)者在用用戶的使用工作流中運行每一個IP核,確保每個IP核都是可用的。
六、完成連接(Completing Connections)
當(dāng)你配置完了MicroBlaze處理器,就可以開始實例化其他IP核,繼續(xù)你的設(shè)計。
在Canvas(放置Block的面板)上,右擊,選擇Add IP。
你可以使用兩個內(nèi)置的特性來完成子系統(tǒng)剩余部分的IP核設(shè)計:Block Automation和Conncetions Automation,幫助你放置一個基本的微處理器系統(tǒng),并且/或者連接端口到外部I/O口。
Block Automation
當(dāng)block design中實例化了一個ZYNQ7處理系統(tǒng)或者MicroBlaze處理器時,Block Automation功能就可以使用。
1、點擊Run Block Automation,幫助你完成一個簡單的MicroBlaze系統(tǒng)。
Run Block Automation對話框提供了一個微處理器系統(tǒng)必需的基本特性。
2、單擊OK。
Using Connection Automation
當(dāng)IP集成工具發(fā)現(xiàn)canvas上的IP實例化之間,存在可能的連接時,它會打開Connection Automation功能。
例如,我另外添加了兩個IP核,GPIO和Uartlite。IP集成工具會決定一下連接:
---處理器的ext_reset_in引腳必須連接到一個復(fù)位源,復(fù)位源可以是內(nèi)部的復(fù)位源,或者是外部輸入引腳。
---時鐘模塊的CLK_IN_1_D引腳必須連接到一個內(nèi)部時鐘源,或者外部輸入引腳。
---AXI GPIO的s_axi必須接到一個主機的AXI接口上。
---AXI GPIO的核心gpio必須接到外部的IO引腳。
---Uartlite的s_axi必須接到一個主機的AXI接口上。
---Uartlite的uart必須接到外部引腳上。
Using Board Automation
當(dāng)使用像KC705這種刁刁的板子的時候,Vivado提供了Board Automation(像我這種撐死只有Nexys4的屌絲,只能......怒略一記)
Manual Connections in an IP Integrator Design
(譯者注:一般連線方式,可以手動連接,類似于AD畫板子軟件里的那種)
Manual Creating and Connecting to I/O Ports
你可以在IP工具中創(chuàng)建外部IO端口。你可以選擇信號或者接口到外部的IO端口,通過選擇一個引腳,總線或者接口連接。
具體辦法是,在模塊的引腳接口處,右擊。在彈出的菜單中,選擇:
---Make External.可以用多選操作(Ctrl+Click)選擇多個端口。這個命令的作用是連接模塊上的引腳到外部引腳。
startgroup
create_bd_intf_port -mode Master -vlnv xilinx.com:interface:gpio_rtl:1.0 GPIO
connect_bd_intf_net [get_bd_intf_pins axi_gpio_0/GPIO] [get_bd_intf_ports GPIO]
endgroup
(這是該操作的tcl命令,第一句話是創(chuàng)建端口,第二句話是連接)
---Create Port.對非信號接口使用該命令,如clock,reset,或者uart_txd.創(chuàng)建的時候,可以設(shè)定很多參數(shù),比如輸出/輸出,位寬,類型等等。如果是時鐘,需要指定它的頻率。
startgroup
create_bd_port -dir I -type clk aa
set_property CONFIG.FREQ_HZ 100000000 [get_bd_ports aa]
endgroup
(這是該操作的tcl命令,第一句話是創(chuàng)建端口,第二句話是設(shè)置參數(shù))
---Create Interface Port。對同一個功能的一組信號接口創(chuàng)建此類端口。例如,S_AXI是一些Xilinx IP的接口端口。這個接口還可以指定接口的類型和模式(主機還是從機)。
Memory Mapping in Address Editor
產(chǎn)生地址映射的方法如下:
1、單擊Address Editor。
2、單擊左邊的Auto Assign Address按鈕。(按鈕在左側(cè))
如果你從IP框圖產(chǎn)生RTL代碼時沒有第一次生成地址,會彈出一個提示框,提供一個自動分配地址的工具。
你也可以在Offset Address和Range兩類輸入值,來設(shè)置地址。只有當(dāng)IP框圖中包含一個總線主機的IP核(例如ZYNQ7)時,Address Editor才會打開。
Running Design Rule Checks
Vivado實時進行設(shè)計規(guī)則檢查。然而,錯誤總是會發(fā)生。例如,時鐘引腳上的頻率也許沒有設(shè)置正確。
如果要運行一個全面的檢查,可以單擊Validate Design。
Integrating a Block Design in the Top-Level Design
完成了上面的步驟后,還有兩個步驟需要做:
---產(chǎn)生輸出文件
---創(chuàng)建HDL封裝
在項目的源文件窗口創(chuàng)建文件。文件類型取決于項目新建時是verilog還是vhdl。具體方法如下:
1、在Block Design面板下,展開Design Source,選擇Generate Output Products。
2、在左側(cè)的工作流面板中的IP工具下,單擊Generate Block Design.
你可以在一個高層次設(shè)計中集成一個IP block。這樣做的方法是,在高層次的HDL文件中,實例化這個Block設(shè)計。
為了實例化一個更高的層次,在Block Design面板中的Design Sources中,右鍵design,選擇創(chuàng)建HDL封裝。
Vivado提供了兩種創(chuàng)建HDL封裝的方法:
---Vivado新建并自動更新封裝,這是默認選項。
---創(chuàng)建一個用戶可修改的腳本,這個腳本可以修改和保存。如果你選擇了這個,那你每次如果修改了block design中的端口,都需要修改手動更新封裝。
到這里,你已經(jīng)為你的IP設(shè)計做好了HDL封裝,可以進行后面的步驟了。
MicroBlaze處理器約束
IP工具已經(jīng)在產(chǎn)生輸出文件時,為IP核創(chuàng)建了約束文件;然而,你必須為自定義的IP或者更高層次的代碼設(shè)置約束。
一組約束,是XDC文件中的包含了設(shè)計約束的集合。有兩種約束:
---物理約束。定義了引腳放置,以及元胞(BRAM, LUT, Flip Flop)的絕對或者相對位置,還有器件的配置。
---時序約束。遵循SDC業(yè)界標(biāo)準(zhǔn),定義了設(shè)計的頻率要求。如果沒有時序約束,Vivado僅僅會優(yōu)化線寬和布線擁堵。(如果沒有時序約束,Vivado的implementation就無法提高設(shè)計的性能。Vivado不支持UCF格式的約束)
關(guān)于時序約束,下面多說兩句:
你有幾種使用約束集合的方法:
---一個約束集合中有多個約束文件
---多個約束集合,然而在分開的文件夾中。
---一個主約束文件,設(shè)計中的改變存于一個新的約束文件夾中。
---...
按功能,分開約束文件,有利于你從宏觀更清楚地把握約束策略,有利于應(yīng)對時序和實現(xiàn)過程中的變化。
約束水太深,又太重要,詳情查看官方文檔。Vivado Design Suite User Guide: Using Constraints
當(dāng)你完成了設(shè)計,也約束完了,現(xiàn)在可以進行合成、實現(xiàn)、生成bit流了。
然后,就可以導(dǎo)入硬件到SDK了。具體方法是:
File->Export->Export Hardware for SDK,彈出對話框,提供一些選擇選項。你可以導(dǎo)出硬件定義和比特流,并打開SDK。然后,就可以開始編寫軟件了。或者,你也可以從SDK把elf文件導(dǎo)入到Vivado。
評論
查看更多