《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > FPGA中設計FSM實現(xiàn)TigerSHARC DSP link口加載
FPGA中設計FSM實現(xiàn)TigerSHARC DSP link口加載
來源:電子技術應用2010年第9期
夏際金, 方志紅
中國電子科技集團 第38研究所, 安徽 合肥230031
摘要: 介紹了一種在FPGA中實現(xiàn)的有限狀態(tài)機FSM,可以通過link口對TigerSHARC信號處理器進行程序加載。通過信號處理器系統(tǒng)的處理器之間的link互聯(lián)結(jié)構(gòu),F(xiàn)SM可實現(xiàn)對整個信號處理系統(tǒng)的加載功能。在FPGA中設計加載狀態(tài)機及信號處理系統(tǒng)與其他系統(tǒng)的接口,使信號處理系統(tǒng)更加簡單、高效。
中圖分類號: TP302
文獻標識碼: A
文章編號: 0258-7998(2010)09-0142-03
Realization of booting TigerSHARC DSP through link port by designing FSM in FPGA
XIA Ji Jin, FANG Zhi Hong
No.38th Research Institute, China Electronic Technology Group Corporation, Hefei 230031, China
Abstract: An FSM in FPGA for booting TigerSHARC processor through link port is implemented in this paper. The FSM can boot the whole signal processing system through link port between TigerSHARC processors. The signal processing system is simpler and higher efficiency by designing booting FSM and interface between signal processing system and other systems in FPGA.
Key words : FPGA; finite state machine(FSM); TigerSHARC; link boot

    TigerSHARC系列處理器是ADI公司推出的高性能數(shù)字信號處理器,包含ADSP TS101、ADSP TS201、ADSP TS202、ADSP TS203。TigerSHARC系列處理器的link 口為處理器提供了快速、獨立的通信機制。link口的特點是點對點通信、協(xié)議比較簡單、數(shù)據(jù)率較高,因而可以通過link口實現(xiàn)多片處理器構(gòu)成處理器系統(tǒng)。
    TS101的link口和TS20X系列處理器的link口有所不同。TS101的link口采用8位雙向數(shù)據(jù)線和三根控制線構(gòu)成,采用TS101 link協(xié)議可實現(xiàn)雙工通信;而TS20X系列處理器的link口采用LVDS技術(4 bit收、4 bit發(fā)),實現(xiàn)全雙工通信。
    盡管TS101的link口和TS20X的link口在物理和協(xié)議方面都不一樣,但在應用上都可以實現(xiàn)數(shù)據(jù)的通信以及處理器的加載功能。
1 信號處理系統(tǒng)結(jié)構(gòu)
    典型的采用TigerSHARC處理器的信號處理板連接方式為:板(簇)內(nèi)采用CLUSTER總線實現(xiàn)處理器連接,板間采用link口實現(xiàn)處理器連接。
    采用FPGA實現(xiàn)與TigerSHARC處理器link口的連接可提高信號處理系統(tǒng)與其他系統(tǒng)連接的靈活性。FPGA通過link口與信號處理系統(tǒng)連接,簡化了信號處理板卡的設計;同時由于FPGA靈活性及豐富的接口資源,可以很方便實現(xiàn)與其他系統(tǒng)的連接。
    采用FPGA加載信號處理系統(tǒng),只需修改與FPGA連接的Flash中的程序就可以實現(xiàn)配置信號處理器系統(tǒng)中各處理器的程序。在加載完后,F(xiàn)PGA還可以作為信號處理系統(tǒng)的接口板,使系統(tǒng)設計更加簡單、高效。
    本文介紹一種基于FPGA通過link口加載由TS101構(gòu)成的信號處理系統(tǒng)的方法。
    FPGA加載板和TigerSHARC信號處理系統(tǒng)連接關系如圖1所示。

    加載板采用EP2S60芯片作為處理器,外接128 MB Flash和36 MB SRAM。Flash用于存儲處理器的加載程序,SRAM作為緩存。FPGA的4個link分別與TigerSHARC信號處理板上4個DSP的link0相連,信號處理板上4個DSP的link2分別與下一個信號處理器的4個DSP的link0相連。采用這種方法連接多塊信號處理板構(gòu)成一個信號處理系統(tǒng)。
    TigerSHARC處理器每個link口都可以作為加載的端口,只需在Kernel程序中將LINK號改成對應的link口。
