NAND FLASH在儲存測試系統中的應用
0 引言
計算機技術的高速發展,存儲系統容量從過去的幾KB存儲空間,到現在的T8;乃至不久的將來要達到的PB存儲空間,其數據存取的能力在飛速擴展。隨之而來產生的SCSI、FC、SAN、iSCSI、IPStorage和數據生命周期管理等嶄新的領域,更給計算機技術和網絡技術賦予了蓬勃的生命力。存數性能的提升通常是通過在基礎結構上增加更多的物理磁盤驅動數目或者采用更快轉速的磁盤驅動器來完成。
機載存儲設備要求具有高的可靠性和高抗撞擊、抗震、防潮、耐高壓和承受高溫的特點,而磁盤驅動器存取數據時有機械轉動,其抗沖擊,抗震動性不強,所以不適用于航空航天等惡劣環境下使用。基于半導體存儲芯片閃存的固態存儲器(SSD)的出現很好的解決了以上問題。SSD作為儲存介質,沒有機械轉動部件、存儲密度高、可靠性高、體積小、重量輕,并且抗震動、抗沖擊、溫度適應范圍寬,具有很強的環境適應性,可以滿足苛刻條件下的數據儲存要求,因此,高性能大容量固態存儲器已成為軍用重大項目中的只要數據儲存方式。
1 NAND FLASH Memory的控制要求
1.1 NAND FLASI-1存儲器結構功能介紹
我們選用的是三星公司的K9K8G08UOM型FLASH芯片作為存儲系統的介質,該款NAND F1ash存儲容量為8448Mbit,其中主數據區為8192M bit,輔助數據區為256Mbit,工作電壓為2.7V~3.6V,I/O端口的寬度為8位。NAND FLASH不同于NOR FLASH,NOR FLASH在出廠時不容許芯片有壞塊存在,而NAND FLASH容許成品中存在壞塊,這是NAND技術所特有的現象。
芯片內的8448M bit內存是按塊和頁的概念來組織的,一個FLASH存儲器包含8192塊(block),每塊包含64頁(page),每頁有2112 Bytes。芯片內具有一個容量為2112 Bytes的數據寄存器,稱為頁寄存器,用來在數據存取時作為緩沖區,當對芯片內的某一頁進行讀寫時,其數據首選被轉移到此數據寄存器內,通過數據緩沖區和芯片外進行數據交換,以完成讀寫功能。頁內的2112Bytes被劃分為2048 Bytes的主數據區和164 Bytes的輔助數據區,主數據區存放用戶數據,輔助數據區被用來儲存ECC(Error correction Code,錯誤校驗碼)、壞塊信息和文件系統相關代碼。其組織關系如圖1所示:
K9K8GOSUOM地址是通過復用8個I/O口送入芯片的。這樣的設計顯著減少了芯片的管腳數目,并為系統升級帶來了方便。在CE和WP為低時,把WE 置低可以把K9K8G08UOM的命令、地址和數據通過I/O口寫進去。數據在WE的上升沿寫入芯片。命令鎖存使能(CLE)和地址使能鎖存(ALE)用來區分I/O口的數據是命令還是地址。K9K8G08UOM有1G字節地址空間,需要30位的地址,所以字節的地址需要五個周期依次送入:行低地址、行高地址、列低地址、列中地址、列高地址。頁的讀操作和編程操作都需要同樣的五個地址周期緊跟在相應的命令輸入之后。然而,在塊的擦除操作中,只要有三個地址周期。不同的操作通過往命令寄存器寫不同的命令來區分。
1.2 K9K8G08UOM控制器技術
本系統中采用FPGA作為K9K8G08UOM存儲器的控制器,可以在極少的軟件操作下獨立完成K9K8G08UOM的各種操作,從而降低系統對 FLASH存儲器的額外支出,提高讀寫速度。FPGA的控制邏輯時序是通過硬件語言VHDL開發的,VHDL語言以其快捷、獨立、可讀性等優點很好的完成 FLASH基本操作的時序控制。下面是以VHDL語言以狀態機的形式開發的部分讀操作程序。
K9K8G08UOM儲存器的基本操作由三種類型:讀操作、頁編程操作、擦除操作,其流程圖如圖2所示。
進行讀操作時,首先通過FPGA的端口置低K9K8G08UJOM的片選信號/CS,然后置高CLE命令腳,并發送read1(0x00)命令,WE的上升沿發送,命令發送完畢后,置低CLE。在發送地址之前,置高ALE,在每一個WE上升沿依次寫入5個地址周期,之后置低ALE,完成地址的選定。接著發送read2(0x30h),開始讀取地址單元的數據。
數據頁編程操作和讀取操作流程類似。操作都是以頁為單位進行的。當R/Bur信號為低時,說明正在對FALSH進行寫入操作,當為高時,說明頁編程操作結束。
擦除操作是以塊為單位進行的,即一次擦除塊內的64頁,在發送地址時只需要3個地址周期。
圖3是從K9K8G08UOM存儲器中存入數據以后通過上位機軟件讀取的數據。經驗證,讀取的數據與往K9K8G08UOM存儲器中寫入的數據一致。
?NAND FLASkI Memory的硬件部分
本設計當中,FLASH的數據輸入輸出口、控制端口通過調理電路與FPGA的端口相連,圖4所示是其硬件連接電路。
從圖4中可知,FLASH的數據輸入輸出端口I/00~7、控制端口/CE、是通過芯片SN54LV245與FPGA相連;FLASH的控制端口cLE、 ALE、/WE、/RE通過芯片SN54LV245和芯片74HCl4與ITGA相連。其中F-CLE、F-ALE、F—WE、F-RE、F—CE、F- R/Bur是FPGA的I/O口,是FPGA邏輯的輸入輸出口。CLE、ALE信號是FLASH存儲器命令、地址鎖存使能信號,/WE是保證命令、地址、數據能否及時正確的寫入FLASH的信號,/RE信號控制著數據的讀取,這些信號的精確度關系著FLASH存儲、讀數功能的實現。所以,這些信號的好壞直接關系著FLASH的正常工作。經實踐的電路調試,這些信號在傳輸過程中受到了其它因素的干擾,信號明顯失真,在電路中加入74HCl4(非門)以后,信號會變得光滑,準確。
芯片SN54LV245是八進制三態總線收發器,DIR=1時,總線傳輸方向從A→B;DIR=0時,總線傳輸方向從B→A。/OE是片選信號。/0E,DIR信號是由FPGA內部編程邏輯控制的。
FL,ASH接口中,為了保證/wE、/RE、/CE、R/B控制信號初始狀態無效,由硬件電路實現端口值拉高。本設計中不使用寫保護功能,所以/WP端口也接上了上拉電阻。
3 結束語
基于閃存技術的固態存儲器存儲密度大,功耗小,可靠性高,體積小重量輕且成本也在不斷降f氐,在航空應用中有良好的應用前景。在設計儲存測試系統時選用大容量的NAIXD FLASH存儲器大大提高了儲存、讀取速度,并且設計電路結構簡單,易于修改。
評論
查看更多