李 卿,董志丹,惠 鋒
(無錫中微億芯有限公司,江蘇無錫 214072)
目前,賽靈思(Xilinx)與阿爾特拉(Altera)占據(jù)近90%的現(xiàn)場(chǎng)可編程邏輯門陣列(Field-Programmable Gate Array,FPGA)電路市場(chǎng)份額,形成壟斷的格局[1],而國(guó)內(nèi)FPGA技術(shù)還處于起步階段,因此,F(xiàn)PGA國(guó)產(chǎn)化迫在眉睫。國(guó)產(chǎn)FPGA的推廣與使用必然離不開在線調(diào)試軟件的支撐,在線調(diào)試軟件作為FPGA應(yīng)用開發(fā)軟件的重要組成部分,能有效提高用戶調(diào)試效率,縮短設(shè)計(jì)開發(fā)周期,對(duì)國(guó)產(chǎn)化FPGA產(chǎn)業(yè)起到積極的推動(dòng)作用。
傳統(tǒng)的調(diào)試設(shè)備因其價(jià)格昂貴、需引出的輸入輸出管腳受限等因素已無法滿足日益發(fā)展的FPGA需求[2-3],因此,世界領(lǐng)先的FPGA廠商在推出FPGA產(chǎn)品的同時(shí)也推出了相應(yīng)的系統(tǒng)邏輯分析儀,如Xilinx公司的Chipscope片上邏輯分析儀、Altera公司的Signal TAPII嵌入式邏輯分析儀、愛特(Actel)與新思科技(Synopsys)聯(lián)合推出的Identify AE在線調(diào)試工具[4-7]。它們均通過軟核實(shí)現(xiàn)芯片內(nèi)的信號(hào)采集,然后使用計(jì)算機(jī)軟件實(shí)時(shí)監(jiān)測(cè)FPGA芯片的內(nèi)部信號(hào)變化。該方式操作方便、價(jià)格低廉,能快速實(shí)現(xiàn)復(fù)雜FPGA的在線調(diào)試[4]。本文設(shè)計(jì)的在線調(diào)試軟件也是基于軟核實(shí)現(xiàn),與Xilinx調(diào)試軟件相比具有更好的用戶體驗(yàn)、調(diào)試效率和調(diào)試準(zhǔn)確度。目前,該軟件已成功應(yīng)用于國(guó)產(chǎn)FPGA芯片中,大大推動(dòng)了國(guó)內(nèi)FPGA技術(shù)的發(fā)展。
本文設(shè)計(jì)的在線調(diào)試軟件采用軟核-嵌入式邏輯分析核(Integrated Logic Analyzer,ILA)實(shí)現(xiàn)芯片內(nèi)的信號(hào)采集,然后通過用戶圖形界面顯示FPGA內(nèi)部的調(diào)試信號(hào)。它由ILA核屬性配置軟件和信號(hào)分析軟件組成。ILA核屬性配置軟件主要用于參數(shù)配置,并根據(jù)用戶配置生成在線調(diào)試的軟核。信號(hào)分析軟件則對(duì)觸發(fā)信號(hào)、捕獲條件等進(jìn)行設(shè)置,并以波形圖顯示調(diào)試結(jié)果,供用戶調(diào)試參考。
ILA核屬性配置軟件流程如圖1所示,ILA核屬性配置軟件對(duì)調(diào)試所需的信息進(jìn)行配置。通過該屬性配置,一方面生成反映用戶配置的配置文件,另一方面生成用戶配置的軟核網(wǎng)表文件;根據(jù)用戶配置的連接關(guān)系將軟核網(wǎng)表文件插入用戶源網(wǎng)表文件中,生成含有調(diào)試信息的網(wǎng)表文件;最后執(zhí)行裝箱、布局布線、位流生成。本軟件在執(zhí)行FPGA流程時(shí)采用自主FPGA應(yīng)用開發(fā)軟件。
圖1 ILA核屬性配置軟件流程
位流文件生成后即可啟動(dòng)信號(hào)分析軟件,其將位流下載至目標(biāo)芯片后,便可開始調(diào)試工作。信號(hào)分析軟件圖形化顯示ILA核配置信息,供用戶配置觸發(fā)參數(shù)、捕獲參數(shù)等;將配置信息通過調(diào)試接口(Joint Test Action Group,JTAG)下載到目標(biāo)芯片,用戶電路在芯片運(yùn)行的過程中,當(dāng)滿足觸發(fā)條件時(shí),ILA核采集信號(hào)并存儲(chǔ)在芯片內(nèi)的隨機(jī)存取存儲(chǔ)器塊中,并通過JTAG將采集到的信號(hào)上傳至信號(hào)分析儀軟件;該軟件將顯示回讀數(shù)據(jù)的波形圖,方便用戶查看調(diào)試信息。信號(hào)分析軟件設(shè)計(jì)流程如圖2所示。
圖2 信號(hào)分析軟件流程
本軟件由自主FPGA應(yīng)用開發(fā)軟件集中調(diào)度管理。根據(jù)用戶邏輯綜合后的網(wǎng)表文件,用戶可創(chuàng)建ILA核、配置參數(shù)信息、生成在線調(diào)試的軟核,并執(zhí)行裝箱、布局布線、位流生成,最后下載至芯片,通過信號(hào)分析軟件觀察調(diào)試信息,完整地實(shí)現(xiàn)FPGA項(xiàng)目設(shè)計(jì)開發(fā)的整個(gè)流程,有效地滿足了用戶創(chuàng)建、編譯和調(diào)試FPGA應(yīng)用開發(fā)的需求。
目前,用戶廣泛使用Xilinx ISE工具進(jìn)行FPGA應(yīng)用開發(fā)與調(diào)試,為便于用戶理解以及代碼移植,本軟件在模塊劃分與命名上盡量與Xilinx Chipscope保持一致。在線調(diào)試軟件由ILA核屬性配置軟件和信號(hào)分析軟件組成,并通過FPGA應(yīng)用開發(fā)軟件編譯生成位流文件。
用戶可自主創(chuàng)建所需的ILA核,并根據(jù)需求配置每個(gè)ILA核屬性。ILA核屬性配置軟件根據(jù)用戶配置生成相應(yīng)的軟核,并將軟核與源用戶網(wǎng)表合并,生成含有調(diào)試信息的網(wǎng)表文件,設(shè)計(jì)流程見圖1。軟件主要由軟核、屬性配置、網(wǎng)表合并三大模塊組成。
3.1.1 軟核
軟核實(shí)現(xiàn)了芯片內(nèi)的信號(hào)采集,是在線調(diào)試軟件的基礎(chǔ)。它主要由復(fù)位模塊、觸發(fā)模塊、捕獲控制模塊、存儲(chǔ)模塊、狀態(tài)模塊組成,其模塊劃分如圖3所示。復(fù)位模塊用于產(chǎn)生8路復(fù)位信號(hào),分別送給其他不同模塊;觸發(fā)模塊負(fù)責(zé)匹配比較器、觸發(fā)條件以及捕獲條件的配置,當(dāng)滿足條件時(shí)給出檢測(cè)成功的標(biāo)志信號(hào);捕獲控制模塊負(fù)責(zé)在數(shù)據(jù)捕獲階段產(chǎn)生存儲(chǔ)邏輯所需要的寫使能以及寫地址信號(hào),同時(shí)需產(chǎn)生捕獲結(jié)束的標(biāo)志信號(hào);存儲(chǔ)模塊負(fù)責(zé)在捕獲模塊的寫控制下將捕獲數(shù)據(jù)寫到芯片內(nèi)存塊中;狀態(tài)模塊負(fù)責(zé)記錄用戶配置的靜態(tài)信息和捕獲過程的動(dòng)態(tài)信息。
圖3 軟核模塊劃分
觸發(fā)模塊為軟核的核心模塊,只有滿足觸發(fā)條件時(shí)才捕獲被測(cè)用戶邏輯數(shù)據(jù),而觸發(fā)條件的比較基于比較器實(shí)現(xiàn)。與Chipscope一致,本軟件共支持Basic、Basic edge、Extend、Extend edge、Range、Range edge 6種比較器,不同比較器類型實(shí)現(xiàn)功能不同。比較器實(shí)現(xiàn)的最小單元是邏輯簇(SLICE),不同位寬的比較器需要不同數(shù)量的SLICE來實(shí)現(xiàn)。下面以Basic比較器為例講述軟核中比較器設(shè)計(jì)實(shí)現(xiàn)原理。
Basic比較器如圖4所示,用來比較輸入數(shù)據(jù)和預(yù)設(shè)的向量是否一致,一致則輸出為高電平,否則為低電平。該比較器通過移位寄存器(SRL)實(shí)現(xiàn),一個(gè)SLICE可比較19位,由3個(gè)SRL 32和1個(gè)SRL 16組成。為了簡(jiǎn)化,3個(gè)SRL 32記作SRL 32_C,SRL 32_B,SRL 32_A。當(dāng)配置數(shù)據(jù)時(shí),需要將預(yù)設(shè)的向量編碼進(jìn)查找表(LUT)中,即數(shù)據(jù)[4:0]分配到SRL 32_A上,數(shù)據(jù)[9:5]分配到SRL 32_B上,數(shù)據(jù)[14:10]分配到SRL 32_C上,數(shù)據(jù)[18:15]分配到SRL 16上;然后分別計(jì)算出對(duì)應(yīng)的SRL編碼,SRL 32的編碼長(zhǎng)度是32位,SRL 16的編碼長(zhǎng)度是16位,要匹配的數(shù)據(jù)選中位為1,其余位為0;最后將SRL編碼按照低位組在前、高位組在后的順序拼接,即:
圖4 Basic比較器
這樣當(dāng)LUT地址選擇端為預(yù)設(shè)的向量時(shí),LUT就會(huì)輸出1,從而實(shí)現(xiàn)了電平比較的功能。
3.1.2 屬性配置
用戶可自主創(chuàng)建所需的ILA核,本軟件最多支持16個(gè)核的創(chuàng)建。針對(duì)每個(gè)ILA核用戶可配置其屬性,主要包括觸發(fā)參數(shù)、捕獲參數(shù)、信號(hào)連接。觸發(fā)參數(shù)主要是對(duì)比較器參數(shù)、觸發(fā)類型進(jìn)行配置,如比較器位寬、比較器類型、是否使能比較器計(jì)數(shù)器、是否使能序列觸發(fā)等;捕獲參數(shù)主要包括數(shù)據(jù)捕獲寬度、捕獲深度、時(shí)鐘采樣方式;信號(hào)連接主要是對(duì)時(shí)鐘信號(hào)端口、觸發(fā)信號(hào)端口、要觀測(cè)的數(shù)據(jù)信號(hào)端口進(jìn)行配置。
ILA核屬性配置較多、特別是用戶邏輯較為復(fù)雜時(shí),快速連接待測(cè)信號(hào)并非易事。為提高軟件的用戶體驗(yàn)度,本軟件在信號(hào)連接模塊提供了查找過濾功能,根據(jù)用戶輸入進(jìn)行快速匹配。此外,還增加了批量信號(hào)連接、刪除、上移、下移等操作,方便用戶配置。
當(dāng)用戶屬性配置完畢后,即生成在線調(diào)試的軟核。此外,軟核生成時(shí)還保存了反映用戶配置的配置文件,該文件主要用于指導(dǎo)用戶源網(wǎng)表與軟核網(wǎng)表文件合并,以及信號(hào)分析軟件配置界面的展示。軟核生成流程如圖5所示。
圖5 軟核生成流程
3.1.3 網(wǎng)表合并
軟核網(wǎng)表文件生成之后,即可根據(jù)用戶配置的ILA核信號(hào)連接關(guān)系與源用戶網(wǎng)表文件進(jìn)行合并,生成含有調(diào)試信息的新網(wǎng)表。新網(wǎng)表作為FPGA編譯流程的輸入,最終生成含有調(diào)試信息的位流文件,其流程如圖6所示。
圖6 網(wǎng)表合并流程
含有調(diào)試信息的網(wǎng)表文件生成之后,即可執(zhí)行FPGA全流程,生成含有調(diào)試信息的位流文件,并通過JTAG下載至芯片中運(yùn)行。該流程采用自主FPGA應(yīng)用開發(fā)軟件執(zhí)行。因軟核插入至源用戶邏輯中,占用芯片內(nèi)部資源,后續(xù)布局布線容易導(dǎo)致源用戶邏輯行為發(fā)生變化,進(jìn)而影響調(diào)試的準(zhǔn)確性[8-9],故FPGA應(yīng)用開發(fā)軟件針對(duì)在線調(diào)試設(shè)計(jì)了一種高準(zhǔn)確度的在線調(diào)試編譯方法,其流程如圖7所示。對(duì)芯片所用資源進(jìn)行等級(jí)劃分,并分別對(duì)源用戶邏輯資源和軟核資源進(jìn)行裝箱、布局布線,最終生成含有調(diào)試信息的位流文件。經(jīng)驗(yàn)證,該方法能確保在加入軟核前后,源用戶邏輯行為不發(fā)生變化,從而使調(diào)試更加準(zhǔn)確。
圖7 在線調(diào)試編譯流程
信號(hào)分析軟件圖形化顯示其配置頁(yè)面,用戶可根據(jù)需求自主配置比較器參數(shù)值、觸發(fā)條件、數(shù)據(jù)捕獲條件,并動(dòng)態(tài)生成相應(yīng)的配置數(shù)據(jù),通過JTAG[10]將配置數(shù)據(jù)下載至芯片中。當(dāng)滿足觸發(fā)條件時(shí),芯片捕獲數(shù)據(jù)并回傳至信號(hào)分析軟件。信號(hào)分析軟件對(duì)捕獲數(shù)據(jù)進(jìn)行整理并以波形圖顯示調(diào)試信息,方便用戶進(jìn)行問題分析。整個(gè)軟件設(shè)計(jì)流程見圖2。
信號(hào)分析軟件的核心為將圖形界面的用戶參數(shù)轉(zhuǎn)換為芯片對(duì)應(yīng)模塊的配置信息,完成對(duì)芯片模塊的配置,達(dá)到測(cè)試的目的。對(duì)每個(gè)模塊的配置都可以分成兩步走:
(1)發(fā)送預(yù)選命令,使能該模塊(鏈)的配置使能信號(hào);(2)根據(jù)配置算法計(jì)算出該模塊(鏈)的配置數(shù)據(jù),然后加入同步頭進(jìn)行發(fā)送,當(dāng)同步成功,該鏈的配置使能變高,開始配置,當(dāng)配置結(jié)束時(shí),配置使能也變低,精確控制配置鏈的移位。
值得注意的是同一條配置鏈的模塊需要一起配置,ILA核中包含的配置鏈如下:
(1)比較器0→比較器0計(jì)數(shù)器;
(2)比較器1→比較器1計(jì)數(shù)器;
……
(16)比較器15→比較器15計(jì)數(shù)器(最多16個(gè)比較器);
(17)布爾觸發(fā)條件模塊→捕獲條件模塊;
(18)序列觸發(fā)條件模塊;
(19)窗口控制模塊。
配置數(shù)據(jù)下載流程如圖8所示。經(jīng)驗(yàn)證,配置數(shù)據(jù)下載和波形圖顯示回讀數(shù)據(jù)效率較高,較Chipscope效率顯著提升,大大縮短了調(diào)試周期。另外,波形圖可通過滾輪直接進(jìn)行縮放,操作簡(jiǎn)單、舒適,并提供多種進(jìn)制的數(shù)據(jù)顯示,方便用戶進(jìn)行數(shù)據(jù)分析。
圖8 配置數(shù)據(jù)下載流程
本文所述的在線調(diào)試軟件已應(yīng)用至國(guó)產(chǎn)FPGA芯片應(yīng)用中。經(jīng)用戶試用反饋,與Xilinx Chipscope相比,本軟件具有較大的優(yōu)點(diǎn):(1)較好的用戶體驗(yàn)度,如波形圖縮放、信號(hào)連接等;(2)較高的調(diào)試效率,如配置數(shù)據(jù)下載和波形圖顯示結(jié)果的效率大幅度提升;(3)較高的調(diào)試準(zhǔn)確度,確保軟核的加入不影響源用戶邏輯行為。對(duì)國(guó)產(chǎn)化FPGA產(chǎn)業(yè)起到積極的推動(dòng)作用?,F(xiàn)以實(shí)現(xiàn)計(jì)數(shù)器功能的用例(見圖9)進(jìn)行說明,用戶在FPGA應(yīng)用開發(fā)軟件中編寫邏輯代碼。
圖9 用戶邏輯
邏輯代碼編寫完畢,用戶便需利用在線調(diào)試軟件驗(yàn)證代碼功能的正確性。ILA核屬性配置軟件如圖10所示,在觸發(fā)參數(shù)配置頁(yè)面中設(shè)置使用一個(gè)Basic比較器,比較器位寬為10,不使能比較器計(jì)數(shù)器;在捕獲參數(shù)配置頁(yè)面中設(shè)置數(shù)據(jù)捕獲深度為1024,數(shù)據(jù)捕獲寬度為10;在信號(hào)連接屬性頁(yè)中配置要調(diào)試的信號(hào)為counter_r<0>~counter_r<9>。屬性配置完畢即可生成在線調(diào)試的軟核,其與源用戶網(wǎng)表合并后生成含有調(diào)試信息的網(wǎng)表文件。
圖10 ILA核屬性配置軟件
含有調(diào)試信息的網(wǎng)表文件執(zhí)行FPGA流程后,生成用于調(diào)試的位流文件,該位流文件經(jīng)JTAG下載至芯片中即可通過信號(hào)分析軟件查看調(diào)試信息。在信號(hào)分析軟件中設(shè)置觸發(fā)條件如圖11所示,比較器的值設(shè)置為40,捕獲深度為1024,捕獲位置為10。
圖11 信號(hào)分析軟件——觸發(fā)條件
波形圖展示芯片捕獲的數(shù)據(jù)如圖12所示。經(jīng)分析發(fā)現(xiàn),芯片共捕獲1024個(gè)數(shù)據(jù),觸發(fā)點(diǎn)值為40,觸發(fā)位置前捕獲了10個(gè)數(shù)據(jù),且捕獲的數(shù)據(jù)正確實(shí)現(xiàn)了計(jì)數(shù)功能。因此,用戶設(shè)計(jì)的邏輯代碼功能正確。
圖12 信號(hào)分析軟件——波形
隨著FPGA的飛速發(fā)展,其設(shè)計(jì)越來越復(fù)雜,致使調(diào)試工作也越來越繁重。本文設(shè)計(jì)的在線調(diào)試軟件由ILA核屬性配置軟件生成用于調(diào)試的軟核,經(jīng)FPGA全流程生成含有調(diào)試信息的位流文件并下載至芯片中運(yùn)行,通過信號(hào)分析軟件查看調(diào)試結(jié)果。經(jīng)驗(yàn)證,本軟件可有效提高調(diào)試效率,縮短設(shè)計(jì)開發(fā)周期,對(duì)國(guó)產(chǎn)化FPGA產(chǎn)業(yè)起到積極的推動(dòng)作用。但是,軟核占用芯片內(nèi)部資源,使用芯片資源較多的用戶邏輯將增加調(diào)試難度,故軟核優(yōu)化將是今后研究的重點(diǎn)。