基于TMS320C6201DSP處理器與FLASH存儲器接口系統(tǒng)設計
DSP是針對實時數(shù)字信號處理而設計的數(shù)字信號處理器,由于它具有計算速度快、體積小、功耗低的突出優(yōu)點,非常適合應用于嵌入式實時系統(tǒng)。自世界上第一片通用D5P芯片TMS320C10于1982年在美國T1公司產生以來,DSP處理器便顯示出強盛的生命力。短短二十多年,世界上許多公司便開發(fā)出各種規(guī)格的DSP處理器,并使它們在通信、自動控制、雷達、氣象、導航、機器人等許多嵌入式實時領域得到了廣泛應用。20世紀90年代后期美國TI公司推出的面向通訊領域的新一代32位的TMS320C6000系列DSP芯片(簡稱C6000)是目前世界上最先進的DSP處理器,其中C62XX和C64XX為通用32位定點系列DSP處理器,C67XX為通用32位浮點系列DSP處理器,其指令速度分別高達960~4800MIPS和600MFLOPS~1GFLOPS,可與早期的巨型計算機速度相媲美,且單芯片功耗小于1.5W、采用BGA封裝(小型球柵陣列)、體積也很小(最大35mm×35mm×3.5mm)。因此,這些DSP處理器將在許多科技領域發(fā)揮重要作用。FLASH存儲器是新型的可電擦除的非易失性只讀存儲器,屬于EEPROM器件,與其它的ROM器件相比,其存儲容量大、體積小、功耗低,特別是其具有在系統(tǒng)可編程擦寫而不需要編程器擦寫的特點,使它迅速成為存儲程序代碼和重要數(shù)據(jù)的非易失性存儲器,成為嵌入式系統(tǒng)必不可少的重要器件。DSP與FLASH存儲器的接口設計是嵌入式系統(tǒng)設計的一項重要技術,本文以基于三個C6201/C6701 DSP芯片開發(fā)成功的嵌入式并行圖像處理實時系統(tǒng)為例,介紹這一設計技術。
1 C6201/C6701新一代DSP處理器
1.1 C6201/C6701的特點及外部存儲器接口EMIF
C6201為通用32位定點DSP處理器,C6701為通用32位浮點DSP處理器,它們采用并行度很高的處理器結溝,從而具有許多突出的特點:
DSP核采用改進的超長指令字(VLIW)體系結構和多流水線技術,具有8個可并行執(zhí)行的功能單元,其中6個為ALU,兩個為乘法器,并分成相同功能的兩組,在沒有指令相關情況下,最高可同時執(zhí)行8條并行指令; ·具有32個32位通用寄存器,并分成兩組,每組16個,大大加快了計算速度;
片上集成了大容量的高速程序存儲器和數(shù)據(jù)存儲措,最高可以200Mbit/s的速度訪問,并采用改進的多總線多存儲體的哈佛結構。程序存儲器為64K字節(jié)、256位寬.每個指令周期可讀取8個指令字,還可靈活設置為高速CACHE使用;數(shù)據(jù)存儲器采用雙存儲塊,每個存儲塊又采用多個存儲體,可靈活支持8/16/32位數(shù)據(jù)讀寫。C6701還可支持64位訪問,每個時鐘可訪問雙32位故據(jù).C6701還可訪問雙64位IEEE雙精度浮點數(shù)據(jù); 片上集成了32位外部存儲器接口EMIF,并且分成4個時序可編程的空間(CE0、CEl、CE2、CE3),可直接支持各種規(guī)格SDRAM(除CEl空間外)、SBSRAM、SRAM、ROM、FLASH、FIFO存儲器。同時,CEl空間還可直接支持8/16位寬的異步存儲器讀訪問,EMIF接口信號如圖1所示;
片上集成了4個主DMA控制器和一個輔助DMA控制器:
片上集成了兩個32位多功能定時器;
片上集成了兩個多通道通用串行通訊口;
片上集成了16位宿主機HPI端口,與EMIF端口一起??芍С謽嫵刹⑿卸嗵幚砥飨到y(tǒng);
片上集成的鎖相循環(huán)PLL電路,具有4倍頻外部時鐘的功能,從而在外部可采用較低的時鐘電路,而在片內可高頻(120MHz、150MHz、167MHz、200MHz)地進行計算;
片上集成了符合IEEE標準的JTAG在系統(tǒng)仿真接口,大大方便了硬件調試;
具有一個復位中斷,一個非屏蔽中斷,4個邊沿觸發(fā)的可編程的可屏蔽中斷;
雙電源供電,內核電源為1.8V,外圍設備電源為3.3V,功耗低于1.5W;
采用352BGA小型球柵陣列封裝,體積很小;
具有豐富的適合數(shù)字運算處理的指令集,并且所有的指令為條件轉移指令。
C6201/C6701高度的并行結構特點、高速的時鐘頻率使其具有高達1600MIPS和400MMAC的運算能力,比通常使用的DSP計算速度快十幾倍,甚至幾十倍,再加上其具有并行執(zhí)行、多功能、多任務的能力和豐富的指令集以及體積小、功耗低、易于使用的特點,使它非常適合在嵌入式實時系統(tǒng)中應用;同時TI公司開發(fā)了高效的C編譯器和多功能的集成開發(fā)系統(tǒng)CODE COMPOSER STUDIO(簡稱CCS)以及高性能的仿真器,大大簡化程序代碼的編寫與調試。
1.2 C620I/06701的引導工作方式
在加電后,C6201/C6701可采用直接從零地址(只能為外部存儲器)開始執(zhí)行程序的不引導方式工作;也可采用輔助DMA先自動從宿主機HPI端口或外部CEl空間(8/16/32位ROM)加載64K字節(jié)程序至零地址(片上存站器或外部存儲器),然后再從零地址開始執(zhí)行程序的引導方式工作。C6201/C6701的這些工作方式由上電復位時5個引導方式管腳BOOTMODE[4:0]的信號電平決定,這些電平信號還決定地址映射方式是采用某種類型、速度的外部存儲器為零地址的MAPO方式,還是采用片上程序存儲器為零地址D6 MAPl方式。這種結構特點大大增加了系統(tǒng)設計的靈活性。在引導工作方式中,當零地址為片上程序存儲器時,程序直接從高速256位寬的片上程宇存儲器并行執(zhí)行,能充分發(fā)揮DSP的高速性能;而其它工作方式中,程序是從外部慢速32位寬的存儲器開始出行執(zhí)行。因此,基于C6000的嵌入式系統(tǒng)一般采用引導三片上程序存儲器執(zhí)行的工作方式,如表1所示。
2 FLASH存儲器MBM29LV800BA
2.1 MBM29LV800BA介紹
MBM29LV800BA是FUJITSU公司生產的1M×8/512K×l6位的FLASH存儲器,其管腳信號如圖2所示。/BYTE為×8或×16工作方式配置管腳(/BYTE接低時為×8方式,地址線為[A-1,A0,…A18]共20根,數(shù)據(jù)線為DQ[0:7],數(shù)據(jù)線高8位不用;/BYTE接高時為×16方式,地址線為A[0:18]共19根,A-1,不用,數(shù)據(jù)線為DQ[0:15]);RY/*BY為表示FLASH就緒或忙的管腳(它是集電極開路引腳,多個RY/*BY管腳可通過上拉電阻直接"線與"連接)。
MBM29LV800BA具有許多特點,主要如下
單電源3.0V讀、編程寫入、擦除;
與JEDEC標準的命令集和引腳分布兼容;
增加了快速編程寫人命令,寫入僅需兩個總線周期;
具有至少100 000次的編程寫入/擦寫壽命;
靈活的扇區(qū)結構支持整片內容擦除、任一扇區(qū)內容擦除、相連續(xù)的多扇區(qū)內容并行擦除;
具有嵌入式編程寫入算法,可自動寫入和驗證寫入地址的數(shù)據(jù);
具有嵌入式擦除算法,可自動預編程和擦除整個芯片或任一扇區(qū)的內容;
具有數(shù)據(jù)查尋位和切換位,可以通過軟件查尋方法檢測編程寫入/擦除操作的狀態(tài);
具有RY/*BY管腳,可以通過硬件方法檢測編程寫入/擦除操作的狀態(tài);
自動休眠功能,當?shù)刂繁3址€(wěn)定時,自動轉入低功耗模式;
具有低電壓禁止寫入功能;
具有擦除暫停/擦除恢復功能,
2.2 MBM29LV800BA的主要命令及嵌入式算法
MBM29LV800BA的編程寫入及擦除命令如表2所示。其中,X為十六進制數(shù)字的任意值,RA為被讀數(shù)據(jù)的FLASH地址,RD為從FLASH地址RA讀出的數(shù)據(jù),PA為寫編程命令字的FLASH地址,PD為編程命令宇,SA為被擦除內容的扇區(qū)地址。 MBM29LV800BA具有嵌入式編程寫入和擦除算法機構,當向FLASH寫入數(shù)據(jù)內容或擦除其扇區(qū)內容時,需要根據(jù)相應的算法編程才能完成。其編程擦除算法流程為:首先寫編程擦除命令序列;然后運行數(shù)據(jù)測試算法以確定擦除操作完成;其編程寫入算法流程為:程序開始,首先驗證寫入扇區(qū)是否為空,不空則運行擦除算法;然后運行編程寫入算法,寫編程寫入命令序列,再運行數(shù)據(jù)測試算法或查詢RY/*BY管腳信號以確定該次操作完成。地址增1繼續(xù)上述過程,否則結束操作;數(shù)據(jù)測試算法主要是測試DQ7和DQ5位的數(shù)據(jù)變化,以確定泫次操作是進行中、完成、還是失敗。
3 C6201/6701與FLASH的接口設計
基于C6000系列DSP處理器的嵌入式系統(tǒng)往往采用地址映射方式為MAPl的ROM引導方式。這種方式是把開發(fā)成功的敝入式可執(zhí)行程序燒寫在CEl空間(從0~01400000地址開始的ROM存儲器)中,并根據(jù)引導方式設置相應的引導模式管腳BOOTMODE[4:0]。這樣,當嵌入式系統(tǒng)上電工作時,從復位信號的上升沿開始,輔助DMA把執(zhí)行程序從引導ROM中移至片上程序存儲船中,然后在片上程序存儲器開始執(zhí)行程序。這種方式呵充分發(fā)揮C6000系列DSP的并行結構特點,具有最好的執(zhí)行性能。當引導ROM器件采用FLASH存儲器MBM29LV800BA時,C6201/C6701與FLASH存儲器以8位方式連接的接口設計如圖3所示。FLASH的地址線[A-1,A0,…A18]與DSP的EMIF接口地址線[EA2,EA 3+…,EA21]直接相連;FLASH的低8位數(shù)據(jù)線DQ[0:7]與EMIF接口數(shù)據(jù)線[ED0,…,ED7]直接相連,高8位數(shù)據(jù)線DQ[8:15]不連接;讀寫使能信號可直接相連;EMIF接口的片選信號/CEl與字節(jié)使能信號/BE0"相與"后與FLASH的片選信號相連;FLASH的方式信號/BYTE接地;由于EMIF接口的ARDY信號為低時,DSP自動插入等待時鐘周期,因此,F(xiàn)LASH的就緒或忙RY/*BY信號經上拉電阻直接與ARDY信號相連,這種設計使FLASH的編程寫操作可不運行數(shù)據(jù)測試算法,大大簡化了程序設計;C6201/C6701與FLASH以16位或32位方式相連咱6接口設計與8位方式類似。
4 引導程序開發(fā)實現(xiàn)過程
C6000系列DSP的引導程序開發(fā)實現(xiàn)不能一步完成,它需要一系列的實現(xiàn)步驟:首先,在硬件設計的同時,可在C6000系列DSP的集成開發(fā)環(huán)境CCS中,用C語言和匯編語言編寫應用程序USAGE.C,通過編譯、連接查找、修正原程序中的錯誤,生成COFF格式的可執(zhí)行文件USAGE.OUT;其次,當硬件設計成功時,利用仿真器加載軟件程序USAGE.OUT到硬件系統(tǒng)中調試驗證軟件程序,直至程序無錯誤;然后,編寫、加載鏈接指令文件Link.crud,重新編譯、鏈接軟件程序生成BOOT.OUT文件,再利用TI公司提供的HEX轉換工具包中的轉換程序和FLASH存儲器寬度,把該BOOT.OUT文件轉換為相應的BOOT.HEX文件,由于轉換工具包中沒有提供相應的轉換程序把BOOT.OUT文件直接轉換為FLASH認可的二進制文件,因此還需要編寫轉換程序把BOOT.HEX文件再轉換為BOOT.BIN二進制文件;最后,在CCS中編寫FLASH寫入程序,編譯、鏈接生成可執(zhí)行文件,并通過JTAG端口加載運行,把得到的引導程序BOOT.BIN作為數(shù)據(jù)文件寫入引導FLASH存儲器中。需注意的是程序寫入FLASH存儲器時,需要把CEl空間寄存器設計為32位寬度存儲器接口方式。
Link.com
-c
-l rts6201.lib ;或rts7601.lib
MEMORY
{
VECS : 0=00000000h 1=00000200h
PMEM :0=00000200h 1=0000FE00h
DMEM :0=80000000h 1=00010000h
CElVECS: 0=01400000h 1=00000200h
CElPMEM:0=01400200h 1=0000FE00h
CElinit: 0=01410000h 1=00010000h
}
SECTIONS
{
.vector:load=CElVECS,run=VECS
.text :load=CElPMEM,rnn=PMEM
.cinit:load=CElinit,run=DMEM
.const:load=CElinit,run=DMEM
.data :load:CElinit,run=DMEM
.cio >DMEM
.far >DMEM
.stack >DMEM
.bss >DMEM
.svsmem>DMEM
設置引導方式管腳BOOTMODE[4:0]的信號電平為01101。當系統(tǒng)再次加電時,即可直接執(zhí)行用戶開發(fā)的嵌入式應用程序。
由于C6000系列DSP處理器具有驚人的運算速度,并且具有體積小、功耗低等特點,必將迅速得到廣泛的應用,盡快掌握其開發(fā)應用技術,可使其發(fā)揮重大作用;FLASH存儲器具有容量大、體積小、功耗低、在系統(tǒng)可編程的特點,大大方便了DSP處理器的開發(fā)及應用。C6000系列DSP與FLASH的接口設計技術已成功地在作者開發(fā)的基于三個C6201/6701處理器的嵌入式實時圖像匹配計算機中得到應用。