《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 一種支持在線升級(jí)的NOR Flash控制器設(shè)計(jì)
一種支持在線升級(jí)的NOR Flash控制器設(shè)計(jì)
2019年電子技術(shù)應(yīng)用第10期
徐立國(guó)1,2,李德建1,2,于寶東1,2,楊立新1,2,王小曼1,2
1.北京智芯微電子科技有限公司 國(guó)家電網(wǎng)公司重點(diǎn)實(shí)驗(yàn)室 電力芯片設(shè)計(jì)分析實(shí)驗(yàn)室,北京100192; 2.北京智芯微電子科技有限公司 北京市電力高可靠性集成電路設(shè)計(jì)工程技術(shù)研究中心,北京100192
摘要: 介紹了一種嵌入式NOR Flash控制器的設(shè)計(jì),可以支持Flash快速在線升級(jí)模式,不需要中斷向量重映射,采用兩片F(xiàn)lash拼接,中間啟動(dòng),硬件直接完成地址映射。IAP程序執(zhí)行過(guò)程中支持Flash讀操作,能正確返回讀結(jié)果??刂破魈峁┝? μs參數(shù)值,應(yīng)用中,只需要根據(jù)工作頻率配置該參數(shù)值,硬件則自動(dòng)根據(jù)該值計(jì)算出Flash器件的對(duì)應(yīng)頻率的各個(gè)擦寫(xiě)時(shí)序參數(shù),節(jié)省了軟件逐個(gè)配置多個(gè)時(shí)序參數(shù)的復(fù)雜度。含有該控制器的MCU芯片已經(jīng)經(jīng)過(guò)仿真驗(yàn)證和FPGA測(cè)試通過(guò),并在UMC55 nm工藝上流片成功,對(duì)芯片樣品的測(cè)試結(jié)果表明,該Flash控制器功能性能良好,方便使用。
關(guān)鍵詞: NORFlash 控制器 在線升級(jí)
中圖分類號(hào): TN402
文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.182990
中文引用格式: 徐立國(guó),李德建,于寶東,等. 一種支持在線升級(jí)的NOR Flash控制器設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2019,45(10):50-57.
英文引用格式: Xu Liguo,Li Dejian,Yu Baodong,et al. Design of an embedded NOR Flash controller IP for IAP[J]. Application of Electronic Technique,2019,45(10):50-57.
Design of an embedded NOR Flash controller IP for IAP
Xu Liguo1,2,Li Dejian1,2,Yu Baodong1,2,Yang lixin1,2,Wang Xiaoman1,2
1.State Grid Key Laboratory of Power Industrial Chip Design and Analysis Technology, Beijing Smart-Chip Microelectronics Technology Co.,Ltd.,Beijing 100192,China; 2.Beijing Engineering Research Center of High-reliability IC with Power Industrial Grade, Beijing Smart-Chip Microelectronics Technology Co.,Ltd.,Beijing 100192,China
Abstract: An embedded NOR Flash controller is descripted for quickly IAP(in application programming),no need of interrupt vector remap by software, but direct address remap by hardware reboot from middle location with dual Flash banks. The Flash controller can support read operation in the process of IAP, and get right read results. The Flash controller has a 1 ?滋s configuration register which can be used to calculate expected timing values for programming or erase automatically, reducing the software workload to configure more timing values one by one with different working frequency. It is verified after simulation and FPGA prototype verification,and taped out on UMC55 nm process in MCU. The samples of MCU with IAP working well prove further the Flash controller.
Key words : NOR Flash;controller;in application programming

