RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

ISE工程升級到Vivado及板級信號調(diào)試

FPGA技術(shù)江湖 ? 來源:網(wǎng)絡(luò)交換FPGA ? 2023-01-30 09:11 ? 次閱讀

本次操作包括:工程的版本遷移,板級測試時信號的抓取。

ISE工程轉(zhuǎn)到Vivado2018.2環(huán)境下

版本遷移的操作想必大家已經(jīng)做過不少了,其中包括從ISE轉(zhuǎn)換到vivado與vivado老版本遷移到新版本。鄭智海同學(xué)給大家介紹了一下如何把工程從ISE遷移到vivado中。

首先我們拿到的是一個ISE的工程,當(dāng)然是不能夠直接用Vivado軟件打開的,所以我們要進(jìn)行第一步操作,將工程導(dǎo)入進(jìn)去:

打開Vivado2018.2后,點(diǎn)”Creat Project”后,再點(diǎn)擊Imported Project,勾選ISE后,尋找到ISE工程所放在的位置進(jìn)行添加,記得添加的是后綴為.xise的文件,因為之前我點(diǎn)的是別的形式,就一直添加不了,這個小問題要注意。操作如下列圖步驟所示。

91c8350e-a005-11ed-bfe3-dac502259ad0.png

選擇好后點(diǎn)擊Next鍵繼續(xù),并選擇好自己的工程目錄。

91e91576-a005-11ed-bfe3-dac502259ad0.png

Project_1就是我想將工程建在此文件夾中。

920e624a-a005-11ed-bfe3-dac502259ad0.png

勾選ISE之后,選擇ISE所在文件目錄。

922cb38a-a005-11ed-bfe3-dac502259ad0.png

選擇好ISE工程之后就算成功將ISE導(dǎo)入vivado2018.2了,也就算完成了第一步工作。

923c4c32-a005-11ed-bfe3-dac502259ad0.png

926590c4-a005-11ed-bfe3-dac502259ad0.png

如上面兩張圖所示,進(jìn)入vivado2018.2頁面后,會顯示出這個界面,此時你的IP核在這里是處于過期的狀態(tài),因為在ise里的ip核到了vivado中不一定適用,不同軟件中的ip核是不兼容的,這里很簡單,只需手動升級,即選中ip核并點(diǎn)擊右鍵,有一個upgrade up代表升級,點(diǎn)擊之后會出現(xiàn)下面界面:

9277d6ee-a005-11ed-bfe3-dac502259ad0.png

點(diǎn)擊ok后進(jìn)行g(shù)enerate后,ip核就會自動更新完成:

9290ed78-a005-11ed-bfe3-dac502259ad0.png

完成ip核更新后,還有一個重要的問題是此時的約束文件的格式是ucf(代表的是ise的約束文件格式),但vivado是不支持這種格式的,我們需要將ucf轉(zhuǎn)成xdc格式。這里我想介紹兩種方法:逐行代碼手動修改與圖形界面配置修改。

1、手動更改

根據(jù)ucf的約束管腳,對應(yīng)著寫一個xdc文件。

92b0b888-a005-11ed-bfe3-dac502259ad0.png

逐行修改就是根據(jù)上圖的轉(zhuǎn)換規(guī)則,一行一行地把代碼改成xdc形式。下面放上部分一行行修改后的代碼。

92c58b8c-a005-11ed-bfe3-dac502259ad0.jpg

92d3d1ba-a005-11ed-bfe3-dac502259ad0.jpg

2. 圖形界面配置管腳

而通過圖形界面修改就方便得多,鼠標(biāo)點(diǎn)點(diǎn)即可。在完成synthesis之后,打開implement選項:

92fc14e0-a005-11ed-bfe3-dac502259ad0.png

930b70fc-a005-11ed-bfe3-dac502259ad0.jpg

