《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > FPGA中設(shè)計(jì)FSM實(shí)現(xiàn)TigerSHARC DSP link口加載
FPGA中設(shè)計(jì)FSM實(shí)現(xiàn)TigerSHARC DSP link口加載
來(lái)源:電子技術(shù)應(yīng)用2010年第9期
夏際金, 方志紅
中國(guó)電子科技集團(tuán) 第38研究所, 安徽 合肥230031
摘要: 介紹了一種在FPGA中實(shí)現(xiàn)的有限狀態(tài)機(jī)FSM,,可以通過(guò)link口對(duì)TigerSHARC信號(hào)處理器進(jìn)行程序加載,。通過(guò)信號(hào)處理器系統(tǒng)的處理器之間的link互聯(lián)結(jié)構(gòu),F(xiàn)SM可實(shí)現(xiàn)對(duì)整個(gè)信號(hào)處理系統(tǒng)的加載功能,。在FPGA中設(shè)計(jì)加載狀態(tài)機(jī)及信號(hào)處理系統(tǒng)與其他系統(tǒng)的接口,,使信號(hào)處理系統(tǒng)更加簡(jiǎn)單,、高效。
中圖分類號(hào): TP302
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 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ù)字信號(hào)處理器,,包含ADSP TS101,、ADSP TS201、ADSP TS202,、ADSP TS203,。TigerSHARC系列處理器的link 口為處理器提供了快速、獨(dú)立的通信機(jī)制,。link口的特點(diǎn)是點(diǎn)對(duì)點(diǎn)通信,、協(xié)議比較簡(jiǎn)單、數(shù)據(jù)率較高,,因而可以通過(guò)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 信號(hào)處理系統(tǒng)結(jié)構(gòu)
    典型的采用TigerSHARC處理器的信號(hào)處理板連接方式為:板(簇)內(nèi)采用CLUSTER總線實(shí)現(xiàn)處理器連接,,板間采用link口實(shí)現(xiàn)處理器連接。
    采用FPGA實(shí)現(xiàn)與TigerSHARC處理器link口的連接可提高信號(hào)處理系統(tǒng)與其他系統(tǒng)連接的靈活性,。FPGA通過(guò)link口與信號(hào)處理系統(tǒng)連接,簡(jiǎn)化了信號(hào)處理板卡的設(shè)計(jì),;同時(shí)由于FPGA靈活性及豐富的接口資源,,可以很方便實(shí)現(xiàn)與其他系統(tǒng)的連接。
    采用FPGA加載信號(hào)處理系統(tǒng),,只需修改與FPGA連接的Flash中的程序就可以實(shí)現(xiàn)配置信號(hào)處理器系統(tǒng)中各處理器的程序,。在加載完后,,F(xiàn)PGA還可以作為信號(hào)處理系統(tǒng)的接口板,使系統(tǒng)設(shè)計(jì)更加簡(jiǎn)單,、高效,。
    本文介紹一種基于FPGA通過(guò)link口加載由TS101構(gòu)成的信號(hào)處理系統(tǒng)的方法。
    FPGA加載板和TigerSHARC信號(hào)處理系統(tǒng)連接關(guān)系如圖1所示,。

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