0 引言

    隨著智能化的發(fā)展以及物聯(lián)網(wǎng)的興起,微控制器(Micro Control Unit,MCU)主控芯片得到了越來(lái)越多的應(yīng)用。當(dāng)前MCU主控芯片一般都用NOR Flash作為片上系統(tǒng)存儲(chǔ)器,進(jìn)行指令和數(shù)據(jù)存取,根據(jù)應(yīng)用,用戶可以對(duì)片上Flash的指定區(qū)域進(jìn)行擦寫(xiě)。在工業(yè)電力控制的應(yīng)用中,在線升級(jí)(In Application Programming,IAP)是一種常用的操作,意思是“在應(yīng)用編程”,即在程序運(yùn)行時(shí),程序存儲(chǔ)器可由程序自身進(jìn)行擦寫(xiě)。具體來(lái)說(shuō),就是將片上Flash存儲(chǔ)器分為bootloader(IAP)程序和USER APP程序兩部分,當(dāng)需要在線升級(jí)時(shí),bootloader中的IAP程序通過(guò)外部通信接口接收數(shù)據(jù),然后擦除和寫(xiě)入U(xiǎn)SER APP部分,同時(shí)寫(xiě)入更新標(biāo)志,然后系統(tǒng)重新啟動(dòng)執(zhí)行USER APP程序,達(dá)到在線升級(jí)的目的。

    通常有些主控芯片會(huì)要求IAP程序調(diào)用的Flash擦寫(xiě)程序要在SRAM中執(zhí)行,IAP程序到USER APP程序跳轉(zhuǎn)需要進(jìn)行中斷向量表重映射。擦寫(xiě)Flash USER APP程序區(qū)域過(guò)程中,要求CPU不能對(duì)Flash發(fā)起讀操作,如果發(fā)生,則不能正確返回讀取結(jié)果。

    本文給出了一種支持IAP流程的兩片F(xiàn)lash拼接的Flash控制器方案,IAP程序直接在Flash執(zhí)行,IAP程序到USER APP程序跳轉(zhuǎn)提供一種快速方法,通過(guò)硬件直接完成地址映射。IAP程序執(zhí)行過(guò)程中,CPU可以對(duì)Flash發(fā)起讀指令操作,擦寫(xiě)結(jié)束能正確返回讀結(jié)果。

1 NOR Flash器件

    本文采用的NOR Flash IP基于UMC55 nm工藝,型號(hào)是UM055EFLLP128KX032CBA,讀寫(xiě)位寬32 bit,地址線17 bit。main區(qū)總?cè)萘? Mb(1 K×128×32 bit),1 K個(gè)扇區(qū);NVR區(qū)總?cè)萘?6 Kb(4×128×32 bit),4個(gè)扇區(qū)。每個(gè)扇區(qū)容量為128×32 bit=4 Kb,每個(gè)扇區(qū)包含2個(gè)頁(yè),每個(gè)頁(yè)包含64個(gè)word(1個(gè)word為32 bit)。結(jié)構(gòu)框圖如圖1所示。

wdz3-t1.gif

    Flash接口信號(hào)如表1所示。

wdz3-b1.gif

    NOR Flash器件的操作分為讀、寫(xiě)、扇區(qū)擦除、片擦除操作。時(shí)序圖如圖2~圖5所示。

wdz3-t2.gif

wdz3-t3.gif

wdz3-t4.gif

wdz3-t5.gif

    Flash讀時(shí)序,發(fā)起AE脈沖鎖定地址,tAA時(shí)間之后讀出數(shù)據(jù)有效。

    Flash寫(xiě)時(shí)序,先拉高PROG信號(hào),然后AE脈沖鎖定地址,產(chǎn)生PROG2脈沖寫(xiě)入對(duì)應(yīng)數(shù)據(jù)。PROG拉高持續(xù)時(shí)間是tHV,也就是說(shuō)寫(xiě)入時(shí)間是用戶自己控制的。根據(jù)tHV的時(shí)間不同,可寫(xiě)入的word個(gè)數(shù)也不同。本文只討論單個(gè)word的寫(xiě)入。

    Flash扇區(qū)擦除時(shí)序,扇區(qū)擦除起始要用AE鎖定扇區(qū)地址,拉起ERASE信號(hào),執(zhí)行擦除時(shí)序。ERASE時(shí)間由tERASE時(shí)間參數(shù)控制。

    Flash片擦除時(shí)序,擦除起始要用AE鎖定任意地址,片擦除除了拉高ERASE信號(hào),還要拉起CHIP信號(hào)。ERASE時(shí)間由tSCE時(shí)間參數(shù)控制。

2 控制器方案

2.1 結(jié)構(gòu)框圖

    Flash控制器模塊在SoC系統(tǒng)中位于AHB matrix總線矩陣和Flash器件之間,CPU為ARM Cortex M4,總線為哈佛結(jié)構(gòu)。CPU可以通過(guò)IBUS和DBUS對(duì)Flash器件進(jìn)行訪問(wèn)。Flash控制器結(jié)構(gòu)框圖如圖6所示。

