大容量FLASH在單片機(jī)臺(tái)標(biāo)系統(tǒng)中的應(yīng)用
1 引 言
本文引用地址:http://butianyuan.cn/article/172136.htmFLASH是一種兼有紫外線擦除EPROM和電可擦可編程只讀存儲(chǔ)器(E2PROM)兩者優(yōu)點(diǎn)的新型非易失存儲(chǔ)器。由于它可在線進(jìn)行電可擦除和編程,芯片每區(qū)可獨(dú)立擦寫(xiě)至少10,000次以上,因而對(duì)于需周期性地修改被儲(chǔ)存的代碼和數(shù)據(jù)表的應(yīng)用場(chǎng)合,以及作為一種高密度的、非易失的數(shù)據(jù)采集和存儲(chǔ)介質(zhì),FLASH都是理想的器件選擇。隨著其容量越來(lái)越大,FLASH對(duì)于數(shù)字圖像的存儲(chǔ)也具有了一定的能力。筆者所做的臺(tái)標(biāo)機(jī)就是用Intel公司生產(chǎn)的64Mbit(8MByte)的FLASH 28F640J5作為臺(tái)標(biāo)圖像的存儲(chǔ)介質(zhì)。下面就以該臺(tái)標(biāo)機(jī)系統(tǒng)為例,介紹28F640J5在系統(tǒng)中的具體應(yīng)用。
2 FLASH28F640J5簡(jiǎn)介
2.1 主要性能特點(diǎn)
28F640J5是一種采用ETOXⅡ工藝制成的56引腳的快擦寫(xiě)可用電擦除可編程存儲(chǔ)器,由于首次使用了每單元存儲(chǔ)兩位的技術(shù),因而每位占用的或非門(mén)資源更少,性能價(jià)格比更高。芯片采用分塊結(jié)構(gòu)分成64塊,每塊128kB,這個(gè)特性允許用戶(hù)對(duì)其中任意一塊數(shù)據(jù)進(jìn)行擦除或編程,每塊擦除時(shí)間僅需1秒。在塊擦除過(guò)程中如果需要中斷擦除操作,可暫停擦除,待處理完其它事后再繼續(xù)擦除。28F640J5僅需+5V供電電壓,工作電流不大于80mA,典型值為 40mA,備用狀態(tài)時(shí)不大于125μA,典型值為80μA,三態(tài)輸出,與TTL電平兼容??裳h(huán)擦寫(xiě)次數(shù)為10萬(wàn)次,一般商業(yè)品工作溫度范圍為-20℃~+70℃。
2.2 芯片系統(tǒng)結(jié)構(gòu)及引腳信號(hào)
芯片采用一種命令用戶(hù)接口CUI(CommandUser Interface)和寫(xiě)狀態(tài)機(jī)WSM(WriteState Machine)結(jié)構(gòu),以此簡(jiǎn)化模塊擦除和編程。命令用戶(hù)接口是微處理器或微控制器與芯片內(nèi)部操作之間的界面。無(wú)論是模塊擦除還是字節(jié)編程,只要向CUI 寫(xiě)入兩個(gè)命令序列,內(nèi)部的寫(xiě)狀態(tài)機(jī)WSM就會(huì)自動(dòng)地定時(shí)執(zhí)行擦除或編程算法(包括校驗(yàn)操作),從而減輕了微處理器或微控制器的負(fù)擔(dān)。另外,為了指示W(wǎng)SM 的狀態(tài)和何時(shí)以及是否成功完成了模塊擦除或字節(jié)編程操作,設(shè)置了一個(gè)狀態(tài)寄存器SR(State Register)。這樣,狀態(tài)寄存器SR就成了微處理器與寫(xiě)狀態(tài)機(jī)之間的接口。芯片引腳A0-A22為地址線,當(dāng)為字操作時(shí)A0不起作用,A1為最低位地址線。DQ0-DQ7為低字節(jié)數(shù)據(jù)總線,輸入數(shù)據(jù)在輸入緩沖區(qū)進(jìn)行編程和寫(xiě)操作,輸入命令時(shí)在命令用戶(hù)接口(cui)進(jìn)行寫(xiě)操作,當(dāng)狀態(tài)機(jī)忙時(shí)DQ6-DQ0不起作用,而狀態(tài)寄存器的第7位(SR.7)決定狀態(tài)機(jī)的狀態(tài)。DQ8-DQ15為高字節(jié)位數(shù)據(jù)總線,在字操作模式中使用到。CE0、CE1、CE2為芯片選通信號(hào),當(dāng)信號(hào)有效時(shí),就激活了器件的控制邏輯、輸入緩沖器、譯碼器和敏感放大器,當(dāng)器件沒(méi)有選通時(shí),片上電壓自動(dòng)降低到待機(jī)電壓。RP#為復(fù)位或使電壓回到待機(jī)狀態(tài)的信號(hào),當(dāng)RP#為低時(shí),芯片處于待機(jī)模式,此時(shí)芯片禁止寫(xiě)操作,當(dāng)RP#為高時(shí)可進(jìn)行讀寫(xiě)、擦除等操作,但不要一直將RP#置高,以免影響器件的使用壽命。OE#為輸出選通信號(hào),低電平有效,在讀周期中,輸出緩沖器被選通,數(shù)據(jù)通過(guò)緩沖器輸出。WE#為寫(xiě)選通信號(hào)。STS為狀態(tài)位,它顯示內(nèi)部狀態(tài)機(jī)的狀態(tài)。BYTE#為8位或16 位操作模式選擇信號(hào),當(dāng)BYTE#為低時(shí),器件工作在8位操作模式,DQ8-DQ15掛起,當(dāng)BYTE#為高時(shí),器件工作在16位操作模式。VPEN是擦除、編程塊鎖定位操作使能信號(hào),當(dāng)VPEN<= VPENLK時(shí),存儲(chǔ)器的內(nèi)容不能改變。
3 單片機(jī)與芯片接口的設(shè)計(jì)
因?yàn)?a class="contentlabel" href="http://butianyuan.cn/news/listbylabel/label/單片機(jī)">單片機(jī)80C320的地址線只能有16根,僅能尋址64K外存空間。而28F640的內(nèi)部芯片地址線有23根,所以在設(shè)計(jì)時(shí)對(duì)FLASH采取分段設(shè)計(jì)的方法,設(shè)有存儲(chǔ)器段寄存器(高位地址寄存器)“WHDZ”。由于單片機(jī)的地址空間中既有寄存器,又有存儲(chǔ)器,為了方便起見(jiàn),將單片機(jī)的P1.7口定義為寄存器“IO”或存儲(chǔ)器訪問(wèn)的區(qū)分標(biāo)志“IORAM”。當(dāng)“IORAM”為1時(shí),單片機(jī)的低八位地址線有效,通過(guò)EPLD尋址FLASH的高八位地址(實(shí)際為7位),當(dāng)“IORAM”為0時(shí),單片機(jī)80C320尋址存儲(chǔ)器低十六位地址空間。這樣,單片機(jī)的64K外存空間連續(xù)尋址配合高位地址寄存器 WHDZ使用,存儲(chǔ)器空間的尋址范圍可達(dá)16MByte。單片機(jī)對(duì)存儲(chǔ)器讀寫(xiě)的操作步驟如下:(1)置“IORAM”位,寫(xiě)段地址寄存器“WHDZ”,定義所操作存儲(chǔ)器的高位地址。(2)清“IORAM”位,對(duì)選擇的存儲(chǔ)器在段內(nèi)進(jìn)行讀寫(xiě)。
4 軟件設(shè)計(jì)
28F640J5的操作命令比較多,共有14條,如表1所示。
表1中的讀陣列、讀標(biāo)識(shí)碼、讀狀態(tài)寄存器、清狀態(tài)寄存器、寫(xiě)緩沖區(qū)、塊擦除、字/字節(jié)編程、塊擦除掛起、塊擦除繼續(xù)是Intel公司28F系列 FLASH的基本命令集,其它命令為28F640的擴(kuò)展命令集。Intel28F640 FLASH存儲(chǔ)器采用了并行編程技術(shù):在28F640的命令集中由于添加了寫(xiě)緩沖區(qū)的命令以及相應(yīng)的32字節(jié)硬件寫(xiě)緩沖資源(程序流程圖如圖2所示),與傳統(tǒng)的字/字節(jié)編程方式相比(程序流程圖如圖3所示),寫(xiě)緩沖區(qū)方式一次性可寫(xiě)入32字節(jié),在單片機(jī)寫(xiě)入確定寫(xiě)緩沖區(qū)數(shù)據(jù)到FLASH的命令D0H后,再由FLASH以并行編程的方式自動(dòng)寫(xiě)入,中間無(wú)需退出寫(xiě)緩沖區(qū)命令。而字/字節(jié)編程方式每寫(xiě)入一個(gè)數(shù)據(jù)后需要重新寫(xiě)字/字節(jié)編程指令。寫(xiě)緩沖區(qū)指令的建立以及并行編程算法的采用,使得寫(xiě)入FLASH的速度比原來(lái)提高了近20倍。由于寫(xiě)緩沖區(qū)一次最多寫(xiě)入32個(gè)字節(jié),所以當(dāng)器件為字節(jié)模式寫(xiě)緩沖區(qū)時(shí),計(jì)數(shù)N =00H-1FH,當(dāng)器件為字模式寫(xiě)緩沖區(qū)時(shí),計(jì)數(shù)N=00H-0FH。為了最大限度地發(fā)揮并行編程的功能,降低器件的功耗,在使用寫(xiě)緩沖區(qū)命令時(shí)一般將 A4-A0的地址線置為0,也就是編程起始地址為×0,0000B。
在臺(tái)標(biāo)機(jī)系統(tǒng)中,其臺(tái)標(biāo)先是在PC機(jī)上用Photoshop、3DMAX等圖像處理軟件做好,然后由PC機(jī)傳給臺(tái)標(biāo)機(jī)。為了保證傳送速度采用 57600的波特率,這樣,傳送一副128行*128列大小的臺(tái)標(biāo)僅需13秒左右。盡管28F640采用了并行編程技術(shù),但由于波特率太高,數(shù)據(jù)并不能及時(shí)處理,所以在系統(tǒng)中采用了256K空間的SRAM作為緩沖區(qū)。臺(tái)標(biāo)圖像數(shù)據(jù)首先在SRAM中存儲(chǔ),待臺(tái)標(biāo)圖像傳送結(jié)束再由臺(tái)標(biāo)機(jī)自身將數(shù)據(jù)由SRAM寫(xiě)進(jìn)FLASH。對(duì)于滿(mǎn)屏圖像SRAM并不能完全存儲(chǔ),同時(shí)FLASH的地址空間對(duì)用戶(hù)來(lái)說(shuō)并不是完全連續(xù)的,芯片的第一塊的前四個(gè)字節(jié)和后面塊的前三個(gè)字節(jié)都為芯片自身所占用,所以在傳送滿(mǎn)屏圖像時(shí)采用分塊傳送的方法,每次傳送22行數(shù)據(jù),其數(shù)據(jù)量為720列*22行*4=61.875K,4是指每個(gè)像素點(diǎn)信息由R、BG、B、透明度4個(gè)字節(jié)組成。結(jié)合前面設(shè)置的FLASH的高八位地址寄存器WHDZ,每傳一次改變WHDZ的值。對(duì)于滿(mǎn)屏圖像從FLASH 傳送到VRAM(視屏存儲(chǔ)器)顯示滿(mǎn)屏圖像也采用分塊傳送的方式,不過(guò)此時(shí)傳送具體數(shù)據(jù)的方式不同,單片機(jī)并不需要將數(shù)據(jù)從FLASH一個(gè)個(gè)讀出寫(xiě)往 VRAM,它只需將數(shù)據(jù)的FLASH起始地址,以及VRAM的開(kāi)始點(diǎn)和終止點(diǎn)坐標(biāo)給出,數(shù)據(jù)傳送由硬件采用雙字傳送實(shí)現(xiàn),從而加快了傳送的速度。
5 結(jié)束語(yǔ)
在本臺(tái)標(biāo)機(jī)系統(tǒng)中,我們用8M的FLASH存儲(chǔ)器存放了10幅像素點(diǎn)128*128的小臺(tái)標(biāo),4幅動(dòng)畫(huà)臺(tái)標(biāo),兩幅滿(mǎn)屏圖像,基本上滿(mǎn)足了中小型電視臺(tái)的要求.隨著存儲(chǔ)器技術(shù)的快速發(fā)展,各大芯片廠商一定會(huì)推出性能價(jià)格比更同、速度更快,容量更大的FLASH存儲(chǔ)器。
參考文獻(xiàn)
1 何立民,單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì),北京:北京航天航空大學(xué)出版社,1992
2 http://www.intel.com.intel 28f640jd datasheet.1998
評(píng)論