在I/O Ports窗口展開管腳,對于每個輸入輸出信號,在Site欄選擇對應(yīng)的管腳,注意確保Fixed欄處于勾選狀態(tài),I/O Std常選擇LVCMOS25。設(shè)置好后,Implemented Design窗口標(biāo)題欄會顯示一個*號,表示設(shè)置發(fā)生了更改。按Ctrl+S快捷鍵保存設(shè)置,會彈出窗口如圖,提示保存constraints文件會導(dǎo)致綜合與實現(xiàn)過期。也就是說,修改了管腳分配設(shè)置后,需要重新進(jìn)行綜合、實現(xiàn)操作。

隨后會彈出保存新文件的窗口,選擇Create a new file并輸入文件名,點(diǎn)擊OK即可。

9323df2a-a005-11ed-bfe3-dac502259ad0.jpg

此時約束文件就已經(jīng)生成,保存之后就可以在vivado的約束部分看到自己的xdc了。個人認(rèn)為如果ucf文件不是特別多的話可以手動更改,如果很多的話可能就需要在tcl輸入對應(yīng)的腳本去更改,這個我就還沒嘗試過。

板級測試時信號的抓取

1、添加調(diào)試的信號

添加信號抓取要先進(jìn)行synthesis操作,然后open synthesis,點(diǎn)擊Set up debug。

9344765e-a005-11ed-bfe3-dac502259ad0.png

在這之前,你就應(yīng)該想好你要debug哪些信號,抓哪些信號去看波形,當(dāng)你想用ila抓取哪些信號時,你就可以在代碼前標(biāo)記出(*mark_debug = "true"*)或者(*mark_debug = "1"*).因為標(biāo)記了之后,你點(diǎn)擊set up Debug之后就可以在信號列表中找到相應(yīng)的信號。

9362dd42-a005-11ed-bfe3-dac502259ad0.png

9378d340-a005-11ed-bfe3-dac502259ad0.jpg

上圖是我所標(biāo)記的部分信號,當(dāng)然我們需要對代碼的功能進(jìn)行分析,你才好判斷。這里還要提及一點(diǎn),盡量不要抓頂層的信號,因為頂層的信號往往是沒有經(jīng)過處理的信號,這樣子很有可能ila是抓不出來波形的。

93948324-a005-11ed-bfe3-dac502259ad0.png

那么對于我的工程主要是rgmii轉(zhuǎn)gmii,即是一個4位數(shù)據(jù)轉(zhuǎn)換成8位數(shù)據(jù),再對接受的8位數(shù)據(jù)進(jìn)行一個CRC的校驗,那么我們當(dāng)然是想抓接收到4位的數(shù)據(jù)和接收8位的數(shù)據(jù),這樣你就有了目的,可以在代碼中尋找到輸入或者輸出位寬是4的數(shù)據(jù),再找位寬為8的數(shù)據(jù),進(jìn)行mark debug。

93a0b1d0-a005-11ed-bfe3-dac502259ad0.png

如圖就是告訴你可以選擇對應(yīng)的信號進(jìn)行標(biāo)記,并且可以選擇他們的時鐘域,之后可以對你選擇的信號給予一定的值進(jìn)行觸發(fā)。

93cd70e4-a005-11ed-bfe3-dac502259ad0.png

93e0f29a-a005-11ed-bfe3-dac502259ad0.png

你在代碼里標(biāo)記之后,就會在列表中出現(xiàn)對應(yīng)信號,這里需要注意的地方有以下幾個點(diǎn):

A.Clock Domain

這個地方是時鐘域的選擇,這個是非常講究的,有時候你抓不到波形的原因就是因為參考時鐘太慢,信號往往是從一個快時鐘域下來的,你拿慢時鐘去抓,就抓不到,而且時鐘域選擇不當(dāng)在布局布線的過程往往都會報錯。報錯的原因是因為你所選的時鐘和ila所連接的距離太遠(yuǎn),布局布線太困難,這時候你需要更改你的時鐘域。這里再說一個概念叫free clock,free clock是要求上電無條件運(yùn)行的時鐘,一般直接用晶振時鐘,是比較穩(wěn)定的時鐘,給予電路永久的一種時鐘。所以在選擇時鐘的時候我們都需要考慮去選擇free clock。

B.Driver cell