wdz3-t6.gif

    Flash控制器實(shí)現(xiàn)了CPU對(duì)Flash器件的讀、寫(xiě)和擦除。支持CPU在Flash中執(zhí)行程序的同時(shí)可以對(duì)Flash其他區(qū)域進(jìn)行擦寫(xiě)。Flash支持在大于1 MHz的多種頻率下能對(duì)Flash器件進(jìn)行擦寫(xiě)。

    Flash控制器包含地址映射控制模塊、SFR模塊、狀態(tài)機(jī)控制模塊、時(shí)序轉(zhuǎn)化模塊。地址映射控制模塊用于在線升級(jí)時(shí)對(duì)AHB訪問(wèn)地址進(jìn)行映射;SFR模塊用于Flash控制器的模式控制選擇,配置和狀態(tài)寄存器寄存等;狀態(tài)機(jī)控制模塊用于Flash控制器對(duì)各種模式的工作狀態(tài)控制;時(shí)序轉(zhuǎn)換模塊用于根據(jù)狀態(tài)機(jī)的當(dāng)前狀態(tài)來(lái)產(chǎn)生對(duì)應(yīng)的Flash器件的時(shí)序。

2.2 狀態(tài)機(jī)設(shè)計(jì)

    Flash控制器的狀態(tài)機(jī)如圖7所示,包含9個(gè)狀態(tài),INIT狀態(tài)完成Flash上電啟動(dòng),init_done之后進(jìn)入READ狀態(tài)。READ狀態(tài)下支持AHB總線讀操作。

wdz3-t7.gif

    如果要執(zhí)行擦寫(xiě),第一步則在READ狀態(tài)下配置SFR模塊的模式寄存器(PROG或者SEC_ERASE或者CHIP_ERASE),然后狀態(tài)機(jī)跳轉(zhuǎn)至WAIT_WR狀態(tài)(注:在WAIT_WR狀態(tài)也支持AHB總線讀操作)。

    第二步當(dāng)AHB總線有寫(xiě)操作,則狀態(tài)機(jī)跳轉(zhuǎn)至對(duì)應(yīng)的PROG或SEC_ERASE或CHIP_ERASE狀態(tài),開(kāi)始對(duì)應(yīng)的擦寫(xiě)時(shí)序轉(zhuǎn)化。時(shí)序轉(zhuǎn)化結(jié)束后,PROG跳轉(zhuǎn)到TRCV_P,SEC_ERASE和CHIP_ERASE跳轉(zhuǎn)到TRCV_E。之后跳轉(zhuǎn)到TRW狀態(tài),結(jié)束后返回READ狀態(tài)。

3 控制器實(shí)現(xiàn)分析

3.1 AHB總線數(shù)據(jù)相位擴(kuò)展原理

    AMBA AHB總線的寫(xiě)數(shù)據(jù)總線用來(lái)將數(shù)據(jù)從主機(jī)傳輸?shù)綇臋C(jī)上,而讀數(shù)據(jù)總線用來(lái)將數(shù)據(jù)從從機(jī)傳輸?shù)街鳈C(jī)上。

    AHB總線基本傳輸包含兩個(gè)截然不同的部分:地址相位,只持續(xù)單個(gè)周期;數(shù)據(jù)相位,可能需要多個(gè)周期,這通過(guò)使用hready信號(hào)實(shí)現(xiàn)。

    地址不長(zhǎng)期有效,所以所有從機(jī)必須在這個(gè)時(shí)段(傳輸?shù)刂窌r(shí))采樣地址。然而,通過(guò)hready信號(hào)可以延長(zhǎng)數(shù)據(jù)。當(dāng)該信號(hào)為低時(shí)導(dǎo)致在傳輸中插入等待狀態(tài)同時(shí)允許從機(jī)有額外的時(shí)間提供或者采樣數(shù)據(jù)。

    圖8表示最簡(jiǎn)單的傳輸,沒(méi)有等待狀態(tài)。在這個(gè)沒(méi)有等待狀態(tài)的簡(jiǎn)單傳輸中,主機(jī)在HCLK的上升沿之后將地址和控制信號(hào)驅(qū)動(dòng)到總線上;然后在時(shí)鐘的下一個(gè)上升沿從機(jī)采樣地址和控制信息;在從機(jī)采樣了地址和控制信號(hào)后能夠開(kāi)始驅(qū)動(dòng)適當(dāng)?shù)捻憫?yīng)并且該響應(yīng)被總線主機(jī)在第三個(gè)時(shí)鐘的上升沿采樣。

