關鍵詞:DSP;TigerSHARC;引導程序;加載;接口;TS201S
隨著DSP技術的發(fā)展,DSP的功能越來越強,類型也越來越多。由于DSP內部結構的特點,DSP的算法程序一般都存儲在外部的非易失性存儲器中,在系統上電后,要將算法程序從外部存儲器加載到DSP中,再進行相應的數據算法處理。
TS20lS是ADI公司TigerSHARC系列中集成了定點和浮點計算功能的高速DSP。處理器工作在600MHz,單周期能執(zhí)行4條指令,每秒能進行3.4億次乘累加和2.8億次浮點操作,是面向通信和視頻領域的高端DSP。TS201S包括24Mbit的片內DRAM;1個14通道的DMA控制器:4個鏈路口可用于和其他DSP進行無縫聯接。以組成一個多DSP處理器系統,每個鏈路口的數據率可達1GB/s;集成SDRAM控制器最大支持256M x 32bit的內存容量,方便和外部SDRAM連接。TS20lS非常適合對大數據量數據處理實時性要求高的應用領域。
TigerSHARC系列的DSP接口豐富,其引導程序的加載方法也非常靈活,可根據實際系統設計的需要靈活選用。
1 TigerSHARC系列DSP的引導模式
DSP的引導就是在DSP系統復位的情況下從DSP外部存儲器裝載算法程序代碼的過程。TS201S支持二種引導模式:主引導(master boot)模式和從引導(slave boot)模式。
在主引導模式下,TS201S作為主動方,用外部口輸出地址、讀、引導方式選擇(BMS)等控制信號,從EPROM或Flash中加載代碼。在從引導模式下,TS201S作為被動方,不向外部輸出控制信號,外部主機或其他設備向TS201S的主機、鏈路口傳送要加載的代碼,TS201S僅啟動若干DMA通道,并執(zhí)行第一個DMA所接收的加載核。
另外,TS201S還可以選擇一種“非引導”模式,或利用TS20lS的(仿真器)EZ—ICE加載程序,這種方式可直接將程序加載進TS201S內部的RAM或外部的RAM中,DSP直接從RAM中運行程序,常用于DSP的調試過程。
通過對TS20lS的BMS引腳的設置,可將DSP的引導過程設置成主引導模式或從引導模式。在DSP復位期間,如果BMS低電平,則選擇主引導模式,DSP從外部EPROM或Flash中加載程序;若BMS引腳為高電平,則進入從引導模式,DSP為空閑狀態(tài),等待主機或鏈路口加載程序。2種引導模式都有相同的加載過程。具體步驟如下:
(1)TS201S自動啟動一個DMA.自動把256個字(32位)傳送到內部存儲器的地址0x00-0xFF。
(2)TS201S執(zhí)行上述256個字的指令(加載核),加載核啟動其他DMA,把后續(xù)指令和數據加載到內部和/或外部存儲器中。
(3)加載核自我覆蓋,執(zhí)行DSP算法程序。
2 單TS201S的程序加載接口設計
TigerSHARC系列中的TS20lS作為單個DSP使用時,主要有3種引導方式。
2.1外部EPROM引導
外部EPROM引導為主引導模式,是最常用的引導模式。在該模式下,BMS引腳和RD引腳作為EPROM的片選和輸出使能引腳。EPROM的8位數據線接TS201S的DATA0-DATA7。TS20lS最大支持16M的EPROM地址空間,其低位地址引腳與EPROM的地址引腳相連。對于多處理器共享總線的系統,可用一個EPROM對所有TS201S加載。圖1所示為ST公司的Flash(DSM2150)與TS201S程序加載接口設計實例。
復位后,DMA通道0被自動配置好,DMA相應的2個TCB寄存器(Transfer Control Block)被初始化,然后從8位的外部EPROM地址0開始,把一個256字的加載核傳送到內部存儲器地址0x00-0xFFo。DMA通道0的中斷矢量初始化為內部存儲器地址0x00。當DMA通道0傳送完成時,產生中斷,TS20lS開始從0x00執(zhí)行加載核。然后,加載核通過一串單字DMA傳送將后續(xù)應用代碼和數據加載。最后,加載核啟動一個256字的DMA,使其自身被用戶應用程序代碼覆蓋。當該DMA過程完成時,DMA通道0的中斷矢量人口地址為內部存儲器地址0,用戶的應用代碼從地址0開始執(zhí)行。TS20lS的外部接口是32位數據寬度,所以TS201S在通過DMA通道加載程序時,自動使用8到32位的專用打包方式,低位在前,完成從EPR()M的DMA讀。只有DMA通道0支持該專用打包方式,所以引導程序必須用DMA0。
另外,在算法應用程序運行階段,內核不能用指令使能BMS的方式直接對EPROM進行訪問,但可通過DMA通道方式訪問。這是因為EPROM是字節(jié)尋址空間,它不屬于TS201S的存儲器空間。外部EPROM所占的最大存儲空間為16M字節(jié),由于E-PROM是慢速外設,對EPROM的每一個讀訪問,TS201S都要等待16個周期。TS201S對外部E-PROM的讀時序如圖2所示。
2.2主機引導
采用主機(HOST)引導模式時,32位或64位主機通過外部的數據和地址總線完成對TS201S的引導。在主機引導方式下TS201S可用任何一個Auto DMA通道進行代碼傳送。其余過程與外部E-PROM引導相同。主機通過DSM狀態(tài)寄存器(DSSTAT)監(jiān)視Auto DMA的狀態(tài)。在一默認的情況下TS201S的外部總線寬度被設置成32位,所以主機必須使用流水線協議與TS201S進行通信。
2.3鏈路口引導
TS201S有4個鏈路口(Link Port),每個鏈路口都可用于引導程序的加載。其加載過程和主機引導模式相似。
3 多TS201S的程序加載接口設計
在實際的系統設計中,在處理高數據流和大數據量的條件下經常用到多個DSP級聯。對多個DSP進行程序加載,用EPROM、HOST、LINK PORI、加載模式都可實現。
在EPROM引導模式下,將各DSP的麗BMS引腳接到一起,連接到EPROM的片選信號上,外部地址、數據也都分別連到EPROM的數據、地址總線上,各DSP按總線優(yōu)先權依次訪問EPROM。EPROM引導多DSP的另一種方法是在主DSP(ID2-0=000)加載完成后,通過多DSF的存儲器空間向其他DSP的AutoDMA通道0寫入加載碼,完成其他DSP的程序加載。這種方法只有主DSP的RD引腳和EPROM片選相連,其他。DSP的RD信號通過外部上拉電阻器上拉。
在HOST加載模式下,主機按照流水協議,用HBR和HBG信號引導其他DSP。
在多DSP系統中LINK PORT加載方式是最為靈活的一種程序加載方式,可將前面二種加載模式結合使用,當第一個DSP用EPROM。或HOST加載成功后,可按菊花鏈形式由第一個依次加載其他的DSP。
4 引導程序設計
下面以EPROM引導模式為例說明TS20lS引導程序的設計方法。ADI公司的visual DSP++工具提供的程序加載應用程序(elfloader.exe)可將DSP算法程序和加載核程序合并生成:EPROM的加載輸出文件(*.ldr)。該加載輸出文件用來定義加載過程中TS201S的內部和外部存儲器如何被初始化,其格式如圖3所示。其中數據標識塊中標簽字的格式定義如圖4所示。
DSF程序加載過程中的比較復雜的過程是加載核的自我覆蓋。當數據標識塊中標簽字的高3位的數據為O時(見圖4,TYPE=0),加載核執(zhí)行“結束加載”的過程,用DSt算法代碼覆蓋加載核的256個字的程序。這是加載過程的最后一個DMA,將DSP從IDLE狀態(tài)喚醒,完成加載核的自我覆蓋,但是,簡單的自我覆蓋會使DSP算法程序從DMA0中斷級開始執(zhí)行,這是所不希望的。為了解決這一問題,通過以下算法來實現。
(1)DSP算法代碼的第一個4字被存儲在xRll:8中。
(2)將以下代碼寫入Ox00000000一Ox00000003 RETI=0;;NOP;;RTI(NP);;QD31+=0]=xRl 1:8;;
(3)DMA中斷矢量設置為地址0。
(4)設置地址緩沖區(qū)無效(BTBINV)以清除緩沖區(qū)內的任何分支地址。
(5)把256個用戶代碼放到0x00000004-0x000000FF。
(6)對TCB編程,啟動DMlA,處理器進入IDLE狀態(tài)。
(7)DMA完成后,響應DMA中斷,程序控制器跳到地址0x00000000,開始執(zhí)行以下代碼:RTI(NPl;;Q[j3 l+=0]=xRll:8;;。
這些指令使中斷降級,用戶DSP算法程序放到0x00000000-Ox00000003,指令計數器指針指到地址0x00000000(),用戶的算法程序從0x00000000開始執(zhí)行,此時算法程序不處于中斷級。這里的NP選項是必須的,以使:RTI指令不緩沖到:BTB中。
如系統中的外部存儲器要被特殊初始化(如SDRAM),則這個存儲器必須由內核來配置及初始化。加載核要被修改和重新編譯,最后的加載核代碼不能超過256個字,是由:DSP的特點所決定的。
5 結束語
ADI公司的高性能Tiger SHARK系列TS201S型DSF已在對實時處理要求高的場合得到廣泛應用,如通信基站、機載雷達預警、陣列信號處理等。文中著重論述了其程序加載接口,介紹了DSF加載的幾種常用模式,并給出了一種實用的接口方案。在軟件方面,對DSP加載過程中的難點做了說明。文中提到的幾種DSP程序加載方法也適用于其他類型的DSP,讀者可將其靈活運用于實際的DSP系統設計中。