本次操作包括:工程的版本遷移,板級(jí)測(cè)試時(shí)信號(hào)的抓取。
如何使用新版本的vivado去打開舊版本的vivado工程
如何使用新版本的vivado去打開舊版本的vivado工程。
對(duì)于舊版本的vivado工程或者是ise工程,更新到新版本的vivado環(huán)境下有兩種方法:
1、直接用新版本vivado打開原有工程文件,進(jìn)行IP核更新; 2、拷貝原有工程設(shè)計(jì)文件、約束文件、IP核文件夾至新建新版本vivado空白工程文件下,進(jìn)行更新。
1、在舊版本vivado基礎(chǔ)上直接升級(jí)
我們先來介紹一下如何直接使用新版本打開舊版本工程并且進(jìn)行升級(jí)。
直接使用新版本vivado打開vivado的工程文件。
對(duì)于新版本vivado一般在打開舊版本工程時(shí)都會(huì)自動(dòng)進(jìn)行更新默認(rèn)自動(dòng)更新就好。 打開工程之后,需要對(duì)舊版本工程的IP核進(jìn)行升級(jí)操作。點(diǎn)擊Reports->Report IP Status查看IP核被鎖狀態(tài)進(jìn)行升級(jí)。
選中所有IP核進(jìn)行升級(jí)。
點(diǎn)擊確定。
保持默認(rèn)不使用核容器,(Core Container沒有用過,我都是默認(rèn)不使用)。
升級(jí)完成之后的界面如圖所示。
如何使用新版本的vivado去打開舊版本的vivado工程
debug步驟:
在需要debug的輸入輸出端口列表前加 (* mark_debug = “true” *)。
在編譯通過后,進(jìn)行綜合生成網(wǎng)表等文件,點(diǎn)setup debug進(jìn)行添加。
保存,xdc中應(yīng)該有約束了,原理圖里也有ila_core 模塊,直接進(jìn)行實(shí)現(xiàn)即布局布線。
在線調(diào)試:生成比特后下載,run trigger。
注意:在有多個(gè)debug端口時(shí),會(huì)引入1個(gè)以上ila_core,每一個(gè)ila_core 的時(shí)鐘域都是獨(dú)立的,且在每一個(gè)ila_core中各個(gè)端口的時(shí)鐘域是一樣的。
1、設(shè)置信號(hào)抓取標(biāo)記
將需要測(cè)試的端口前標(biāo)記上(*mark_debug = “1”*)或者(*mark_debug = “true”*)
注意:這里最好將需要測(cè)試的端口信號(hào)打一拍再進(jìn)行測(cè)試,因?yàn)檩斎胼敵龆丝诘尿?qū)動(dòng)單元類型往往是不一樣的,比如兩個(gè)紅框之間的rgmii_txd信號(hào)它的驅(qū)動(dòng)單元類型就是ODDR,這將影響布線到此處的邏輯分析儀ila的探針的連接,具體的我也不清楚應(yīng)該是驅(qū)動(dòng)能力不匹配之類的,反正最好實(shí)現(xiàn)的時(shí)候會(huì)報(bào)錯(cuò)。如果不打拍則在后續(xù)設(shè)置setup debug的時(shí)候就要注意去除不符合驅(qū)動(dòng)類型的信號(hào)。
2、建立debug文件
添加完debug標(biāo)記后,進(jìn)行編譯、綜合,沒有問題則可以查看當(dāng)前原理圖(其實(shí)也可以不用看,這里只是為了對(duì)比ila模塊)然后點(diǎn)擊Set Up Debug對(duì)剛剛添加的信號(hào)進(jìn)行設(shè)置。
設(shè)置的信號(hào)有幾個(gè)需要注意的地方:
1、關(guān)于時(shí)鐘域的選擇,如圖紅框部分,這些時(shí)鐘需要選擇free clock,所謂free clock(按照我自己的理解,也可能不準(zhǔn)確)就是系統(tǒng)一上電就能運(yùn)行的時(shí)鐘,并且不會(huì)因?yàn)閺?fù)位以外的條件停振,比如有些時(shí)鐘為了節(jié)省功耗,僅在需要進(jìn)行數(shù)據(jù)交換時(shí)振動(dòng),在其他時(shí)刻保持低電平,但是這種時(shí)鐘就不是free clock。
2、注意選擇具有符合標(biāo)準(zhǔn)驅(qū)動(dòng)單元的信號(hào),這里右側(cè)紅框中都是可以的,但是對(duì)于DDR型的驅(qū)動(dòng)信號(hào)就會(huì)出錯(cuò)。
3、同一個(gè)時(shí)鐘域的信號(hào)都在同一個(gè)ila模塊下,即有幾個(gè)時(shí)鐘域就會(huì)有幾個(gè)ila模塊。
這里需要注意:
1、是選擇采樣深度,會(huì)占用一定的FPGA資源,所以如果設(shè)計(jì)系統(tǒng)簡(jiǎn)單就可以選擇多一點(diǎn),可以看到較長(zhǎng)時(shí)鐘周期內(nèi)存儲(chǔ)的信號(hào)變化。
2、選擇上后,可以進(jìn)行高級(jí)設(shè)置操作(選了也沒用上==)。
可以看到這里的summary是4個(gè)時(shí)鐘域和之前選擇一致。
這是兩張?jiān)韴D,后者的紅框框部分是添加的4個(gè)ila模塊,中間藍(lán)色圓框部分是debug hub,即連接FPGA和jtag的部分。
在底部Debug窗口可以看到各個(gè)ila模塊的時(shí)鐘選擇。
對(duì)于debug hub時(shí)鐘域的選擇查看可以通過tcl命令也可以點(diǎn)擊原理圖連線的方式,在左側(cè)會(huì)有連接顯示,這里看到是連接到了ila3模塊上,這樣不太好,因?yàn)槿绻鹖la3的時(shí)鐘沒選擇對(duì)就會(huì)導(dǎo)致整個(gè)debug hub在后面下載比特時(shí)無法被檢測(cè)到,就算其他ila的時(shí)鐘對(duì)了也白瞎。因?yàn)橛?jì)算機(jī)是通過jtag返回?cái)?shù)據(jù)的,而jtag又靠著debug hub 連接fpga的ila。
3、完善XDC文件,實(shí)現(xiàn)電路
修改完成之后,依然需要保存修改,看到這里沒有保存約束文件在214行。
保存之后xdc增加了ila模塊的對(duì)應(yīng)約束。
這里對(duì)應(yīng)debug hub 的連接時(shí)鐘。
之前說了debug hub時(shí)鐘保持默認(rèn)的缺點(diǎn),這里通過tcl命令進(jìn)行修改,通過查看ug908文檔可以知道推薦的debug hub時(shí)鐘在100Mhz左右,且至少在JTAG下載速率的2.5倍以上,采樣定理嘛,一般jtag速率默認(rèn)15Mhz,查看代碼中時(shí)鐘生成部分,發(fā)現(xiàn)CLK_OUT2也就是mac的用戶側(cè)時(shí)鐘就是100Mhz,所以我們選擇debug hub時(shí)鐘為100Mhz。
修改完成后,查看xdc確認(rèn)已經(jīng)修改了(其實(shí)也可以直接通過xdc
修改,但是直接修改xdc軟件可能會(huì)提示綜合過期,讓重新綜合,而通過tcl則可以直接進(jìn)行后面的步驟)。
我們?cè)俅尾榭丛韴D,可以看到debug hub的時(shí)鐘域已經(jīng)修改。
4、生成比特流文件,進(jìn)行板級(jí)調(diào)試并抓取信號(hào)
直接生成比特文件。
相比較之前的工程版本遷移時(shí)的下載界面,紅框部分多出了后綴為ltx的文件,即邏輯分析儀的探針文件。
下載完成后會(huì)彈出4個(gè)dashboard對(duì)應(yīng)著4個(gè)不同時(shí)鐘域的ila模塊,可是沒有信號(hào),這時(shí)可以點(diǎn)擊+號(hào)進(jìn)行添加。
ctrl+a選中所有進(jìn)行添加。
添加完信號(hào)后注意右下角的觸發(fā)條件設(shè)置,同樣點(diǎn)擊+號(hào)設(shè)置需要添加的信號(hào),這里選則的是幀起始標(biāo)志sop,并且選擇觸發(fā)條件的關(guān)系為或,同時(shí)觸發(fā)值設(shè)置為1’b1,之后再點(diǎn)擊三角型的 run trigger符號(hào)即可。
這里lower部分已經(jīng)有波形了。
放大看所有的信號(hào)。
這里發(fā)現(xiàn)沒有前導(dǎo)碼是因?yàn)檫@里的4字節(jié)數(shù)據(jù)已經(jīng)是進(jìn)了mac之后經(jīng)過了8轉(zhuǎn)32的數(shù)據(jù)了已經(jīng)去掉了前導(dǎo)碼和CRC。但是upper client沒有數(shù)據(jù),原來是沒有ping都沒有發(fā)怎么有?
結(jié)果發(fā)現(xiàn)ping了也沒有,好氣。
注意之前設(shè)置的觸發(fā)條件,是或關(guān)系,于是lower的sop信號(hào)在當(dāng)前的1024個(gè)鐘內(nèi)比其他的sop先觸發(fā),而各個(gè)sop的間隔周期大于我們?cè)O(shè)置的采樣深度1024,所以無法同時(shí)顯示,刪除lower觸發(fā)條件后就有了,當(dāng)然lower又沒有了。
這邊按照同樣的步驟,添加觀察信號(hào)、添加設(shè)置觸發(fā)條件、點(diǎn)擊run trigger,就能看到波形了,注意放大后的紅框部分,有了前導(dǎo)碼,按單字節(jié)應(yīng)該是 55 55 55 d5的順序而這里由于是rgmii只是半字節(jié),所以是 5 5 5 5 5 5 5 d。
對(duì)ila3按同樣的步驟操作當(dāng)我們點(diǎn)擊run trigger的時(shí)候會(huì)發(fā)現(xiàn)出現(xiàn)unable to arm ila core的錯(cuò)誤,這就是時(shí)鐘域的問題,由于我們選擇的是rgmii_rx_clk這是由phy提供的,但是ila3即例化時(shí)的client對(duì)應(yīng)的phy沒有插網(wǎng)線,所以也沒有時(shí)鐘,自然無法arm ila core。
這里特意為了對(duì)比不同時(shí)鐘域的選擇對(duì)于ila的影響,其實(shí)也可以將lower upper client的ila時(shí)鐘域都設(shè)置成用戶側(cè)即CLK_OUT2因?yàn)檫@個(gè)時(shí)鐘一直存在,這樣即使ila3對(duì)應(yīng)的模塊的網(wǎng)口沒有插網(wǎng)線,在dashboard上顯示也會(huì)有全0 的數(shù)據(jù),就和ila0 一樣,可以翻到前面去看看,這里的lower upper client的ff_rx_data[31: 0]來自三個(gè)獨(dú)立的例化模塊,但是也可以放到同一個(gè)時(shí)鐘域。表達(dá)的不太好實(shí)踐一下就能知道了。
審核編輯:湯梓紅
-
信號(hào)
+關(guān)注
關(guān)注
11文章
2773瀏覽量
76539 -
調(diào)試
+關(guān)注
關(guān)注
7文章
571瀏覽量
33872 -
文件
+關(guān)注
關(guān)注
1文章
561瀏覽量
24671 -
端口
+關(guān)注
關(guān)注
4文章
948瀏覽量
31985 -
Vivado
+關(guān)注
關(guān)注
19文章
804瀏覽量
66224
原文標(biāo)題:Vivado工程升級(jí)及板級(jí)信號(hào)調(diào)試
文章出處:【微信號(hào):HXSLH1010101010,微信公眾號(hào):FPGA技術(shù)江湖】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論