wdz3-t8.gif

    圖9為具有等待狀態(tài)的傳輸。從機(jī)插入等待周期(HREADY拉低)到任意傳輸中,這樣擴(kuò)展了傳輸完成允許的附加時(shí)間。對(duì)寫(xiě)操作而言,總線主機(jī)必須保持?jǐn)?shù)據(jù)在整個(gè)擴(kuò)展周期中穩(wěn)定。

wdz3-t9.gif

    Flash控制器設(shè)計(jì)的擦寫(xiě)模式狀態(tài)跳轉(zhuǎn)利用了數(shù)據(jù)相位擴(kuò)展階段數(shù)據(jù)保持的原理。

3.2 SFR區(qū)的位置

    如圖10所示,F(xiàn)lash擦寫(xiě)模式寄存器SFR區(qū)放在ARM cortex M4的Code區(qū),Code區(qū)指0.5 GB以下,即小于0x2000_0000地址的空間,Code區(qū)只能IBus/DBus總線通過(guò)AHB接口進(jìn)行訪問(wèn)。不放在Peripheral區(qū)APB總線訪問(wèn),是為了避免IBus/DBus和SBus操作Flash的沖突。

wdz3-t10.gif

    以Flash寫(xiě)操作為例,如果模式寄存器放在Peripheral區(qū)APB總線訪問(wèn),則CPU SBus配置完P(guān)ROG模式寄存器(訪問(wèn)Peripheral區(qū)),準(zhǔn)備開(kāi)始PROG時(shí)序轉(zhuǎn)換時(shí),CPU IBus/DBus可能還在讀取Flash操作中(訪問(wèn)Code區(qū)),這樣控制器狀態(tài)機(jī)需要等待判斷讀結(jié)束才能跳轉(zhuǎn),控制不好可能Flash的PROG寫(xiě)操作和讀操作會(huì)沖突。

    如果模式寄存器放在Code區(qū),則會(huì)避免這種情況。配置寫(xiě)模式寄存器的總線是CPU DBus(訪問(wèn)Code區(qū)),配置同時(shí)必然不會(huì)有讀Flash(IBus/DBus訪問(wèn)Code區(qū))的操作,因此下一刻即可以開(kāi)始進(jìn)行狀態(tài)機(jī)從READ到WAIT_WR或WAIT_WR到PROG的跳轉(zhuǎn),WAIT_WR跳轉(zhuǎn)到PROG后會(huì)開(kāi)始Flash PROG時(shí)序轉(zhuǎn)化。

3.3 Flash讀操作

    Flash讀操作,控制器可以直接將AHB總線讀操作進(jìn)行Flash讀時(shí)序轉(zhuǎn)換。Flash控制器的READ狀態(tài)和WAIT_WR狀態(tài)都支持AHB總線讀操作。

    READ狀態(tài)的讀操作時(shí)序圖如圖11所示。

wdz3-t11.gif

    WAIT_WR狀態(tài)的讀操作時(shí)序圖如圖12所示。

wdz3-t12.gif

3.4 Flash寫(xiě)操作

    控制器在PROG狀態(tài)可以完成Flash寫(xiě)操作的時(shí)序轉(zhuǎn)化,采用hready拉總線方式。

    進(jìn)入PROG狀態(tài)需要CPU執(zhí)行兩步總線寫(xiě)操作,第一步,總線配置寫(xiě)模式,第二步,總線寫(xiě)操作給出寫(xiě)地址,寫(xiě)數(shù)據(jù)的采樣利用的就是AHB總線寫(xiě)操作的數(shù)據(jù)在擴(kuò)展周期穩(wěn)定的原理。

    詳細(xì)的Flash寫(xiě)操作的步驟是:

    (1)配置寫(xiě)模式,READ狀態(tài)跳轉(zhuǎn)到WAIT_WR狀態(tài);

    (2)在WAIT_WR狀態(tài),向目的地址發(fā)起AHB總線寫(xiě),狀態(tài)機(jī)跳轉(zhuǎn)到PROG狀態(tài),同時(shí)鎖定總線的寫(xiě)地址,然后利用hready拉低時(shí)數(shù)據(jù)保持的原理,鎖定總線的寫(xiě)數(shù)據(jù),然后進(jìn)行PROG時(shí)序轉(zhuǎn)化;

    (3)在PROG狀態(tài),PROG信號(hào)拉高,PROG2產(chǎn)生寫(xiě)脈沖,完成word的寫(xiě)入。之后hready信號(hào)被釋放拉高,狀態(tài)機(jī)跳到TRCV_P,之后TRW,返回READ態(tài)。

    注:如果在PROG狀態(tài)有AHB總線讀操作,hready會(huì)被拉低,讀控制信號(hào)和讀地址被鎖存,持續(xù)到編程時(shí)間結(jié)束,直到返回READ態(tài),正確返回讀結(jié)果。

    舉例:以圖13、圖14為例說(shuō)明Flash寫(xiě)操作時(shí)序。比如向0x00_8004地址(CPU地址0x0002_0010)寫(xiě)入0x1234_5678數(shù)據(jù)。write_sfr_valid信號(hào)(配置PROG模式脈沖)觸發(fā)READ狀態(tài)跳到WAIT_WR狀態(tài),然后write_valid信號(hào)(AHB總線寫(xiě)0x0002_0010地址,數(shù)據(jù)為0x1234_5678)觸發(fā)WAIT_WR狀態(tài)跳到PROG,開(kāi)始時(shí)序轉(zhuǎn)化。

    READ->WAIT_WR->PROG寫(xiě)操作時(shí)序圖如圖13所示。