2 加載文件結(jié)構(gòu)
    TigerSHARC處理器link口加載文件結(jié)構(gòu)如圖2所示。加載文件由加載核、若干Zero init或Non-zero init加載數(shù)據(jù)塊及Final init數(shù)據(jù)塊構(gòu)成。加載核沒有數(shù)據(jù)塊頭信息,Zero init 和Non-zero init數(shù)據(jù)塊頭都有1個標簽字和1個目的地址,F(xiàn)inal init數(shù)據(jù)塊只有1個標簽字。標簽字各數(shù)據(jù)位的意義如圖3所示。由于link口的連接特點,link加載核不支持多處理器加載,因而link加載方式中不使用ID。標簽字的TYPE和COUNT指示了該塊數(shù)據(jù)的類型和長度。TigerSHARC加載文件以32 bit word為單位構(gòu)成(本文的word即指32 bit word)。

3 加載狀態(tài)機的設計與實現(xiàn)
    由于Flash的讀寫周期較長,設計中采用系統(tǒng)時鐘16分頻作為FPGA中Flash控制器的時鐘。直接從Flash中讀取數(shù)據(jù)無法保證DSP加載核(BOOT Loader Kernel)對程序數(shù)據(jù)的數(shù)據(jù)率要求,因而在設計中先將Flash中的數(shù)據(jù)轉(zhuǎn)存到與FPGA相連的SRAM中。SRAM讀出數(shù)據(jù)為32 bit,讀寫SRAM的數(shù)據(jù)率可以大大超過link口的吞吐率。FPGA中開辟2塊RAM作為乒、乓RAM緩存從SRAM中讀取數(shù)據(jù),以保證FPGA發(fā)送link的數(shù)據(jù)保持在就緒狀態(tài),DSP加載核在任何時候取數(shù),FPGA link都能提供有效數(shù)據(jù)。
    FPGA發(fā)送到link模塊的信號為TxWrite、TxData、TxBP。加載狀態(tài)機根據(jù)TxBP信號來判斷l(xiāng)ink口緩沖當前狀態(tài)是忙還是空閑,只要為空閑狀態(tài)就往link緩沖中寫數(shù)據(jù),從而保證了DSP加載核總能獲取有效數(shù)據(jù)。
