祝 倩,白云飛,安軍社
(1.中國科學(xué)院 復(fù)雜航天系統(tǒng)電子信息技術(shù)國防科技創(chuàng)新重點實驗室,北京 100190;2.中國科學(xué)院 國家空間科學(xué)中心,北京 100190;3.中國科學(xué)院大學(xué),北京 100190)
隨著電子通信技術(shù)的飛速發(fā)展以及國防要求的進一步提高,航天工程中衛(wèi)星所承載的任務(wù)日益繁雜且難度各異。因此,設(shè)計一款用于集中處理中低端衛(wèi)星任務(wù)的星載存儲控制器尤為重要。Nand Flash雖然具有價格低廉,存儲容量大等特點[1-2],但卻因存在出廠壞塊[3]等不可避免的因素而無法保證航天通信工程中必需的高可靠性與穩(wěn)定性。而Nor Flash憑借其高傳輸效率,操作簡單且性能穩(wěn)定等優(yōu)勢在航天工程的星載存儲系統(tǒng)中被廣泛應(yīng)用。
目前,Nor Flash控制器一般與靜態(tài)存儲控制器整合在一起,其控制邏輯復(fù)雜,讀寫速度慢[4],難以滿足航空航天領(lǐng)域系統(tǒng)芯片低功耗要求。文獻[5]在常規(guī)嵌入式Nor Flash控制器設(shè)計的基礎(chǔ)上增加了Nor Flash測試電路的設(shè)計,實現(xiàn)了對Nor Flash存儲器的讀寫控制和片外可測試功能。但在常規(guī)的Nor Flash控制器設(shè)計算法中始終存在編程和擦除操作速度遠低于Nand Flash等問題。文獻[6]設(shè)計的Nor Flash控制器IP中采用了硬件解鎖、簡化擦除模塊等方法有效提高了總線利用率從而實現(xiàn)了快速讀寫,該硬件解鎖的方法與軟件解鎖相比雖然解鎖速度更快,但設(shè)計的靈活性卻大大降低。文獻[7]為滿足不同型號Nor Flash芯片的兼容性,提出一種軟硬件結(jié)合的方法實現(xiàn)接口控制器,但依然需要以犧牲部分時間性能為代價來換取對不同型號芯片的支持。為進一步優(yōu)化Nor Flash的擦除和編程操作速度,提高整個星載存儲系統(tǒng)的工作效率,本文設(shè)計了一款改進型的Nor Flash控制器,并且通過modelsim仿真和FPGA開發(fā)平臺分別對設(shè)計結(jié)果進行了驗證。
Flash存儲器選用SPANSION(飛索半導(dǎo)體)的S29GL256P型號產(chǎn)品[8],屬于Nor Flash芯片。該芯片主要特點有:3V單電源供電,內(nèi)部產(chǎn)生高電壓進行讀取、編程、擦除等工作;芯片存儲容量為64 Mbit,可配置為字模式或字節(jié)模式;內(nèi)部分為256個扇區(qū),每個扇區(qū)是獨立的,可單獨進行讀寫或擦除等操作。該芯片操作簡單,只需按照芯片手冊中的規(guī)定時序?qū)⒅噶钚蛄袑懭肟刂破髦械拿罴拇嫫?,即可完成相?yīng)操作。
針對該芯片特點,Nor Flash控制器的優(yōu)化設(shè)計方案如下。
1)在芯片擦除操作中引入解鎖省略功能,以提高芯片擦除速度。解鎖省略功能允許主機系統(tǒng)向閃存設(shè)備發(fā)送編程命令,而無需預(yù)先在命令序列內(nèi)寫入解鎖循環(huán),從而縮短芯片擦除操作時間。
2)在芯片編程模塊中增加設(shè)計寫入緩沖器編程算法,寫入緩沖器編程允許系統(tǒng)在一次編程操作中寫入最多32個字。與標準的單字編程算法相比,這一優(yōu)化有效提高了字編程速度。
Flash控制器設(shè)計架構(gòu)如圖1,整個控制器將FPGA作為核心器件[9],由以下幾部分組成:URAT接口模塊,用于和外部主設(shè)備通信,實現(xiàn)主設(shè)備和主控系統(tǒng)之間的數(shù)據(jù)交換;數(shù)據(jù)寄存器和地址寄存器分別用于存儲目標數(shù)據(jù)和地址;配置寄存器主要用于存儲或修改Flash芯片的配置信息;狀態(tài)寄存器主要用于存儲記錄各個操作的運行狀態(tài)并返回給接口模塊。
圖1 星載Nor Flash控制器結(jié)構(gòu)框圖Fig.1 Block diagram of spaceborne Nor Flash controller
主控結(jié)構(gòu)主要包含2個有限狀態(tài)機(FSM)的設(shè)計:①是主狀態(tài)機,負責根據(jù)輸入的用戶命令將其轉(zhuǎn)為相應(yīng)的Flash控制順序;②是時序參數(shù)控制狀態(tài)機,根據(jù)讀出或擦洗的時序參數(shù)來控制輸出的物理控制信號的時序,可調(diào)時序參數(shù)如表1。
表1 可調(diào)參數(shù)表Tab.1 Comparison table of adjustable parameters
控制系統(tǒng)的信號流程為:①UART接口模塊通過讀寫LocalBus總線寄存器對主狀態(tài)機進行配置,主狀態(tài)機根據(jù)接收到的命令將其轉(zhuǎn)化為相應(yīng)的Flash讀寫控制順序;②將控制信號發(fā)送到時序參數(shù)控制狀態(tài)機,時序控制狀態(tài)機根據(jù)讀寫的時序參數(shù)確定進入讀或?qū)憰r序,與此同時狀態(tài)機的運行狀態(tài)被存入狀態(tài)寄存器;③將最終的控制信號與地址數(shù)據(jù)信號被發(fā)送給Nor Flash芯片以執(zhí)行相應(yīng)操作[10]。
本存儲控制器的設(shè)計采用LocalBus總線作為系統(tǒng)內(nèi)部總線標準(LocalBus總線是IBM公司提出的CoreConnect總線中面向Core+ASIC開發(fā)或SoC設(shè)計的總線規(guī)范,用于連接高速外設(shè),現(xiàn)已在嵌入式系統(tǒng)開發(fā)中得到廣泛應(yīng)用)。
根據(jù)系統(tǒng)設(shè)計框圖及Flash芯片數(shù)據(jù)手冊中對時序的具體要求,采用Verilog HDL語言編寫有限狀態(tài)機,實現(xiàn)對Flash芯片的擦除、讀、寫等操作。操作通過向命令寄存器中寫入特定命令或包含特定地址和數(shù)據(jù)組合的序列來啟動。
Flash芯片的寫操作包括擦除和編程操作,且在執(zhí)行寫操作之前需先執(zhí)行擦除操作。標準的芯片擦除是一個6總線循環(huán)操作,每個循環(huán)的具體含義如表2。
表2 芯片擦除操作命令Tab.2 Command of chip erasing operation
在改進的擦除操作中,引入解鎖省略功能,即將總線循環(huán)中的解鎖循環(huán)操作進行屏蔽。解鎖省略功能允許主機系統(tǒng)向閃存設(shè)備發(fā)送編程命令,而無需預(yù)先在命令序列內(nèi)寫入解鎖循環(huán),從而縮短芯片擦除操作時間。
標準的單字節(jié)編程模式使用4個閃存命令寫入循環(huán)對各個閃存地址進行編程,每個循環(huán)具體含義如表3。
表3 單字節(jié)編程操作命令Tab.3 Command of single byte programming operation
為進一步提高芯片編程速度,本文增設(shè)了寫入緩沖器編程算法,寫入緩沖器編程允許系統(tǒng)在一次編程操作中寫入最多32個字。
寫入緩沖器編程操作的每個循環(huán)含義如表4。該操作命令序列由前2個寫入解鎖循環(huán)來啟動。第3個寫入循環(huán)包含在編程的扇區(qū)地址寫入的寫入緩沖器加載命令。此時,系統(tǒng)寫入數(shù)值“寫入字數(shù)減1”,寫入字位置加載到編程的扇區(qū)地址的頁面緩沖器中,從而告知設(shè)備有多少寫入緩沖器地址加載了數(shù)據(jù)以及何時會發(fā)出“編程緩沖器到閃存”確認命令。待編程的位置數(shù)不能超出寫入緩沖器的容量(加載的數(shù)值等于待編程的位置數(shù)減1,例如,假設(shè)系統(tǒng)編程6個地址位置,則應(yīng)向設(shè)備寫入05h),否則操作中止,系統(tǒng)隨后寫入起始地址/數(shù)據(jù)組合。起始地址是待編程的第1組地址/數(shù)據(jù)對,使用地址Amax-A5選擇“寫入緩沖器頁面”地址,所有后續(xù)地址/數(shù)據(jù)對必須位于所選的寫入緩沖器頁面內(nèi)。一旦已加載指定數(shù)量的寫入緩沖器地址,系統(tǒng)必須隨后在扇區(qū)地址寫入“編程緩沖器到閃存”命令,并使用最后一個數(shù)據(jù)加載地址位置作為檢測編程操作狀態(tài)時的地址。
表4 寫入緩沖器編程操作命令Tab.4 Command of writing the buffer programming operation
由Flash芯片數(shù)據(jù)手冊中各操作的操作指令序列和時序波形圖可分析出芯片各個狀態(tài)間的轉(zhuǎn)化過程。以執(zhí)行寫入緩沖器編程操作為例,實現(xiàn)向芯片中寫入1個字/2個字節(jié)的具體過程,其狀態(tài)轉(zhuǎn)移邏輯如圖2。
圖2 Flash寫入緩沖器編程操作狀態(tài)轉(zhuǎn)移圖Fig.2 State transition diagram of Flash writing buffer programming operation
在寫操作的狀態(tài)轉(zhuǎn)化過程中,共有包含IDLE在內(nèi)的5個狀態(tài)。每個狀態(tài)由CEn和WEn的值來決定。CEn和WEn的電平高低隨著每個狀態(tài)的跳變而發(fā)生相應(yīng)轉(zhuǎn)化,且其轉(zhuǎn)化的時序控制取決于計數(shù)器Counter,計數(shù)器Counter的具體值由系統(tǒng)時鐘和操作過程中的地址和數(shù)據(jù)的建立及保持時間來決定。每通過一次圖2的狀態(tài)循環(huán),完成向指定地址SA寫入相應(yīng)數(shù)據(jù)SD的字節(jié)編程操作,根據(jù)寫入緩沖器編程操作中具體設(shè)置的編程字數(shù)N重復(fù)操作相應(yīng)次數(shù),最后根據(jù)狀態(tài)位引腳的值判斷寫數(shù)據(jù)操作是否完成以及操作是否正確[11]。
通過編寫相應(yīng)的頂層測試模塊[12],利用Modelsim軟件進行Flash芯片讀寫操作仿真[13],所得結(jié)果如圖3—圖5。
圖3 芯片擦除命令執(zhí)行和時序圖Fig.3 Sequence diagrams of chip erasing command working
圖4 芯片單字編程命令執(zhí)行和時序圖Fig.4 Sequence diagrams of chip single word programming command working
圖5 芯片寫入緩沖器編程命令執(zhí)行和時序圖Fig.5 Sequence diagrams of chip writing the buffer programming command working
由圖3和圖4可以看出,在有限狀態(tài)機的算法控制下,F(xiàn)lash控制器可以將擦除或?qū)懼噶钚蛄姓_寫入Flash,并完成相應(yīng)的擦除和寫數(shù)據(jù)操作。從圖4可看出,該Flash控制器實現(xiàn)了向地址880016h寫入數(shù)據(jù)1234h的單字編程操作,符合標準讀寫算法預(yù)期設(shè)計目標。
圖5中,F(xiàn)lash控制器分別向地址880007h,880008h,880009h和88000ah均寫入16位數(shù)據(jù)efefh,即實現(xiàn)了在一次編程操作中連續(xù)寫入4個字的功能,符合寫入緩沖器編程命令算法的設(shè)計目標。
為進一步驗證該星載存儲控制器的實際性能參數(shù),選用ER2C3000-G系列FPGA開發(fā)板作為驗證平臺(實物圖如圖6),這是首次利用該開發(fā)板作為Flash控制器性能驗證平臺。ER2C3000-G型FPGA芯片為中科億海微電子科技有限公司和中國科學(xué)院電子學(xué)研究所自行研制,是主要面向低成本、低端應(yīng)用領(lǐng)域、中等規(guī)模的FPGA產(chǎn)品。該型號FPGA可與XILINX公司的XQR2V3000型號的FPGA兼容,整體性能二者相當,部分指標ER2C3000-G優(yōu)于XQR2V3000。該國產(chǎn)FPGA開發(fā)平臺已多次成功完成航天在軌驗證任務(wù),應(yīng)用該開發(fā)平臺不僅可大大降低航天工程星載存儲系統(tǒng)的成本,也是對國產(chǎn)FPGA芯片發(fā)展的大力支持。
圖6 ER2C3000-G系列FPGA開發(fā)板Fig.6 ER2C3000-G FPGA development board
利用與該開發(fā)板配套的電子所自主開發(fā)的編譯環(huán)境軟件Passkey3.0對控制器代碼進行綜合實現(xiàn),整個星載存儲控制器所占用的FPGA的邏輯資源不足1%(253/79040),占用引腳比例為11%(130/1212),證明了該存儲系統(tǒng)的架構(gòu)精簡,可進一步用于嵌入式SoC系統(tǒng)開發(fā)工程中。
基于以上所研究的星載Flash存儲控制器,設(shè)計了一款基于該國產(chǎn)FPGA開發(fā)板的星上SoC系統(tǒng),架構(gòu)框圖如圖7。系統(tǒng)采用龍芯開源軟核處理器LS132作為主控CPU,AXI總線作為連接CPU和外設(shè)控制器的總線[14],AXI總線接口的片內(nèi)BRAM作為SoC系統(tǒng)的數(shù)據(jù)存儲器,本文所設(shè)計的Flash控制器通過連接開發(fā)板上的Nor Flash芯片作為該SoC系統(tǒng)的程序存儲器。通過設(shè)計編寫若干外設(shè)控制器,驗證CPU能否通過執(zhí)行程序訪問外設(shè)控制器,進而控制外設(shè)進行相應(yīng)操作。驗證過程所用到的開發(fā)板上的資源主要有FPGA(片內(nèi)含SRAM)和Nor Flash芯片等,已在圖5中標出。
圖7 SoC驗證系統(tǒng)架構(gòu)框圖Fig.7 Illustration of SoC verification system framework
設(shè)置工程的系統(tǒng)時鐘為10 MHz時,分別利用標準單字編程操作、硬件解鎖單字編程操作[3]和寫入緩沖器編程操作等3種方式向Flash一次性寫入16個字/32字節(jié),三者所用時間對比結(jié)果如表5,可知與標準單字編程算法相比,硬件解鎖單字編程算法的編程速度約為其1.8倍;寫入緩沖器編程操作優(yōu)勢更加明顯,寫入速度提高約3.5倍,符合預(yù)期設(shè)計目標。
表5 標準單字編程、硬件解鎖單字編程和寫入緩沖器編程操作執(zhí)行時間對比Tab.5 Comparison of standard single word programming, hardware unlocking single word programming and writingthe buffer programming operations in execution time
本文介紹了一種基于國產(chǎn)FPGA的星載Nor Flash控制器設(shè)計方案,為滿足航空航天工程需求,對方案進行了優(yōu)化改進。結(jié)果顯示,該方案有效地控制了FPGA資源占用率,實現(xiàn)了芯片快速讀寫,且該方案只需更改代碼中的芯片配置信息即可適用于其他型號的Nor Flash芯片,具有良好的復(fù)用性。另外,本文所用的國產(chǎn)FPGA驗證平臺為實現(xiàn)國產(chǎn)芯片自主可控奠定了良好基礎(chǔ),對推動國產(chǎn)FPGA芯片進一步崛起與發(fā)展具有重大意義。