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