錢勁宇,強(qiáng)小燕,屈凌翔
(中國(guó)電子科技集團(tuán)公司第五十八研究所,江蘇 無錫 214072)
隨著信息技術(shù)的飛速發(fā)展,用戶對(duì)數(shù)據(jù)存儲(chǔ)系統(tǒng)的容量、功耗、速度等要求也越來越嚴(yán)格[1-2]。Flash 存儲(chǔ)器相對(duì)傳統(tǒng)的存儲(chǔ)器件RAM 而言,具有集成度高、體積小、成本低等優(yōu)點(diǎn)[3-4],因而隨著集成電路的規(guī)模越來越大,F(xiàn)lash 存儲(chǔ)器飛速發(fā)展,逐漸成為系統(tǒng)芯片主流的容量存儲(chǔ)媒體[5]。
目前Flash 存儲(chǔ)器在完成設(shè)計(jì)后,通常將串行標(biāo)準(zhǔn)接口作為測(cè)試接口進(jìn)行擦寫測(cè)試,而串行時(shí)鐘頻率比較低,傳輸數(shù)據(jù)慢,測(cè)試效率低。另一方面,F(xiàn)lash 存儲(chǔ)器的測(cè)試往往存在著擦除、編程數(shù)據(jù)比較慢的問題,這對(duì)存在多塊Flash 的芯片產(chǎn)生了巨大的測(cè)試量,需要進(jìn)行大量重復(fù)的測(cè)試,導(dǎo)致需要的測(cè)試時(shí)間較長(zhǎng)[6-7],因此,如何提高測(cè)試效率,簡(jiǎn)化測(cè)試流程,在Flash 測(cè)試中顯得尤為重要。
本文對(duì)片上Flash 存儲(chǔ)器增加了測(cè)試接口,設(shè)計(jì)了片外測(cè)試通道,實(shí)現(xiàn)了片上嵌入式Flash 的可測(cè)試性。為了提高測(cè)試速度,降低測(cè)試成本,一方面,設(shè)計(jì)了基于1/2/4/8 線多線傳輸?shù)腟PI 測(cè)試接口,在兼容串行傳輸數(shù)據(jù)的同時(shí)支持并行傳輸數(shù)據(jù),另一方面,在確保穩(wěn)定性的情況下,實(shí)現(xiàn)了靈活選定1/2/3 塊Flash 存儲(chǔ)器并行擦寫測(cè)試的設(shè)計(jì)。
Flash 存儲(chǔ)器的總體設(shè)計(jì)主要由Flash 控制器模塊和Flash 測(cè)試器模塊兩部分組成,如圖1 所示,正常工作模式時(shí)由Flash 控制器模塊控制,實(shí)現(xiàn)Flash 與內(nèi)核之間的交互,測(cè)試模式時(shí)由Flash 測(cè)試器模塊控制,通過外部測(cè)試引腳來實(shí)現(xiàn)對(duì)Flash 的編程、讀取和擦除操作。Flash控制器模塊和Flash 測(cè)試器模塊通過選通模塊來實(shí)現(xiàn)對(duì)9 塊Flash 的控制,選通信號(hào)可以通過內(nèi)部寄存器配置來進(jìn)行模式切換。
本文選用的Flash 是一款CMOS 頁擦除、附帶ECC校驗(yàn)的字編程嵌入式存儲(chǔ)器,數(shù)據(jù)輸入總線位寬為36 bit,數(shù)據(jù)輸出總線位寬為144 bit,地址總線位寬為15 bit。內(nèi)部存儲(chǔ)空間可以分為存儲(chǔ)塊和信息塊兩部分,其中存儲(chǔ)塊的空間為32 K×144 bit,512頁,每頁容量為1 KB,信息塊的空間為64×144 bit,8頁,每頁容量為1 KB。Flash IP的接口信號(hào)如表1 所示。
表1 Flash 接口信號(hào)
在進(jìn)行編程、讀取和擦除操作期間時(shí),CS 都必須保持為1,若CS 變?yōu)?,則忽略其余所有控制信號(hào)和地址信號(hào)。Flash IP 在進(jìn)行讀取、編程以及擦除時(shí)接口信號(hào)都必須滿足相應(yīng)的時(shí)序要求,測(cè)試Flash IP 的讀取操作的時(shí)序圖如圖2 所示,其中IFREN 為1 時(shí)選定信息塊,為0時(shí)選定存儲(chǔ) 塊。首先將CS置為1,ADDR 和IFREN 在AE 上升沿到來前后都需要保持相應(yīng)的建立時(shí)間tAS 和保持時(shí)間tAH,在AE 置為1后,等待tAC后,數(shù)據(jù)輸出總線DOUT 將相應(yīng)地址的數(shù)據(jù)輸出。在讀操作期間時(shí),PROG、SERA、MASE、NVSTR 將保持為0 直到操作完成。
測(cè)試Flash IP 的編程操作的時(shí)序圖如圖3 所示,其中AP 為2'b11 時(shí)DIN[35:0]對(duì)應(yīng)于編程位[143:108],AP 為2'b10 時(shí)DIN[35:0]對(duì)應(yīng)于編程位[107:72],AP 為2'b01 時(shí)DIN[35:0]對(duì)應(yīng)于編程位[71:36],AP 為2'b00 時(shí)DIN[35:0]對(duì)應(yīng)于編程位[35:0]。進(jìn)行編程操作時(shí),AE 類似于時(shí)鐘信號(hào),IFREN、ADDR、AP、PROG、DIN、CS 在AE的上升沿到來前后都需要保持相應(yīng)的建立時(shí)間和保持時(shí)間。在AE 置為1后,等待tNVSTR后,NVSTR 置為1,tPROG 為編程時(shí)間,編程結(jié)束后,NVSTR 置0,等待tCSLW后,CS 置0。在編程操作期間,SERA、MASE 將保持為0直到編程操作結(jié)束。
測(cè)試Flash IP 的擦除操作的時(shí)序圖如圖4 和圖5 所示,F(xiàn)lash IP 被分成512 頁的相同的1 KB 空間,擦除方式有頁擦除和全擦除2 種方式,頁擦除可以對(duì)任何單獨(dú)一頁進(jìn)行擦除,全擦除直接對(duì)整塊Flash 進(jìn)行擦除,其中SERA 為頁擦除使能信號(hào),MASE 為全擦除使能信號(hào),兩種擦除方式不能同時(shí)觸發(fā),同一時(shí)間僅一種擦除使能信號(hào)置位,NVSTR 根據(jù)擦除方式保持相應(yīng)的擦除時(shí)間。
Flash 測(cè)試器的結(jié)構(gòu)如圖6 所示,可以將其分為3 個(gè)模塊:轉(zhuǎn)換模塊、控制模塊和選通模塊。轉(zhuǎn)換模塊連接外部SPI 接口選擇1/2/4/8 線進(jìn)行傳輸,提取出指令、數(shù)據(jù)和地址,進(jìn)行相應(yīng)的轉(zhuǎn)換,控制模塊根據(jù)測(cè)試指令,輸入滿足Flash IP 操作時(shí)序的控制信號(hào),選通模塊根據(jù)片選指令,來選擇1/2/3 塊Flash 進(jìn)行測(cè)試。在編程指令時(shí),由于Flash IP 的數(shù)據(jù)輸入總線位寬為36 bit,因此先要將SPI 傳輸?shù)臄?shù)據(jù)轉(zhuǎn)換為36 bit 數(shù)據(jù)暫存在寫數(shù)據(jù)FIFO中,再依次等待控制模塊輸入對(duì)應(yīng)的編程操作的控制信號(hào)時(shí),傳入對(duì)應(yīng)的Flash IP 數(shù)據(jù)輸入總線DIN 中。讀取指令時(shí),控制模塊先執(zhí)行讀取操作將數(shù)據(jù)輸出總線DOUT的數(shù)據(jù)讀出,暫存在位寬為144 bit 的讀數(shù)據(jù)FIFO中,通過轉(zhuǎn)換模塊將144 bit 數(shù)據(jù)轉(zhuǎn)換為1/2/4/8 bit 數(shù)據(jù),等待SPI 工作時(shí)傳輸?shù)狡獗容^器中。
Flash 測(cè)試器模塊的具體操作流程如圖7 所示。首先通過內(nèi)部控制信號(hào)進(jìn)入測(cè)試模式,在進(jìn)入測(cè)試模式后,通過配置SPI 可以實(shí)現(xiàn)1/2/4/8 線數(shù)據(jù)傳輸,SPI 接口持續(xù)輸入測(cè)試序列,來確定對(duì)Flash 測(cè)試器的操作。其次經(jīng)SPI 接口輸入片選指令,來選定需要進(jìn)行操作的Flash IP,可以靈活選定1/2/3 塊Flash。選定Flash后,再輸入操作指令,來控制對(duì)Flash 進(jìn)行編程操作、讀取操作或者擦除操作。如果是編程操作,會(huì)繼續(xù)等待SPI 接口輸入編程地址以及操作編程個(gè)數(shù),連續(xù)輸入編程數(shù)據(jù)至對(duì)應(yīng)的Flash IP,直到編程個(gè)數(shù)為0后,此次編程測(cè)試結(jié)束。如果是讀取操作,則繼續(xù)等待輸入讀取地址以及操作讀取個(gè)數(shù),隨后讀取對(duì)應(yīng)地址的數(shù)據(jù)至片外比較器進(jìn)行校驗(yàn),讀取個(gè)數(shù)為0后,此次讀取測(cè)試結(jié)束。如果是擦除操作,則輸入擦除地址后直接進(jìn)行擦除操作。待操作結(jié)束后,則可以輸入下一次測(cè)試指令繼續(xù)進(jìn)行測(cè)試。
在Linux 平臺(tái)上利用NCverilog 對(duì)Flash 存儲(chǔ)器測(cè)試接口設(shè)計(jì)進(jìn)行仿真。Flash 存儲(chǔ)器的編程操作只能把數(shù)據(jù)位從1 變0,而不能將數(shù)據(jù)位從0 轉(zhuǎn)換為1,只有擦除操作可以實(shí)現(xiàn)數(shù)據(jù)位從0 到1 的轉(zhuǎn)換[8],因此為了仿真測(cè)試的正確性,在編程和讀取操作前,首先應(yīng)該對(duì)Flash進(jìn)行一次全擦除操作。圖8 所示是對(duì)Flash1、Flash2 進(jìn)行的串行仿真測(cè)試,首先依次對(duì)Flash1、Flash2 進(jìn)行一次全擦除操作,然后再通過SPI 分別向Flash1、Flash2 輸入一個(gè)144 bit 數(shù)據(jù),由于數(shù)據(jù)輸入總線DIN 位寬為36 bit,因此需要4 次編程操作,通過地址映射控制信號(hào)AP 來寫入0 地址的144 bit中,隨后再讀取0 地址的數(shù)據(jù),讀出的數(shù)據(jù)與寫入的數(shù)據(jù)相符。
為了加快測(cè)試速度,可以將上述串行測(cè)試轉(zhuǎn)換為并行測(cè)試,如圖9 所示,對(duì)Flash1、Flash2 同時(shí)進(jìn)行擦除操作和編程操作,然后依次讀取對(duì)應(yīng)地址的數(shù)據(jù),可以發(fā)現(xiàn),與單獨(dú)操作Flash 相比,簡(jiǎn)化了整體操作流程。由仿真測(cè)出,進(jìn)入測(cè)試模式后編程一片F(xiàn)lash 全空間的時(shí)間在3.2 s 左右,則串行編程9 片F(xiàn)lash 的時(shí)間大概在28.8 s,若每次并行測(cè)試3 片F(xiàn)lash,則只需要9.6 s 左右即可完成,由此可見,并行測(cè)試大大降低了測(cè)試成本,提高了測(cè)試效率。
本文設(shè)計(jì)并實(shí)現(xiàn)了一種片上嵌入式Flash 存儲(chǔ)器的測(cè)試接口,測(cè)試接口能夠在外部操作指令的控制下實(shí)現(xiàn)對(duì)Flash 存儲(chǔ)器的編程、讀取和擦除操作,實(shí)現(xiàn)了Flash存儲(chǔ)器的可測(cè)試性,并進(jìn)一步實(shí)現(xiàn)了基于多線SPI 的測(cè)試接口以及Flash 存儲(chǔ)器并行測(cè)試的設(shè)計(jì),有效提高了Flash 存儲(chǔ)器的測(cè)試速度,降低了測(cè)試成本。通過仿真驗(yàn)證,實(shí)現(xiàn)了測(cè)試功能的要求,并成功應(yīng)用于一款32 位浮點(diǎn)微處理器中。