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