1 引言:
隨著電氣化的不斷發(fā)展,嵌入式系統(tǒng)的應(yīng)用也在迅速的前進(jìn)。作為嵌入式系統(tǒng)中的微控制器的基本含義是:在一塊芯片上集成了中央處理單元、存儲(chǔ)器、定時(shí)器計(jì)數(shù)器及多種輸入輸出接口的比較完整的數(shù)字處理器。主要表現(xiàn)在直接面對(duì)控制對(duì)象,嵌入到具體的應(yīng)用體中,能在現(xiàn)場(chǎng)可靠地運(yùn)行,體積小,應(yīng)用靈活,突出控制功能,特別是對(duì)外部信息的捕捉與豐富的I/O功能等。它的出現(xiàn)是大規(guī)模集成電路技術(shù)發(fā)展的產(chǎn)物。它廣泛地應(yīng)用于工業(yè)控制、通訊、智能化儀表等領(lǐng)域。而面向測(cè)控對(duì)象,嵌入到實(shí)際應(yīng)用系統(tǒng)中,實(shí)現(xiàn)嵌入式應(yīng)用的處理器稱之為嵌入式系統(tǒng)。
DSP 是針對(duì)實(shí)時(shí)數(shù)字信號(hào)處理而設(shè)計(jì)的數(shù)字信號(hào)處理器,由于它具有計(jì)算速度快、體積小、功耗低的突出優(yōu)點(diǎn),非常適合應(yīng)用于嵌入式實(shí)時(shí)系統(tǒng)。自世界上第一片通用DSP 芯片TMS320C10 于1982年在美國(guó)TI公司產(chǎn)生以來(lái),DSP 處理器便顯示出強(qiáng)盛的生命力。短短二十多年,世界上許多公司便開(kāi)發(fā)出各種規(guī)格的DSP 處理器,并使它們?cè)谕ㄐ?、自?dòng)控制、雷達(dá)、氣象、導(dǎo)航、機(jī)器人等許多嵌入式實(shí)時(shí)領(lǐng)域得到了廣泛應(yīng)用。
現(xiàn)在數(shù)字信號(hào)處理器(DSP) 正越來(lái)越多地應(yīng)用到各種場(chǎng)合。TMS320C28X系列的DSP 的低功耗特性,使得它特別適合于便攜式設(shè)備。Flash 存儲(chǔ)器具有功耗低、尺寸小且裝配后可以編程的特性,也適合于便攜式設(shè)備。目前Flash 存儲(chǔ)器正在從單純的EPROM 的替換件演變?yōu)樵S多電路系統(tǒng)中的不可缺少的組成部分。Flash 存儲(chǔ)器已成為DSP 系統(tǒng)的一個(gè)基本配置,主要用來(lái)存放掉電后需要保存的數(shù)據(jù)。本文以TMS320C2812 和AT49BV162 為例介紹了DSP在嵌入式系統(tǒng)中擴(kuò)展外部Flash 存儲(chǔ)器的方法及其應(yīng)用。
2 在嵌入式系統(tǒng)中的應(yīng)用
DSP/ BIOS內(nèi)核是通過(guò)目標(biāo)應(yīng)用程序調(diào)用DSP/BIOS API來(lái)實(shí)現(xiàn)運(yùn)行時(shí)間服務(wù)的。通常單個(gè)DSP/BIOS模塊可以管理一個(gè)或多個(gè)相關(guān)種類的內(nèi)核對(duì)象, 并可依據(jù)全局參量的設(shè)定來(lái)控制整個(gè)行為。一般來(lái)講, DSP/BIOS可以歸納為:核執(zhí)行線程, 硬件抽象, 設(shè)備獨(dú)立I/ O, 內(nèi)部線程通信和同步, 實(shí)時(shí)分析, 多系統(tǒng)服務(wù)六大功能類。本設(shè)計(jì)方案應(yīng)用于鐵路系統(tǒng)的運(yùn)行,DSP作為整個(gè)系統(tǒng)設(shè)計(jì)中的核心,通過(guò)A/D轉(zhuǎn)換器采集到的鐵路上的制式、速度、頻率等各種信息,利用DSP的快速數(shù)據(jù)處理功能對(duì)轉(zhuǎn)換后的數(shù)字信息進(jìn)行運(yùn)算和判斷,外加其控制功能和強(qiáng)大的擴(kuò)展外部設(shè)備的功能把控制信號(hào)輸出到前臺(tái)的顯示屏、打印機(jī)、控制臺(tái)。這是DSP實(shí)時(shí)多任務(wù)內(nèi)核在嵌入式系統(tǒng)中的一個(gè)應(yīng)用實(shí)例。通過(guò)對(duì)火車運(yùn)行系統(tǒng)進(jìn)行從人工切換軌道制式到自動(dòng)切換的技術(shù)改進(jìn),從而為火車提速打好基礎(chǔ)。由于我國(guó)鐵軌的建造制式繁多,在軌道切換時(shí)信息量較大,且這種變化由于鐵路軌道的長(zhǎng)短而不均勻改變。所以有必要在每一次制式信息改變的同時(shí),DSP不但要進(jìn)行制式的判斷計(jì)算、控制信號(hào)的輸出,還要對(duì)數(shù)據(jù)進(jìn)行記錄,而這種制式信息的記錄不應(yīng)隨外界電壓的變化而改變,因此就要用Flash進(jìn)行存儲(chǔ)數(shù)據(jù)。Flash記錄的數(shù)據(jù)可供外部調(diào)用查看,也起到了黑匣子的作用。下面就介紹實(shí)時(shí)多任務(wù)中的一個(gè)方面如何在嵌入式系統(tǒng)的DSP外部進(jìn)行Flash的擴(kuò)展。
3 TMS320C2812 內(nèi)部存儲(chǔ)器的結(jié)構(gòu)
TI公司的TMS320C28X系列DSP 的內(nèi)核為同一種CPU ,但是其內(nèi)存與外圍設(shè)備的配置不同。C28X存儲(chǔ)器由三個(gè)獨(dú)立的空間組成: 程序、數(shù)據(jù)和I/O 空間。不同的C28X器件其內(nèi)存映象都為改進(jìn)的哈佛結(jié)構(gòu),但片內(nèi)存儲(chǔ)器的大小和外部地址引腳數(shù)目不同。外部引腳及寄存器也影響內(nèi)存的配置。TMS320C2812 的異步外設(shè)包括19根地址線、16根數(shù)據(jù)線和三根芯片選擇線。三根芯片選擇線映射到五個(gè)外部空間,分別是0、1、2、6、7區(qū)。區(qū)域0和區(qū)域1公用一根單獨(dú)的芯片選擇線,區(qū)域 6和區(qū)域 7公用一根單獨(dú)的芯片選擇線,每一個(gè)區(qū)域都可以對(duì)自己的等待狀態(tài)、閘門(mén)信號(hào)設(shè)置和置位時(shí)間進(jìn)行編程。每一個(gè)區(qū)域也能為是否擴(kuò)展外設(shè)進(jìn)行編程??删幊痰牡却隣顟B(tài)、芯片選通和可編程的閘門(mén)時(shí)間使外部擴(kuò)展寄存器和外圍設(shè)備變得豐富多彩。如圖1 所示。
[IMG=外圍設(shè)備模塊圖表]/uploadpic/THESIS/2007/12/2007121214113556336V.jpg[/IMG]
圖1 外圍設(shè)備模塊圖表
對(duì)C2812 器件可以在外部總線上擴(kuò)展外部存儲(chǔ)器和Flash。其擴(kuò)展外部?jī)?nèi)存的分頁(yè)結(jié)構(gòu)使得可以尋址多于64k 的空間。CPU 中的寄存器和相應(yīng)的遠(yuǎn)尋址指令允許尋址程序空間的另外7 根地址線。而對(duì)數(shù)據(jù)空間的訪問(wèn)并不影響A 16~ A 22。各區(qū)域的物理地址如下:0x00 2000 Zone0,0x00 4000 Zone1,0x08 0000 Zone2,0x10 0000 Zone6,0x3F C000 Zone7。
4 TMS320C28X 與AT49BV162Flash 存儲(chǔ)器的連接方法
為了便于電路設(shè)計(jì)與調(diào)試, 選用ATMEL 公司的AT49BV162 系列Flash 芯片。因?yàn)锳T49BV162和VC549一樣同為3V 電源供電, 這就省去了數(shù)據(jù)和地址線的緩沖和電平變換, 所以Flash 器件選擇了AT49BV162。Flash上電時(shí)處于讀模式,外部命令可以使Flash處于編程或者擦除狀態(tài),F(xiàn)lash可以對(duì)每一個(gè)扇區(qū)進(jìn)行保護(hù)。AT49BV162 的存儲(chǔ)容量為16Mb, 提供兩種類型字節(jié)傳輸模式,一種是16位的,可存儲(chǔ)1,048,576 個(gè)字;另一種是8位的,可存儲(chǔ)2,097,152個(gè)字。存儲(chǔ)器可以分成71個(gè)扇區(qū)進(jìn)行操作。還有CE和OE控制信號(hào)來(lái)避免其他線路上的干擾,這種使用單一電源來(lái)對(duì)芯片進(jìn)行讀取和編程的操作非常適合系統(tǒng)編程。為了增加芯片的靈活性,該Flash還包括了擦除等待和編程等待的功能,這一特點(diǎn)使擦除和編程在尚未完成讀取和編程前一段的過(guò)程中被掛起,當(dāng)READY/BUSY管腳或者是掛起位被置位時(shí),繼續(xù)執(zhí)行。VPP提供了數(shù)據(jù)保護(hù),當(dāng)VPP的輸入電壓小于0.4V時(shí),編程和擦除功能被禁止,當(dāng)VPP的電壓大于0.9V時(shí),這些正常的功能才被允許。BYTE管腳控制Flash的數(shù)據(jù)結(jié)構(gòu),如果BYTE置為邏輯1,則Flash的數(shù)據(jù)結(jié)構(gòu)是按字節(jié)傳輸,通過(guò)CE和OE來(lái)控制I/O0-I/O15的傳輸,否則按位傳輸。當(dāng)CE和OE處于低電平,WE處于高電平時(shí),AT49BV162可以像EPROM一樣進(jìn)行訪問(wèn)。存儲(chǔ)單元地址里存儲(chǔ)的數(shù)據(jù)由連接輸出的地址線所決定。CE或者OE處于高電平時(shí),輸出則處于高阻狀態(tài)。雙重控制可以更有效的防止總線的競(jìng)爭(zhēng)。如圖2所示。
[IMG= Flash 模塊圖]/uploadpic/THESIS/2007/12/2007121214214517816K.jpg[/IMG]
圖2 Flash 模塊圖
Flash的地址線和DSP的地址線相連,Flash的數(shù)據(jù)線和DSP的數(shù)據(jù)線相連,DSP的ZONE2連到Flash的CE上來(lái)控制片選。這樣內(nèi)部數(shù)據(jù)可以存放在Flash里,當(dāng)外部需要讀取時(shí),通過(guò)對(duì)Flash的讀操作,再通過(guò)串口把數(shù)據(jù)發(fā)出去,這樣不但減輕了內(nèi)部存儲(chǔ)空間的負(fù)荷,也保證了數(shù)據(jù)最大限度的存儲(chǔ)。
5 AT49BV162 Flash 存儲(chǔ)器的讀寫(xiě)
AT49BV162 是ATMEL 公司生產(chǎn)的Flash 存儲(chǔ)器, 支持在系統(tǒng)編程。AT49系列的編程是一個(gè)簡(jiǎn)單的可重復(fù)的過(guò)程。將每種芯片的總存儲(chǔ)量劃分成為數(shù)個(gè)存儲(chǔ)陣列(扇區(qū)),每次編程一個(gè)扇區(qū)。編程命令是一個(gè)3 總線周期指令。以兩個(gè)解鎖周期開(kāi)始,緊接著一個(gè)編程建立命令, 最后是要編程的地址和數(shù)據(jù)。寫(xiě)完該地址和數(shù)據(jù)后,內(nèi)置編程算法自動(dòng)啟動(dòng), 進(jìn)行Flash 存儲(chǔ)器編程。編程算法完成后, 進(jìn)入讀取數(shù)據(jù)狀態(tài)。在這里通過(guò)DSP對(duì)Flash的控制完成對(duì)Flash的讀寫(xiě)。用C語(yǔ)言完成如下:
5.1 對(duì)XINTF寄存器進(jìn)行設(shè)置
XintfRegs.XTIMING2.bit.USEREADY = 0; //XREADY unused
XintfRegs.XTIMING2.bit.XWRLEAD = 1; //LEAD 1 sysclock
XintfRegs.XTIMING2.bit.XWRACTIVE= 1; //ACTIVE 2 syscolock
XintfRegs.XTIMING2.bit.XWRTRAIL = 1; //HOLD 1 sysclock
XintfRegs.XTIMING2.bit.X2TIMING = 0; // 1:1 lead/active/trial timing for Zone 2
XintfRegs.XTIMING2.bit.XSIZE = 3; //XINTF bus width - must be written as 11b
XINTF的信號(hào)定時(shí)能協(xié)調(diào)外部特殊外設(shè)對(duì)信號(hào)時(shí)鐘的要求,時(shí)間參數(shù)可以根據(jù)連接不同外設(shè)的區(qū)域來(lái)設(shè)置。
5.2 對(duì)Flash讀寫(xiě)編程
unsigned int * ext_Flash = (unsigned int *) 0x100000; // address of Flash
void FlashWrite(unsigned int *Flashwtbuf,unsigned int start,unsigned int end)
{ unsigned int Flashwp;
for(Flashwp = start; Flashwp <= end; Flashwp++)
{ *(ext_Flash + Flashwp)=*(Flashwtbuf++) ;
}
}
void FlashRead(unsigned int *Flashrdbuf,unsigned int start,unsigned int end)
{ unsigned int Flashrp;
for(Flashrp = start; Flashrp <= end; Flashrp++)
{ *(Flashrdbuf++) = *(ext_Flash + Flashrp) ;
}
}
參考文獻(xiàn)
[1] 公茂忠,F(xiàn)lash存儲(chǔ)器的在系統(tǒng)編程及其在DSP系統(tǒng)中的應(yīng)用[J],電子技術(shù)應(yīng)用,2002,3,69-71
[2] Markus Levy, 閃速存儲(chǔ)器設(shè)計(jì)工具博覽[J],電子設(shè)計(jì)應(yīng)用,1996,2,42-45
[3] Antony Watts,正確選擇非易失性存儲(chǔ)器[J],電子設(shè)計(jì)應(yīng)用,1996,3,38-45
[4] TMS320C2812 User Guide,Texas Instruments,2004
[5] AT49BV162 User Guide,Atmel,2004