目前絕大多數(shù)的Versal IP所提供的例子工程,都使用了IPI的流程。
這篇blog會(huì)給大家介紹如何修改IP例子工程(Block Design)里的IP和GT模塊的源代碼與屬性。這里用的是以太網(wǎng)IP,如MRMAC和DCMAC作為示例。當(dāng)然這些修改的方法,也適用于其它調(diào)用了GT的各種IP。
這篇blog主要包含以下4個(gè)方面內(nèi)容:
1. 使用APB3接口修改GT的參數(shù)屬性
2. 如何從Block Design的模塊內(nèi)部,獲取GT端口信號(hào)的控制
3. 通過(guò)CIPS讀、寫(xiě)以太網(wǎng)IP的寄存器
4. 如何修改IP的內(nèi)部源代碼
首先,產(chǎn)生一個(gè)DCMAC或者M(jìn)RMAC IP的例子工程。
如下圖可以看到,IP的例子工程里面有個(gè)Block Design(BD)工程,里頭包含了MAC core(.xci)和GT wrapper模塊。另外,工程里還有個(gè)CIPS模塊,用來(lái)讀寫(xiě)寄存器。
1. 使用APB3接口修改GT的參數(shù)屬性
在產(chǎn)生的MRMAC例子工程中,GT的APB3接口是直接拉出來(lái)的,但是在代碼邏輯里面并沒(méi)有被使用,如下圖,在”*_exdes.sv”文件里可以找到。
請(qǐng)參考GT用戶手冊(cè)(如GTM的文檔AM017)中的章節(jié)“Fabric Configuration Interface”,來(lái)操作APB3接口。這個(gè)新的APB3接口,跟GT以前用的DRP接口非常類似,可以通過(guò)該接口,動(dòng)態(tài)讀寫(xiě)GT的參數(shù)屬性。
在另一篇blog“Differences When Designing with UltraScale+ GTY and Versal GTY/GTYP“當(dāng)中,提供了一個(gè)如何使用VIO去控制APB3的例子,可供參考使用。它還提供了另一個(gè)例子,使用AXI總線替換APB3接口來(lái)操作。
2. 如何從Block Design的模塊內(nèi)部,獲取GT端口信號(hào)的控制
一個(gè)IP core調(diào)用了GT模塊,但并不一定會(huì)用上所有的GT端口管腳。這些端口信號(hào)很有可能被留在了Block Design的模塊內(nèi)部,而沒(méi)有拉到頂層來(lái)。但是在有的時(shí)候,客戶為了自己的設(shè)計(jì)會(huì)想要去控制某些被留在BD內(nèi)部的GT輸入輸出端口信號(hào),例如為了做一些debug工作等。
這篇AR“75857 - Versal GTY Pass Through Mode - How do I tie off all of the interface pins/Changes from previous versions of the IP“介紹了如何去獲取以及控制內(nèi)部的GT模塊的端口信號(hào)。
下面是一個(gè)例子,詳細(xì)描述了如何可以手動(dòng)把你想要用的GT端口從BD設(shè)計(jì)內(nèi)部拉到IP頂層來(lái),供你的邏輯驅(qū)動(dòng)。
比方說(shuō),在一個(gè)DCMAC IP的例子工程當(dāng)中,不同于上面的MRMAC example,這個(gè)DCMAC example也沒(méi)有使用到GT的APB3接口信號(hào),這些端口不僅沒(méi)有連接,還被保留在了Block Design內(nèi)部,沒(méi)有被拉出來(lái)。首先,可以點(diǎn)開(kāi)Block Design,找到gt_quad_base模塊和它的APB3接口信號(hào),如下圖。右鍵點(diǎn)擊這個(gè)端口,選擇“Make External“。然后Vivado 工具會(huì)自動(dòng)把這些點(diǎn)選到的信號(hào),拉到頂層模塊。
接下來(lái),請(qǐng)點(diǎn)擊“Generate Block Design“,完成后,你就能夠在example頂層設(shè)計(jì)里直接用邏輯去控制這些拉出來(lái)的GT端口信號(hào)了。
3. 通過(guò)CIPS讀、寫(xiě)以太網(wǎng)IP的寄存器
在DCMAC或者M(jìn)RMAC IP的例子工程里面,都調(diào)用CIPS模塊,該模塊可以用來(lái)讀寫(xiě)以太網(wǎng)IP的寄存器。
首先,你可以打開(kāi)example top文件的源代碼,找到CIPS模塊的信號(hào)連接,再點(diǎn)開(kāi)Vivado工程里面的“Address Editor“,確認(rèn)每個(gè)模塊對(duì)應(yīng)的地址分配情況,如下面兩張圖。
請(qǐng)?jiān)?a href="http://www.ttokpm.com/tags/amd/" target="_blank">AMD的網(wǎng)站上,下載這些以太網(wǎng)IP的寄存器地址映射信息。
(比如MRMAC的pg314-mrmac_registers_v1_5.zip)
在以太網(wǎng)IP的文檔中(如MRMAC的PG314)描述了如何使用XSDB平臺(tái),通過(guò)CIPS讀寫(xiě)IP的寄存器。請(qǐng)?jiān)赥era Term工具中打開(kāi)XSDB Console,使用mrd/mwr指令,實(shí)現(xiàn)讀寫(xiě)寄存器。
這里是一組用以完成MRMAC初始化的寄存器讀寫(xiě)指令的例子。
mwr-force27520532520x00000FFF mwr-force27520532560x40000A24 mwr-force27520532640x00000033 mwr-force27520532600x00000C03 mwr-force27520534560x00000000 mwr-force27520575520x00000000 mwr-force27520616480x00000000 mwr-force27520657440x00000000 mwr-force27520532520x00000000 mwr-force27520532920x00000001 mwr-force27525120000x00000F02 mwr-force27525120000x00000002 mrd-force2752577544 mwr-force27520551080xFFFFFFFF mwr-force27520592040xFFFFFFFF mwr-force27520633000xFFFFFFFF mwr-force27520673960xFFFFFFFF mrd-force2752055108 mrd-force2752059204 mrd-force2752063300 mrd-force2752067396
4. 如何修改IP的內(nèi)部源代碼
有的時(shí)候,用戶還會(huì)想要直接修改IP內(nèi)部那些沒(méi)有被加密的HDL源代碼。點(diǎn)開(kāi)Vivado工程里的.xci IP,可以看到內(nèi)部有很多代碼模塊。有些模塊仍然是有HDL源代碼的,但是因?yàn)檫@些代碼文件在IP的.xci下面,因此不能直接修改,如果直接改完,工具在跑流程的過(guò)程中,很可能重新自動(dòng)產(chǎn)生這個(gè)文件把你的手動(dòng)修改給覆蓋掉。
你可以參考這個(gè)AR里面介紹的,Vivado的手動(dòng)修改IP代碼的流程操作“57546 - Vivado IP Flows - How to modify/edit IP core source files in Vivado?“;在本文的IPI流程當(dāng)中,我們可以采用類似的方式,來(lái)實(shí)現(xiàn)手動(dòng)修改IP內(nèi)部代碼。
首先用下面這個(gè)命令,將需要修改的IP Lock住。
set_propertyIS_LOCKEDtrue[get_filesXXX.xci]
然后在Vivado以外找一個(gè)第三方的文本編輯器工具,打開(kāi)要改的這個(gè)HDL源代碼文件,修改后保存,重新綜合IP,這樣Vivado就不會(huì)重新生成這個(gè)文件覆蓋你的修改了。你的手動(dòng)修改將能夠起效。
審核編輯:湯梓紅
-
模塊
+關(guān)注
關(guān)注
7文章
2613瀏覽量
47018 -
以太網(wǎng)
+關(guān)注
關(guān)注
40文章
5288瀏覽量
169679 -
寄存器
+關(guān)注
關(guān)注
31文章
5253瀏覽量
119210 -
Versal
+關(guān)注
關(guān)注
1文章
151瀏覽量
7598
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論