wdz3-t13.gif

    完整的寫(xiě)操作PROG時(shí)序示意圖如圖14所示。

wdz3-t14.gif

3.5 Flash擦除操作

    Flash在SEC_ERASE和CHIP_ERASE狀態(tài)可以完成擦除操作的時(shí)序轉(zhuǎn)化。

    進(jìn)入擦除操作需要CPU執(zhí)行兩步總線寫(xiě)操作,第一步,配置擦除模式,第二步,總線寫(xiě)操作給出擦除地址,對(duì)于扇區(qū)擦除,總線寫(xiě)操作地址即是擦除地址,片擦除可以是任意地址。

    以扇區(qū)擦除為例,詳細(xì)的步驟是:

    (1)配置扇區(qū)擦除模式,READ狀態(tài)跳轉(zhuǎn)到WAIT_WR狀態(tài);

    (2)在WAIT_WR狀態(tài),向目的扇區(qū)地址發(fā)起AHB總線寫(xiě),狀態(tài)機(jī)跳轉(zhuǎn)到SEC_ERASE狀態(tài),同時(shí)鎖定總線的寫(xiě)地址,提取待擦除的扇區(qū)地址,然后hready信號(hào)拉低,進(jìn)行扇區(qū)擦除時(shí)序轉(zhuǎn)化;

    (3)在SEC_ERASE狀態(tài),ERASE信號(hào)拉高,WEB信號(hào)拉低,ERASE信號(hào)持續(xù)時(shí)間達(dá)到配置Thv的值時(shí),狀態(tài)機(jī)跳到TRCV_E,之后TRW,返回READ態(tài)。

    舉例:以圖15為例說(shuō)明Flash扇區(qū)擦除時(shí)序。比如擦除0x00_8004扇區(qū)(CPU地址為0x0002_0010)。write_sfr_valid信號(hào)(配置SEC_ERASE模式脈沖)觸發(fā)READ狀態(tài)跳到WAIT_WR狀態(tài),然后write_valid 信號(hào)(AHB總線寫(xiě)0x0002_0010地址)觸發(fā)WAIT_WR狀態(tài)跳到SEC_ERASE,開(kāi)始時(shí)序轉(zhuǎn)化。

wdz3-t15.gif