3 加載狀態(tài)機(jī)的設(shè)計(jì)與實(shí)現(xiàn)
    由于Flash的讀寫周期較長(zhǎng),設(shè)計(jì)中采用系統(tǒng)時(shí)鐘16分頻作為FPGA中Flash控制器的時(shí)鐘,。直接從Flash中讀取數(shù)據(jù)無(wú)法保證DSP加載核(BOOT Loader Kernel)對(duì)程序數(shù)據(jù)的數(shù)據(jù)率要求,,因而在設(shè)計(jì)中先將Flash中的數(shù)據(jù)轉(zhuǎn)存到與FPGA相連的SRAM中。SRAM讀出數(shù)據(jù)為32 bit,,讀寫SRAM的數(shù)據(jù)率可以大大超過(guò)link口的吞吐率,。FPGA中開辟2塊RAM作為乒、乓RAM緩存從SRAM中讀取數(shù)據(jù),,以保證FPGA發(fā)送link的數(shù)據(jù)保持在就緒狀態(tài),,DSP加載核在任何時(shí)候取數(shù),FPGA link都能提供有效數(shù)據(jù)。
    FPGA發(fā)送到link模塊的信號(hào)為TxWrite,、TxData,、TxBP。加載狀態(tài)機(jī)根據(jù)TxBP信號(hào)來(lái)判斷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)說(shuō)明:
    S0:BootLoader Kernel State;S1:數(shù)據(jù)塊類型判斷,;S2:Non-zer init State;S3:Zero init State;S4:Final init State;S5:結(jié)束,。
    當(dāng)需要加載時(shí)復(fù)位加載狀態(tài)機(jī),在復(fù)位時(shí)設(shè)置計(jì)數(shù)器值,。復(fù)位后,,狀態(tài)機(jī)就進(jìn)入了S0狀態(tài)。
    S0狀態(tài)為發(fā)送DSP Boot Loader Kernel給需要加載的DSP,,長(zhǎng)度為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ā)送的一個(gè)中間過(guò)渡狀態(tài),。在該狀態(tài)下判斷下一數(shù)據(jù)塊的類型,并計(jì)算下一數(shù)據(jù)塊的長(zhǎng)度,。根據(jù)標(biāo)簽字Tag Word的TYPE值轉(zhuǎn)換到S2,、S3、S4中的某個(gè)狀態(tài),。
    當(dāng)S1狀態(tài)下TYPE為1時(shí),,狀態(tài)機(jī)轉(zhuǎn)入S2。DSP收到這塊數(shù)據(jù)后,,進(jìn)入Non-zero init模式,。S2狀態(tài)只需發(fā)送該數(shù)據(jù)塊,不需要對(duì)數(shù)據(jù)進(jìn)行Non-zero init處理,。該模式下,link口需要發(fā)送的數(shù)據(jù)為該數(shù)據(jù)塊標(biāo)簽字的COUNT值加上數(shù)據(jù)塊頭的長(zhǎng)度即2 words,。該數(shù)據(jù)塊發(fā)送完后(數(shù)據(jù)塊計(jì)數(shù)器count_packet為0),狀態(tài)轉(zhuǎn)入S1,。
    當(dāng)S1狀態(tài)下TYPE為2時(shí),,狀態(tài)機(jī)轉(zhuǎn)入S3。DSP收到這塊數(shù)據(jù)后,,進(jìn)入Zero init State模式,。該模式下加載程序數(shù)據(jù)塊只有數(shù)據(jù)塊頭,即標(biāo)簽字和目的地址2 words,,后面即為下一個(gè)數(shù)據(jù)塊頭,。此時(shí),狀態(tài)機(jī)只需發(fā)送這個(gè)數(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時(shí),,狀態(tài)機(jī)轉(zhuǎn)入S4,。相應(yīng)地,DSP進(jìn)入到Final init模式,,完成加載核的自我覆蓋,。此時(shí)狀態(tài)機(jī)要發(fā)送的有效數(shù)據(jù)長(zhǎng)度為257 words,即1 word Final init標(biāo)簽字和256 words加載核自我覆蓋程序,。當(dāng)發(fā)送完Final init加載數(shù)據(jù),,有效的加載程序已經(jīng)發(fā)送完。需要注意的是,,加載核在取link口數(shù)據(jù)是啟動(dòng)DMA傳輸?shù)?,而link口至內(nèi)/外部存儲(chǔ)器的DMA是以4字組方式傳輸,因而當(dāng)程序不是4字對(duì)齊時(shí),發(fā)送的加載程序長(zhǎng)度須以4字補(bǔ)齊,。加載狀態(tài)機(jī)會(huì)根據(jù)加載文件自動(dòng)完成4字補(bǔ)齊,,發(fā)送的長(zhǎng)度為將程序4字補(bǔ)齊后的長(zhǎng)度,以滿足link口DMA的時(shí)序要求,。
    當(dāng)S4狀態(tài)下數(shù)據(jù)塊計(jì)數(shù)器count_packet為0時(shí),狀態(tài)機(jī)轉(zhuǎn)入S5,,加載1個(gè)DSP結(jié)束。
    當(dāng)狀態(tài)機(jī)轉(zhuǎn)入S5時(shí),,F(xiàn)PGA 的加載狀態(tài)機(jī)已實(shí)現(xiàn)了通過(guò)link口對(duì)DSP的加載過(guò)程,。為了實(shí)現(xiàn)信號(hào)處理系統(tǒng)中所有板卡的加載,第一塊信號(hào)處理板要完成對(duì)第二塊信號(hào)處理板卡的加載,。link板卡的級(jí)聯(lián)關(guān)系見圖1,,F(xiàn)PGA加載完第一塊板的DSP后,等待DSP運(yùn)行起來(lái),,而后通過(guò)link口發(fā)送第二塊板的加載程序給第一塊板,。第一塊板收到第二塊板的加載程序后,可以實(shí)現(xiàn)對(duì)第二塊板的加載,。采用同樣的方法就可以實(shí)現(xiàn)級(jí)聯(lián)的每塊板卡的每個(gè)DSP的加載功能,。