3.1 加載狀態(tài)機的設計
    FPGA中加載有限狀態(tài)機狀態(tài)轉(zhuǎn)換示意圖如圖4所示。

    狀態(tài)說明:
    S0:BootLoader Kernel State;S1:數(shù)據(jù)塊類型判斷;S2:Non-zer init State;S3:Zero init State;S4:Final init State;S5:結(jié)束。
    當需要加載時復位加載狀態(tài)機,在復位時設置計數(shù)器值。復位后,狀態(tài)機就進入了S0狀態(tài)。
    S0狀態(tài)為發(fā)送DSP Boot Loader Kernel給需要加載的DSP,長度為256 words。在該狀態(tài)下,link口需要發(fā)送DSP Boot Loader Kernel給需要加載的DSP,數(shù)據(jù)發(fā)送完后(數(shù)據(jù)塊計數(shù)器count_packet為0),狀態(tài)轉(zhuǎn)入S1。
    S1狀態(tài)為上一數(shù)據(jù)塊結(jié)束,下一數(shù)據(jù)塊將要開始發(fā)送的一個中間過渡狀態(tài)。在該狀態(tài)下判斷下一數(shù)據(jù)塊的類型,并計算下一數(shù)據(jù)塊的長度。根據(jù)標簽字Tag Word的TYPE值轉(zhuǎn)換到S2、S3、S4中的某個狀態(tài)。
    當S1狀態(tài)下TYPE為1時,狀態(tài)機轉(zhuǎn)入S2。DSP收到這塊數(shù)據(jù)后,進入Non-zero init模式。S2狀態(tài)只需發(fā)送該數(shù)據(jù)塊,不需要對數(shù)據(jù)進行Non-zero init處理。該模式下,link口需要發(fā)送的數(shù)據(jù)為該數(shù)據(jù)塊標簽字的COUNT值加上數(shù)據(jù)塊頭的長度即2 words。該數(shù)據(jù)塊發(fā)送完后(數(shù)據(jù)塊計數(shù)器count_packet為0),狀態(tài)轉(zhuǎn)入S1。
    當S1狀態(tài)下TYPE為2時,狀態(tài)機轉(zhuǎn)入S3。DSP收到這塊數(shù)據(jù)后,進入Zero init State模式。該模式下加載程序數(shù)據(jù)塊只有數(shù)據(jù)塊頭,即標簽字和目的地址2 words,后面即為下一個數(shù)據(jù)塊頭。此時,狀態(tài)機只需發(fā)送這個數(shù)據(jù)塊頭,不需要進行Zero init處理。該數(shù)據(jù)塊發(fā)送完后(數(shù)據(jù)塊計數(shù)器count_packet為0),狀態(tài)轉(zhuǎn)入S1。
    當S1狀態(tài)下TYPE為0時,狀態(tài)機轉(zhuǎn)入S4。相應地,DSP進入到Final init模式,完成加載核的自我覆蓋。此時狀態(tài)機要發(fā)送的有效數(shù)據(jù)長度為257 words,即1 word Final init標簽字和256 words加載核自我覆蓋程序。當發(fā)送完Final init加載數(shù)據(jù),有效的加載程序已經(jīng)發(fā)送完。需要注意的是,加載核在取link口數(shù)據(jù)是啟動DMA傳輸?shù)模鴏ink口至內(nèi)/外部存儲器的DMA是以4字組方式傳輸,因而當程序不是4字對齊時,發(fā)送的加載程序長度須以4字補齊。加載狀態(tài)機會根據(jù)加載文件自動完成4字補齊,發(fā)送的長度為將程序4字補齊后的長度,以滿足link口DMA的時序要求。
    當S4狀態(tài)下數(shù)據(jù)塊計數(shù)器count_packet為0時,狀態(tài)機轉(zhuǎn)入S5,加載1個DSP結(jié)束。
    當狀態(tài)機轉(zhuǎn)入S5時,F(xiàn)PGA 的加載狀態(tài)機已實現(xiàn)了通過link口對DSP的加載過程。為了實現(xiàn)信號處理系統(tǒng)中所有板卡的加載,第一塊信號處理板要完成對第二塊信號處理板卡的加載。link板卡的級聯(lián)關系見圖1,F(xiàn)PGA加載完第一塊板的DSP后,等待DSP運行起來,而后通過link口發(fā)送第二塊板的加載程序給第一塊板。第一塊板收到第二塊板的加載程序后,可以實現(xiàn)對第二塊板的加載。采用同樣的方法就可以實現(xiàn)級聯(lián)的每塊板卡的每個DSP的加載功能。
