基于TMS320C54x的便攜存儲設備設計
摘 要:本文介紹了一種以TMS320C54x為核心的移動(dòng)存儲終端,終端中使用NAND Flash作為存儲器件。討論了TMS320C54x對NAND Flash的編程以及接口設計。
關(guān)鍵詞:DSP;NAND;Flash
引言
移動(dòng)存儲終端包括手機、掌上電腦、PDA和數碼相機等手持設備及各種信息家電。在這類(lèi)產(chǎn)品中既要結合存儲功能,又需要具備一定的信號處理能力,因此基于DSP芯片的設計方案成為這些產(chǎn)品的主流方案。同時(shí),為了降低產(chǎn)品成本,采用具有較高容量/價(jià)格比的NAND Flash存儲芯片也成為移動(dòng)存儲設備的首選。本文介紹在基于TMS320C54x的移動(dòng)存儲設備中,NAND Flash的設計和應用。
系統構成
本系統以TMS320C5409作為核心芯片,完成控制和信號處理功能。使用兩塊內存芯片:Intel公司的4MB Flash芯片28F004B3存放系統的啟動(dòng)代碼,采用Samsung公司的NAND Flash芯片作為用戶(hù)數據的存儲芯片。
TMS320C5409
TMS320C5409是一款定點(diǎn)DSP芯片,其主要應用是無(wú)線(xiàn)等通信系統。它的主要特點(diǎn)包括:(1)運算速度快。(2)具有優(yōu)化的CPU結構。(3)具有低功耗方式。(4)具有較多的智能外設。除了標準的串行口和時(shí)分復用(TDM)串行口外,還提供了自動(dòng)緩沖串行口BSP和與外部處理器通信的HPI(Host Port Interface)接口。BSP可提供2K字數據緩沖的讀寫(xiě)能力,從而可以降低處理器的額外開(kāi)銷(xiāo),即使在IDLE方式下,BSP也可以全速工作。HPI可以與外部標準的微處理器直接接口。同時(shí),還具有I/O口等控制信號。
NAND Flash
在移動(dòng)存儲設備中,由于NAND的存儲容量大,因此得到了廣泛的應用。本系統采用Samsung公司的NAND Flash芯片K9F5608U0M-YCB0進(jìn)行存儲。該芯片存儲容量為32MB,其中主數據區為32MB,輔助數據區為1MB,工作電壓為2.7~3.6V,I/O端口寬度為8位。
NAND Flash芯片的內存按頁(yè)和塊的結構組織,其中每個(gè)數據頁(yè)內有528個(gè)字節,前512個(gè)字節為主數據存儲器,存放用戶(hù)數據,后16個(gè)字節為輔助數據存儲器,存放ECC代碼,壞塊信息和文件系統代碼。每個(gè)數據塊包含32個(gè)頁(yè),一片K9F5608U0M包括2048個(gè)塊。
NAND Flash芯片內有一個(gè)容量為528字節的靜態(tài)寄存器,稱(chēng)為頁(yè)寄存器,用來(lái)在數據存取時(shí)作為緩沖區使用。編程數據和讀取的數據可以在寄存器和存儲陣列中按528個(gè)字節的順序遞增訪(fǎng)問(wèn)。當對芯片的某一頁(yè)進(jìn)行讀寫(xiě)時(shí),其數據首先被轉移到該寄存器中,通過(guò)這個(gè)寄存器和其它芯片進(jìn)行數據交換,片內的讀寫(xiě)操作由片內的處理器自動(dòng)完成。
NAND Flash的接口引腳分為三類(lèi):數據引腳、控制引腳和狀態(tài)引腳。其中數據接口高度復用,既用作地址總線(xiàn),又用作數據總線(xiàn)和命令輸入接口。本系統采用的芯片有8個(gè)I/O數據引腳(I/O1~I/O8),用來(lái)輸入/輸出地址、數據和命令??刂芅AND Flash的控制引腳有5個(gè),其中CLE和ALE分別為命令鎖存使能引腳和地址鎖存使能引腳,用來(lái)選擇I/O端口輸入的是命令還是地址。/CE、/RE和/WE分別為片選信號,讀使能信號和寫(xiě)使能信號。狀態(tài)引腳R/B表示設備的狀態(tài),當數據寫(xiě)入、編程和隨機讀取時(shí),R/B處于高電平,表明芯片正忙,否則輸出低電平。
系統連接及配置
TMS320C5409具有16根數據總線(xiàn)和23根地址總線(xiàn),可以對memory和I/O口進(jìn)行擴展。由于NAND Flash的存儲速度較慢,因此使用I/O空間對其進(jìn)行訪(fǎng)問(wèn)。CLE和ALE 分別由地址線(xiàn)A1和A0控制,NAND Flash對應的映射地址如表1所示。
DSP采用XF作為NAND Flash的片選信號。狀態(tài)輸出信號R/B與BIO相連,作為DSP對NAND Flash的狀態(tài)監控。DSP與NAND Flash的連接關(guān)系如圖1所示。
由于NAND Flash中的程序無(wú)法直接運行,因此需要將程序代碼存儲在其它芯片中。系統采用Intel Flash芯片28F004B3作為boot區域使用,按照擴展memory對其進(jìn)行訪(fǎng)問(wèn)。連接關(guān)系也如圖1所示。
系統啟動(dòng)時(shí),C5409芯片的boot流程將Flash芯片28F004B3中的可執行代碼搬移到片內RAM中,然后在DSP片內運行程序。上電后自動(dòng)進(jìn)入讀模式狀態(tài),利用XF作為控制引腳對NAND Flash進(jìn)行片選,可以根據系統的各種請求讀寫(xiě)用戶(hù)數據。
讀寫(xiě)控制的實(shí)現
NAND Flash主要用于大塊的數據存儲,因此數據讀寫(xiě)都是基于頁(yè)的。在程序中,由于NAND Flash的寬度為8 bit,因此DSP進(jìn)行讀寫(xiě)時(shí)只利用C5409數據線(xiàn)的低8bit。對于NAND Flash而言,通常只處理其主數據區的512個(gè)字節,輔助數據區不使用。在以文件為基礎的存儲產(chǎn)品中我們需要對輔助數據區進(jìn)行處理。同時(shí)由于NAND Flash允許芯片中存在壞塊,因此在讀寫(xiě)時(shí)需要繞過(guò)。
本系統使用NAND Flash的基本操作有以下三種:讀一頁(yè)數據,寫(xiě)一頁(yè)數據,塊擦除。在這幾種方式下,每次的地址配置,其頁(yè)內地址A0~A7均為0,A9~A24選定所在的頁(yè)。
DSP讀數據時(shí),首先置低XF,對NAND Flash進(jìn)行片選,然后向I/O端口0x0001發(fā)送read命令,配置完read命令后,向I/O端口0x0002發(fā)送地址信號,對地址進(jìn)行選定。此后從I/O端口0x0000連續進(jìn)行512個(gè)字節的讀操作,完成對整個(gè)頁(yè)的讀取。最后拉高XF。
DSP寫(xiě)入NAND Flash的操作也以頁(yè)為基本單位,首先置低XF片選NAND Flash,然后向I/O端口0x0001發(fā)送寫(xiě)入命令,進(jìn)行地址配置,再向I/O端口0x0000寫(xiě)入一個(gè)字節。每寫(xiě)入一個(gè)字節后都循環(huán)讀取狀態(tài)寄存器的值,判斷NAND芯片I/O的第6位,如果為低,則芯片正忙,如果為高,則寫(xiě)完數據,這時(shí)可以繼續下一個(gè)字節的寫(xiě)入操作。
DSP對NAND Flash的擦除以塊為基礎,即一次擦除32頁(yè),地址由NAND Flash地址中的A14~A23確定。由于系統中利用R/B和DSP的/BIO相連,因此也可以利用對BIO進(jìn)行檢測來(lái)判斷是否寫(xiě)完或擦除完畢。塊擦除的流程如圖2所示。
結語(yǔ)
本系統中,利用DSP來(lái)進(jìn)行控制和信號處理,利用與NAND Flash的簡(jiǎn)單連接實(shí)現大量數據的存儲。在此基礎上,可以根據需要完成對各種信號的處理和存儲,從而構成一個(gè)相對獨立、便攜的設備。低端設備中對數據的完備性要求較低,因此本系統中省略了對壞塊的處理和ECC處理,在擴展SM卡等設備中可以增加這些功能?!?/P>
參考文獻
1 Datasheet of K9F5608U0M-YCB0,http://www.samsung.com,2000
2 TMS32054x Volume 1: CPU and Peripherals (literature number SPRU131) Texas Instruments
3 Datasheet of TMS320vc5409 (SPRS082C),Texas Instruments
4 張雄偉. DSP芯片的原理與開(kāi)發(fā)應用(第三版). 北京:電子工業(yè)出版社,2003
評論