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