解同同,李天陽(yáng)(.江南大學(xué)物聯(lián)網(wǎng)工程學(xué)院,江蘇無(wú)錫4;.中國(guó)電子科技集團(tuán)公司第58研究所,江蘇無(wú)錫4035)
?
一種嵌入式NOR Flash控制器IP的設(shè)計(jì)
解同同1,李天陽(yáng)2
(1.江南大學(xué)物聯(lián)網(wǎng)工程學(xué)院,江蘇無(wú)錫214122;2.中國(guó)電子科技集團(tuán)公司第58研究所,江蘇無(wú)錫214035)
當(dāng)前,嵌入式Flash廣泛應(yīng)用于嵌入式系統(tǒng)領(lǐng)域,便于系統(tǒng)進(jìn)行軟件在線更新和系統(tǒng)維護(hù)。嵌入式NOR Flash可以"嵌入"在芯片中作為高速緩存,對(duì)于提升芯片整體性能作用明顯。傳統(tǒng)的嵌入式NOR Flash不具備測(cè)試接口,在芯片出現(xiàn)工作異常時(shí)不便于對(duì)整個(gè)芯片進(jìn)行故障診斷。設(shè)計(jì)并實(shí)現(xiàn)了一種具有片上可測(cè)試功能的嵌入式NOR Flash控制器IP??刂破髦饕譃榭刂颇K與測(cè)試模塊兩個(gè)部分,分別對(duì)兩個(gè)模塊進(jìn)行分析設(shè)計(jì)。經(jīng)過(guò)仿真驗(yàn)證,控制器可以實(shí)現(xiàn)對(duì)NOR Flash的正常操作與片外測(cè)試功能,達(dá)到了設(shè)計(jì)目標(biāo)。
NOR Flash;IP核;存儲(chǔ)器控制器;可測(cè)試性
在嵌入式系統(tǒng)中,NOR Flash通常用于存放直接執(zhí)行的代碼。NOR Flash具有高可靠性、隨機(jī)讀取速度快和片內(nèi)執(zhí)行等優(yōu)勢(shì),因而在嵌入式系統(tǒng)中得到廣泛應(yīng)用[1]。高性能嵌入式芯片中的寄存器、一級(jí)高速緩存和二級(jí)高速緩存使用的都是嵌入式存儲(chǔ)器[2],嵌入式存儲(chǔ)器的優(yōu)劣對(duì)嵌入式系統(tǒng)的影響越來(lái)越大,因此設(shè)計(jì)一款專用的NORFlash存儲(chǔ)器控制器具有重要意義。
許多NOR Flash在設(shè)計(jì)完成后,無(wú)法從片外對(duì)其進(jìn)行測(cè)試,一旦嵌入式芯片出現(xiàn)工作異常的情況,很難對(duì)NOR Flash進(jìn)行失效分析[3]。本文設(shè)計(jì)的NOR Flash控制器,除了具有保證存儲(chǔ)器與內(nèi)核正常連接的控制功能外,還具有測(cè)試接口,可以從片外對(duì)存儲(chǔ)器進(jìn)行測(cè)試,增強(qiáng)了NOR Flash的可測(cè)試性。
本文的 NOR Flash IP選用 SFD16KX64M16 P8I20A,這是一款采用TSMC的0.18 μm工藝技術(shù)制造的CMOS頁(yè)擦除雙字可編程嵌入式存儲(chǔ)器。其接口信號(hào)如表1所示。IFREN為高電平時(shí)選擇信息塊,低電平時(shí)選擇存儲(chǔ)塊。SE置為高電平時(shí)可進(jìn)行讀操作。NVSTR置為高電平時(shí)可進(jìn)行擦寫操作。TMR、TM、VPP用于對(duì)Flash的測(cè)試。
表1 Flash IP接口信號(hào)
NOR Flash的讀、寫和擦除操作需要滿足一定的時(shí)序要求。寫操作時(shí)序如圖1所示。首先將PROG置為1,滿足NVSTR的建立時(shí)間后將NVSTR置為1,經(jīng)過(guò)編程建立時(shí)間,信號(hào)穩(wěn)定后進(jìn)行寫操作。寫操作時(shí),XE、YE置為1。寫操作結(jié)束時(shí),信號(hào)PROG在編程保持時(shí)間后置為0,在滿足NVSTR的保持時(shí)間后將NVSTR置0。
讀操作時(shí)序如圖2所示。讀取數(shù)據(jù)時(shí)需將XE、YE、SE置1,等待行地址獲取時(shí)間Txa和列地址獲取時(shí)間Tya后讀取數(shù)據(jù)。
擦除操作時(shí)序如圖3所示。先將XE、ERASE置為1,滿足NVSTR的建立時(shí)間后將NVSTR置為1。擦除結(jié)束時(shí),將ERASE置為0,滿足NVSTR的保持時(shí)間后將NVSTR置為0。
3.1總體設(shè)計(jì)
如圖4所示,NOR Flash控制器主要包括控制模塊和測(cè)試模塊兩部分,分別對(duì)應(yīng)正常模式和測(cè)試模式兩種工作模式。它們通過(guò)選通模塊與NOR Flash相連接,正常模式下,內(nèi)核通過(guò)控制模塊實(shí)現(xiàn)對(duì)NOR Flash的操作。需要片外對(duì)NOR Flash進(jìn)行訪問(wèn)時(shí),通過(guò)Test Mode Switch切換到測(cè)試模式,能夠通過(guò)Test Pads完成對(duì)NOR Flash的操作。在測(cè)試模式結(jié)束后,切換回正常模式,使NOR Flash回歸正常工作。
圖4 NOR Flash控制器結(jié)構(gòu)框圖
3.2控制電路設(shè)計(jì)
控制模塊被設(shè)計(jì)成基于EBI(外部總線接口)的從設(shè)備模塊,控制電路作為一個(gè)符合系統(tǒng)總線標(biāo)準(zhǔn)的從設(shè)備模塊掛在系統(tǒng)總線上以供其他主設(shè)備訪問(wèn)[4]。其結(jié)構(gòu)如圖5所示,整個(gè)控制電路主要分為接口模塊和主控模塊兩大部分??偩€信號(hào)包括時(shí)鐘、復(fù)位、讀寫控制、寫數(shù)據(jù)總線、讀數(shù)據(jù)總線、地址總線。其中數(shù)據(jù)總線的位寬為16位,地址總線的位寬為15位。
圖5 控制電路的結(jié)構(gòu)框圖
接口模塊負(fù)責(zé)將EBI總線上其他主設(shè)備發(fā)出的數(shù)據(jù)和控制信號(hào)進(jìn)行處理,將其轉(zhuǎn)換成主控模塊可以識(shí)別的格式并發(fā)送給主控模塊,同時(shí)對(duì)主控模塊傳達(dá)的數(shù)據(jù)信號(hào)進(jìn)行處理,將其轉(zhuǎn)換成與總線標(biāo)準(zhǔn)相符合的形式后發(fā)送給系統(tǒng)中的主設(shè)備。接口模塊方便了總線上的其他主設(shè)備對(duì)NOR Flash控制電路進(jìn)行訪問(wèn)。
主控模塊是整個(gè)NOR Flash控制電路的核心部分,控制電路對(duì)NOR Flash的各種操作都是通過(guò)主控邏輯部分來(lái)實(shí)現(xiàn)的[5]。主控模塊包括數(shù)據(jù)buffer、寄存器堆和控制邏輯三個(gè)部分,其中數(shù)據(jù)buffer用來(lái)緩存控制邏輯和位寬轉(zhuǎn)換邏輯產(chǎn)生的數(shù)據(jù),寄存器堆用于接口模塊與主控模塊之間地址命令配置信號(hào)的過(guò)渡,寄存地址、命令以及配置等信號(hào)??刂七壿媽?duì)各個(gè)寄存器中的數(shù)據(jù)進(jìn)行讀取處理,以產(chǎn)生輸出到NOR Flash的控制信號(hào)。主控模塊實(shí)現(xiàn)了總線上其他主設(shè)備對(duì)NOR Flash進(jìn)行訪問(wèn)操作。
如表2所示,控制電路中狀態(tài)/控制寄存器主要包括FLASH_CONFIG寄存器、ERASE_STARTUP寄存器、ERASE寄存器和FLASH_STATUS寄存器。FLASH_CONFIG寄存器用于配置FLASH的基本操作,包含寫模塊控制、時(shí)鐘頻率選擇與讀寫保護(hù);ERASE_STARTUP寄存器用于控制擦除操作的啟動(dòng),F(xiàn)LASH在該寄存器被寫入特定的數(shù)據(jù)后啟動(dòng)擦除操作,然后再根據(jù)ERASE寄存器中的內(nèi)容來(lái)執(zhí)行具體的擦除操作;ERASE寄存器用于選擇擦除的模式和區(qū)域;FLASH_STATUS寄存器用來(lái)對(duì)FLASH的讀取、編程、擦除和待機(jī)四種狀態(tài)進(jìn)行標(biāo)志,單個(gè)操作完成后要等待FLASH處于待機(jī)狀態(tài)后才能繼續(xù)進(jìn)行下一個(gè)操作。
表2 FLASH控制電路內(nèi)部寄存器描述
3.3測(cè)試電路設(shè)計(jì)
圖6 測(cè)試電路結(jié)構(gòu)框圖
測(cè)試控制的具體結(jié)構(gòu)如圖6所示,測(cè)試電路由主控邏輯、寄存器堆和地址數(shù)據(jù)轉(zhuǎn)換模塊組成。主控邏輯作為整個(gè)測(cè)試電路的主控部分,主要功能是產(chǎn)生各種控制、地址與數(shù)據(jù)信號(hào),實(shí)現(xiàn)測(cè)試端口對(duì)NOR Flash的控制,并將NOR Flash輸出的數(shù)據(jù)通過(guò)測(cè)試Pads正確讀取出來(lái)。3位SEL信號(hào)就是通過(guò)主控邏輯來(lái)對(duì)8位的地址/數(shù)據(jù)/控制復(fù)用總線進(jìn)行控制。
寄存器堆的主要功能是對(duì)控制邏輯以及NOR Flash的數(shù)據(jù)、地址和控制信號(hào)進(jìn)行緩存。設(shè)置Data-in Register、Address Register、Control Signal Register和Extra Test Register四個(gè)8位寄存器來(lái)緩存數(shù)據(jù)。
地址數(shù)據(jù)轉(zhuǎn)換模塊的主要功能是實(shí)現(xiàn)地址與數(shù)據(jù)線的位寬轉(zhuǎn)換。測(cè)試端地址/數(shù)據(jù)/控制復(fù)用總線的位寬為8位。本設(shè)計(jì)采用的NORFlashIP的地址線為14位(行地址線10位、列地址線4位),數(shù)據(jù)線為64位[6]。NOR Flash進(jìn)行片外操作所需信號(hào)由測(cè)試端的8位復(fù)用總線提供。所以該模塊的作用就是將8位復(fù)用總線的地址和數(shù)據(jù)信號(hào)轉(zhuǎn)換成與NOR Flash相匹配的位寬。
地址數(shù)據(jù)轉(zhuǎn)換的原理是:8位復(fù)用總線進(jìn)行兩次地址輸入組成一個(gè)16位地址信號(hào)(對(duì)應(yīng)FLASH的10位行地址、4位列地址、2位數(shù)據(jù)選擇信號(hào))。由于Flash IP每次只允許對(duì)64位數(shù)據(jù)中的16位進(jìn)行讀寫,所以一次完整的讀寫操作要對(duì)NOR Flash中的某一地址進(jìn)行4次操作。數(shù)據(jù)轉(zhuǎn)換設(shè)計(jì)實(shí)現(xiàn)如圖7所示,當(dāng)SEL[2:0]信號(hào)選擇010和011時(shí),8位復(fù)用總線分別輸入Din[15:8]和Din[7:0],將兩次8位輸入數(shù)據(jù)組合成16位數(shù)據(jù)XXXX。寫操作時(shí),通過(guò)bit_sel[1:0]選擇64位數(shù)據(jù)中的16位,其余48位置1得到64位數(shù)據(jù)寫入,進(jìn)行4次這樣的操作以實(shí)現(xiàn)一次完整的寫入。同樣,讀操作時(shí)也要進(jìn)行4次操作,通過(guò)bit_sel[1:0]選擇要讀取的16位,最后分成兩次通過(guò)8位復(fù)用總線讀出。
圖7 數(shù)據(jù)轉(zhuǎn)換實(shí)現(xiàn)示意圖
本設(shè)計(jì)采用Verilog HDL實(shí)現(xiàn),用Candence公司的NCsim進(jìn)行仿真。
4.1內(nèi)核對(duì)FLASH操作的仿真驗(yàn)證
Flash的寫入操作是將存儲(chǔ)單元相應(yīng)位上的數(shù)據(jù)由“1”寫為“0”,擦除操作是將“0”寫為1。如圖8所示,先通過(guò)寄存器配置,對(duì)NOR Flash進(jìn)行擦除,擦除后讀取00AA地址的數(shù)據(jù),結(jié)果為FFFFFFFF,表示擦除操作實(shí)現(xiàn)。
圖8 內(nèi)核對(duì)Flash的擦除與讀操作
系統(tǒng)數(shù)據(jù)總線位寬為32位,而NOR Flash存儲(chǔ)器的位寬為64位,對(duì)NOR Flash中某一地址要進(jìn)行寫操作時(shí),先寫低32位,再寫高32位。如圖9所示,寫操作時(shí),將寫模式設(shè)置為按字寫入模式,向地址00AA依次寫入FFFF1234與1234FFFF兩個(gè)32位數(shù)據(jù),輸入給NOR Flash的DIN端口。讀操作時(shí),按字讀出00AA地址對(duì)應(yīng)的數(shù)據(jù),依次讀出的低32位和高32位分別為FFFF1234與1234FFFF,與寫入數(shù)據(jù)相符,表示讀寫操作實(shí)現(xiàn)。
4.2FLASH測(cè)試電路仿真驗(yàn)證
圖 10為測(cè)試 Pads對(duì) Flash的寫操作,控制PADS_IN總線輸入位選擇信號(hào),將4個(gè)16位數(shù)據(jù)(0000、0001、0002、0003)組成一個(gè) 64位數(shù)據(jù)寫入NOR Flash的0000地址中。
圖11為測(cè)試Pads對(duì)Flash的讀操作,先后對(duì)0000地址進(jìn)行4次讀操作,讀出的64位數(shù)據(jù)為0003_0002_0001_0000,與寫入的數(shù)據(jù)相符,表示測(cè)試電路的讀寫操作實(shí)現(xiàn)。
圖9 內(nèi)核對(duì)Flash的讀寫操作
圖10 測(cè)試Pads對(duì)Flash的寫操作
圖11 測(cè)試Pads對(duì)Flash的讀操作
本文設(shè)計(jì)了一款基于嵌入式系統(tǒng)的NOR Flash存儲(chǔ)器控制器IP,在常規(guī)嵌入式NOR Flash控制器設(shè)計(jì)的基礎(chǔ)上增加了NOR Flash測(cè)試電路的設(shè)計(jì),實(shí)現(xiàn)了對(duì)NOR Flash存儲(chǔ)器的讀寫控制和片外可測(cè)試功能。通過(guò)仿真驗(yàn)證,控制邏輯實(shí)現(xiàn)了對(duì)NOR Flash的讀寫和擦除操作,滿足時(shí)序要求。測(cè)試接口實(shí)現(xiàn)了片外對(duì)NOR Flash的直接存儲(chǔ)操作,可用來(lái)進(jìn)行獨(dú)立的NOR Flash測(cè)試。
[1]Ashok K Sharma.先進(jìn)半導(dǎo)體存儲(chǔ)器——結(jié)構(gòu)、設(shè)計(jì)與應(yīng)用[M].曾瑩,等譯.北京:電子工業(yè)出版社,2005.1.
[2]潘立陽(yáng),朱鈞.Flash存儲(chǔ)器技術(shù)與發(fā)展[J].微電子學(xué),2002,32(1):1-6.
[3]張鑰,萬(wàn)培元,林平分.集成電路可測(cè)性設(shè)計(jì)IO復(fù)用方法[J].半導(dǎo)體技術(shù),2011,36(9):705-709.
[4]王力緯.多端口存儲(chǔ)器控制器IP核的設(shè)計(jì)與實(shí)現(xiàn)[J].武漢大學(xué)學(xué)報(bào):理學(xué)版,2007(5):617-621.
[5]鮑勝榮,吳旭凡,鐘銳.一款嵌入式芯片總線仲裁器的設(shè)計(jì)和評(píng)估[J].電子工程師,2005,31(1):19-22.
[6]高參,張永學(xué).多模衛(wèi)星導(dǎo)航芯片的可測(cè)性設(shè)計(jì)[J].微電子學(xué),2012,42(6):778-781.
Design of an Embedded NOR Flash Controller IP
XIE Tongtong1,LI Tianyang2
(1.College of Internet of Thing,Jiangnan University,Wuxi 214122,China;2.China Electronics Technology Group Corporation No.58 Research Institute,Wuxi 214035,China)
At present,embedded Flash is widely used in embedded systems to facilitate system maintenance and online update.NOR Flash embedded in chips serves as a cache to enhance the overall performance of the chips.Lack of test interface in traditional embedded NOR Flashes may cause inconvenience in diagnosis upon failure.The paper designs and develops an on-chip testable embedded NOR Flash IP.The controller consists of two parts:control module and test module.The two modules are independently analyzed and designed.The simulation results show that the controller achieves normal operation and on-chip testable.
NOR Flash;IP core;memory controller;testability
TN402
A
1681-1070(2016)07-0018-04
2016-3-15
解同同(1988—),男,江蘇徐州人,碩士研究生,研究方向?yàn)榧呻娐吩O(shè)計(jì)。