目前,,DSP" title="DSP">DSP技術已廣泛用于信號處理、通信和雷達等領域,。TI公司的帶EMIF" title="EMIF">EMIF擴展存儲器接口的浮點" title="浮點">浮點DSPTMS320C672x" title="TMS320C672x">TMS320C672x系列是專為高速,、高性能應用而開發(fā)的,主要應用于高速寬帶,、圖像處理和高速鐵路軌道信號處理等領域,。DSP應用平臺設計中,外部存儲器接口(EMIF)是為DSP與外部設備之間提供連接,。EMIF和外部器件SDRAM以及Flash的合理設計關系到系統(tǒng)的數(shù)據(jù)存儲和程序加載,。
TMS320C672x系列浮點DSP的EMIF性能優(yōu)良,增強了與外部1,、2或4區(qū)的16位或32位SDRAM和異步器件連接的方便性和靈活性,。TMS320C6722和TMS320C6726 EMIF寬度為16位,支持的SDRAM可達128 Mb,;TMS320C6727EMIF寬度為32位,,支持高達256Mb和512Mb的SDRAM,。
異步存儲器接口是從并行的8位、16位或32位NOR Flash實現(xiàn)系統(tǒng)自啟動,。若使用大容量的Flash,,EMIF連接Flash的高位地址線可通過外部器件CPLD或自身GPIO口擴展。
1 EMIF接口
EMIF接口具有很強的外設連接能力,,可尋址空間一般比較大,,數(shù)據(jù)吞吐較快。EMW接口支持的器件包括同步突發(fā)靜態(tài)RAM(SBSRAM),、同步動態(tài)RAM(SDRAM),、各種異步設備(SRAM、ROM和FIFO)以及同步FIFO,。TMS320C672x的EMIF引腳結構如圖1所示,。
其主要引腳功能如下:
EM_A[x:0]:EMIF地址總線。當與SDRAM器件連接時,,地址總線主要為SDRAM提供行地址和列地址,。當與異步器件連接時,這些引腳與EM_BA引腳提供器件地址,。
EM_BA[1:0]:EMIF存儲區(qū)地址線,。與SDRAM連接時,為SDRAM提供存儲區(qū)地址,。與異步器件連接時,,這些引腳與EM_A引腳共同提供器件地址。
EM_WE_DQM[x:0]:低電平有效寫觸發(fā)或字節(jié)使能引腳,。與SDRAM連接時,,這些引腳與SDRAM的DQM引腳連接。在數(shù)據(jù)訪問中分別使能/禁止每一字節(jié),。與異步器件連接時,,這些引腳可作為字節(jié)使能(DQM)或字節(jié)寫觸發(fā)(WE)。
EM_CS[0]和[2]:CS[0]為SDRAM器件低電平有效芯片使能引腳,,當訪問異步器件時此引腳失效,,在完成異步存取后自動恢復其功能;CS[2]為低電平有效異步器件使能引腳,,僅在訪問異步存儲器時有效,。
EM_RAS:低電平有效行地址選通引腳,與SDRAM的RAS引腳連接,,用于向此器件發(fā)送命令,。
EM_CAS:低電平有效列地址選通引腳,與SDRAM的CAS引腳連接,用于向此器件發(fā)送命令,。
EM_CKE:時鐘使能引腳,,與SDRAM的CKE連接,發(fā)出自刷新命令,,使器件進入自刷新模式,。
EM_CLK:SDRAM時鐘引腳,EMIF時鐘來自DSP的PLL控制器的SYSCLK3時鐘模塊,。
2 EMIF與SDRAM的設計
這里以SDRAM(HY57V281620A)為例,,說明EMIF和SDRAM的接口與配置,HY57V281620A是4 Bankx2MBx16 bit的SDRAM器件,,可與TMS320C67 22 DSP無縫連接,。圖2是TMS320C6722型DSP與HY57V281620A型SDRAM的電路連接。
2.1 SDRAM的軟件配置
在TMS320C6722的EMIF中有一組存儲器映射寄存器,,通過設置這些寄存器便可完成對SDRAM的配置,包括配置寄存器SDCR,、刷新控制寄存器SDRCR,、時序寄存器SDTIMR和自刷新退出時序寄存器SDSRETR。具體的配置代碼如下:
2.2 SDRAM的軟件操作
根據(jù)上面軟件配置中IBANK和PAGESIZE字段的設置,,圖3列出了C6722 EMIF連接16位4區(qū)256字頁面的SDRAM地址映射關系,,其他系列地址映射關系參考TI資料。SDRAM讀/寫程序流程如圖4所示,。
EMIF控制SDRAM工作時,,當行地址選通引腳EM_RAS有效時,SDRAM通過A0~A11獲取行地址,;當列選通引腳EM_CAS有效時,,SDRAM通過A0~A11獲取列地址。EMIF訪問的外部SDRAM空間地址映射為0x80000000-0x8FFFFFFF,,由表1的地址映射知,,如果要存儲16位的short int型數(shù)據(jù)到SDRAM,每次邏輯地址需要加2,,如:*(short int*)(0x80000000+i*2)=short int i,;存儲32位的int型數(shù)據(jù)每次地址需要加4,如:*(int*)(0x80000000+i*4)=int i,。
3 EMIF與Flash的設計
當DSP脫機運行時,,系統(tǒng)上電或復位后,DSP系統(tǒng)自帶的Bootloader將一段存儲在外部的非易失性存儲器中的代碼搬移到內部高速存儲單元中執(zhí)行,。這樣既利用了外部存儲單元擴展DSP本身有限的ROM資源,,又充分發(fā)揮了DSP內部資源的效能。TMS320C672x系列DSP只支持一種硬啟動選項,,即從內部ROM地址0x00000000啟動,,其他啟動選項由存儲于ROM的軟啟動器實現(xiàn),。軟啟動器使用CFGPIN0和CFGPIN1寄存器,這2個寄存器在復位時捕捉相關器件引腳的狀態(tài),,以決定進入那種啟動模式,。ROM主要有4種自啟動模式:從EM_CS2空間的并行Flash啟動、利用SPI0或I2C1主模式從EEPROM啟動,、利用SPI0或I2C1從模式從外部MCU啟動以及利用UHPI口從外部MCU啟動,。這里分析了從EM_CS2空間的并行Flash啟動模式,給出了高密度,、非易失性的電可擦除存儲器AM29LV800BB-90EC(512 Kx16 Bit)與EMIF的接口設計方案,。
3.1 Flash的硬件連接
AM29LV800BB~90EC型Flash具有19根地址線,而TMS320C6722 EMIF只有14根地址線(EBA0~EBA1,、EA0~EA11),。因此,EMIF與Flash連接時地址線不夠用,,需要擴展高位地址線,,這里提出兩種擴展方法:GPIO擴展和CPLD地址鎖存器擴展。
3.1.1 GPIO擴展
TMS320C672X MCASP通道的各功能引腳都可以作為通用的I/O接口,,直接與Flash存儲器的高位地址線連接,。硬件原理圖如圖5所示研。圖5中,,任何在復位時可下拉的GPIO引腳都可用于控制Flash啟動器的地址線A[18:13],。
3.1.2 CPLD地址鎖存器擴展
在CPID中設計一個地址鎖存器74L273,通過74L273的輸出口擴展7根高位地址線A11~A17,,分別與Flash的A12~A18連接,。EMW的EM_A[11]作為CPLD鎖存器的輸入選通端選,EMIT數(shù)據(jù)線作為鎖存器的輸入,,如圖6所示,。
3.2 FLash的軟件配置
在EMIF異步接口中,AICR是唯一需要編程的寄存器,。根據(jù)Flash器件的特性,,配置如下:
3.3 Flash的軟件操作
TMS320C672x DSP的存儲器中EMIF訪問的外部異步器件Flash空間地址映射為0x90000000~0x9FFFFFFF之間。由于Flash數(shù)據(jù)總線寬度為16位,,因此在硬件設計時選用半字尋址,,即EMIF的BA[1]連接Flash的A[0]。根據(jù)配置寄存器A1CR中數(shù)據(jù)總線寬度的配置,,訪問異步器件時TMS320C6722中內部地址和EMIF地址引腳對應如表1所示,。
Flash在讀操作中類似于普通的ROM,在寫操作中需要使用一些特殊命令字,按一定的順序編程,,且可隨時編程,,編程命令根據(jù)器件參考資料。對Flash的讀/寫流程如圖7所示,。
由表1知,,對Flash進行16位數(shù)據(jù)寫操作時每次偏移地址需要左移1位,即:*(short int*)(0x90000000+i*2)=shortint i://對Flash的i地址寫入16位數(shù)據(jù)i由于此Flash高位地址線為擴展的地址線,,必然導致訪問Flash時地址不連續(xù),。每次只能連續(xù)訪問Flash內部4 Kx16 Bit空間,即0x9000_0000~0x9000_1FFE,。需要訪問高地址空間時,,首先通過設置相應的GPIO引腳或者通過數(shù)據(jù)線利用CPLD設置Flash的相應高地址線;然后再分別操作低位地址線進行讀寫,,便可完成對高地址空間的讀寫,。
4 EMIF并行Flash自啟動
4.1 Flash自啟動過程
在實際應用中通常把代碼和數(shù)據(jù)表存放在外部的非易失性存儲器Flash中。TMS320C672X系列DSP片上的Bootloader工具只能將1KB的代碼搬移到內部RAM,。但是在通常情況下,,用戶應用程序的大小都會超過1 KB,所以需要在外部Flash的前1 KB范圍內預先存放一小段程序,,待片上Bootloader工具把此段代碼搬移入內部并開始執(zhí)行后,由此段代碼將Flash中剩余的用戶應用程序搬移入內部RAM中,。Flash中前1 KB代碼為二級Bootloader,。系統(tǒng)上電或復位時,DSP內部固化的啟動代碼會自動將位于Flash地址空間(0x90000000~0x9FFFFFFF)開頭的1 KB代碼傳輸?shù)絉AM存儲空間,,這就是一次引導,。很明顯,一次引導的代碼并不能滿足絕大多數(shù)編程者對代碼長度的要求,,因此就需要二次引導過程,。二次引導是將DSP一次引導的1 KB代碼編寫成一個搬移程序,搬移程序將用戶的主程序搬移到高速RAM中,,并且搬移完成后自動跳轉至主程序入口處運行主程序,。由于硬件設計中Flash的地址不連續(xù),因此對高位地址線的控制需要在搬移程序中實現(xiàn),。圖8為使用二級Bootloader的流程圖,。
二級Bootloader代碼的編寫必須使用匯編語言,因為在執(zhí)行二級Bootloader時C的運行環(huán)境還未建立起來,。
4.2 Flash的燒寫方法
應用程序和二次Boot編寫和編譯完成之后,,便可使用TI公司提供的FlashBurn工具完成Flash燒寫,燒寫完成后需要重新上電或復位,便可實現(xiàn)自啟動,。此FlashBurn工具雖然燒寫方法較為直觀,,但是過程復雜,首先需要下載一個.out文件(FBTC)至DSP系統(tǒng)中,,實現(xiàn)對Flash的操作,;其次FlashBurn工具不能識別.out文件,只能接收.hex的十六進制文件,,必須將.out文件轉換為.hex文件,。
因此,用戶可以自己根據(jù)Flash器件的操作方法編寫燒寫程序,,避免文件格式轉換的繁瑣,。首先把用戶應用程序(包括二級Bootloader)編譯生成的.out文件轉載到DSP的RAM中,然后根據(jù)要求編寫Flash燒寫程序,,把燒寫程序的.out文件裝載到DSP的另一塊區(qū)域(注意修改cmd文件中地址范圍,,避免兩次裝載可能產(chǎn)生的地址覆蓋),執(zhí)行程序完成Flash的燒寫,。注意:燒寫到Flash中的應用程序前面12個字節(jié)用于存放_c _int00地址,、應用程序字節(jié)數(shù)、應用程序在RAM中的起始地址,,這12個字節(jié)需要在燒寫過程中添加,。
5 結束語
本文主要研究了TMS320C672x系列DSP EMIF接口的功能和使用方法,并針對SDRAM和Flash器件討論了EMIF的具體硬件接口設計和軟件配置,;同時分析了TMS320C672x系列的自啟動過程,,提出了兩種燒寫Flash的方法。該應用方法經(jīng)實驗驗證,,確實可行并易于實現(xiàn),。