3.2  Signal Tap采集加載過程
    采用Signal Tap采集加載開始、中間狀態(tài)轉(zhuǎn)換和加載結(jié)束的結(jié)果分別如圖5~7所示。圖中各信號的意義如下:
    boot_dsp0_en、boot_dsp1_en:分別是加載第一塊信號處理板DSP0、DSP1的使能信號。
    txdata、txwrite_ba_int、txbp:分別是link模塊控制端輸入數(shù)據(jù)、寫控制信號、緩沖滿信號count_packet的數(shù)據(jù)塊計數(shù)器。
    TAG_COUNT、TAG_TYPE:分別是標簽字的COUNT和TYPE值。
    STATE_FSM:狀態(tài)機的當前狀態(tài)。
    rst_state:狀態(tài)機復位控制信號。
    l0_lxdata、l0_lxclkout、l0_lxclkin:分別是FPGA的link0端口接口數(shù)據(jù)、時鐘/應答輸出、時鐘/應答輸入。
    圖中采樣時鐘為link模塊輸入時鐘,1個周期link口發(fā)送1 B數(shù)據(jù)。由于狀態(tài)機采用的是邊發(fā)送link數(shù)據(jù)邊解譯加載數(shù)據(jù)的方法,因而狀態(tài)機狀態(tài)轉(zhuǎn)換過程要滯后發(fā)送數(shù)據(jù)4個周期(1 word),通過在發(fā)送DSP Boot Loader Kernel這個狀態(tài)計數(shù)值多4個字而在Final Init過程計數(shù)值少4個字來實現(xiàn)對齊。
 圖5為加載開始,STATE_FSM狀態(tài)為0,此時FPGA發(fā)送DSP Boot Loader Kernel給TigerSHARC DSP。加載開始時計數(shù)值為0x403 bytes,共發(fā)送0x404 bytes數(shù)據(jù)。如前所述,在發(fā)送DSP Boot Loader Kernel時比其實際長度0x400 bytes多4 bytes。

   圖6為加載中間加載過程,STATE_FSM狀態(tài)依次為3、1、3、1、2。當STATE_FSM為第一個1時,TAG_TYPE為2、TAG_COUNT為3,標志下一個狀態(tài)為Zero init State。此狀態(tài)下FPGA需要發(fā)送2 words, 因而count_packet為0x6(count_packet為0占了2個周期)。當STATE_FSM為第二個1時,TAG_TYPE為1、TAG_COUNT為4,標志下一個狀態(tài)為Non-zero init State,此狀態(tài)下FPGA需要發(fā)送4 words數(shù)據(jù)和2 words數(shù)據(jù)塊頭,因而從此時count_packet為0x16(count_packet為0占了2個周期)。

    如圖7所示,當STATE_FSM為4且計數(shù)值為0時,STATE_FSM轉(zhuǎn)為5、boot_dsp0_en從1變?yōu)?,此時加載DSP0結(jié)束。DSP0加載結(jié)束后FPGA產(chǎn)生一個狀態(tài)復位信號rst_state使狀態(tài)機復位,而后boot_dsp1_en從0變?yōu)?,開始加載DSP1。采用同樣的方法就可以實現(xiàn)加載DSP2、DSP3。

 本文介紹了一種采用FPGA加載TigerSHARC DSP的方法。在FPGA中設計的FSM可根據(jù)加載文件的結(jié)構(gòu)自動實現(xiàn)加載功能,通過TigerSHARC DSP link互聯(lián)關系可實現(xiàn)對整個信號處理系統(tǒng)的加載。此外,還介紹了加載狀態(tài)機的設計方法,并采用Signal Tap采集加載狀態(tài)機幾個典型的加載過程,驗證了加載狀態(tài)機的設計。
參考文獻
[1]  Analog Devices Inc. ADSP-TS101S TigerSHARC proces  sor boot loader kernels operation (EE-174) [EB/OL].http://www.analog.com, 2003.
[2]  劉書明,蘇濤,羅軍輝. TigerSHARC DSP 應用系統(tǒng)設計 [M]. 北京:電子工業(yè)出版社,2004:147-170.
[3]  劉書明,羅勇江. ADSP TS20XS系列DSP原理與應用設計[M]. 北京:電子工業(yè)出版社, 2007:168-192.
[4]  Analog Devices Inc. TigerSHARC embedded processor  ADSP TS101S data-sheet, Rev. A [EB/OL]. http://www.analog.com, 2003.
[5]  Analog Devices Inc. TigerSHARC embedded processor  ADSP TS201S data-sheet, Rev. C [EB/OL]. http://www.analog.com, 2006.
[6]  Analog Devices Inc. ADSP-TS101 TigerSHARC processor  hardware reference, Rev1.0 [EB/OL]. http://www.analog.  com, 2003.
[7]  Analog Devices Inc. ADSP-TS201 TigerSHARC processor   hardware reference, Rev1.1 [EB/OL]. http://www.analog.  com, 2004.

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