国产又黄又猛又粗又爽的A片动漫,强吻亲胸揉胸膜下刺激视频,男女无遮挡吃奶gift动态图,巨胸喷奶水WWW冈哺乳期

【技術(shù)分享】FPGA雜記之安路TD中chipwatcher工具的使用和注意事項(xiàng)

日期:2021-02-01 作者:潤欣科技創(chuàng)研社 返回列表

一、什么是chipwatcher


在編程開發(fā)過程的調(diào)試階段,可以借助一些編譯環(huán)境集成的工具幫助我們更好地定位問題。當(dāng)我們完成一份工程代碼但是觀測不到我們想要的結(jié)果時(shí),我們需要進(jìn)一步確認(rèn)是哪部分的代碼出現(xiàn)了偏差導(dǎo)致得不到我們想要的結(jié)果。


對于MCU來說,我們可以借助JLINK仿真器來實(shí)現(xiàn)斷點(diǎn)測試,進(jìn)而觀察每一步的數(shù)據(jù)變化,從而定位到問題所在;對于FPGA而言,想要觀察內(nèi)部信號的變化,也有對應(yīng)的工具可以使用。


這些工具,不同的芯片廠商根據(jù)自家的編譯環(huán)境集成了他們各自的工具,例如,Xilinx ISE的chipscope,altera quartus II 的SignalProbe等。本文中安路TD的chipwatcher也是用于觀測電路內(nèi)部信號變化的工具,可以認(rèn)為這是一款類似于邏輯分析儀的工具,只不過觀測的信號不是芯片引腳上面的信號,而是電路內(nèi)部的信號。


當(dāng)我們需要定位問題的時(shí)候,可以在工具中添加我們想要查看的信號,通過抓取波形來確認(rèn)信號是否在根據(jù)我們的需求進(jìn)行變化。


二、Chipwatcher使用流程


首先,一個(gè)FPGA工程常見的構(gòu)成如下:


1. 功能代碼文件:后綴為.v的文件,通俗地講就是我們自己寫的代碼。


2. 例化的IP文件:通過編譯軟件來例化的IP的代碼,不同廠商例化后的IP文件名后綴有差異,安路的TD中直接將例化完畢后的.v文件加入工程即可。這類文件不是必須的,有用到需要的IP就加,沒有不加。


3. IO約束文件:用來定義整個(gè)工程的輸入輸出信號對應(yīng)的具體芯片引腳是哪個(gè)。這類文件可以不加,不加的話編譯工具會自動(dòng)分配IO口。


4. 時(shí)鐘約束文件:即SDC文件。同IO約束文件,不加的話編譯器會自己約束,因此當(dāng)工程較大時(shí)序較為復(fù)雜時(shí)通常需要我們自己約束。


以上四種文件通過編譯后一起生成的整個(gè)工程的bit文件燒錄進(jìn)FPGA芯片后,假設(shè)代碼功能正常,則芯片開始工作。


假設(shè)功能不正常,當(dāng)我們想要觀察電路內(nèi)部信號的時(shí)候,我們還需要在工程中加入另一類文件,即第五類文件,然后將這五類文件統(tǒng)一打包成bit文件后下載進(jìn)FPGA,此時(shí)才可以利用工具觀測和抓取到我們想看的信號。

這第五類文件,在TD中,即為Chipwatcher工具生成的.cwc文件。


下圖展示了一個(gè)加入.cwc文件后的工程目錄(該工程中未加入時(shí)序約束文件):


1611906605292947.png


生成cwc文件的過程如下:


Tools -> Debug Tools -> chipwatcher


1611906617914639.png



進(jìn)入到chipwatcher頁面:


1611906677350485.png



如上圖,①區(qū)是選擇采樣時(shí)鐘和采樣深度,采樣時(shí)鐘的選擇注意要選擇全局時(shí)鐘中頻率最高的時(shí)鐘,采樣深度越深(即數(shù)值越大),最終生成的bit文件所占用的芯片資源越多。


②區(qū)是添加想觀察的信號的區(qū)域,添加方法:在該區(qū)域右鍵后,選擇add nodes進(jìn)入到信號選擇的頁面,如下:


1611906703269298.png



如圖可以選擇想要觀察的信號至右側(cè),全部選擇完畢后,點(diǎn)擊OK即可。


