《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > FPGA中設(shè)計(jì)FSM實(shí)現(xiàn)TigerSHARC DSP link口加載
FPGA中設(shè)計(jì)FSM實(shí)現(xiàn)TigerSHARC DSP link口加載
來源:電子技術(shù)應(yīng)用2010年第9期
夏際金, 方志紅
中國電子科技集團(tuán) 第38研究所, 安徽 合肥230031
摘要: 介紹了一種在FPGA中實(shí)現(xiàn)的有限狀態(tài)機(jī)FSM,可以通過link口對TigerSHARC信號處理器進(jìn)行程序加載。通過信號處理器系統(tǒng)的處理器之間的link互聯(lián)結(jié)構(gòu),F(xiàn)SM可實(shí)現(xiàn)對整個信號處理系統(tǒng)的加載功能。在FPGA中設(shè)計(jì)加載狀態(tài)機(jī)及信號處理系統(tǒng)與其他系統(tǒng)的接口,使信號處理系統(tǒng)更加簡單、高效。
中圖分類號: TP302
文獻(xiàn)標(biāo)識碼: 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 口為處理器提供了快速、獨(dú)立的通信機(jī)制。link口的特點(diǎn)是點(diǎn)對點(diǎn)通信、協(xié)議比較簡單、數(shù)據(jù)率較高,因而可以通過link口實(shí)現(xiàn)多片處理器構(gòu)成處理器系統(tǒng)。
    TS101的link口和TS20X系列處理器的link口有所不同。TS101的link口采用8位雙向數(shù)據(jù)線和三根控制線構(gòu)成,采用TS101 link協(xié)議可實(shí)現(xiàn)雙工通信;而TS20X系列處理器的link口采用LVDS技術(shù)(4 bit收、4 bit發(fā)),實(shí)現(xiàn)全雙工通信。
    盡管TS101的link口和TS20X的link口在物理和協(xié)議方面都不一樣,但在應(yīng)用上都可以實(shí)現(xiàn)數(shù)據(jù)的通信以及處理器的加載功能。
1 信號處理系統(tǒng)結(jié)構(gòu)
    典型的采用TigerSHARC處理器的信號處理板連接方式為:板(簇)內(nèi)采用CLUSTER總線實(shí)現(xiàn)處理器連接,板間采用link口實(shí)現(xiàn)處理器連接。
    采用FPGA實(shí)現(xiàn)與TigerSHARC處理器link口的連接可提高信號處理系統(tǒng)與其他系統(tǒng)連接的靈活性。FPGA通過link口與信號處理系統(tǒng)連接,簡化了信號處理板卡的設(shè)計(jì);同時由于FPGA靈活性及豐富的接口資源,可以很方便實(shí)現(xiàn)與其他系統(tǒng)的連接。
    采用FPGA加載信號處理系統(tǒng),只需修改與FPGA連接的Flash中的程序就可以實(shí)現(xiàn)配置信號處理器系統(tǒng)中各處理器的程序。在加載完后,F(xiàn)PGA還可以作為信號處理系統(tǒng)的接口板,使系統(tǒng)設(shè)計(jì)更加簡單、高效。
    本文介紹一種基于FPGA通過link口加載由TS101構(gòu)成的信號處理系統(tǒng)的方法。
    FPGA加載板和TigerSHARC信號處理系統(tǒng)連接關(guān)系如圖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號改成對應(yīng)的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個標(biāo)簽字和1個目的地址,F(xiàn)inal init數(shù)據(jù)塊只有1個標(biāo)簽字。標(biāo)簽字各數(shù)據(jù)位的意義如圖3所示。由于link口的連接特點(diǎn),link加載核不支持多處理器加載,因而link加載方式中不使用ID。標(biāo)簽字的TYPE和COUNT指示了該塊數(shù)據(jù)的類型和長度。TigerSHARC加載文件以32 bit word為單位構(gòu)成(本文的word即指32 bit word)。

