国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于FPGA的星載NAND FLASH控制器的設(shè)計

2018-08-08 06:28喬亞飛李華旺
電子設(shè)計工程 2018年14期
關(guān)鍵詞:狀態(tài)機(jī)命令總線

喬亞飛 ,李華旺 ,常 亮 ,李 杰

(1.中國科學(xué)院上海微系統(tǒng)與信息技術(shù)研究所上海200050;2.上海微小衛(wèi)星工程中心上海201203;3.中國科學(xué)院大學(xué)北京100049)

隨著空間科學(xué)技術(shù)的進(jìn)步,在軌衛(wèi)星運(yùn)行期間產(chǎn)生海量的數(shù)據(jù)[1],對數(shù)據(jù)存儲設(shè)備的容量要求也越來越高。由于NAND FLASH的容量大、讀寫速度快、易擦除、低功耗等特點(diǎn)[2],越來越多的用作航空航天領(lǐng)域的存儲器件。雖然市面上有很多專用的FLASH控制器的芯片,但是這類芯片往往功能較多,導(dǎo)致功耗高,兼容性較差[3]??紤]到星上CPU的資源比較寶貴,底層的控制器采用FPGA實現(xiàn),F(xiàn)PGA作為可編程邏輯門陣列,具有高度的集成性,同時又有可編程器件的靈活性。本文采用VHDL語言,設(shè)計了通用型的NAND FLASH控制器,并在Microsemi公司Smartfution2 090 FPGA單板上得到驗證。

1 整體架構(gòu)設(shè)計

本次設(shè)計FPGA選用Microsemi公司的Smartfu?tion2 090,該芯片包含F(xiàn)PGA和ARM的Cortex-M3內(nèi)核[4]。Smartfution2系列FPGA基于FLASH架構(gòu),而一般的FPGA基于SRAM架構(gòu)[5]。與SRAM架構(gòu)FPGA相比,Smartfution2系列FPGA具備高可靠性和單事件翻轉(zhuǎn)免疫能力[6],更能適應(yīng)太空復(fù)雜環(huán)境,廣泛應(yīng)用于航空航天領(lǐng)域。

總體架構(gòu)如圖1所示,單板上的Cortex-M3內(nèi)核通過AHB總線向底層的FPGA的AHB接口模塊發(fā)送相關(guān)FLASH控制命令和將要寫入FLASH的數(shù)據(jù);FLASH控制器模塊從AHB接口模塊的相關(guān)寄存器讀取FLASH控制命令,數(shù)據(jù)等,解析相關(guān)命令,執(zhí)行對NAND FLASH的操作。

圖1 總體架構(gòu)圖

2 NAND FLASH控制模塊

本次NAND FLASH的片子選用Micron公司的MT29F32G08AFABA這一型號。這一FLASH容量較大,每片可以達(dá)到32G,組織也更加復(fù)雜。1片F(xiàn)LASH有2個(Logical Unit)LUN,每一個LUN包含2個plane,每個plane包含2 048個block,每個block包含128page,每個page為(4K+224bytes)。

NAND FLASH的數(shù)據(jù)、地址和指令采用復(fù)用I/O接口[7]。NAND FLASH 器件通過 CE(片選)、CLE(命令鎖存)、WE(寫使能)、RE(讀使能)、ALE(地址鎖存)使能信號的電平,來判斷寫入I/O總線的數(shù)據(jù)是地址還是數(shù)據(jù)、指令[8]。如果是通過I/O寫入命令,需要將CLE信號拉高,寫完之后將CLE拉低;同理,如果寫入的是多拍的地址,需要將ALE信號一直拉高,寫完之后拉低。

NAND FLASH控制模塊是本次設(shè)計的核心。該模塊主要功能有:

1)支持FLASH復(fù)位,讀數(shù)據(jù),寫數(shù)據(jù),塊擦除,讀狀態(tài),讀ID操作。

2)支持超時檢測功能。

3)支持多片F(xiàn)LASH陣列。

4)NAND FLASH控制時序參數(shù)可設(shè)置。

NAND FLASH控制模塊主要由狀態(tài)機(jī)實現(xiàn),狀態(tài)機(jī)的初始狀態(tài)為ST_IDLE,當(dāng)檢測到脈沖信號USER_CMD_EXE時,啟動狀態(tài)機(jī),狀態(tài)機(jī)跳轉(zhuǎn)等待FLASH忙狀態(tài);隨后根據(jù)命令信號USER_CMD跳轉(zhuǎn)到相應(yīng)的子狀態(tài)機(jī)去執(zhí)行,執(zhí)行完一種功能時,跳回ST_IDLE初始狀態(tài)。本設(shè)計主要有6種子狀態(tài)機(jī):復(fù)位操作子狀態(tài)機(jī),對NAND FLASH進(jìn)行復(fù)位;讀ID狀態(tài)機(jī),讀出NAND FLASH的生產(chǎn)廠商、特性等[9];塊擦除狀態(tài)機(jī),寫操作之前必須對NAND FLASH進(jìn)行擦除[10];讀操作狀態(tài)機(jī),讀數(shù)據(jù);編程操作狀態(tài)機(jī),向NAND FLASH寫入數(shù)據(jù);讀狀態(tài)操作狀態(tài)機(jī),判斷塊擦除或者編程操作是否完成[11]。