3.2  Signal Tap采集加載過(guò)程
    采用Signal Tap采集加載開始、中間狀態(tài)轉(zhuǎn)換和加載結(jié)束的結(jié)果分別如圖5~7所示,。圖中各信號(hào)的意義如下:
    boot_dsp0_en,、boot_dsp1_en:分別是加載第一塊信號(hào)處理板DSP0、DSP1的使能信號(hào),。
    txdata,、txwrite_ba_int、txbp:分別是link模塊控制端輸入數(shù)據(jù),、寫控制信號(hào),、緩沖滿信號(hào)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ù)位控制信號(hào)。
    l0_lxdata,、l0_lxclkout,、l0_lxclkin:分別是FPGA的link0端口接口數(shù)據(jù)、時(shí)鐘/應(yīng)答輸出,、時(shí)鐘/應(yīng)答輸入,。
    圖中采樣時(shí)鐘為link模塊輸入時(shí)鐘,1個(gè)周期link口發(fā)送1 B數(shù)據(jù),。由于狀態(tài)機(jī)采用的是邊發(fā)送link數(shù)據(jù)邊解譯加載數(shù)據(jù)的方法,,因而狀態(tài)機(jī)狀態(tài)轉(zhuǎn)換過(guò)程要滯后發(fā)送數(shù)據(jù)4個(gè)周期(1 word),通過(guò)在發(fā)送DSP Boot Loader Kernel這個(gè)狀態(tài)計(jì)數(shù)值多4個(gè)字而在Final Init過(guò)程計(jì)數(shù)值少4個(gè)字來(lái)實(shí)現(xiàn)對(duì)齊。
 圖5為加載開始,,STATE_FSM狀態(tài)為0,,此時(shí)FPGA發(fā)送DSP Boot Loader Kernel給TigerSHARC DSP。加載開始時(shí)計(jì)數(shù)值為0x403 bytes,,共發(fā)送0x404 bytes數(shù)據(jù),。如前所述,在發(fā)送DSP Boot Loader Kernel時(shí)比其實(shí)際長(zhǎng)度0x400 bytes多4 bytes,。

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

    如圖7所示,當(dāng)STATE_FSM為4且計(jì)數(shù)值為0時(shí),STATE_FSM轉(zhuǎn)為5、boot_dsp0_en從1變?yōu)?,,此時(shí)加載DSP0結(jié)束,。DSP0加載結(jié)束后FPGA產(chǎn)生一個(gè)狀態(tài)復(fù)位信號(hào)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)自動(dòng)實(shí)現(xiàn)加載功能,,通過(guò)TigerSHARC DSP link互聯(lián)關(guān)系可實(shí)現(xiàn)對(duì)整個(gè)信號(hào)處理系統(tǒng)的加載,。此外,還介紹了加載狀態(tài)機(jī)的設(shè)計(jì)方法,,并采用Signal Tap采集加載狀態(tài)機(jī)幾個(gè)典型的加載過(guò)程,,驗(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)載,。