一種基于邊界掃描結(jié)構(gòu)的fpga在線(xiàn)測(cè)試儀及測(cè)試方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種基于邊界掃描結(jié)構(gòu)的FPGA在線(xiàn)測(cè)試儀及測(cè)試方法,特別適用于檢測(cè)電子裝置上FPGA器件的功能是否完好,屬于集成電路技術(shù)領(lǐng)域。
【背景技術(shù)】
[0002]目前國(guó)內(nèi)在軍用、民用復(fù)雜電子系統(tǒng)中,F(xiàn)PGA已經(jīng)成為不可替代的核心器件。FPGA一旦出現(xiàn)損壞,會(huì)導(dǎo)致整個(gè)電子系統(tǒng)徹底喪失功能,必須確保FPGA的質(zhì)量萬(wàn)無(wú)一失。而FPGA在存儲(chǔ)、運(yùn)輸、電裝、試驗(yàn)等過(guò)程中均可能出現(xiàn)意外損壞,甚至由于采購(gòu)渠道混亂,存在以次充好、以舊充新等現(xiàn)象,部分進(jìn)口 FPGA可靠性難以保證。與ASIC不同,用戶(hù)應(yīng)用占用的FPGA資源只占FPGA總資源的很小一部分,通過(guò)用戶(hù)應(yīng)用檢測(cè)無(wú)法判斷FPGA是否存在故障。雖然首次應(yīng)用未出現(xiàn)故障,但當(dāng)用戶(hù)利用FPGA的反復(fù)可編程的特點(diǎn)進(jìn)行系統(tǒng)升級(jí)、程序修改時(shí),可能會(huì)遭遇故障資源而導(dǎo)致功能出錯(cuò)。發(fā)現(xiàn)故障時(shí),系統(tǒng)可能早已定型、交付,這將導(dǎo)致嚴(yán)重的質(zhì)量管理風(fēng)險(xiǎn)。因此,電裝后對(duì)FPGA進(jìn)行在線(xiàn)測(cè)試十分必要。
[0003]邊界掃描在線(xiàn)測(cè)試技術(shù)在電路板測(cè)試應(yīng)用領(lǐng)域中發(fā)揮了重要作用。邊界掃描測(cè)試是面向電路板測(cè)試的一種芯片可測(cè)試性設(shè)計(jì)(DFT)方法,它通過(guò)存在于器件輸入輸出管腳與內(nèi)核電路之間的邊界掃描單元(BSC)對(duì)器件及外圍電路進(jìn)行測(cè)試,從而大大提高了器件的可控性和可觀(guān)性。邊界掃描技術(shù)提供了一種完整的、標(biāo)準(zhǔn)化的數(shù)字超大規(guī)模集成電路(VLSI)的測(cè)試性設(shè)計(jì)方法,并很快就得到了世界大多數(shù)集成電路制造商和測(cè)試商的支持,目前90%以上復(fù)雜的芯片都帶有邊界掃描機(jī)制,支持JTAG標(biāo)準(zhǔn),并已得到廣泛的支持與應(yīng)用。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的技術(shù)解決問(wèn)題是:為克服現(xiàn)有技術(shù)的不足,提供一種基于邊界掃描結(jié)構(gòu)的FPGA在線(xiàn)測(cè)試儀及測(cè)試方法。
[0005]本發(fā)明的技術(shù)解決方案為:
[0006]一種基于邊界掃描結(jié)構(gòu)的FPGA在線(xiàn)測(cè)試儀,包括上位機(jī)和下位機(jī),通過(guò)標(biāo)準(zhǔn)JTAG接口連接含有待測(cè)FPGA的JTAG鏈路,所述上位機(jī)由上位機(jī)軟件、接口驅(qū)動(dòng)程序及測(cè)試向量集組成;所述上位機(jī)軟件載入存儲(chǔ)在上位機(jī)的大量標(biāo)準(zhǔn)格式的測(cè)試向量,并結(jié)合FPGA廠(chǎng)商提供的邊界掃描說(shuō)明文件,將測(cè)試向量的激勵(lì)轉(zhuǎn)化為符合被測(cè)器件邊界掃描結(jié)構(gòu)的數(shù)字信號(hào)序列,通過(guò)USB接口傳輸給下位機(jī);當(dāng)下位機(jī)反饋測(cè)試響應(yīng)時(shí),上位機(jī)判斷回傳的測(cè)試響應(yīng)是否與測(cè)試向量中的正確結(jié)果一致,輸出測(cè)試結(jié)果;
[0007]所述下位機(jī)包括USB接口模塊、存儲(chǔ)器讀寫(xiě)模塊、協(xié)議處理模塊、JTAG接口,所述USB接口模塊接收到上位機(jī)數(shù)據(jù)后,將數(shù)據(jù)通過(guò)存儲(chǔ)器讀寫(xiě)模塊寫(xiě)入到存儲(chǔ)器中,控制狀態(tài)機(jī)控制碼流處理模塊通過(guò)JTAG接口向待測(cè)FPGA中輸出數(shù)據(jù),碼流處理模塊通過(guò)存儲(chǔ)器讀寫(xiě)模塊從存儲(chǔ)器當(dāng)中讀取數(shù)據(jù),通過(guò)JTAG接口傳輸?shù)酱郎y(cè)FPGA中;控制狀態(tài)機(jī)控制回讀模塊通過(guò)JTAG接口從待測(cè)FPGA獲得數(shù)據(jù);回讀模塊將JTAG接口傳輸過(guò)來(lái)的輸出響應(yīng)通過(guò)存儲(chǔ)器讀寫(xiě)模塊寫(xiě)入的存儲(chǔ)器當(dāng)中;存儲(chǔ)器讀寫(xiě)模塊將存儲(chǔ)器中的輸出響應(yīng)通過(guò)USB接口模塊傳輸給上位機(jī)。
[0008]所述測(cè)試向量集包含碼流文件、管腳編號(hào)、輸入激勵(lì)及輸出響應(yīng),使用測(cè)試向量集中的碼流文件來(lái)配置FPGA時(shí),在特定的管腳編號(hào)上施加特定的輸入激勵(lì),獲得輸出響應(yīng),將該輸出響應(yīng)與正確的輸出響應(yīng)進(jìn)行比較,獲得測(cè)試結(jié)果。
[0009]所述上位機(jī)及下位機(jī)通過(guò)USB2.0協(xié)議進(jìn)行通信。
[0010]一種基于邊界掃描結(jié)構(gòu)的FPGA在線(xiàn)測(cè)試方法,包括如下步驟:
[0011](I)待測(cè)FPGA上電之后,在線(xiàn)測(cè)試儀中的下位機(jī)通過(guò)JTAG接口回讀JTAG鏈路中各器件的ID code,檢測(cè)該JTAG鏈路的完整性,同時(shí)獲得該JTAG鏈路包含器件的數(shù)量和各器件的型號(hào),下位機(jī)通過(guò)USB接口模塊將獲得的JTAG鏈路結(jié)構(gòu)信息傳輸給上位機(jī);
[0012](2)上位機(jī)根據(jù)步驟(I)中獲取的JTAG鏈路結(jié)構(gòu)信息,獲得待測(cè)FPGA在鏈路中所處位置,根據(jù)待測(cè)FPGA型號(hào),選擇相應(yīng)的存儲(chǔ)在上位機(jī)的測(cè)試向量集,使用測(cè)試向量集中的碼流文件來(lái)配置FPGA ;
[0013](3)上位機(jī)將測(cè)試向量集中的碼流文件通過(guò)USB接口傳輸?shù)较挛粰C(jī),通過(guò)存儲(chǔ)器讀寫(xiě)模塊寫(xiě)入存儲(chǔ)器,下位機(jī)接收碼流文件后,協(xié)議處理模塊向待測(cè)FPGA輸出JTAG配置命令,通過(guò)JTAG接口將碼流文件輸出到待測(cè)FPGA ;
[0014](4)碼流文件輸出完畢后,通過(guò)回讀待測(cè)FPGA的status寄存器,判斷FPGA是否配置成功,若配置成功,則進(jìn)入步驟(5),若未配置成功,則重復(fù)步驟(3);
[0015](5)上位機(jī)根據(jù)邊界掃描說(shuō)明文件,將輸入激勵(lì)轉(zhuǎn)換為符合被測(cè)器件邊界掃描結(jié)構(gòu)的由多條數(shù)字信號(hào)序列組成的數(shù)字信號(hào)序列,將這一系列數(shù)字信號(hào)序列列通過(guò)USB接口依次傳輸?shù)较挛粰C(jī),寫(xiě)入存儲(chǔ)器中;
[0016](6)下位機(jī)通過(guò)JTAG接口將從步驟(5)中獲得的數(shù)字信號(hào)序列逐條輸出到待測(cè)FPGA,待測(cè)FPGA通過(guò)其自帶的邊界掃描鏈路將輸入激勵(lì)施加到FPGA內(nèi)部邏輯陣列,待一條數(shù)字信號(hào)序列輸出完畢后,進(jìn)入步驟(7);
[0017](7)下位機(jī)通過(guò)JTAG接口發(fā)送回讀命令,待測(cè)FPGA回傳此數(shù)字信號(hào)序列的輸出響應(yīng),下位機(jī)將獲得的輸出響應(yīng)寫(xiě)入存儲(chǔ)器中,重復(fù)步驟(6)-(7),直到步驟(5)中的存儲(chǔ)器所有的數(shù)字信號(hào)序列均已傳輸給待測(cè)FPGA,此時(shí)進(jìn)入步驟(8);
[0018](8)下位機(jī)通過(guò)存儲(chǔ)器讀寫(xiě)模塊將所獲得的所有輸出響應(yīng)傳輸給上位機(jī),上位機(jī)將所獲得的輸出響應(yīng)與數(shù)字信號(hào)序列的正確輸入響應(yīng)進(jìn)行對(duì)比,若相同,進(jìn)入步驟(9),若不相同,則上位機(jī)報(bào)告錯(cuò)誤,進(jìn)入步驟(9);
[0019](9)上位機(jī)判斷是否測(cè)試向量集中的所有測(cè)試向量均已測(cè)試,若已全部測(cè)試,則上位機(jī)輸出測(cè)試結(jié)果,若未全部測(cè)試,則重復(fù)步驟(3)-步驟(9)。
[0020]所述步驟(I)中的JTAG鏈路結(jié)構(gòu)信息包含器件型號(hào)、器件順序以及鏈路是否完整的信息。
[0021]所述步驟(3)中的協(xié)議處理模塊由碼流處理模塊、回讀模塊和控制狀態(tài)機(jī)組成。
[0022]所述步驟(4)中判斷FPGA是否配置成功的方法為:若狀態(tài)寄存器中的完成指示位DONE由O變?yōu)镮,即配置成功。
[0023]本發(fā)明與現(xiàn)有技術(shù)相比的優(yōu)點(diǎn)在于:
[0024](I)本發(fā)明能實(shí)現(xiàn)器件識(shí)別、鏈路完整性檢測(cè)、內(nèi)部模塊功能測(cè)試等多項(xiàng)功能,能夠現(xiàn)場(chǎng)檢測(cè)電子系統(tǒng)上FPGA故障,提高可靠性;
[0025](2)本發(fā)明對(duì)用戶(hù)系統(tǒng)設(shè)計(jì)完全無(wú)額外要求,只需含有待測(cè)FPGA的JTAG鏈路中有一個(gè)標(biāo)準(zhǔn)JTAG接口,即可完成相應(yīng)測(cè)試;
[0026](3)本發(fā)明通過(guò)回讀可以自動(dòng)識(shí)別FPGA器件型號(hào),適用于各種FPGA器件型號(hào),適用范圍廣、通用性強(qiáng);
[0027](4)本發(fā)明其上位機(jī)可運(yùn)行于計(jì)算機(jī)或者嵌入式系統(tǒng),下位機(jī)為單板系統(tǒng),方便隨身攜帶,能夠提供方便可靠的現(xiàn)場(chǎng)檢測(cè)技術(shù);
[0028](5)、本發(fā)明使用下位機(jī)硬件協(xié)議處理,相對(duì)于使用計(jì)算機(jī)進(jìn)行協(xié)議處理,速度更快;
[0029](6)本發(fā)明使用USB2.0進(jìn)行上位機(jī)和下位機(jī)之間的數(shù)據(jù)傳輸,數(shù)據(jù)傳輸速度達(dá)到160Mbit/s,相對(duì)于以往技術(shù)所使用的JTAG下載器,最高傳輸速度12Mbit/s,數(shù)據(jù)傳輸速度提尚十倍以上;
[0030](7)本發(fā)明下位機(jī)中的TAP狀態(tài)控制器通過(guò)狀態(tài)機(jī)實(shí)現(xiàn),為全同步時(shí)序電路,狀態(tài)完備,流程簡(jiǎn)單清晰,提高了電路可靠性。
【附圖說(shuō)明】
[0031 ] 圖1為本發(fā)明FPGA在線(xiàn)測(cè)試儀與待測(cè)FPGA連接示意圖;
[0032]圖2為本發(fā)明下位機(jī)結(jié)構(gòu)示意圖;
[0033]圖3為本發(fā)明在線(xiàn)測(cè)試方法流程圖;
[0034]圖4為本發(fā)明測(cè)試向量集和數(shù)字信號(hào)序列文件轉(zhuǎn)換示意圖。
【具體實(shí)施方式】
[0035]下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明作進(jìn)一步詳細(xì)的描述:
[0036]如圖1所示為本發(fā)明FPGA在線(xiàn)測(cè)試儀與JTAG鏈路連接示意圖,由圖可知,由上位機(jī)102和下位機(jī)103構(gòu)成的在線(xiàn)測(cè)試儀101通過(guò)標(biāo)準(zhǔn)JTAG接口連接JTAG鏈路,所述上位機(jī)102由上位機(jī)軟件、接口驅(qū)動(dòng)程序及測(cè)試向量集組成;上位機(jī)軟件載入存儲(chǔ)在上位機(jī)的大量標(biāo)準(zhǔn)格式的測(cè)試向量,并結(jié)合FPGA廠(chǎng)商提供的邊界掃描說(shuō)明文件,將測(cè)試向量的激勵(lì)轉(zhuǎn)化為符合被測(cè)器件邊界掃描結(jié)構(gòu)的數(shù)字信號(hào)序列,通過(guò)USB接口傳輸給下位機(jī)103 ;當(dāng)下位機(jī)103反饋測(cè)試響應(yīng)時(shí),上位機(jī)102判斷回傳的測(cè)試響應(yīng)是否與測(cè)試向量中的正確結(jié)果一致,輸出測(cè)試結(jié)果;
[0037]如圖2所示,下位機(jī)103包括USB接口模塊201、存儲(chǔ)器讀寫(xiě)模塊202、協(xié)議處理模塊203、JTAG接口 204,所述USB接口模塊201接收到上位機(jī)數(shù)據(jù)后,將數(shù)據(jù)通過(guò)存儲(chǔ)器讀寫(xiě)模塊202寫(xiě)入到存儲(chǔ)器中,控制狀態(tài)機(jī)控制碼流處理模塊通過(guò)JTAG接口 204向待測(cè)FPGA中輸出數(shù)據(jù),碼流處理模塊通過(guò)存儲(chǔ)器讀寫(xiě)模塊202從存儲(chǔ)器當(dāng)中讀取數(shù)據(jù),通過(guò)JTAG接口 204傳輸?shù)酱郎y(cè)FPGA中;控制狀態(tài)機(jī)控制回讀模塊通過(guò)JTAG接口 204從待測(cè)FPGA獲得數(shù)據(jù);回讀模塊將JTAG接口 204傳輸過(guò)來(lái)的輸出響應(yīng)通過(guò)存儲(chǔ)器讀寫(xiě)模塊202寫(xiě)入的存儲(chǔ)器當(dāng)中;存儲(chǔ)器讀寫(xiě)模塊202將存儲(chǔ)器中的輸出響應(yīng)通過(guò)USB接口模塊201傳輸給上位機(jī)。
[0038]如圖4所示,測(cè)試向量集包含碼流文件402、管腳編號(hào)403、輸入激勵(lì)404及輸出響應(yīng)405,使用測(cè)試向量集401中的碼流文件402來(lái)配置FPGA時(shí),在特定的管腳編號(hào)403上施加特定的輸入激勵(lì)404,獲得輸出響應(yīng)405,將該輸出響應(yīng)405與正確的輸出響應(yīng)進(jìn)行比較,獲得測(cè)試結(jié)果。
[0039]上位機(jī)102及下位機(jī)103通過(guò)USB2.0協(xié)議進(jìn)行通信。
[0040]如圖3所示為本發(fā)明FPGA在線(xiàn)測(cè)試方法流程圖,【具體實(shí)施方式】如下:
[0041](I)待測(cè)FPGA上電之后,在線(xiàn)測(cè)試儀中的下位機(jī)通過(guò)JTAG接口回讀JTAG鏈路中各器件的ID code,檢測(cè)該JTAG鏈路的完整性,同時(shí)獲得該JTAG鏈路包含器件的數(shù)量和各器件的型號(hào),下位機(jī)通過(guò)USB接口模塊將獲得的JTAG鏈路結(jié)構(gòu)信息傳輸給上位機(jī);
[0042](2)