2.1 NAND FLASH讀操作設(shè)計

讀操作是NAND FLASH的一個基本操作,以頁為基本單位讀出數(shù)據(jù)[12]。對于本次FLASH的讀操作設(shè)計,根據(jù)需要,將一頁分為4 K大小的data區(qū),和224字節(jié)的Spare區(qū),data區(qū)主要存放有效數(shù)據(jù),例如衛(wèi)星的載荷數(shù)據(jù)、電源數(shù)據(jù)等;spare區(qū)存放片子的信息,例如壞塊、ID等。

根據(jù)NAND FLASH的數(shù)據(jù)手冊時序圖設(shè)計讀操作的狀態(tài)機(jī),讀操作分為9個狀態(tài)。檢測到US?ER_CMD_EXE脈沖信號,狀態(tài)機(jī)跳轉(zhuǎn)至ST_WA IT_BUSY,隨后,解析命令信號跳轉(zhuǎn)至讀操作;向NAND FLASH發(fā)送00h指令,則使NAND FLASH進(jìn)入READ模式,隨后寫入3個周期的PAGE地址和2個周期的列地址;寫入30h指令則將啟動數(shù)據(jù)讀操作,等待NAND FLASH反饋的R/B信號由‘0’變化為‘1’時[13],狀態(tài)機(jī)進(jìn)入ST_READ_WAIT_TO_READ狀態(tài),在R/B信號為低時,利用rbn_time_cnt計數(shù)器進(jìn)行超時檢測;等待tRR(大約為3個時鐘周期)時間即可開始數(shù)據(jù)讀序列,依次讀完data區(qū)數(shù)據(jù)和spare區(qū)數(shù)據(jù),最終跳回ST_IDLE狀態(tài)。讀操作的狀態(tài)機(jī)如圖2所示。

圖2 讀操作狀態(tài)機(jī)轉(zhuǎn)移圖

2.2 塊擦除設(shè)計

對于NAND FLASH,在寫入數(shù)據(jù)之前必須進(jìn)行塊擦除,塊擦除是基于塊的[14]。與讀操作和編程操作相比,塊擦除操作相對簡單。首先,向NAND FLASH發(fā)送60 h指令,F(xiàn)LASH進(jìn)入塊擦除模式,寫入3拍的塊地址,發(fā)送D0h啟動塊擦除操作;等待R/B信號由‘0’變?yōu)椤?’,塊擦除結(jié)束,狀態(tài)機(jī)跳轉(zhuǎn)至ST_IDLE。圖3為塊擦除狀態(tài)機(jī)跳轉(zhuǎn)圖。

圖3 塊擦除狀態(tài)機(jī)跳轉(zhuǎn)圖

2.3 NAND FLASH編程操作設(shè)計

基于NAND Flash的結(jié)構(gòu),大數(shù)據(jù)的編程一般采用順序?qū)懭氲姆椒╗15],從當(dāng)前頁的0地址順序?qū)懲暾?。根?jù)NAND FLASH的數(shù)據(jù)手冊時序圖設(shè)計編程操作的狀態(tài)機(jī),編程操作分為10個狀態(tài)。檢測到USER_CMD_EXE脈沖信號,狀態(tài)機(jī)跳轉(zhuǎn)至ST_WAIT_BUSY,隨后,解析編程命令信號跳轉(zhuǎn)至編程操作;控制器模塊向NAND FLASH發(fā)送命令80 h,片子進(jìn)入編程模式,和讀操作一樣,寫入3個周期的PAGE地址和2個周期的列地址;等待tADL(計數(shù)器計數(shù)3個CLK)時間,控制器模塊將1 PAGE數(shù)據(jù)順序送至I/O總線上,下一周期發(fā)送命令10 h至NAND FLASH;NAND FLASH檢測到10 h之后,開始進(jìn)行編程操作;NAND FLASH反饋的R/B信號由‘0’變?yōu)椤?’時(同讀操作,當(dāng)R/B信號為低時,進(jìn)行超時檢測),說明編程操作完成,狀態(tài)機(jī)跳轉(zhuǎn)至ST_IDLE狀態(tài);編程操作的狀態(tài)機(jī)轉(zhuǎn)移圖如圖4所示。

圖4 編程操作狀態(tài)機(jī)跳轉(zhuǎn)圖