3.6 Flash自編程操作

    Flash自編程操作即是Flash寫(xiě)程序在Flash內(nèi)部執(zhí)行,同時(shí)對(duì)Flash其他區(qū)域進(jìn)行扇區(qū)擦除和寫(xiě)操作的過(guò)程。

    CPU每執(zhí)行一條指令的操作一般分為取指令、分析指令、執(zhí)行指令。轉(zhuǎn)化為對(duì)Flash的操作就是讀或?qū)?。利用?xiě)Flash操作之后hready拉低,鎖定總線,進(jìn)行Flash讀寫(xiě)時(shí)序轉(zhuǎn)化。

    扇區(qū)擦除操作的分解步驟如下:

    (1)(READ狀態(tài))讀Flash操作取指令;

    (2)發(fā)起總線寫(xiě)操作,配置扇區(qū)擦除模式寄存器(從READ跳轉(zhuǎn)到WAIT_WR);

    (3)(WAIT_WR狀態(tài))讀Flash操作取指令;

    (4)發(fā)起總線寫(xiě)操作(從WAIT_WR跳轉(zhuǎn)到PROG);

    (5)hready拉低,鎖定總線,同時(shí)從總線寫(xiě)地址高bit提取Flash扇區(qū)地址(當(dāng)前總線寫(xiě)數(shù)據(jù)不必關(guān)心),然后發(fā)起扇區(qū)擦除時(shí)序轉(zhuǎn)化;

    (6)(從PROG跳轉(zhuǎn)到TRCV_E,然后TRW,返回READ)hready拉高,釋放總線,返回步驟(1)。

    寫(xiě)操作的分解步驟如下:

    (1)(READ狀態(tài))讀Flash操作取指令;

    (2)發(fā)起總線寫(xiě)操作,配置寫(xiě)模式寄存器(從READ跳轉(zhuǎn)到WAIT_WR);

    (3)(WAIT_WR狀態(tài))讀Flash操作取指令;

    (4)發(fā)起總線寫(xiě)操作(從WAIT_WR跳轉(zhuǎn)到PROG);

    (5)hready拉低,鎖定總線,同時(shí)鎖定總線當(dāng)前地址作為寫(xiě)地址,利用hready拉低AHB總線數(shù)據(jù)擴(kuò)展周期期間寫(xiě)數(shù)據(jù)不變?cè)礞i定當(dāng)前寫(xiě)數(shù)據(jù),發(fā)起word寫(xiě)時(shí)序轉(zhuǎn)化;

    (6)(從PROG跳轉(zhuǎn)到TRCV_P,然后TRW,返回READ)hready拉高,釋放總線,返回步驟(1)。

3.7 IAP硬件地址映射

    Flash控制器支持兩片F(xiàn)lash器件工作,F(xiàn)lash器件為UM055EFLLP128KX032CBA型號(hào),深度方向拼接,統(tǒng)一編址,main區(qū)(CPU地址)范圍從0x00_0000H~0x0F_FFFFH,NVR區(qū)(CPU地址)從0x10_0000~0x10_0FFFH。

    正常情況下Flash Bank0位于低地址區(qū)域,F(xiàn)lashBank1位于高地址區(qū)域。正常啟動(dòng)時(shí)CPU從Bank0低地址區(qū)域開(kāi)始執(zhí)行程序,如圖16所示。

wdz3-t16.gif

    在IAP流程中,如果判斷待升級(jí)程序容量小于一個(gè)Bank容量,則可以使用這種快速在線升級(jí)方法,Boot-loader IAP程序放在Flash Bank0,將用戶程序USER APP程序?qū)懭隖lash Bank1中,然后寫(xiě)入更新標(biāo)志位(標(biāo)志位放在Flash NVR區(qū))。發(fā)起系統(tǒng)軟復(fù)位,硬件將地址重映射,系統(tǒng)從Bank1高地址區(qū)域開(kāi)始執(zhí)行程序,如圖17所示。

wdz3-t17.gif

    該設(shè)計(jì)不需要做中斷向量重映射,減少了軟件的復(fù)雜度,方便用戶使用。

3.8 時(shí)序參數(shù)隨頻率變化

    Flash器件要在系統(tǒng)中正常工作,讀寫(xiě)擦除的時(shí)序參數(shù)要滿足器件要求。而Flash控制器根據(jù)系統(tǒng)的要求,必須能在多種頻率下進(jìn)行正常讀寫(xiě)和擦除,這些時(shí)序參數(shù)值是內(nèi)部若干個(gè)counter計(jì)數(shù)器根據(jù)頻率產(chǎn)生的。如果在每個(gè)特定頻率下,用軟件進(jìn)行一一重新配置所有的時(shí)序參數(shù)是比較繁瑣的。

    本控制器將時(shí)序參數(shù)分為了兩類考慮,做了如下設(shè)計(jì):

    (1)讀時(shí)序參數(shù)

    Flash讀操作的各時(shí)序參數(shù)設(shè)計(jì)上已經(jīng)給出默認(rèn)值,能保證系統(tǒng)啟動(dòng)正常工作。需要考慮的主要參數(shù)是tAA,表示AE有效到dout數(shù)據(jù)有效的選通時(shí)間,F(xiàn)lash器件要求必須大于35 ns。本控制器設(shè)計(jì)了讀延遲參數(shù)值read_latency_cnt,根據(jù)不同頻率可以配置不同值以滿足要求并得到最快訪問(wèn)速度。比如在Flash控制器工作時(shí)鐘為100 MHz時(shí),周期為10 ns,為滿足大于35 ns的時(shí)間,read_latency_cnt最小值需要配置為4。讀時(shí)序參數(shù)如表2所示。