需要注意的是,有些信號會自動(dòng)被編譯器優(yōu)化,而在list中不被顯示,此時(shí)若是想觀測對應(yīng)的信號,可以回到我們的代碼中加上如下關(guān)鍵詞即可:


1611906725543453.png



添加完想要觀察的信號后,設(shè)置觸發(fā)條件。


1611906741615946.png


如圖,在trigger enable欄選擇觸發(fā)信號,在rigger condition欄選擇觸發(fā)條件(右鍵)


觸發(fā)條件共有以下幾種:


1611906801264182.png



分別表示低電平觸發(fā)、高電平觸發(fā)、上升沿觸發(fā)、下降沿觸發(fā)和邊沿觸發(fā)。


1611907014796725.png



在如上圖處設(shè)置觸發(fā)信號之間的關(guān)系。圖中設(shè)置為或,即只要其中一個(gè)信號滿足條件即可。


上圖中的整體觸發(fā)條件設(shè)置完畢后可敘述為:當(dāng)int_mem_we信號或int_mem_re信號其中之一為高電平時(shí),抓取當(dāng)前int_mem_wdata[31 :0]、int_mem_addr[10 :0]、int_mem_rdata[31 :0]、int_mem_we和int_mem_re的波形。


編輯完畢后即可保存文件。


1611907048752659.png


保存后生成對應(yīng)的cwc文件,同時(shí)將文件加入工程,最后編譯下載至開發(fā)板。


1611907069119598.png



(注釋:①為將生成的cwc文件加入工程,②為編譯工程,③為將bit文件下載至開發(fā)板)


下載成功后,返回chipwatcher設(shè)置頁面,如下圖選擇single trigger,即單次觸發(fā)。


1611907089301165.png


當(dāng)程序運(yùn)行并滿足觸發(fā)條件時(shí),chipwatcher會抓取到波形,如下:


1611907111255057.png


三、FPGA調(diào)試與MCU調(diào)試的一些思路差異


Chipwatcher的調(diào)試過程大體如第二章中所示,但是很長一段時(shí)間,我并沒有在chipwatcher中觀察到任何波形,究其原因是沒有從MCU調(diào)試的思維轉(zhuǎn)變過來。


MCU的斷點(diǎn)調(diào)試,可以認(rèn)為是一步一步執(zhí)行的,沒有點(diǎn)擊下一步之前,程序會一直停留在當(dāng)前位置(除非程序跑飛)。


而FPGA調(diào)試沒有這種機(jī)制,當(dāng)bit文件下載至芯片后,程序是一直執(zhí)行的,而點(diǎn)擊single trigger后只不過是當(dāng)滿足觸發(fā)條件時(shí)抓取當(dāng)前波形而已。抓取完畢會顯示波形,程序卻依舊在繼續(xù)執(zhí)行,不會停留在抓取完畢的那一刻。


當(dāng)我使用chipwatcher觀察AHB協(xié)議傳輸時(shí),沒有在數(shù)據(jù)線和地址線上面觀察到波形就是沒有意識到這點(diǎn)。在bit文件下載進(jìn)芯片時(shí)傳輸就已經(jīng)開始了(對比MCU的調(diào)試,通常MCU調(diào)試開始時(shí),環(huán)境一般會在main函數(shù)起始自動(dòng)設(shè)置斷點(diǎn)),假設(shè)傳輸在我開啟觸發(fā)按鍵前就已經(jīng)完成,則傳輸線上就會一直觀察不到數(shù)據(jù),觸發(fā)條件也會一直不成立。


因此,為了確保能夠順利抓取到傳輸?shù)臄?shù)據(jù),需要在傳輸前設(shè)置相應(yīng)的延時(shí),保證當(dāng)點(diǎn)擊single trigger,chipwatcher開始根據(jù)設(shè)置的觸發(fā)條件抓取波形時(shí),數(shù)據(jù)的傳輸還沒有開始。


例程是MCU和FPGA根據(jù)AHB協(xié)議進(jìn)行通信,因此后來我在MCU的工程中添加了一段延時(shí):


13.png



確保留出足夠的時(shí)間來操作chipwatcher。

返回列表
东阳市| 榆社县| 安岳县| 阳城县| 诏安县| 荣成市| 汶上县| 信阳市| 普兰店市| 黄浦区| 威远县| 赤峰市|