3 AHB總線接口模塊設(shè)計

因為星載計算機(jī)是CPU+FPGA架構(gòu),所以本次設(shè)計需要將底層的FPGA掛接到AHB總線上,用來接收CPU(Cortex-M3內(nèi)核)發(fā)送過來的指令和數(shù)據(jù)。AHB總線是ARM公司提出的一種開放性片上總線標(biāo)準(zhǔn)[16],采用AHB-Lite協(xié)議,AHB-Lite是AHB協(xié)議的子集,只支持一個總線主設(shè)備,不需要總線仲裁器,不支持Retry及Splite響應(yīng)。本次設(shè)計開發(fā)環(huán)境選用美高森美公司的Libero SOC和Softconsole IDE,將包含Cortex-M3的MSS(微控制器子系統(tǒng))做Master,整個的FPGA代碼頂層模塊做Slave,調(diào)用Libero IP庫中的AHB-Lite Core進(jìn)行Master和Slave的互連。設(shè)計接口模塊用于FPGA和AHB-Lite Core進(jìn)行數(shù)據(jù)的交換,在該模塊中,主要設(shè)置7組寄存器用于寄存數(shù)據(jù):0x00寄存將要讀或者寫FLASH片子地址;0x04寄存操作FLASH命令;0x08寄存片選信號;0x0C寄存USER_CMD_EXE信號;0x20寄存CPU發(fā)送過來的將要寫入FLASH的數(shù)據(jù);0x24寄存從FLASH讀出的將要送入CPU的數(shù)據(jù);0x28寄存FLASH片子是否在寫狀態(tài);0x2C寄存FLASH片子是否在讀狀態(tài)。

4 仿真驗證

控制器的仿真平臺選用ModelSim 10.4。仿真時采用Micron公司編寫的NAND FLASH仿真模型,這一仿真模型參數(shù)可配,可以模擬NAND FLASH的如各種接口,操作。仿真時對NAND FLASH仿真模型分別進(jìn)行復(fù)位、擦除塊、寫入、讀出1 page數(shù)據(jù),進(jìn)行比對,觀察控制器功能是否正常。經(jīng)仿真測試,該控制器的預(yù)期功能正常。圖5為控制器編程、讀頁操作仿真圖(上為編程操作,下為讀操作)。

5 上板驗證

上板測試時,采用專用的復(fù)位模塊,時鐘頻率采用50MHz。Cortex-M3內(nèi)核向底層FPGA發(fā)送數(shù)據(jù)、指令,對NAND FLASH進(jìn)行復(fù)位、擦除、寫、讀等操作,圖6為上板測試的工程頂層模塊。其中FLASH_AHB_TOP_MSS為上層CPU模塊,編寫C代碼發(fā)送相關(guān)操作命令、讀取相關(guān)數(shù)據(jù)。FLASH_AHB_ONBOARD為底層控制器的FPGA部分,實現(xiàn)對NAND FLASH的具體操作。底層FPGA和上層Cortex-M3通過CoreAHBLite橋接。

圖5 控制器編程、讀頁操作仿真圖

圖6 工程頂層模塊

在上板之前先進(jìn)行可靠性測試,例如反復(fù)插拔單板,上電下電,復(fù)位等??煽啃詼y試工作完成之后,進(jìn)行功能測試,寫1 page數(shù)據(jù)最長耗時為760μs,讀1 page數(shù)據(jù)最長耗時為280μs,擦除整個Block為3.5 ms;滿足星上毫秒級速率存儲要求。

6 結(jié)論

本文的創(chuàng)新點(diǎn)在于設(shè)計了CPU+FPGA架構(gòu)的星上NAND FLASH控制器,與專用的星上NAND FLASH控制器芯片相比,基于FPGA的設(shè)計接口更多,更加靈活,參數(shù)可調(diào)可配,提高了控制器的兼容性,功耗降低。通過仿真和上板調(diào)試,NAND FLASH的讀寫等功能都能實現(xiàn)。同時,控制器底層硬件采用FPGA,節(jié)約了星載計算機(jī)的資源,滿足在軌衛(wèi)星的數(shù)據(jù)高效存儲的要求。

猜你喜歡
狀態(tài)機(jī)命令總線
只聽主人的命令
基于有限狀態(tài)機(jī)的交會對接飛行任務(wù)規(guī)劃方法
基于PCI Express總線的xHC與FPGA的直接通信
機(jī)載飛控1553B總線轉(zhuǎn)以太網(wǎng)總線設(shè)計
移防命令下達(dá)后
這是人民的命令
多通道ARINC429總線檢查儀
基于EtherCAT總線的ROV控制系統(tǒng)設(shè)計
FPGA設(shè)計中狀態(tài)機(jī)安全性研究
基于反熔絲FPGA的有限狀態(tài)機(jī)加固設(shè)計