對于DDR型的驅(qū)動信號在布局布線過程中往往都會失敗的,像圖中的IDDR和ODDR,他們是一種原語,由一個時鐘輸入,下降沿數(shù)據(jù)由輸入時鐘的本地反轉(zhuǎn)來計時的,反饋到I/O塊的所有的時鐘被完全復(fù)用,總之在加入debug的時候,要把這兩種DDR型的驅(qū)動信號刪除。個人感覺如果在這些信號再接一個IBUF,再將輸出試著添加debug,有可能能成功。

C.ila的個數(shù)問題

94032a54-a005-11ed-bfe3-dac502259ad0.png

94198a2e-a005-11ed-bfe3-dac502259ad0.png

當(dāng)你選擇了幾個時鐘域,你就會對應(yīng)有幾個ila,如果你選的時鐘都是一樣的,那么你就只有一個ila。

如上圖所示,是我最終留下來的信號,并將它們的時鐘都選擇了clk_out2,通過代碼里的clk_gen模塊可以知道clk_out2的時鐘是100MHZ,這里選擇100MHZ還有一個原因是debug hub也應(yīng)該選擇在100MHZ,至少在JTAG下載速率的2.5倍以上,而JTAG一般默認(rèn)在15MHZ,所以我們選擇clk_out2也是OK的,個人感覺時鐘域的選擇還是要在clk_gen給出的選擇里挑選,這樣的時鐘一般都是free clock,時鐘域選擇的越多,ila越多,布局布線的困難往往就會更大,所以個人覺得要控制ila的數(shù)量,不然很容易出錯。還有就是采樣深度的選擇,如果你的信號不多的話可以默認(rèn)1024,不然也會占用一定的FPGA資源,不過感覺影響也不大。還有Capture control和Advance trigger兩個感覺也是可勾選也可以不勾選。

944e2bd0-a005-11ed-bfe3-dac502259ad0.jpg

之后我們看到,由于我們只選擇了一個時鐘域out2,所以它給我們分配了一個ila0以及1個時鐘域。之后就點(diǎn)擊finish就可以了。完成之后還需要進(jìn)行保存,保存之后xdc就會自動添加ila和debug hug的部分,將你所需要檢測的信號與ila上的探頭進(jìn)行連接:

945ad196-a005-11ed-bfe3-dac502259ad0.png

在這里你可以檢查自己的xdc是否是準(zhǔn)確的,管腳對應(yīng)探頭的位置,同時可以看到u_ila_0已經(jīng)例化,并寫在了xdc里面。

94673936-a005-11ed-bfe3-dac502259ad0.jpg

2、修改調(diào)試信號的時鐘域

需要注意的是最后一行的debug_hub的時鐘,由于我只選擇了一個時鐘域out2,那么hub的時鐘就是默認(rèn)為out2(雖然它顯示的是Clk_user),當(dāng)有多個ila的時候,hub的時鐘往往默認(rèn)的都會出問題,可能它會與其他的ila時鐘默認(rèn)連接,如果此時的ila時鐘為0的話,那么就會出問題。例如現(xiàn)在有兩個ila_0和ila_1,分別對應(yīng)兩個時鐘clk_out1,clk_out2,然后同時連在一個hub上,默認(rèn)下,hub的clk是連到ila_1的clk_out2上,這對ila_0就有問題,不同的時鐘域,將會導(dǎo)致hub不工作。所以我們可以對hub的時鐘進(jìn)行更改:

94763f9e-a005-11ed-bfe3-dac502259ad0.png

a. 直接在xdc上進(jìn)行更改

可以直接在xdc上進(jìn)行更改,如上圖可以在get_nets后面的內(nèi)容進(jìn)行更改,比如我需要改為clk_gen里引出的clk_2,那么我們可以寫為get_nets clk_gen/CLK_OUT2,保存即可。不過修改之后的xdc可能還要需要重綜合,因為會顯示綜合過期,比較麻煩,所以我們可以用tcl命令去更改,就可以直接省去這一步,所以tcl的腳本還是很給力的,之后還要多加學(xué)習(xí)這方面。