wdz3-b2.gif

    (2)擦寫(xiě)時(shí)序參數(shù)

    擦寫(xiě)時(shí)序各時(shí)序參數(shù)值設(shè)計(jì)上已經(jīng)給出默認(rèn)值,能保證系統(tǒng)啟動(dòng)正常工作。當(dāng)系統(tǒng)工作頻率變化時(shí),擦寫(xiě)的各時(shí)序參數(shù)值也要滿足器件要求。

    本控制器設(shè)計(jì)了工作頻率寄存器T1US_REF,含義是1 μs需要多少個(gè)時(shí)鐘周期,如果為60 MHz,則配置該寄存器為60,如果為100 MHz,則配置該寄存器為100。內(nèi)部的微秒級(jí)的各時(shí)序參數(shù)會(huì)自動(dòng)以該寄存器為基準(zhǔn)同步變化,這樣就減少了軟件根據(jù)不同頻率頻繁修改多個(gè)時(shí)序參數(shù)寄存器的復(fù)雜度。擦寫(xiě)時(shí)序參數(shù)如表3所示。

wdz3-b3.gif

4 結(jié)論

    本文給出了基于ARM cortex m4 SoC架構(gòu)下兩片UMC55 nm Flash macro IP拼接工作的NOR Flash控制器的設(shè)計(jì),介紹了NOR Flash的讀、寫(xiě)、擦各種時(shí)序的設(shè)計(jì)流程。

    本控制器的特點(diǎn)如下:

    (1)利用AMBA AHB hready信號(hào)為低時(shí)數(shù)據(jù)相位擴(kuò)展的原理,支持Flash在線編程,執(zhí)行過(guò)程中支持Flash讀操作。

    (2)在IAP程序跳轉(zhuǎn)USER APP程序時(shí)不需要中斷向量表重定向,直接硬件地址映射實(shí)現(xiàn)。

    (3)通過(guò)設(shè)定1 μs工作頻率配置寄存器,硬件自動(dòng)計(jì)算滿足不同頻率下的正常擦寫(xiě)時(shí)序參數(shù),減少了軟件逐個(gè)配置多個(gè)時(shí)序參數(shù)的復(fù)雜度。

    含有該Flash控制器的MCU主控芯片已經(jīng)通過(guò)仿真和FPGA驗(yàn)證,且在UMC55 nm工藝上流片成功,芯片樣品經(jīng)過(guò)測(cè)試,F(xiàn)lash控制器功能良好,方便使用。

參考文獻(xiàn)

[1] 謝同同,李天陽(yáng).一種嵌入式NOR Flash 控制器IP的設(shè)計(jì)[J].電子與封裝,2016(7):18-21,43.

[2] 田鵬,聶澤東,張正平,等.一種兼容AHB總線的Nor Flash控制器IP設(shè)計(jì)[J].微電子學(xué)與計(jì)算機(jī),2013(6):88-91,96.

[3] 周芝梅,趙東艷,張海峰,等.基于IR46標(biāo)準(zhǔn)的雙芯電能表主控關(guān)鍵技術(shù)研究[J].電子技術(shù)應(yīng)用,2017,43(10):7-11,19.

[4] 蔣勁松,黃凱,陳辰,等.基于預(yù)取和緩存原理的片上Flash加速控制器設(shè)計(jì)[J].計(jì)算機(jī)工程與科學(xué),2016(12):2381-2391.

[5] ARM.AMBA Specification(Rev 2.0)[Z].1999.



作者信息:

徐立國(guó)1,2,李德建1,2,于寶東1,2,楊立新1,2,王小曼1,2

(1.北京智芯微電子科技有限公司 國(guó)家電網(wǎng)公司重點(diǎn)實(shí)驗(yàn)室 電力芯片設(shè)計(jì)分析實(shí)驗(yàn)室,北京100192;

2.北京智芯微電子科技有限公司 北京市電力高可靠性集成電路設(shè)計(jì)工程技術(shù)研究中心,北京100192)

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。