DSP和Flash接口技術(shù)的實(shí)現(xiàn)
1 引言
在現(xiàn)代數(shù)字信號處理系統(tǒng)中,采用Flash做為DSP程序加載和引導(dǎo)是一種常用的方法,它為用戶對那些將來可能需要改變數(shù)據(jù)或代碼的系統(tǒng)維護(hù)提供了有效手段。利用Flash器件,能夠?qū)崿F(xiàn)在線程序編寫,減少EPROM程序燒寫帶來的麻煩。
2 Flash AM29LV800B簡介
Flash存儲器又稱閃存,它結(jié)合了ROM和RAM的特點(diǎn),不僅具備電子可擦除可編程(EEPROM)功能,而且不會斷電丟失數(shù)據(jù)同時(shí)能快速讀取數(shù)據(jù),它具有在線電擦寫、低功耗、大容量、擦寫速度快等特點(diǎn),屬于EEPROM的改進(jìn)產(chǎn)品。
2.1主要性能
AM29LV800BB-90EC是AMD公司AM29LV800B系列的一種器件,其主要性能如下:訪問時(shí)間:90 ns;存儲容量:8Mbit;工作溫度范圍:-55~+125℃:在線編程電壓:3.0~3.6 V;低功耗:讀操作時(shí)電流為7 mA,編程/擦除時(shí)電流為15 mA。
2.2引腳功能說明
A0-A18:19根地址線;
DQ0-DQ14:15根數(shù)據(jù)線;
DQ15/A-1:當(dāng)配置為16位字模式時(shí),該引腳為數(shù)據(jù)I/O,組成16位字的最高位DQ15;當(dāng)配置為8位字節(jié)模式時(shí),該引腳為地址輸入,為地址線的最低有效位A-1;
2.3工作模式
2.3.1讀模式
為了讀取數(shù)據(jù),系統(tǒng)需將CE和OE設(shè)為低電平,同時(shí)將WE設(shè)為高電平。在器件上電或硬件復(fù)位后,器件默認(rèn)設(shè)置為讀模式。
2.3.2寫模式
為了向器件寫入數(shù)據(jù)或指令,系統(tǒng)需將CE和WE置為低電平,同時(shí)將OE置為高電平,寫操作需要4個(gè)周期,前3個(gè)周期向兩個(gè)特定地址寫入3個(gè)特定字符,第4個(gè)周期將所需數(shù)據(jù)寫入相應(yīng)地址:
2.3.3復(fù)位
向器件的任意地址寫入特定指令,該器件復(fù)位,復(fù)位后默認(rèn)為讀模式。
2.3.4自動選擇模式
向器件兩個(gè)特定地址寫入3個(gè)特定的字符,該器件就進(jìn)入自動選擇模式。在該模式下獲取器件的廠商號和設(shè)備號,系統(tǒng)必須通過復(fù)位指令斷開。
2.3.5擦除模式
片擦除是一個(gè)6周期操作,需向兩個(gè)特定地址寫入4個(gè)特定字符。
3 DSP與Flash接口設(shè)計(jì)
ADSP-TS201是ADI公司的TigerSHARC系列處理器的一種器件,其內(nèi)核工作頻率可高達(dá)600 MHz,指令周期為1.6 ns,片內(nèi)存儲器DRAM為24 Mbit,集成I/O接口,包括14通道的DMA控制器,4個(gè)鏈路口,可編程標(biāo)志引腳,SDRAM控制器,外部端口,2個(gè)定時(shí)器等,具有IEEE 1149.1兼容的JTAG端口用于在線仿真,靈活的指令集和支持高級語言的DSP結(jié)構(gòu)便于DSP編程。
ADSP片內(nèi)無ROM,不能將應(yīng)用程序和數(shù)據(jù)直接存儲在DSP內(nèi)部,通常需將應(yīng)用程序存儲在外部存儲器。系統(tǒng)工作時(shí),通過加載操作將應(yīng)用程序載人到DSP內(nèi)部執(zhí)行。由于EPROM空間只提供8位數(shù)據(jù)線,因此如果Flash是16位甚至更高位,那么Flash應(yīng)當(dāng)配置成8位工作。由于EPROM接口是專門為處理器采用EPROM或者Flash進(jìn)行程序引導(dǎo)而設(shè)計(jì)的,而EPROM和Flash的數(shù)據(jù)傳輸并不是高速的,因此為了保證通用的EPROM和Flash能正確引導(dǎo)處理器運(yùn)行程序,ADSP-TS201在進(jìn)行每次EPROM讀操作時(shí)需插入16個(gè)等待周期,并且在最后一個(gè)EPROM引導(dǎo)總線周期后有3個(gè)等待周期,用做EPROM的斷開時(shí)間。ADSP-TS201提供BMS引腳用于引導(dǎo)存儲器選擇,作為Flash的片選信號,實(shí)現(xiàn)系統(tǒng)加載。此時(shí)TigerSHARC只能通過特定的DMA通道0將程序從EPROM自動加載到TigerSHARC內(nèi)存,并且外部總線自動將字節(jié)數(shù)據(jù)打包成32位指令。另外TS201提供/MS0和/MS1引腳,用于存儲器選擇。當(dāng)DSP分別訪問存儲器bank0或bank1時(shí),MS0或MS1有效。該引腳也可用作Flash的片選信號,以實(shí)現(xiàn)Flash的在線編程。按此方式實(shí)現(xiàn)硬件,可采用處理器內(nèi)核或者非EPROM類型的DMA方式訪問Flash,但是處理器不會自動完成32位字和8位字的打包和拆包,需要編寫專門的打包程序,這點(diǎn)尤為重要。其原理如圖1所示。
本程序采用匯編語言,整個(gè)程序流程如圖2所示。當(dāng)采用圖1所示的連接時(shí),ADSP-TS201向Flash寫入一個(gè)字,由于DSP外部數(shù)據(jù)總線為[31:0],而Flash只連接了其中的低8位,因此DSP在向Flash寫入數(shù)據(jù)時(shí),需要先打包處理。以下為本系統(tǒng)設(shè)計(jì)的關(guān)鍵程序代碼。
擦除操作和擦除狀態(tài)的查詢對Flash非常重要,因?yàn)槿魏蜦lash器件的寫入操作只能在空或已擦除的單元內(nèi)進(jìn)行,所以大多數(shù)情況下,在進(jìn)行寫入操作之前必須先執(zhí)行擦除。擦除操作可按6周期指令完成。該操作將Flash的內(nèi)容全部清零,然后從Flash的任意地址讀取數(shù)據(jù),與0相比較,判斷擦除操作是否順利進(jìn)行。相關(guān)指令代碼如下: 整個(gè)程序的流程如圖2所示。
5 結(jié)語
以Flash AM29LV800B為例,提出了Flash與DSP的硬件接口設(shè)計(jì)和Flash燒寫程序的基本步驟。這種系統(tǒng)設(shè)計(jì)使得軟件設(shè)計(jì)相對簡單,已多次應(yīng)用于現(xiàn)代數(shù)字信號處理系統(tǒng)中應(yīng)用,效果良好。