引言 JTAG(聯合測試行動小組)是一種國際標準測試協議(IEEE 1149.1兼容),目前主要用于芯片內部測試。現在多數的高級器件都支持JTAG協議,如DSP、FPGA器件等。標準的JTAG接口是4線:TMS(模式選擇)、TCK(時鐘)、TDI(數據輸入)、TDO(數據輸出線)。本文利用JTAG標準協議設計一種針對同類FPGA進行動態重構配置的重構控制器。 重構控制器硬件系統組成 本文介紹一種基于“ARM處理器+FPGA”架構的重構控制器,重構控制器中的FPGA能夠根據 ARM處理器傳送來的命令,對目標可編程器件JTAG接口進行控制,并模擬JTAG接口中TAP 狀態機產生激勵信號(TMS、TDI、TCK序列),向目標可編程器件的JTAG接口提供所需的激勵,使目標可編程器件內的TAP 狀態機進行狀態轉換,將指令和數據掃描到FPGA內部邊界掃描電路指令寄存器和數據寄存器中。完成一次目標可編程器件配置,實現用戶此時所要求功能,在下一時段,可根據用戶新的要求,調用重構控制器內部存儲器中不同方案在系統重新配置目標可編程器件,實現硬件的時分復用,靈活快速的改變系統功能,節省邏輯資源,滿足大規模應用需求。 其主要功能是控制按照用戶不同需求調用不同的方案配置目標可編程器件。它主要包括ARM處理器、FPGA、Flash 存儲器,各功能部件主要功能如下: (1) ARM處理器,其主要功能是控制模擬JTAG接口的FPGA讀取 Flash存儲器中的重構方案,實現在系統配置; (2) FPGA協處理器選用 Xilinx公司SPARTEN3AN系列,是基于非易失性存儲的FPGA,自身帶有 PROM,它作為外部總線和ARM控制器之間的雙端口,主要功能是模擬JTAG接口實現TAP控制器時序,完成配置方案數據的并串轉換并輸出至外部總線; (3)FLASH存儲器容量為32M×16bit,用于處理器的上電引導、存放多種重構配置方案。由于要求的存儲容量較大,采用SPANSION公司[1]S29GL512P(32M×16bit)的存儲空間,訪問速度 110ns,可以達到25ns快速頁存取和相應的90ns隨機存取時間; (4) 測試線TCK 、TMS 、TDI 和TDO,是重構控制器向目標可編程器件提供所需的JTAG TAP 激勵,分別控制目標多個FPGA的重構配置和反饋重構信息。 系統實現 重構控制器 本文設計的重構控制器采用ARM微處理器作為主控制器,以FPGA芯片作為協處理器配合主控制器工作。用戶事先根據需求設計出不同的配置方案,并存儲在重構控制器內部的存儲器中,上電后,重構控制器就可以按需求將不同設計方案分時定位到目標可編程器件內,同時保持其他部分電路功能正常,實現在系統靈活配置,提高系統工作效率。 重構控制器框圖如圖1所示。ARM執行的初始化工作包括程序更新加載運行,FPGA參數設定等 (見圖2)。FPGA初始化包括設定內部命令寄存器和邏輯狀態的初始值、內部緩沖區數據清零等。ARM處理器一方面通過ARM總線讀取外部Flash中的配置方案,將其存儲到TDI模塊的緩存中;另一方面重構控制器中模擬TAP控制器的FPGA,通過執行 ARM處理器發出的配置指令,模擬產生TCK 、TMS 、TDI 和TDO信號,作為目標可編程器件的JTAG接口激勵,與目標可編程器件的JTAG口串聯成菊花鏈,對目標可編程器件進行在系統編程。 ![]() 重構控制器模塊 ARM接口模塊 如圖1所示,ARM接口模塊主要作為FPGA和ARM處理器之間的接口,完成ARM的命令控制和參數傳遞。當系統上電后,ARM處理器將預先設定好的各種配置信息傳送至ARM接口模塊,完成對FPGA及各外圍模塊進行配置。系統正常運行時,該模塊處于閑置狀態。直到ARM處理器請求進行新的配置時,ARM接口模塊再次傳遞新的配置信息,完成目標板重新配置。 ![]() 仲裁與時序控制模塊 仲裁與時序控制模塊主要完成對重構控制器內部各模塊的仲裁與時序控制。協調各模塊之間的數據流向。其具體的功能包括提供內部各模塊所需的時鐘信號,并進行相應的時序控制;以及對內部數據流的切換控制。 TCK,TMS,TDI,TDO產生模塊 TCK: JTAG配置時鐘輸入,所有基于JTAG的操作都必須同步于JTAG時鐘信號TCK。關鍵時序關系是:TMS和TDI采樣于TCK的上升邊沿,一個新的 TDO值將于TCK下降邊沿后出現,因此一般情況下JTAG的時鐘不會太高。 TMS:模式選擇,控制JTAG狀態轉移,同步時鐘TCK上升沿時刻TMS的狀態決定狀態轉移過程。 TDI :配置數據輸入,配置數據在TCK的上升沿采樣進入數據移位寄存器(SDR); TDO:配置數據輸出,在TCK的下降沿從移位寄存器移出,輸出數據與輸入到TDI的數據應不出現倒置。 目標板 目標板上被重構的FPGA由支持重構的Xilinx公司的VIRTEX-4系列FPGA來實現,以菊花鏈方式串聯,支持JTAG 邊界掃描模式配置。 JTAG 邊界掃描配置的FPGA實現 TAP控制器是16個狀態的有限狀態機,主要為JTAG接口提供控制邏輯。主要有四大狀態:復位(RESET),空閑(idle),數據寄存器移位(SDR)和指令寄存器移位(SIR)狀態, 在TCK,TMS的控制下,根據輸入的配置指令實現狀態的轉移。Xlinx公司Virtex4系列 FPGA器件的邊界掃描指令集中有三條專用于配置的邊界掃描指令:CFG_IN、BYPASS和JSTART(10個bit位)。其中CFG_IN的代碼:0101001111;BYPASS的代碼:1111111111;JSTART的代碼:0011001111。執行CFG_IN指令可以訪問器件內部的配置總線,通過串行移入配置文件中的命令和數據執行對內部配置寄存器的讀寫,從而完成對FPGA的配置。 BYPASS指令在對多個目標器件配置時可以旁路不需要重配置的器件。JSTART指令使用TCK時鐘觸發啟動時序,使FPGA完成從配置狀態到操作狀態的轉換,激活FPGA。圖3為可重構控制器模擬TAP 狀態機配置指令執行的狀態轉移圖。 ![]() 系統仿真 仿真在Active-HDL7.1軟件下運行,所有仿真是基于對單器件配置的過程。 圖4為JTAG 邊界掃描方式核心控制TAP 狀態機仿真波形 ,本文把整個下載模擬過程設計為三步,分別為TAP_Reset、TAP_CFG、TAP_JStart,ARM分別給三步提供一個啟動命令,三個步驟分時按順序由自己獨立的狀態機實現,由圖可以看出狀態銜接正確。 ![]() 圖5為各狀態機個狀態下接口輸出波形,TCK、TMS、TDI時序和輸出值滿足JTAG掃描方式配置Virtex-4系列FPGA接口激勵要求。 ![]() 本系統ARM工作時鐘為50MHz,TCK輸出為25MHz,為便于觀察,TAP_CFG部分狀態機中SDR狀態項實際由配置方案文件bit位數決定,仿真圖有所壓縮。 如果目標板FPGA是Virtex-4 XC4VLX25,其配置方案文件為995KB,整個配置過程大約所需時間327ms。 結語 本文介紹的重構控制器具有相對通用性,適用于對同一類FPGA芯片實現可編程器件在系統配置,使得硬件信息(可編程器件的配置信息)也可以象軟件程序一樣被動態調用或修改,從而動態的改變電路的結構和功能,對電路中出現的錯誤和故障進行實時動態重構,達到高可靠性的目的,有效節省邏輯資源,通過設計和仿真驗證了此方法的可行性。 參考文獻: [1] Xilinx, Virtex-4 Configuration Guide, UG071 (v1.5). 2007 [2] IEEE Std.1149.1—2001, Test Access Port and Boundary Scan Architecture[S], IEEE, 2001 [3] Xilinx, Configuration and Readback of the Spartan-II and Spartan-IIE Families[D]. 2002 [4] 趙蕙. 邊界掃描測試技術在遠程實驗系統中的應用研究[D]. 江蘇大學, 2005 [5] ARM. ARM9TDMI Technical Reference Manual[EB/OL]. 2008 作者:方超 龔龍慶 張寶利 西安微電子技術研究所 來源:電子產品世界 2010-2 |