94aa674c-a005-11ed-bfe3-dac502259ad0.png

b.采用tcl進(jìn)行更改或者圖形界面更改

直接在tcl的path里輸入命令后,xdc就會被自動更改。我們可以打開綜合設(shè)計里的Schematic里去查看代碼所生成的電路情況,包括各個走線的情況,可以找到對應(yīng)生成的hub和如下圖的ila_0。

94b29e1c-a005-11ed-bfe3-dac502259ad0.png

可以看到u_ila_0中有引出的探頭,與所測的信號相連接。

94cb5330-a005-11ed-bfe3-dac502259ad0.png

94ec2ca4-a005-11ed-bfe3-dac502259ad0.png

把圖縮小,可以看到整體的情況,標(biāo)藍(lán)色的線就是ila_0和hub的clk共同連接到模塊gen_clk所引出的CLK_OUT2上,同時可以看出hub的輸入與輸出都是緊緊與ila_0相連接的,在我們分析debug哪些信號的的時候,可以觀察Schematic,判斷各個總線所連接的情況,往往比讀代碼更要直觀。

9512947a-a005-11ed-bfe3-dac502259ad0.png

如上圖所示,我們還可以打開vivado頁面的Debug,里面會有生成好的ila和hub,包括探頭所連接的信號,還有他們的時鐘域。這里還應(yīng)該注意到有一個Unassigned Debug Nets,這個就是你有在代碼里標(biāo)注mark debug信號,但在最終選擇debug信號列表里刪除了,它可能是DDR的驅(qū)動信號,或者是你不需要看的信號。倒不是很重要,就是可以注意一下,所以說有很多地方都可以檢測你的ila生成的是否正確。每次更改debug的時候都記得要保存,同時還應(yīng)該檢查xdc是否刪除干凈并生成了新的ila。

在抓信號的的時候我曾經(jīng)出現(xiàn)過這種狀況,后來發(fā)現(xiàn)是xdc里有未刪除干凈的ila_1,這些問題都是需要注意的。

到這就完成了mark debug的工作,然后直接布局布線,并生成比特流,如果沒有問題那就能正常的生成比特流了。

3、生成比特流文件并下載抓取信號

95222d68-a005-11ed-bfe3-dac502259ad0.png

953bc110-a005-11ed-bfe3-dac502259ad0.png

完成比特流生成后,點(diǎn)擊Open Hardware Manager后,再點(diǎn)擊Auto Connect之后右鍵點(diǎn)擊Program Device.第一行是我們比特流生成的文件,第二行則是我們邏輯分析儀的探頭文件,也就是ltx文件。

954eaa46-a005-11ed-bfe3-dac502259ad0.png

95695e5e-a005-11ed-bfe3-dac502259ad0.png

9578c4c0-a005-11ed-bfe3-dac502259ad0.png

9586992e-a005-11ed-bfe3-dac502259ad0.png

959cff34-a005-11ed-bfe3-dac502259ad0.png

95c0f9f2-a005-11ed-bfe3-dac502259ad0.png

如上圖所示,要在Waveform中添加相應(yīng)你想看到的信號,才會在ila窗口出現(xiàn)波形,同時要在右下角添加觸發(fā)信號,例如ctl,或者是mac里的dval(這些算是觸發(fā)信號,抓的時候要一同帶上,是用來指示當(dāng)前數(shù)據(jù)有效的信號)我剛開始沒有在waveform的頁面添加想看的信號,只在右下角添加了觸發(fā)信號ctl,然后怎么樣也看不到波形,以為自己哪里出了問題,后來才發(fā)現(xiàn)沒有添加想看的信號。

95e3cc70-a005-11ed-bfe3-dac502259ad0.jpg

這里很重要的一點(diǎn)是在選號觸發(fā)條件之后(三個ctl都是等于1的時候觸發(fā)),一定要記得更改觸發(fā)條件,一開始我選擇的是AND(即當(dāng)三個同時為1的時候才滿足觸發(fā)條件),導(dǎo)致我的信號都是0