3 加載狀態(tài)機(jī)的設(shè)計(jì)與實(shí)現(xiàn)
    由于Flash的讀寫周期較長,設(shè)計(jì)中采用系統(tǒng)時鐘16分頻作為FPGA中Flash控制器的時鐘。直接從Flash中讀取數(shù)據(jù)無法保證DSP加載核(BOOT Loader Kernel)對程序數(shù)據(jù)的數(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ī)根據(jù)TxBP信號來判斷l(xiāng)ink口緩沖當(dāng)前狀態(tài)是忙還是空閑,只要為空閑狀態(tài)就往link緩沖中寫數(shù)據(jù),從而保證了DSP加載核總能獲取有效數(shù)據(jù)。
3.1 加載狀態(tài)機(jī)的設(shè)計(jì)
    FPGA中加載有限狀態(tài)機(jī)狀態(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é)束。
    當(dāng)需要加載時復(fù)位加載狀態(tài)機(jī),在復(fù)位時設(shè)置計(jì)數(shù)器值。復(fù)位后,狀態(tài)機(jī)就進(jìn)入了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ù)塊計(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ù)塊的類型,并計(jì)算下一數(shù)據(jù)塊的長度。根據(jù)標(biāo)簽字Tag Word的TYPE值轉(zhuǎn)換到S2、S3、S4中的某個狀態(tài)。
    當(dāng)S1狀態(tài)下TYPE為1時,狀態(tài)機(jī)轉(zhuǎn)入S2。DSP收到這塊數(shù)據(jù)后,進(jìn)入Non-zero init模式。S2狀態(tài)只需發(fā)送該數(shù)據(jù)塊,不需要對數(shù)據(jù)進(jìn)行Non-zero init處理。該模式下,link口需要發(fā)送的數(shù)據(jù)為該數(shù)據(jù)塊標(biāo)簽字的COUNT值加上數(shù)據(jù)塊頭的長度即2 words。該數(shù)據(jù)塊發(fā)送完后(數(shù)據(jù)塊計(jì)數(shù)器count_packet為0),狀態(tài)轉(zhuǎn)入S1。
    當(dāng)S1狀態(tài)下TYPE為2時,狀態(tài)機(jī)轉(zhuǎn)入S3。DSP收到這塊數(shù)據(jù)后,進(jìn)入Zero init State模式。該模式下加載程序數(shù)據(jù)塊只有數(shù)據(jù)塊頭,即標(biāo)簽字和目的地址2 words,后面即為下一個數(shù)據(jù)塊頭。此時,狀態(tài)機(jī)只需發(fā)送這個數(shù)據(jù)塊頭,不需要進(jìn)行Zero init處理。該數(shù)據(jù)塊發(fā)送完后(數(shù)據(jù)塊計(jì)數(shù)器count_packet為0),狀態(tài)轉(zhuǎn)入S1。
    當(dāng)S1狀態(tài)下TYPE為0時,狀態(tài)機(jī)轉(zhuǎn)入S4。相應(yīng)地,DSP進(jìn)入到Final init模式,完成加載核的自我覆蓋。此時狀態(tài)機(jī)要發(fā)送的有效數(shù)據(jù)長度為257 words,即1 word Final init標(biāo)簽字和256 words加載核自我覆蓋程序。當(dāng)發(fā)送完Final init加載數(shù)據(jù),有效的加載程序已經(jīng)發(fā)送完。需要注意的是,加載核在取link口數(shù)據(jù)是啟動DMA傳輸?shù)?,而link口至內(nèi)/外部存儲器的DMA是以4字組方式傳輸,因而當(dāng)程序不是4字對齊時,發(fā)送的加載程序長度須以4字補(bǔ)齊。加載狀態(tài)機(jī)會根據(jù)加載文件自動完成4字補(bǔ)齊,發(fā)送的長度為將程序4字補(bǔ)齊后的長度,以滿足link口DMA的時序要求。
    當(dāng)S4狀態(tài)下數(shù)據(jù)塊計(jì)數(shù)器count_packet為0時,狀態(tài)機(jī)轉(zhuǎn)入S5,加載1個DSP結(jié)束。
    當(dāng)狀態(tài)機(jī)轉(zhuǎn)入S5時,F(xiàn)PGA 的加載狀態(tài)機(jī)已實(shí)現(xiàn)了通過link口對DSP的加載過程。為了實(shí)現(xiàn)信號處理系統(tǒng)中所有板卡的加載,第一塊信號處理板要完成對第二塊信號處理板卡的加載。link板卡的級聯(lián)關(guān)系見圖1,F(xiàn)PGA加載完第一塊板的DSP后,等待DSP運(yùn)行起來,而后通過link口發(fā)送第二塊板的加載程序給第一塊板。第一塊板收到第二塊板的加載程序后,可以實(shí)現(xiàn)對第二塊板的加載。采用同樣的方法就可以實(shí)現(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ù)塊計(jì)數(shù)器。
    TAG_COUNT、TAG_TYPE:分別是標(biāo)簽字的COUNT和TYPE值。
    STATE_FSM:狀態(tài)機(jī)的當(dāng)前狀態(tài)。
    rst_state:狀態(tài)機(jī)復(fù)位控制信號。
    l0_lxdata、l0_lxclkout、l0_lxclkin:分別是FPGA的link0端口接口數(shù)據(jù)、時鐘/應(yīng)答輸出、時鐘/應(yīng)答輸入。
    圖中采樣時鐘為link模塊輸入時鐘,1個周期link口發(fā)送1 B數(shù)據(jù)。由于狀態(tài)機(jī)采用的是邊發(fā)送link數(shù)據(jù)邊解譯加載數(shù)據(jù)的方法,因而狀態(tài)機(jī)狀態(tài)轉(zhuǎn)換過程要滯后發(fā)送數(shù)據(jù)4個周期(1 word),通過在發(fā)送DSP Boot Loader Kernel這個狀態(tài)計(jì)數(shù)值多4個字而在Final Init過程計(jì)數(shù)值少4個字來實(shí)現(xiàn)對齊。
 圖5為加載開始,STATE_FSM狀態(tài)為0,此時FPGA發(fā)送DSP Boot Loader Kernel給TigerSHARC DSP。加載開始時計(jì)數(shù)值為0x403 bytes,共發(fā)送0x404 bytes數(shù)據(jù)。如前所述,在發(fā)送DSP Boot Loader Kernel時比其實(shí)際長度0x400 bytes多4 bytes。

   圖6為加載中間加載過程,STATE_FSM狀態(tài)依次為3、1、3、1、2。當(dāng)STATE_FSM為第一個1時,TAG_TYPE為2、TAG_COUNT為3,標(biāo)志下一個狀態(tài)為Zero init State。此狀態(tài)下FPGA需要發(fā)送2 words, 因而count_packet為0x6(count_packet為0占了2個周期)。當(dāng)STATE_FSM為第二個1時,TAG_TYPE為1、TAG_COUNT為4,標(biāo)志下一個狀態(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所示,當(dāng)STATE_FSM為4且計(jì)數(shù)值為0時,STATE_FSM轉(zhuǎn)為5、boot_dsp0_en從1變?yōu)?,此時加載DSP0結(jié)束。DSP0加載結(jié)束后FPGA產(chǎn)生一個狀態(tài)復(fù)位信號rst_state使?fàn)顟B(tài)機(jī)復(fù)位,而后boot_dsp1_en從0變?yōu)?,開始加載DSP1。采用同樣的方法就可以實(shí)現(xiàn)加載DSP2、DSP3。

 本文介紹了一種采用FPGA加載TigerSHARC DSP的方法。在FPGA中設(shè)計(jì)的FSM可根據(jù)加載文件的結(jié)構(gòu)自動實(shí)現(xiàn)加載功能,通過TigerSHARC DSP link互聯(lián)關(guān)系可實(shí)現(xiàn)對整個信號處理系統(tǒng)的加載。此外,還介紹了加載狀態(tài)機(jī)的設(shè)計(jì)方法,并采用Signal Tap采集加載狀態(tài)機(jī)幾個典型的加載過程,驗(yàn)證了加載狀態(tài)機(jī)的設(shè)計(jì)。
參考文獻(xiàn)
[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 應(yīng)用系統(tǒng)設(shè)計(jì) [M]. 北京:電子工業(yè)出版社,2004:147-170.
[3]  劉書明,羅勇江. ADSP TS20XS系列DSP原理與應(yīng)用設(shè)計(jì)[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)授權(quán)禁止轉(zhuǎn)載。