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