如圖所示,我所添加的信號都為0,就是因為觸發(fā)條件沒選對。后來我將AND改為OR,只要他們?nèi)齻€有一個為1,那么就滿足了觸發(fā)條件,之后點(diǎn)擊run進(jìn)行觸發(fā):

95f17ab4-a005-11ed-bfe3-dac502259ad0.png

如圖所示,當(dāng)client的信號ctl拉高的時候,rgmii_rxd開始接收到4位二進(jìn)制的有效數(shù)據(jù),之后從CCD模塊的rxd_o里接收到了8位二進(jìn)制的有效數(shù)據(jù)。

9605b056-a005-11ed-bfe3-dac502259ad0.png

如圖5變成了55,f變成了ff,同時ff前面還帶著一個d5,f前帶著一個d,那么d5就算是前導(dǎo)碼,然后是目的地址,源地址,那么半字節(jié)就是d??傊覀兊玫轿覀冏罱K想要的波形,就算是成功了。當(dāng)然我們注意到lower和upper的信號都是0。

962edfe4-a005-11ed-bfe3-dac502259ad0.jpg

應(yīng)該是Zedboard板子的網(wǎng)口只插上了1口,可能client剛好對應(yīng)在1口上,所以不是信號傳輸有什么問題,是網(wǎng)口沒接上。

當(dāng)然還應(yīng)該可以添加更多的信號進(jìn)行debug,還需要不斷地去嘗試,不過最主要的信號還是需要找出來debug的,這也需要對工程的代碼有一定的了解,借助Schematic網(wǎng)圖進(jìn)行不斷地分析。

9644fd1a-a005-11ed-bfe3-dac502259ad0.jpg

總結(jié)

這里我還想說的就是,有一段時間我一直出現(xiàn)這種狀況,無論是改變debug信號,還是更改他們的時鐘域,最終Program device后都會出現(xiàn)沒有debug cores的情況,感覺很迷,最后我重新將這個ISE工程又導(dǎo)入一個新的文件,重新操作后就解決了,可能有時候一直弄不出來的話,可以考慮重新建工程,或者重新將工程導(dǎo)入。

再總結(jié)一下這次調(diào)試所遇到的一些問題

1、ere are no debugs core.

2、布線出現(xiàn)問題

3、A clock has stopped. Uable to arm ILA core

4. The debug hub core was notdetected.

5. Device is programmed with adesign that has no supported debug core(s) in it.

這些大部分還是時鐘域的問題,時鐘域?qū)е铝薲ebug失敗,所以在選擇時鐘域方面,我還要多加嘗試。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 信號
    +關(guān)注

    關(guān)注

    11

    文章

    2789

    瀏覽量

    76727
  • 調(diào)試
    +關(guān)注

    關(guān)注

    7

    文章

    578

    瀏覽量

    33923
  • ISE
    ISE
    +關(guān)注

    關(guān)注

    1

    文章

    100

    瀏覽量

    36520
  • Vivado
    +關(guān)注

    關(guān)注

    19

    文章

    812

    瀏覽量

    66470
  • UCF
    UCF
    +關(guān)注

    關(guān)注

    0

    文章

    9

    瀏覽量

    9628

原文標(biāo)題:ISE工程升級到Vivado及板級信號調(diào)試

