1 引言 存儲器接口分為ROM接口和RAM接口兩種。ROM包括EPROM和FLASH,而RAM主要是指SRAM。TMS320C5409具有32K字的片內(nèi)RAM和16K字的掩膜ROM。但是在DSP應(yīng)用的很多場合,尤其是帶信號存儲的DSP應(yīng)用來說,TMS320C5409的片內(nèi)存儲資源是遠遠不夠用的。因此,設(shè)計一個TMS320C5409硬件系統(tǒng)一般應(yīng)該包括其與EPROM/FLASH和SRAM的接口設(shè)計,以存放程序和數(shù)據(jù)。本文介紹TMS320C5409與存儲器的接口設(shè)計方案。 2 DSP與SRAM的接口設(shè)計 除了內(nèi)部32k字RAM和16K字ROM之外,TMS320C5409還可以擴展外部存儲器。其中,數(shù)據(jù)總空間總共為64k字(0000H~FFFFH),I/O空間為64K字(0000H~FFFFH),程序空間為8M。8M的程序空間的尋址是通過額外的7根地址線(A16~A22)實現(xiàn)的,由XPC寄存器控制。根據(jù)程序和數(shù)據(jù)的空間配置,擴展的方法主要有3種。 2.1 分開的程序和數(shù)據(jù)空間配置 這種方案是采用外接一個128k×16位的RAM,將程序區(qū)和數(shù)據(jù)區(qū)分開,如圖1所示。采用程序選通線接外部RAM的A16地址線實現(xiàn),因此,程序區(qū)為RAM的前64k字(0000H~FFFFH),數(shù)據(jù)區(qū)為RAM的后64k字(10000H~1FFFFH)。對DSP而言,程序區(qū)和數(shù)據(jù)區(qū)的地址范圍均為0000H~FFFFH。 圖1 分開的數(shù)據(jù)和程序空間配置 采用這種配置方法需要注意:如果內(nèi)部RAM設(shè)置為有效,則相同地址的外部RAM自動無效;當外部RAM不能全速運行時,需要根據(jù)速度設(shè)置插入等待狀態(tài)(設(shè)置SWWSR)。 2.2 混合的程序和數(shù)據(jù)空間配置 這種方案是令OVLY=1,此時內(nèi)部RAM既是數(shù)據(jù)區(qū)也是程序區(qū)。這樣設(shè)置的優(yōu)點是程序可以在內(nèi)部全速運行,缺點是由于程序和數(shù)據(jù)是共用的,因此存儲區(qū)就變小了。此外,在鏈接時必須將程序和數(shù)據(jù)分開,以避免重疊。 這種配置方法如圖2所示。將和信號接至一與非門,形成PDS信號,這個信號不論是有效還是有效都呈現(xiàn)有效(高電平),將這個信號經(jīng)反向用作片選信號,就可以保證外部RAM既作為程序區(qū)也作為數(shù)據(jù)區(qū)。 圖2 混合的數(shù)據(jù)和程序空間配置 2.3 優(yōu)化的混合程序和數(shù)據(jù)空間配置 圖3所示為一種優(yōu)化的混合程序和數(shù)據(jù)區(qū)外接RAM的方法。這種配置方法省去了DSP的A15地址線,將RAM分成32k字長的塊。采用這種方法后,可充分利用外接的RAM,不會因內(nèi)部RAM和外部RAM的地址重疊而造成外部RAM的浪費。 圖3 優(yōu)化的混合數(shù)據(jù)和程序空間配置 由于外部擴展的空間很大,因此DSP程序區(qū)另外的地址空間也能訪問到外部RAM。這種優(yōu)化的外部RAM配置方法,使得在使用DSP的內(nèi)部RAM的情況下,能夠充分利用外部擴展RAM。 3 DSP與FLASH的接口設(shè)計 圖4為DSP與FLASH的一種接口配置。圖中FLASH采用Silicon Storage 公司的新一代256K×16位CMOS FLASH Memory產(chǎn)品SST39VF400A作為DSP的外部數(shù)據(jù)存儲器,地址總線和數(shù)據(jù)總線接至DSP的外部總線,接至DSP的。DSP上的XF引腳用于啟動編程。當XF為低時,F(xiàn)LASH處于讀狀態(tài);當XF為高時,F(xiàn)LASH可擦或編程。為了滿足SST39VF400A的時序要求,XF與相“或”后接至,引腳與相“或”后接至。 圖4 DSP與FLASH的接口 4 FLASH的擦寫 4.1 片外FLASH擦寫原理 在實際應(yīng)用中,選擇的片外存儲器通常是片外的RAM或FLASH Memory。但是,由于RAM中數(shù)據(jù)掉電即丟失,不適合長期保存數(shù)據(jù),因此當需要保存到片外存儲器的是一些無需頻繁讀/寫但需要長期保存的數(shù)據(jù)時,如字模數(shù)據(jù)、端口地址等,通常選擇使用片外的FLASH擴展DSP芯片的存儲器空間。但是,使用片外的FLASH必須要解決對其的擦寫問題。 在實際應(yīng)用中,對FLASH的擦寫主要有兩種方式:一是使用通用編程器對FLASH芯片進行擦寫;二是直接由DSP對FLASH進行擦寫。這里介紹一種利用存儲器映射技術(shù),通過對DSP芯片編程實現(xiàn)片外FLASH擦寫的方法。 CCS5000 IDE是TI公司專為TMS320C5409設(shè)計的開發(fā)平臺,該平臺具有簡單明了的圖形用戶界面和豐富的軟件開發(fā)工具。利用GPIO0口可以生成合適的片外FLASH和片內(nèi)RAM片選信號,從而實現(xiàn)片外FLASH和片內(nèi)RAM訪問的切換,在電路上可以將GPIO0信號與數(shù)據(jù)選擇信號或程序選擇信號相“或”實現(xiàn)。 4.2 片外FLASH擦寫流程 編寫FLASH擦寫程序的流程圖如圖5所示。 圖5 FLASH擦寫程序流程圖 (1)將character[180][32]設(shè)置為全局變量。 (2)將程序編譯下載到DSP芯片中,打開工程目錄中output文件夾中的.map文件,找到character數(shù)組在RAM中存放的起始地址和長度。 (3)使用Save Memory命令將RAM中對應(yīng)于character數(shù)組的地址段的數(shù)據(jù)以二進制形式保存在計算機上。 (4)打開FLASH擦寫程序,修改數(shù)據(jù)在片內(nèi)RAM中存儲的起始地址和FLASH擦寫的起始地址和數(shù)據(jù)長度,編譯下載后,單步執(zhí)行,直到擦寫完FLASH,并將地址映射方式設(shè)置為映射到片內(nèi)RAM處,數(shù)據(jù)便寫到片外FLASH的相應(yīng)地址中。 這一種通過地址映射方式的方法可適用于多種場合,針對多個FLASH芯片使用多個GPIO端口進行地址的擴展,即可實現(xiàn)對其進行擦寫操作;若將部分擦寫程序放置到片外FLASH中并作相應(yīng)設(shè)置,即可實現(xiàn)系統(tǒng)得自舉運行。 5 Bootload的設(shè)計 BootLoader是嵌入式系統(tǒng)加電后在操作系統(tǒng)內(nèi)核運行之前運行的第一段代碼。BootLoader用于初始化硬件設(shè)備、建立內(nèi)存空間的映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個合適的狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準備好正確的環(huán)境。通常,Boot Loader是嚴重地依賴于硬件而實現(xiàn)的,特別是在嵌入式世界。因此,在嵌入式世界里建立一個通用的Boot Loader幾乎是不可能的。BootLoader一般它只在系統(tǒng)啟動時非常短的時間內(nèi)運行。對于嵌入式系統(tǒng)來說,這是至關(guān)重要的一步。 TMS320C54x內(nèi)部具有16K×16位的掩模ROM,其內(nèi)部具有Bootloader程序,工作在微計算機方式下可以啟動ROM中的引導(dǎo)程序,將用戶程序從EPROM(FLASH)、串行口、I/O口或HPI口引導(dǎo)到內(nèi)部RAM或外部的高速SRAM中全速運行。 TMS320C5409硬件復(fù)位后采樣引腳如果為低,則DSP從FF80H開始執(zhí)行片內(nèi)的引導(dǎo)程序,F(xiàn)F80H包含一條跳轉(zhuǎn)到Bootloader程序的語句,Bootloader程序?qū)⒂脩舫绦蛳螺d到RAM中運行。在硬件復(fù)位期間,如果TMS320C5409的為高電平,則從片外的0FF80H開始執(zhí)行程序。選擇過程如圖6所示。 圖6 自舉加載方式的選擇過程 6 結(jié)束語 實踐證明,在DSP的使用中,以上介紹的DSP與其外圍存儲器的接口設(shè)計是切實可行的。 |