基于閃存的星載大容量存儲器的研究和實(shí)現
3 系統的基本工作原理下面以閃存的寫(xiě)(編程)操作為線(xiàn)索,闡述系統的基本工作原理。
3.1 寫(xiě)操作的準備和啟動(dòng)
1394高速總線(xiàn)上的串行數據通過(guò)一定的接口芯片變換成并行數據。當大容量存儲器接收到外部1394高速總線(xiàn)上的數據存儲握手信號時(shí),1394接口控制子模塊利用握手信號產(chǎn)生一定的時(shí)鐘和控制信號,控制高速數據緩存入32位的輸入FIFO。當輸入FIFO的存儲量達到一次8級流水運行的數據量時(shí),就向CPU發(fā)出中斷,申請寫(xiě)操作啟動(dòng)。
3.2 寫(xiě)流水操作的加載和自動(dòng)編程
存儲區的尋址采用內存尋址方式,即為FLASH存儲區分配一段內存空間,CPU象訪(fǎng)問(wèn)內存一樣對其進(jìn)行尋址,大小為2M,共21根地址線(xiàn),其中高3位是子模塊選擇,選擇8級流水中的某一級;低18位是子模塊的每塊芯片的頁(yè)(行)地址。對于芯片內的列地址,由于向每一頁(yè)寫(xiě)入數據時(shí),總是從頁(yè)的起始處開(kāi)始寫(xiě),即列地址(頁(yè)內編程起始地址)是固定的,因此可以直接由FPGA給出。當CPU接收到寫(xiě)操作啟動(dòng)的中斷申請時(shí),給出寫(xiě)操作命令,并進(jìn)行地址譯碼。存儲區控制子模塊將CPU給出的命令和地址經(jīng)過(guò)一定的邏輯轉換成片選、命令、地址及控制信號,依次對8級存儲子模塊進(jìn)行片選并完成各級命令和內部地址的加載工作。然后再由存儲區控制子模塊產(chǎn)生一定的控制信號,控制輸入FIFO啟動(dòng)對8級存儲子模塊的數據加載工作:首先對第一級進(jìn)行片選,數據流由輸入FIFO經(jīng)存儲區數據子模塊驅動(dòng)后輸入第一級存儲子模塊,經(jīng)過(guò)512個(gè)寫(xiě)周期后(頁(yè)有效數據),完成對四片并行的FLASH芯片的頁(yè)加載,加載完成后由存儲區控制子模塊給出自動(dòng)編程的起始指令10H,第一級子模塊的四片芯片就開(kāi)始將加載到頁(yè)寄存器的數據寫(xiě)入到芯片內部,進(jìn)行自動(dòng)編程工作。頁(yè)編程操作時(shí)序圖如圖4所示,這時(shí)它們的片選可以無(wú)效。然后使第二級片選信號有效,開(kāi)始對第二級進(jìn)行數據加載。依次下去,完成8級存儲子模塊的數據加載。
3.3 檢驗寫(xiě)流水操作是否成功
第一級存儲子模塊在完成了數據加載后開(kāi)始自動(dòng)編程,待到8級的數據加載都完成后,其自動(dòng)編程已接近尾聲。此時(shí)不斷檢測該級四片芯片的忙/閑端口,一旦它們都處于“閑”狀態(tài)時(shí),說(shuō)明自動(dòng)編程都已經(jīng)結束。這時(shí)由存儲區控制子模塊的控制邏輯產(chǎn)生片選信號,選通第一級存儲子模塊并發(fā)讀狀態(tài)命令70H,通過(guò)采樣四片芯片的I/O端口的“0”狀態(tài)來(lái)檢測編程是否成功,并將檢測結果鎖存進(jìn)FPGA內部的寄存器;然后按同樣的方式對第二級存儲子模塊進(jìn)行檢測,依次下去,直到“記錄”下8級存儲子模塊的編程成功與否的狀態(tài)信息后,向CPU申請中斷并將這些狀態(tài)值返回給CPU。CPU則根據這些狀態(tài)值更新無(wú)效塊映射表,并將無(wú)效塊映射到冗余區,對編程出錯的存儲子模塊重新編程。重新編程與正常編程的工作原理是一致的 只不過(guò)數據是由SRAM輸出給FLASH,且不能進(jìn)行流水操作。
評論