文章出處:【微信號:HXSLH1010101010,微信公眾號:FPGA技術(shù)江湖】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    STM32CubeMX版本升級由6.2.1升級到6.3.0后原工程重新編譯code文件變大什么原因?

    STM32CubeMX版本升級由6.2.1升級到6.3.0后原工程重新編譯code文件變大什么原因
    發(fā)表于 04-02 07:31

    從Z-Stack版本1.3升級到1.4(中)

    從Z-Stack版本1.3升級到1.4(中)歡迎研究ZigBee的朋友和我交流。。。
    發(fā)表于 08-12 21:14

    是否可以從Xilinx ISE 10.1升級到Xilinx ISE 11.1而無需付費(fèi)?

    我們目前在計算機(jī)上安裝了Xilinx ISE 10.1,但我們需要CORDIC v4.0,它是新型Xilinx ISE 11.1的一部分。是否可以從Xilinx ISE 10.1升級到
    發(fā)表于 11-16 11:48

    是否可以將ISE升級到版本12.4并保留相同的許可證?

    你好,我有一個Virtex6 Ml605主板,我一直在使用12.1版的ISE設(shè)計套裝。我想知道是否可以將ISE升級到版本12.4并保留相同的許可證?謝謝以上來自于谷歌翻譯以下為原文hello, i
    發(fā)表于 11-26 15:01

    可以重新安裝Vivado/ISE 14.6然后使用Win10重新訪問Virtex-5設(shè)計嗎?

    我有兩張標(biāo)有“Vivado Design Suite 2013.2”和“ISE Design Suite 14.6”的光盤,我之前在Virtex-5設(shè)計上使用過Win7。最近將操作系統(tǒng)升級到
    發(fā)表于 12-29 13:53

    升級到Vivado 2017.4.1沒有安裝新設(shè)備

    大家好,今天我將Vivado升級到2017年的Update 1,以便訪問XC7S25,XC7A12和XC7A25設(shè)備。據(jù)我所知,更新成功完成; 2017.4是我唯一的Vivado版本,安裝程序在重新
    發(fā)表于 12-29 11:14

    labview怎么從2015升級到2017

    labview怎么從2015升級到2017?
    發(fā)表于 03-15 16:31

    玩轉(zhuǎn)Zynq連載5——基于Vivado的在線板調(diào)試概述

    階段:將在線調(diào)試的IP核集成設(shè)計工程中,完成編譯并生成調(diào)試的下載配置文件?!穹治鲭A段:使用
    發(fā)表于 05-24 15:16

    請問SP601可以升級到LX45嗎?

    SP601可以升級到LX45嗎?常見問題解答不明確:6.我可以升級到更大或更快的設(shè)備嗎?答:是的,您可以但這樣做會使Xilinx保修失效,并且不會提供對電路的支持。通常,CS324
    發(fā)表于 08-22 10:27

    VivadoISE的開發(fā)流程以及性能差異

    。System Generator 的用戶也會注意 MATLAB/Simulink 在版本 2012b 中所作的接口升級(這和 ISE Viv
    發(fā)表于 01-08 17:07

    MounRiver升級到1.82,固件升級后提示錯誤怎么解決?

    如題。芯片是CH582. 一直用得好好的。今天MounRiver升級到1.82,問我要不要升級WCH-link固件。我隨便說要(嚴(yán)重錯誤?。。?。固件升級調(diào)試時出現(xiàn)如下提示:馬上要交功
    發(fā)表于 09-29 07:16

    MounRiver在下載配置里要我升級到2.7版本,在調(diào)試時要我升級到2.3版本?

    當(dāng)前版本為2.3的時候,進(jìn)入下載配置:當(dāng)前版本為2.3的時候,進(jìn)行調(diào)試:在下載配置里,將版本升級到2.7以后,進(jìn)行調(diào)試:從2.7恢復(fù)2.3以后,不能
    發(fā)表于 10-08 06:46

    iphone4升級5.1.1教程_iphone4如何升級到ios5

    iphone4如何升級到ios5?iphone4升級到ios5.1.1教程,iphone4怎么升級到ios5,小編在這里為大家介紹了iphone4升級到ios5的方法
    發(fā)表于 09-18 09:48 ?5w次閱讀
    iphone4<b class='flag-5'>升級</b>5.1.1教程_iphone4如何<b class='flag-5'>升級到</b>ios5

    如何升級Vivado工程腳本

    Vivado可以導(dǎo)出腳本,保存創(chuàng)建工程的相關(guān)命令和配置,并可以在需要的時候使用腳本重建Vivado工程。腳本通常只有KB級別大小,遠(yuǎn)遠(yuǎn)小于工程
    發(fā)表于 08-02 10:10 ?1836次閱讀

    Vivado工程升級信號調(diào)試方案

    本次操作包括:工程的版本遷移,測試時信號的抓取。
    的頭像 發(fā)表于 02-09 09:36 ?2398次閱讀
    RM新时代网站-首页