《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于JTAG邊界掃描方式的重構(gòu)控制器的設(shè)計(jì)
基于JTAG邊界掃描方式的重構(gòu)控制器的設(shè)計(jì)
摘要:  本文介紹一種基于“ARM處理器+FPGA”架構(gòu)的重構(gòu)控制器,重構(gòu)控制器中的FPGA能夠根據(jù)ARM處理器傳送來的命令,對目標(biāo)可編程器件JTAG接口進(jìn)行控制,并模擬JTAG接口中TAP狀態(tài)機(jī)產(chǎn)生激勵(lì)信號(TMS、TDI、TCK序列),向目標(biāo)可編程器件的JTAG接口提供所需的激勵(lì),使目標(biāo)可編程器件內(nèi)的TAP狀態(tài)機(jī)進(jìn)行狀態(tài)轉(zhuǎn)換,將指令和數(shù)據(jù)掃描到FPGA內(nèi)部邊界掃描電路指令寄存器和數(shù)據(jù)寄存器中。完成一次目標(biāo)可編程器件配置,實(shí)現(xiàn)用戶此時(shí)所要求功能,在下一時(shí)段,可根據(jù)用戶新的要求,調(diào)用重構(gòu)控制器內(nèi)部存儲器中不同方案在系統(tǒng)重新配置目標(biāo)可編程器件,實(shí)現(xiàn)硬件的時(shí)分復(fù)用,靈活快速的改變系統(tǒng)功能,節(jié)省邏輯資源,滿足大規(guī)模應(yīng)用需求。
Abstract:
Key words :
</a>JTAG" title="JTAG">JTAG" title="JTAG">JTAG" title="JTAG">JTAG(聯(lián)合測試行動小組)是一種國際標(biāo)準(zhǔn)測試協(xié)議(IEEE 1149.1兼容),目前主要用于芯片內(nèi)部測試?,F(xiàn)在多數(shù)的高級器件都支持JTAG協(xié)議,如DSP、FPGA" title="FPGA">FPGA器件等。標(biāo)準(zhǔn)的JTAG接口是4線:TMS(模式選擇)、TCK(時(shí)鐘)、TDI(數(shù)據(jù)輸入)、TDO(數(shù)據(jù)輸出線)。本文利用JTAG標(biāo)準(zhǔn)協(xié)議設(shè)計(jì)一種針對同類FPGA進(jìn)行動態(tài)重構(gòu)配置" title="動態(tài)重構(gòu)配置">動態(tài)重構(gòu)配置的重構(gòu)控制器。

  重構(gòu)控制器硬件系統(tǒng)組成

  本文介紹一種基于“ARM處理器+FPGA”架構(gòu)的重構(gòu)控制器,重構(gòu)控制器中的FPGA能夠根據(jù)ARM處理器傳送來的命令,對目標(biāo)可編程器件JTAG接口進(jìn)行控制,并模擬JTAG接口中TAP狀態(tài)機(jī)產(chǎn)生激勵(lì)信號(TMS、TDI、TCK序列),向目標(biāo)可編程器件的JTAG接口提供所需的激勵(lì),使目標(biāo)可編程器件內(nèi)的TAP狀態(tài)機(jī)進(jìn)行狀態(tài)轉(zhuǎn)換,將指令和數(shù)據(jù)掃描到FPGA內(nèi)部邊界掃描電路指令寄存器和數(shù)據(jù)寄存器中。完成一次目標(biāo)可編程器件配置,實(shí)現(xiàn)用戶此時(shí)所要求功能,在下一時(shí)段,可根據(jù)用戶新的要求,調(diào)用重構(gòu)控制器內(nèi)部存儲器中不同方案在系統(tǒng)重新配置目標(biāo)可編程器件,實(shí)現(xiàn)硬件的時(shí)分復(fù)用,靈活快速的改變系統(tǒng)功能,節(jié)省邏輯資源,滿足大規(guī)模應(yīng)用需求。

  其主要功能是控制按照用戶不同需求調(diào)用不同的方案配置目標(biāo)可編程器件。它主要包括ARM處理器、FPGA、Flash存儲器,各功能部件主要功能如下:

  (1) ARM處理器,其主要功能是控制模擬JTAG接口的FPGA讀取Flash存儲器中的重構(gòu)方案,實(shí)現(xiàn)在系統(tǒng)配置;

  (2) FPGA協(xié)處理器選用Xilinx公司SPARTEN3AN系列,是基于非易失性存儲的FPGA,自身帶有PROM,它作為外部總線和ARM控制器之間的雙端口,主要功能是模擬JTAG接口實(shí)現(xiàn)TAP控制器時(shí)序,完成配置方案數(shù)據(jù)的并串轉(zhuǎn)換并輸出至外部總線;

  (3)FLASH存儲器容量為32M×16bit,用于處理器的上電引導(dǎo)、存放多種重構(gòu)配置方案。由于要求的存儲容量較大,采用SPANSION公司[1]S29GL512P(32M×16bit)的存儲空間,訪問速度110ns,可以達(dá)到25ns快速頁存取和相應(yīng)的90ns隨機(jī)存取時(shí)間;

  (4) 測試線TCK 、TMS 、TDI 和TDO,是重構(gòu)控制器向目標(biāo)可編程器件提供所需的JTAG TAP 激勵(lì),分別控制目標(biāo)多個(gè)FPGA的重構(gòu)配置和反饋重構(gòu)信息。

  系統(tǒng)實(shí)現(xiàn)

  重構(gòu)控制器

  本文設(shè)計(jì)的重構(gòu)控制器采用ARM微處理器作為主控制器,以FPGA芯片作為協(xié)處理器配合主控制器工作。用戶事先根據(jù)需求設(shè)計(jì)出不同的配置方案,并存儲在重構(gòu)控制器內(nèi)部的存儲器中,上電后,重構(gòu)控制器就可以按需求將不同設(shè)計(jì)方案分時(shí)定位到目標(biāo)可編程器件內(nèi),同時(shí)保持其他部分電路功能正常,實(shí)現(xiàn)在系統(tǒng)靈活配置,提高系統(tǒng)工作效率。

       重構(gòu)控制器框圖如圖1所示。ARM執(zhí)行的初始化工作包括程序更新加載運(yùn)行,F(xiàn)PGA參數(shù)設(shè)定等(見圖2)。FPGA初始化包括設(shè)定內(nèi)部命令寄存器和邏輯狀態(tài)的初始值、內(nèi)部緩沖區(qū)數(shù)據(jù)清零等。ARM處理器一方面通過ARM總線讀取外部Flash中的配置方案,將其存儲到TDI模塊的緩存中;另一方面重構(gòu)控制器中模擬TAP控制器的FPGA,通過執(zhí)行ARM處理器發(fā)出的配置指令,模擬產(chǎn)生TCK 、TMS 、TDI 和TDO信號,作為目標(biāo)可編程器件的JTAG接口激勵(lì),與目標(biāo)可編程器件的JTAG口串聯(lián)成菊花鏈,對目標(biāo)可編程器件進(jìn)行在系統(tǒng)編程。

 

  重構(gòu)控制器模塊

  ARM接口模塊

  如圖1所示,ARM接口模塊主要作為FPGA和ARM處理器之間的接口,完成ARM的命令控制和參數(shù)傳遞。當(dāng)系統(tǒng)上電后,ARM處理器將預(yù)先設(shè)定好的各種配置信息傳送至ARM接口模塊,完成對FPGA及各外圍模塊進(jìn)行配置。系統(tǒng)正常運(yùn)行時(shí),該模塊處于閑置狀態(tài)。直到ARM處理器請求進(jìn)行新的配置時(shí),ARM接口模塊再次傳遞新的配置信息,完成目標(biāo)板重新配置。


       仲裁與時(shí)序控制模塊

  仲裁與時(shí)序控制模塊主要完成對重構(gòu)控制器內(nèi)部各模塊的仲裁與時(shí)序控制。協(xié)調(diào)各模塊之間的數(shù)據(jù)流向。其具體的功能包括提供內(nèi)部各模塊所需的時(shí)鐘信號,并進(jìn)行相應(yīng)的時(shí)序控制;以及對內(nèi)部數(shù)據(jù)流的切換控制。

  TCK,TMS,TDI,TDO產(chǎn)生模塊

  TCK: JTAG配置時(shí)鐘輸入,所有基于JTAG的操作都必須同步于JTAG時(shí)鐘信號TCK。關(guān)鍵時(shí)序關(guān)系是:TMS和TDI采樣于TCK的上升邊沿,一個(gè)新的 TDO值將于TCK下降邊沿后出現(xiàn),因此一般情況下JTAG的時(shí)鐘不會太高。

  TMS:模式選擇,控制JTAG狀態(tài)轉(zhuǎn)移,同步時(shí)鐘TCK上升沿時(shí)刻TMS的狀態(tài)決定狀態(tài)轉(zhuǎn)移過程。

  TDI :配置數(shù)據(jù)輸入,配置數(shù)據(jù)在TCK的上升沿采樣進(jìn)入數(shù)據(jù)移位寄存器(SDR);

  TDO:配置數(shù)據(jù)輸出,在TCK的下降沿從移位寄存器移出,輸出數(shù)據(jù)與輸入到TDI的數(shù)據(jù)應(yīng)不出現(xiàn)倒置。

  目標(biāo)板

  目標(biāo)板上被重構(gòu)的FPGA由支持重構(gòu)的Xilinx公司的VIRTEX-4" title="VIRTEX-4">VIRTEX-4系列FPGA來實(shí)現(xiàn),以菊花鏈方式串聯(lián),支持JTAG邊界掃描模式配置。

  JTAG邊界掃描配置的FPGA實(shí)現(xiàn)

  TAP控制器是16個(gè)狀態(tài)的有限狀態(tài)機(jī),主要為JTAG接口提供控制邏輯。主要有四大狀態(tài):復(fù)位(RESET),空閑(idle),數(shù)據(jù)寄存器移位(SDR)和指令寄存器移位(SIR)狀態(tài), 在TCK,TMS的控制下,根據(jù)輸入的配置指令實(shí)現(xiàn)狀態(tài)的轉(zhuǎn)移。Xlinx公司Virtex4系列 FPGA器件的邊界掃描指令集中有三條專用于配置的邊界掃描指令:CFG_IN、BYPASS和JSTART(10個(gè)bit位)。其中CFG_IN的代碼:0101001111;BYPASS的代碼:1111111111;JSTART的代碼:0011001111。執(zhí)行CFG_IN指令可以訪問器件內(nèi)部的配置總線,通過串行移入配置文件中的命令和數(shù)據(jù)執(zhí)行對內(nèi)部配置寄存器的讀寫,從而完成對FPGA的配置。BYPASS指令在對多個(gè)目標(biāo)器件配置時(shí)可以旁路不需要重配置的器件。JSTART指令使用TCK時(shí)鐘觸發(fā)啟動時(shí)序,使FPGA完成從配置狀態(tài)到操作狀態(tài)的轉(zhuǎn)換,激活FPGA。圖3為可重構(gòu)控制器模擬TAP狀態(tài)機(jī)配置指令執(zhí)行的狀態(tài)轉(zhuǎn)移圖。


       系統(tǒng)仿真

  仿真在Active-HDL7.1軟件下運(yùn)行,所有仿真是基于對單器件配置的過程。

  圖4為JTAG邊界掃描方式核心控制TAP狀態(tài)機(jī)仿真波形 ,本文把整個(gè)下載模擬過程設(shè)計(jì)為三步,分別為TAP_Reset、TAP_CFG、TAP_JStart,ARM分別給三步提供一個(gè)啟動命令,三個(gè)步驟分時(shí)按順序由自己獨(dú)立的狀態(tài)機(jī)實(shí)現(xiàn),由圖可以看出狀態(tài)銜接正確。

      圖5為各狀態(tài)機(jī)個(gè)狀態(tài)下接口輸出波形,TCK、TMS、TDI時(shí)序和輸出值滿足JTAG掃描方式配置Virtex-4系列FPGA接口激勵(lì)要求。

 

  本系統(tǒng)ARM工作時(shí)鐘為50MHz,TCK輸出為25MHz,為便于觀察,TAP_CFG部分狀態(tài)機(jī)中SDR狀態(tài)項(xiàng)實(shí)際由配置方案文件bit位數(shù)決定,仿真圖有所壓縮。

  如果目標(biāo)板FPGA是Virtex-4 XC4VLX25" title="XC4VLX25">XC4VLX25,其配置方案文件為995KB,整個(gè)配置過程大約所需時(shí)間327ms。

  結(jié)語

  本文介紹的重構(gòu)控制器具有相對通用性,適用于對同一類FPGA芯片實(shí)現(xiàn)可編程器件在系統(tǒng)配置,使得硬件信息(可編程器件的配置信息)也可以象軟件程序一樣被動態(tài)調(diào)用或修改,從而動態(tài)的改變電路的結(jié)構(gòu)和功能,對電路中出現(xiàn)的錯(cuò)誤和故障進(jìn)行實(shí)時(shí)動態(tài)重構(gòu),達(dá)到高可靠性的目的,有效節(jié)省邏輯資源,通過設(shè)計(jì)和仿真驗(yàn)證了此方法的可行性。


 

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。