專利名稱:用于系統(tǒng)芯片集成的通用非易失性存儲(chǔ)器控制裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及屬于系統(tǒng)芯片(SoC)集成設(shè)計(jì)領(lǐng)域,具體涉及一種高兼容性的用于系統(tǒng)芯片集成的通用非易失性存儲(chǔ)器控制裝置。
背景技術(shù):
隨著集成電路制造水平的不斷提高,設(shè)計(jì)者可以在單芯片上集成幾百萬(wàn)門的復(fù)雜系統(tǒng),即片上系統(tǒng)(System-On-Chip)。近年來(lái),SoC已經(jīng)成為當(dāng)今集成電路設(shè)計(jì)的主流方向,為了滿足越來(lái)越多樣化的各種實(shí)際應(yīng)用的需求,作為存儲(chǔ)數(shù)據(jù)的重要器件,多種類型的非易失性存儲(chǔ)器(Non-Volatile-Memory)也在被逐步集成到SoC芯片內(nèi)部。這些非易失性存儲(chǔ)器包括OTP、EEPROM、FLASH等。不同類型的非易失性存儲(chǔ)器通常具有不同的控制信號(hào)和時(shí)序要求,因此,針對(duì)不同的非易失性存儲(chǔ)器,往往需要設(shè)計(jì)不同的存儲(chǔ)器控制器,以滿足對(duì)特定類型非易失性存儲(chǔ)器的控制。同時(shí),為了達(dá)到對(duì)該非易失性存儲(chǔ)器控制器真實(shí)仿真的目的,還需要額外設(shè)計(jì)非常有針對(duì)性的仿真控制器來(lái)實(shí)現(xiàn)仿真。很多情況下,同一系列的SoC芯片大部分組件幾乎完全相同,也許僅僅是其中的非易失性存儲(chǔ)器的容量或類型不同,但卻需要重新設(shè)計(jì)開(kāi)發(fā)不同的存儲(chǔ)器控制器以及相應(yīng)的仿真控制器來(lái)滿足要求。這個(gè)過(guò)程中,即花費(fèi)了大量的人力、物力和時(shí)間,同時(shí)也延誤了SoC芯片產(chǎn)品的推廣和軟件開(kāi)發(fā)的時(shí)間。
發(fā)明內(nèi)容
為了克服已有非易失性存儲(chǔ)器的兼容性較差、設(shè)計(jì)過(guò)程復(fù)雜的不足,本發(fā)明提供一種兼容性良好、簡(jiǎn)化設(shè)計(jì)過(guò)程的用于系統(tǒng)芯片集成的通用非易失性存儲(chǔ)器控制裝置。本發(fā)明解決其技術(shù)問(wèn)題所采用的技術(shù)方案是—種用于系統(tǒng)芯片集成的通用非易失性存儲(chǔ)器控制裝置,所述控制裝置包括外部總線接口單元、寄存器控制單元、擦寫單元以及存儲(chǔ)控制與接口單元,其中,外部總線接口單元,用于采集外部總線的控制信號(hào)及數(shù)據(jù),并進(jìn)行分析如果是訪問(wèn)控制寄存器,將總線信號(hào)傳入寄存器控制單元;如果是對(duì)非易失性存儲(chǔ)單元進(jìn)行讀操作,將總線信號(hào)傳給存儲(chǔ)控制與接口單元,實(shí)現(xiàn)對(duì)非易失性存儲(chǔ)單元的讀操作;如果是對(duì)非易失性存儲(chǔ)單元進(jìn)行寫操作,將總線信號(hào)傳給擦寫單元;寄存器控制單元,用于對(duì)所有寄存器進(jìn)行讀寫控制,所述所有寄存器包括OTP工作模式寄存器、EFLASH工作模式寄存器、EEPROM工作模式寄存器、OTP時(shí)序控制寄存器、EFLASH時(shí)序控制寄存器、EEPROM時(shí)序控制寄存器和虛擬時(shí)序模擬寄存器,寄存器數(shù)據(jù)將傳給存儲(chǔ)控制與接口單元,供存儲(chǔ)控制與接口單元的有限狀態(tài)機(jī)使用;擦寫單元,用于處理外部總線接口單元傳來(lái)的總線信號(hào);存儲(chǔ)控制與接口單元包含兩個(gè)有限狀態(tài)機(jī);一個(gè)是寫數(shù)據(jù)寬度轉(zhuǎn)換狀態(tài)機(jī),用于當(dāng)非易失性存儲(chǔ)器的數(shù)據(jù)寬度以及虛擬非易失性存儲(chǔ)器模擬的數(shù)據(jù)寬度為16位或8位時(shí),根據(jù)擦寫單元輸出的字節(jié)有效信息將擦寫單元輸出的32位寫數(shù)據(jù)拆分為多個(gè)16位或者8位數(shù)據(jù),并由主控狀態(tài)機(jī)控制依次傳給非易失性存儲(chǔ)器;另一個(gè)是主控狀態(tài)機(jī),用于對(duì)多種類型、多種數(shù)據(jù)寬度非易失性存儲(chǔ)器進(jìn)行讀、寫、擦控制,所述類型為EFLASH、0TP和EEPR0M,所述數(shù)據(jù)寬度為8位、16位、32位和64位,同時(shí)還通過(guò)2片支持字節(jié)訪問(wèn)的32位SRAM對(duì)多種類型、多種數(shù)據(jù)寬度非易失性存儲(chǔ)器的真實(shí)讀、寫、擦?xí)r序進(jìn)行模擬,成為虛擬非易失性存儲(chǔ)器控制器。進(jìn)一步,所述擦寫單元中,當(dāng)進(jìn)行正常的總線寫操作時(shí),擦寫單元將總線信號(hào)中的寫地址、寫數(shù)據(jù)、數(shù)據(jù)大小信息截取出來(lái)并進(jìn)行處理,產(chǎn)生本次總線寫操作所對(duì)應(yīng)的頁(yè)內(nèi)地址、字節(jié)有效信息(僅當(dāng)數(shù)據(jù)寬度為16位或8位時(shí)使用)以及本次頁(yè)寫操作(EEPROM頁(yè)寫操作時(shí),一次頁(yè)寫操作中可以執(zhí)行多次總線寫操作)的頁(yè)地址,同時(shí)對(duì)本次頁(yè)寫或連續(xù)寫操作的數(shù)據(jù)總量信息進(jìn)行累加;這些信息連同每次總線寫操作的寫數(shù)據(jù)一起暫存入FIFO和寄存器中,當(dāng)存儲(chǔ)控制與接口單元中的有限狀態(tài)機(jī)需要時(shí)輸出給存儲(chǔ)控制與接口單元。更進(jìn)一步,所述寄存器控制單元中,所述所有寄存器還包括狀態(tài)寄存器,用于反映當(dāng)前控制存儲(chǔ)控制與接口單元中主控狀態(tài)機(jī)的工作狀態(tài)。所述虛擬時(shí)序模擬寄存器包括讀時(shí)序模擬寄存器、寫時(shí)序模擬寄存器、頁(yè)擦?xí)r序模擬寄存器和全片擦?xí)r序模擬寄存器,當(dāng)做為虛擬非易失性存儲(chǔ)器控制器時(shí)可用于模擬非易失性存儲(chǔ)器的讀取延時(shí)、寫延時(shí)、頁(yè)擦延時(shí)以及全片擦延時(shí)。本發(fā)明的技術(shù)構(gòu)思為通過(guò)硬件配置,既可以支持對(duì)多種非易失性存儲(chǔ)器的讀、寫、擦控制,也可以通過(guò)SRAM實(shí)現(xiàn)對(duì)多種非易失性存儲(chǔ)器真實(shí)讀、寫、擦?xí)r序的模擬,成為虛擬非易失性存儲(chǔ)器控制器,用于目標(biāo)芯片的仿真以及測(cè)試芯片的評(píng)估。具體特征如下I)支持32位AHB總線接口,系統(tǒng)芯片集成時(shí)可以將多種非易失性存儲(chǔ)器連接到AHB總線上,從而通過(guò)外部總線對(duì)多種非易失性存儲(chǔ)器進(jìn)行訪問(wèn)和控制。通過(guò)硬件配置,支持的非易失性存儲(chǔ)器類型包括OTP、EFLASH以及EEPROM。2)當(dāng)控制OTP時(shí),支持讀以及連續(xù)寫功能,所謂連續(xù)寫是指在一次OTP的寫操作中可以寫入多個(gè)數(shù)據(jù)。3)當(dāng)控制EFLASH時(shí),支持讀、單數(shù)據(jù)寫、頁(yè)擦以及全片擦功能,所謂單數(shù)據(jù)寫是指在一次EFLASH的寫操作中寫入一個(gè)數(shù)據(jù),所謂頁(yè)擦是指一次性將EFLASH的一頁(yè)擦為全“ I ”,所謂全片擦是指一次性將全片EFLASH擦為全“ I ”。4)當(dāng)控制EEPROM時(shí),支持讀、頁(yè)寫以及全片擦功能。所謂頁(yè)寫是指在一次EEPROM的寫操作中可以寫入同一頁(yè)內(nèi)的多個(gè)數(shù)據(jù),所謂全片擦是指一次性將全片EEPROM擦為全“I”。5)通過(guò)硬件配置,支持多種數(shù)據(jù)寬度的非易失性存儲(chǔ)器,包括8位、16位、32位以及64位。6)通過(guò)硬件配置,除了支持對(duì)多種非易失性存儲(chǔ)器的讀、寫、擦控制,還可以通過(guò)兩片支持字節(jié)訪問(wèn)的32位SRAM實(shí)現(xiàn)對(duì)多種類型、多種數(shù)據(jù)寬度非易失性存儲(chǔ)器真實(shí)讀、寫、擦?xí)r序的模擬,成為虛擬非易失性存儲(chǔ)器控制器。當(dāng)作為虛擬非易失性存儲(chǔ)器控制器時(shí),可以根據(jù)外部數(shù)據(jù)寬度引腳的控制,無(wú)需更換SRAM便可實(shí)現(xiàn)對(duì)8位、16位、32位以及64位數(shù)據(jù)寬度的非易失性存儲(chǔ)器的模擬。7)當(dāng)存儲(chǔ)器數(shù)據(jù)寬度為8位時(shí)支持總線的字、半字、字節(jié)操作;當(dāng)存儲(chǔ)器數(shù)據(jù)寬度為16位時(shí)支持總線的字、半字操作;當(dāng)存儲(chǔ)器數(shù)據(jù)寬度為16位時(shí)支持總線的字操作;當(dāng)存儲(chǔ)器數(shù)據(jù)寬度為64位時(shí)支持總線的字讀操作,此時(shí)總線寫操作要求以一個(gè)雙字為單位寫入數(shù)據(jù)(由于外部總線為32位寬度,所以要求通過(guò)兩次總線寫操作寫入雙字中的兩個(gè)字);8)統(tǒng)一了外部總線對(duì)不同類型非易失性存儲(chǔ)器的編程方式,便于用戶軟件開(kāi)發(fā)。無(wú)論是作為OTP、EEPROM、EFLASH控制器,還是虛擬非易失性存儲(chǔ)器控制器,外部總線對(duì)非易失性存儲(chǔ)器的寫操作統(tǒng)一簡(jiǎn)化為三步首先對(duì)需要寫入的地址進(jìn)行正常的總線寫操作(如果是OTP或者EEPR0M,則可以在一次寫操作中通過(guò)多次總線寫操作寫入多個(gè)數(shù)據(jù));再配置工作模式寄存器發(fā)起寫請(qǐng)求;最后查詢寄存器控制單元中的狀態(tài)寄存器直到狀態(tài)空閑。本發(fā)明的有益效果主要表現(xiàn)在兼容性良好、簡(jiǎn)化設(shè)計(jì)過(guò)程。
圖1是非易失性存儲(chǔ)器控制器架構(gòu)。圖2是擦寫單元結(jié)構(gòu)(存儲(chǔ)器數(shù)據(jù)寬度為64位)。圖3是擦寫單元結(jié)構(gòu)(存儲(chǔ)器數(shù)據(jù)寬度為32位)。圖4是擦寫單元結(jié)構(gòu)(存儲(chǔ)器數(shù)據(jù)寬度為16位或8位)。圖5是虛擬非易失性存儲(chǔ)器控制器SRAM結(jié)構(gòu)(模擬數(shù)據(jù)寬度為64位)。圖6是虛擬非易失性存儲(chǔ)器控制器SRAM結(jié)構(gòu)(模擬數(shù)據(jù)寬度為16位或8位)。圖7是寫數(shù)據(jù)寬度轉(zhuǎn)換狀態(tài)機(jī)。圖8是主控狀態(tài)機(jī)。圖9是主控狀態(tài)機(jī)狀態(tài)轉(zhuǎn)換(控制OTP時(shí))。圖10是主控狀態(tài)機(jī)狀態(tài)轉(zhuǎn)換(控制EEPROM時(shí))。圖11是主控狀態(tài)機(jī)狀態(tài)轉(zhuǎn)換(控制EFLASH時(shí))。圖12是主控狀態(tài)機(jī)狀態(tài)轉(zhuǎn)換(作為虛擬非易失性存儲(chǔ)器控制器時(shí))。
具體實(shí)施例方式下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步描述。參照?qǐng)Df圖12,一種用于系統(tǒng)芯片集成的通用非易失性存儲(chǔ)器控制裝置,包含外部總線接口單元、寄存器控制單元、擦寫單元以及存儲(chǔ)控制與接口單元。通過(guò)這些單元的協(xié)同工作,實(shí)現(xiàn)對(duì)多種非易失性存儲(chǔ)器的兼容以及對(duì)多種非易失性存儲(chǔ)器的模擬外部總線接口單元負(fù)責(zé)采集外部總線的控制信號(hào)及數(shù)據(jù),并進(jìn)行分析如果是訪問(wèn)控制寄存器,將總線信號(hào)傳入寄存器控制單元;如果是對(duì)非易失性存儲(chǔ)單元進(jìn)行讀操作,將總線信號(hào)傳給存儲(chǔ)控制與接口單元,實(shí)現(xiàn)對(duì)非易失性存儲(chǔ)單元的讀操作;如果是對(duì)非易失性存儲(chǔ)單元進(jìn)行寫操作,將總線信號(hào)傳給擦寫單元。寄存器控制單元負(fù)責(zé)對(duì)該非易失性存儲(chǔ)器控制器的所有寄存器進(jìn)行讀寫控制,包括OTP工作模式寄存器、EFLASH工作模式寄存器、EEPROM工作模式寄存器、OTP時(shí)序控制寄存器、EFLASH時(shí)序控制寄存器、EEPROM時(shí)序控制寄存器、虛擬時(shí)序模擬寄存器(包括讀時(shí)序模擬寄存器、寫時(shí)序模擬寄存器、頁(yè)擦?xí)r序模擬寄存器以及全片擦?xí)r序模擬寄存器,用于模擬非易失性存儲(chǔ)器的讀取延時(shí)、寫延時(shí)、頁(yè)擦延時(shí)、全片擦延時(shí))等,這些寄存器數(shù)據(jù)將傳給存儲(chǔ)控制與接口單元,供存儲(chǔ)控制與接口單元的有限狀態(tài)機(jī)使用。此外,還包括狀態(tài)寄存器,用于反映當(dāng)前控制存儲(chǔ)控制與接口單元中主控狀態(tài)機(jī)的工作狀態(tài)。擦寫單元負(fù)責(zé)處理外部總線接口單元傳來(lái)總線信號(hào)。當(dāng)進(jìn)行正常的總線寫操作時(shí),擦寫單元將總線信號(hào)中的寫地址、寫數(shù)據(jù)、數(shù)據(jù)大小信息截取出來(lái)并進(jìn)行處理,產(chǎn)生本次總線寫操作所對(duì)應(yīng)的頁(yè)內(nèi)地址、字節(jié)有效信息(僅當(dāng)數(shù)據(jù)寬度為16位或8位時(shí)使用)以及本次頁(yè)寫操作(EEPROM頁(yè)寫操作時(shí),一次頁(yè)寫操作中可以執(zhí)行多次總線寫操作)的頁(yè)地址,同時(shí)對(duì)本次頁(yè)寫或連續(xù)寫操作的數(shù)據(jù)總量信息進(jìn)行累加;這些信息連同每次總線寫操作的寫數(shù)據(jù)一起暫存入FIFO和寄存器中,當(dāng)存儲(chǔ)控制與接口單元中的有限狀態(tài)機(jī)需要時(shí)輸出給存儲(chǔ)控制與接口單元。由于使用了 FIFO,用戶可在一次非易失性存儲(chǔ)器的寫操作中進(jìn)行多次總線寫操作,從而將多個(gè)寫地址、寫數(shù)據(jù)以及寫字節(jié)有效信息依次存入FIFO中,以支持EEPROM的頁(yè)寫操作和OTP的連續(xù)寫操作。存儲(chǔ)控制與接口單元包含兩個(gè)有限狀態(tài)機(jī)—個(gè)是寫數(shù)據(jù)寬度轉(zhuǎn)換狀態(tài)機(jī),其主要功能是當(dāng)非易失性存儲(chǔ)器的數(shù)據(jù)寬度以及虛擬非易失性存儲(chǔ)器模擬的數(shù)據(jù)寬度為16位或8位時(shí),根據(jù)擦寫單元輸出的字節(jié)有效信息將擦寫單元輸出的32位寫數(shù)據(jù)拆分為多個(gè)16位或者8位數(shù)據(jù),并由主控狀態(tài)機(jī)控制依次傳給非易失性存儲(chǔ)器。另一個(gè)是主控狀態(tài)機(jī),負(fù)責(zé)對(duì)多種非易失性存儲(chǔ)器進(jìn)行讀、寫、擦控制,并且實(shí)現(xiàn)通過(guò)2片支持字節(jié)訪問(wèn)的32位SRAM對(duì)多種非易失性存儲(chǔ)器的真實(shí)讀、寫、擦?xí)r序進(jìn)行模擬。如發(fā)明內(nèi)容中所述,本非易失性存儲(chǔ)器控制器將外部總線對(duì)非易失性存儲(chǔ)器的寫操作統(tǒng)一簡(jiǎn)化為三個(gè)步驟,此功能主要由擦寫單元實(shí)現(xiàn)。如圖2、圖3、圖4所示,擦寫單元負(fù)責(zé)處理外部總線接口單元傳來(lái)總線信號(hào)。其工作原理如下I)當(dāng)執(zhí)行非易失性存儲(chǔ)器寫操作步驟之1,即進(jìn)行正常的總線寫操作時(shí),擦寫單元將總線信號(hào)中的寫地址、寫數(shù)據(jù)以及數(shù)據(jù)大小信息(字節(jié)、半字或字)截取出來(lái)并進(jìn)行處理,暫存入FIFO和寄存器中。2) I)中所指的寄存器包括頁(yè)地址寄存器和寫數(shù)據(jù)量計(jì)數(shù)器。前者根據(jù)本次非易失性存儲(chǔ)器寫操作中第一次總線寫操作的寫地址記錄本次非易失性存儲(chǔ)器寫操作的頁(yè)地址(由于OTP沒(méi)有頁(yè)的概念,所以控制OTP時(shí)沒(méi)有此寄存器,地址全部記錄在地址FIFO中);后者記錄FIFO中的數(shù)據(jù)量,計(jì)數(shù)單位為當(dāng)前存儲(chǔ)器的數(shù)據(jù)寬度或者虛擬非易失性存儲(chǔ)器模擬的數(shù)據(jù)寬度。3)1)中所指的FIFO包括數(shù)據(jù)FIFO、地址FIFO以及字節(jié)有效FIFO,主要功能是在OTP的連續(xù)寫、EEPROM的頁(yè)寫以及通過(guò)SRAM實(shí)現(xiàn)的相應(yīng)的模擬操作中,用戶可在一次非易失性存儲(chǔ)器的寫操作中進(jìn)行多次總線寫操作,從而將多個(gè)頁(yè)內(nèi)地址、寫數(shù)據(jù)以及寫字節(jié)有效信息(當(dāng)存儲(chǔ)器數(shù)據(jù)寬度為16位或8位時(shí)使用)依次存入FIFO中。4)數(shù)據(jù)FIFO的寬度為32位,字節(jié)有效FIFO的寬度為4位(分別對(duì)應(yīng)32位數(shù)據(jù)的4個(gè)字節(jié))。當(dāng)進(jìn)行EEPROM寫操作時(shí),由于一次寫操作最多可寫一頁(yè),所以地址FIFO的寬度和各FIFO的深度可根據(jù)非易失性存儲(chǔ)器的頁(yè)大小配置;當(dāng)進(jìn)行EFLASH寫操作時(shí),由于一次只能寫入一個(gè)數(shù)據(jù),所以此時(shí)FIFO的深度為1,地址FIFO的寬度根據(jù)EFLASH頁(yè)大小配置;當(dāng)進(jìn)行OTP連續(xù)寫操作時(shí),由于沒(méi)有頁(yè)的概念,所以此時(shí)各FIFO的深度不做限制,可根據(jù)用戶需求定義,地址FIFO的寬度根據(jù)OTP存儲(chǔ)器的大小配置,寫地址全部記錄在地址FIFO 中。5)當(dāng)執(zhí)行非易失性存儲(chǔ)器寫操作步驟之2,即配置工作模式寄存器發(fā)起寫請(qǐng)求時(shí),存儲(chǔ)控制與接口單元中的有限狀態(tài)機(jī)啟動(dòng)。當(dāng)有限狀態(tài)機(jī)執(zhí)行到相應(yīng)狀態(tài)時(shí),擦寫單元將頁(yè)內(nèi)地址、寫數(shù)據(jù)、字節(jié)有效信息按照總線寫入時(shí)的順序依次取出,連同頁(yè)地址、數(shù)據(jù)總量等信息一起傳給存儲(chǔ)控制與接口單元。6)當(dāng)執(zhí)行非易失性存儲(chǔ)器寫操作步驟之3,即查詢狀態(tài)寄存器,直到存儲(chǔ)控制與接口單元中的有限狀態(tài)機(jī)運(yùn)行結(jié)束。為了支持多種數(shù)據(jù)寬度的寫入,包括64位、32位、16位以及8位,擦寫單元的FIFO可以通過(guò)硬件配置實(shí)現(xiàn)不同的結(jié)構(gòu)I)當(dāng)非易失性存儲(chǔ)器的數(shù)據(jù)寬度為64位時(shí),如圖2所示,擦寫單元包含兩個(gè)并聯(lián)的32位數(shù)據(jù)FIFO以及一個(gè)地址FIFO,此時(shí)要求外部總線以一個(gè)雙字為單位寫入數(shù)據(jù)(由于外部總線為32位寬度,所以要求通過(guò)兩次總線寫操作寫入雙字中的兩個(gè)字),兩個(gè)并聯(lián)的32位數(shù)據(jù)FIFO會(huì)分別存入這兩次總線寫操作中的數(shù)據(jù),即雙字中的兩個(gè)字,同時(shí)地址FIFO截取這兩次總線寫操作中的一次,得到并存入此雙字對(duì)應(yīng)的頁(yè)內(nèi)地址(由于64位對(duì)齊,所以2到O位略去)。當(dāng)存儲(chǔ)控制與接口單元中的有限狀態(tài)機(jī)需要時(shí)將64位寫數(shù)據(jù)以及寫地址(包括頁(yè)地址與頁(yè)內(nèi)地址)一起按照總線寫入時(shí)的順序依次傳給存儲(chǔ)控制與接口單元。2)當(dāng)非易失性存儲(chǔ)器的數(shù)據(jù)寬度為32位時(shí),如圖3所示,擦寫單元包含一個(gè)32位數(shù)據(jù)FIFO以及一個(gè)地址FIF0,當(dāng)外部總線寫入數(shù)據(jù)時(shí),會(huì)將寫數(shù)據(jù)與寫地址分別存入數(shù)據(jù)FIFO和地址FIF0,當(dāng)存儲(chǔ)控制與接口單元中的有限狀態(tài)機(jī)需要時(shí)將32位寫數(shù)據(jù)以及寫地址(包括頁(yè)地址與頁(yè)內(nèi)地址)一起按照總線寫入時(shí)的順序依次傳給存儲(chǔ)控制與接口單元。3)當(dāng)非易失性存儲(chǔ)器的數(shù)據(jù)寬度為16位或8位時(shí),如圖4所示,擦寫單元包含一個(gè)32位數(shù)據(jù)FIFO、一個(gè)地址FIFO以及一個(gè)4位字節(jié)有效FIF0,當(dāng)外部總線寫入數(shù)據(jù)時(shí),會(huì)將寫數(shù)據(jù)與寫地址分別存入數(shù)據(jù)FIFO和地址FIF0,同時(shí)通過(guò)綜合處理總線寫地址的低兩位和數(shù)據(jù)大小信息(AHB總線的數(shù)據(jù)大小信息為hsize,反映了當(dāng)前總線寫操作為字節(jié)、半字或字),得到這32位寫數(shù)據(jù)所對(duì)應(yīng)的字節(jié)有效信息,存入字節(jié)有效FIF0,當(dāng)存儲(chǔ)控制與接口單元中的有限狀態(tài)機(jī)需要時(shí)將32位寫數(shù)據(jù)、寫地址(包括頁(yè)地址與頁(yè)內(nèi)地址)以及字節(jié)有效信息一起按照總線寫入時(shí)的順序依次傳給存儲(chǔ)控制與接口單元。4)當(dāng)作為虛擬非易失性存儲(chǔ)器控制器時(shí),擦寫單元包含兩個(gè)32位數(shù)據(jù)FIFO、一個(gè)地址FIFO以及一個(gè)4位字節(jié)有效FIFO。此時(shí)根據(jù)外部數(shù)據(jù)寬度引腳的控制,可以實(shí)現(xiàn)I)、2)或者3)中的結(jié)構(gòu),從而實(shí)現(xiàn)對(duì)8位、16位、32位以及64位數(shù)據(jù)寬度的模擬。當(dāng)本非易失性存儲(chǔ)器控制器通過(guò)硬件配置成為虛擬非易失性存儲(chǔ)器控制器時(shí),存儲(chǔ)控制與接口單元不僅包含寫數(shù)據(jù)寬度轉(zhuǎn)換狀態(tài)機(jī)和主控狀態(tài)機(jī),還包括對(duì)兩片支持字節(jié)訪問(wèn)的32位SRAM的控制邏輯。此時(shí)由外部數(shù)據(jù)寬度引腳控制,可以實(shí)現(xiàn)對(duì)8位、16位、32位以及64位數(shù)據(jù)寬度的模擬,無(wú)需更換SRAM,具體方式如下,I)當(dāng)外部數(shù)據(jù)寬度引腳表示64位時(shí),如圖5,這兩片SRAM的片選信號(hào)CENO和CENl同源,訪問(wèn)地址經(jīng)過(guò)64位對(duì)齊處理(寫地址來(lái)自擦寫單元,讀地址來(lái)自外部總線接口單元),此時(shí)兩片SRAM成并聯(lián)關(guān)系,相當(dāng)于一整片64位的SRAM,從而實(shí)現(xiàn)對(duì)64位非易失性存儲(chǔ)器的模擬。2)當(dāng)外部數(shù)據(jù)寬度引腳表示32位、16位或者8位時(shí),如圖6,訪問(wèn)地址經(jīng)過(guò)32位對(duì)齊處理(寫地址來(lái)自擦寫單元,讀地址來(lái)自外部總線接口單元),而這兩片SRAM的片選信號(hào)CENO和CENl由訪問(wèn)地址的最高位控制。當(dāng)訪問(wèn)前半部分空間,即訪問(wèn)地址的最高位為O時(shí),訪問(wèn)SRAM1,否則訪問(wèn)SRAM2,此時(shí)兩片SRAM成串聯(lián)關(guān)系,相當(dāng)于一整片32位的SRAM,從而實(shí)現(xiàn)對(duì)32位非易失性存儲(chǔ)器的模擬。由于支持字節(jié)訪問(wèn)的32位SRAM包含4位寫使能信號(hào)WEN,分別對(duì)應(yīng)32位數(shù)據(jù)的4個(gè)字節(jié),因此當(dāng)模擬16位或者8位數(shù)據(jù)寬度時(shí),雖然輸入為32位數(shù)據(jù),但通過(guò)擦寫單元中字節(jié)有效FIFO輸出的4位字節(jié)有效信息分別控制這4位寫使能信號(hào),如圖6所示,可以使32位的SRAM以16位或者8位的方式寫入,從而實(shí)現(xiàn)對(duì)16位或者8位非易失性存儲(chǔ)器的模擬。存儲(chǔ)控制與接口單元中的寫數(shù)據(jù)寬度轉(zhuǎn)換狀態(tài)機(jī)主要用于對(duì)寫數(shù)據(jù)寬度的轉(zhuǎn)換。當(dāng)非易失性存儲(chǔ)器的數(shù)據(jù)寬度為16位或8位時(shí),該狀態(tài)機(jī)根據(jù)擦寫單元輸出的字節(jié)有效信息將擦寫單元輸出的32位寫數(shù)據(jù)拆分為多個(gè)16位或者8位數(shù)據(jù),并由主控狀態(tài)機(jī)控制依次傳給非易失性存儲(chǔ)器。(當(dāng)作為虛擬非易失性存儲(chǔ)器控制器模擬16位或8位數(shù)據(jù)寬度時(shí),如圖6,由于SRAM和數(shù)據(jù)FIFO都為32位,所以此時(shí)寫數(shù)據(jù)寬度轉(zhuǎn)換狀態(tài)機(jī)不需要工作,用擦寫單元中字節(jié)有效FIFO輸出的4位字節(jié)有效信息分別控制這4位寫使能信號(hào),即可實(shí)現(xiàn)對(duì)16位或者8位存儲(chǔ)器寫操作的模擬)具體狀態(tài)轉(zhuǎn)換如圖7所示IDLE :無(wú)寫入操作時(shí),狀態(tài)機(jī)默認(rèn)為IDLE狀態(tài)。當(dāng)主控狀態(tài)機(jī)請(qǐng)求寫數(shù)據(jù)和寫地址時(shí),如果存儲(chǔ)器數(shù)據(jù)寬度為16位,狀態(tài)機(jī)進(jìn)入16_P0P1狀態(tài);如果存儲(chǔ)器數(shù)據(jù)寬度為16位,狀態(tài)機(jī)進(jìn)入8_P0P1狀態(tài)。16_P0P1 :此時(shí)從數(shù)據(jù)FIFO中彈出(POP)—個(gè)32位寫數(shù)據(jù),從地址FIFO中彈出一個(gè)寫地址,從字節(jié)有效FIFO中彈出一個(gè)4位的字節(jié)有效信息。并根據(jù)字節(jié)有效信息判斷此次對(duì)應(yīng)的總線寫操作是字還是半字寫入如果是字寫入,即四個(gè)字節(jié)都有效,那么先將前兩個(gè)字節(jié)(16位)及對(duì)應(yīng)的寫地址傳給主控狀態(tài)機(jī)。當(dāng)主控狀態(tài)機(jī)再次發(fā)起寫數(shù)據(jù)請(qǐng)求時(shí),狀態(tài)機(jī)進(jìn)入16_W_P0P2狀態(tài)。如果是半字寫入,即只有兩個(gè)字節(jié)有效,那么將這兩個(gè)字節(jié)及對(duì)應(yīng)的寫地址傳給主控狀態(tài)機(jī)。當(dāng)主控狀態(tài)機(jī)再次請(qǐng)求寫數(shù)據(jù)時(shí),狀態(tài)機(jī)重新進(jìn)入16_P0P1狀態(tài);若主控狀態(tài)機(jī)的寫操作全部結(jié)束,則返回IDLE狀態(tài)。16_ff_P0P2 :此時(shí)將四個(gè)有效字節(jié)中的后兩個(gè)字節(jié)及對(duì)應(yīng)的寫地址傳給主控狀態(tài)機(jī)。當(dāng)主控狀態(tài)機(jī)再次發(fā)起寫數(shù)據(jù)請(qǐng)求時(shí),狀態(tài)機(jī)重新進(jìn)入16_P0P1狀態(tài);若主控狀態(tài)機(jī)的寫操作全部結(jié)束,則返回IDLE狀態(tài)。8_P0P1 :此時(shí)從數(shù)據(jù)FIFO中彈出(POP) —個(gè)32位寫數(shù)據(jù),從地址FIFO中彈出一個(gè)寫地址,從字節(jié)有效FIFO中彈出一個(gè)4位的字節(jié)有效信息。并根據(jù)字節(jié)有效信息判斷此次對(duì)應(yīng)的總線寫操作是字、半字還是字節(jié)寫入如果是字寫入,即四個(gè)字節(jié)都有效,那么先將第一個(gè)字節(jié)及對(duì)應(yīng)的寫地址傳給主控狀態(tài)機(jī)。當(dāng)主控狀態(tài)機(jī)再次發(fā)起寫數(shù)據(jù)請(qǐng)求時(shí),狀態(tài)機(jī)進(jìn)入8_W_P0P2狀態(tài)。如果是半字寫入,即兩個(gè)字節(jié)有效,那么先將這兩個(gè)字節(jié)中的第一個(gè)字節(jié)及對(duì)應(yīng)的寫地址傳給主控狀態(tài)機(jī)。當(dāng)主控狀態(tài)機(jī)再次發(fā)起寫數(shù)據(jù)請(qǐng)求時(shí),狀態(tài)機(jī)進(jìn)入8_HW_P0P2狀態(tài)。如果是字節(jié)寫入,即只有一個(gè)字節(jié)有效,那么將這個(gè)字節(jié)及對(duì)應(yīng)的寫地址傳給主控狀態(tài)機(jī)。當(dāng)主控狀態(tài)機(jī)再次請(qǐng)求寫數(shù)據(jù)時(shí),狀態(tài)機(jī)重新進(jìn)入8_P0P1狀態(tài);若主控狀態(tài)機(jī)的寫操作全部結(jié)束,則返回IDLE狀態(tài)。8_ff_P0P2 :此時(shí)將四個(gè)有效字節(jié)中的第二個(gè)字節(jié)及對(duì)應(yīng)的寫地址傳給主控狀態(tài)機(jī)。當(dāng)主控狀態(tài)機(jī)再次發(fā)起寫數(shù)據(jù)請(qǐng)求時(shí),狀態(tài)機(jī)進(jìn)入8_W_P0P3狀態(tài)。8_ff_P0P3 :此時(shí)將四個(gè)有效字節(jié)中的第三個(gè)字節(jié)及對(duì)應(yīng)的寫地址傳給主控狀態(tài)機(jī)。當(dāng)主控狀態(tài)機(jī)再次發(fā)起寫數(shù)據(jù)請(qǐng)求時(shí),狀態(tài)機(jī)進(jìn)入8_W_P0P4狀態(tài)。8_ff_P0P4 :此時(shí)將將四個(gè)有效字節(jié)中的第四個(gè)字節(jié)及對(duì)應(yīng)的寫地址傳給主控狀態(tài)機(jī)。當(dāng)主控狀態(tài)機(jī)再次發(fā)起寫數(shù)據(jù)請(qǐng)求時(shí),狀態(tài)機(jī)重新進(jìn)入8_P0P1狀態(tài);若主控狀態(tài)機(jī)的寫操作全部結(jié)束,則返回IDLE狀態(tài)。8_HW_P0P2 :此時(shí)將兩個(gè)有效字節(jié)中的第二個(gè)字節(jié)及對(duì)應(yīng)的寫地址傳給主控狀態(tài)機(jī)。當(dāng)主控狀態(tài)機(jī)再次發(fā)起寫數(shù)據(jù)請(qǐng)求時(shí),狀態(tài)機(jī)重新進(jìn)入8_P0P1狀態(tài);若主控狀態(tài)機(jī)的寫操作全部結(jié)束,則返回IDLE狀態(tài)。由于以上寫數(shù)據(jù)寬度轉(zhuǎn)換狀態(tài)機(jī)的存在,實(shí)現(xiàn)了對(duì)多種數(shù)據(jù)寬度寫操作的支持,而為了支持對(duì)多種數(shù)據(jù)寬度的讀操作,這部分功能主要通過(guò)存儲(chǔ)控制與接口單元中的主控狀態(tài)機(jī)以及緩沖寄存器實(shí)現(xiàn)I)如果存儲(chǔ)器數(shù)據(jù)寬度為64位,即一次讀操作讀取64位數(shù)據(jù),則將其中總線需要的32位數(shù)據(jù)回復(fù)給外部總線,并將這64位數(shù)據(jù)及其地址暫存入存儲(chǔ)控制與接口單元中的緩沖寄存器中。當(dāng)再次讀取存儲(chǔ)器時(shí),判斷讀取地址與緩沖寄存器中的地址是否為同一個(gè)雙字,如果是,則直接從緩沖寄存器中讀取需要的32位數(shù)據(jù),以提高訪問(wèn)速度。2)如果存儲(chǔ)器數(shù)據(jù)寬度為32位,即一次讀操作讀取32位數(shù)據(jù),則READ狀態(tài)結(jié)束時(shí)直接將這32位數(shù)據(jù)回復(fù)給外部總線。3)如果存儲(chǔ)器數(shù)據(jù)寬度為16位,即一次讀操作讀取16位數(shù)據(jù),則主控狀態(tài)機(jī)判斷總線的數(shù)據(jù)大小信息若為讀半字,則執(zhí)行一次讀操作后將這16位數(shù)據(jù)補(bǔ)齊回復(fù)給外部總線(當(dāng)為虛擬非易失性存儲(chǔ)器時(shí),由于SRAM實(shí)際仍為32位,所以直接將這32位數(shù)據(jù)回復(fù)給外部總線即可);若為讀全字,則主控狀態(tài)機(jī)對(duì)存儲(chǔ)器連續(xù)執(zhí)行兩次讀操作,將讀取的32位數(shù)據(jù)回復(fù)給外部總線(當(dāng)為虛擬非易失性存儲(chǔ)器時(shí),為了真實(shí)模擬讀操作,也連續(xù)執(zhí)行兩次讀操作,最后將讀取的32位數(shù)據(jù)回復(fù)給外部總線)。4)如果存儲(chǔ)器數(shù)據(jù)寬度為8位,即一次讀操作讀取8位數(shù)據(jù),則主控狀態(tài)機(jī)判斷總線的數(shù)據(jù)大小信息若為讀字節(jié),則執(zhí)行一次讀操作后將這8位數(shù)據(jù)補(bǔ)齊回復(fù)給外部總線(當(dāng)為虛擬非易失性存儲(chǔ)器時(shí),由于SRAM實(shí)際仍為32位,所以直接將這32位數(shù)據(jù)回復(fù)給外部總線);若為讀半字,則連續(xù)執(zhí)行兩次讀操作,將讀取的16位數(shù)據(jù)補(bǔ)齊回復(fù)給外部總線(當(dāng)為虛擬非易失性存儲(chǔ)器時(shí),為了真實(shí)模擬讀操作,也連續(xù)執(zhí)行兩次讀操作,最后將讀取的32位數(shù)據(jù)回復(fù)給外部總線);若為讀全字,則主控狀態(tài)機(jī)對(duì)存儲(chǔ)器連續(xù)執(zhí)行四次讀操作,將讀取的32位數(shù)據(jù)回復(fù)給外部總線(當(dāng)為虛擬非易失性存儲(chǔ)器時(shí),為了真實(shí)模擬讀操作,也連續(xù)執(zhí)行四次讀操作,最后將讀取的32位數(shù)據(jù)回復(fù)給外部總線)。存儲(chǔ)控制與接口單元中的主控狀態(tài)機(jī)具有較高的兼容性,用于實(shí)現(xiàn)對(duì)多種非易失性存儲(chǔ)器的控制以及通過(guò)SRAM對(duì)多種非易失性存儲(chǔ)器的讀寫擦?xí)r序進(jìn)行模擬。主控狀態(tài)機(jī)的結(jié)構(gòu)如圖8所示,下面按照不同的配置進(jìn)行詳細(xì)說(shuō)明。I)當(dāng)控制OTP時(shí),主控狀態(tài)機(jī)支持讀以及連續(xù)寫功能,此時(shí)狀態(tài)轉(zhuǎn)換如圖9的所示IDLE:無(wú)任何操作時(shí),狀態(tài)機(jī)默認(rèn)為IDLE狀態(tài)。此時(shí)OTP的片選信號(hào)PCEB、寫使能信號(hào)PWEB以及輸出使能信號(hào)POEB無(wú)效,模式信號(hào)PTM[2:0]為等待模式。當(dāng)用戶通過(guò)外部總線將寄存器控制單元中的OTP工作模式寄存器配置為寫模式時(shí),對(duì)OTP的寫操作開(kāi)始,狀態(tài)機(jī)進(jìn)入WEPRE狀態(tài);當(dāng)外部總線通過(guò)外部總線接口單元發(fā)起讀請(qǐng)求時(shí),對(duì)OTP的讀操作開(kāi)始,狀態(tài)機(jī)進(jìn)入RPRE狀態(tài)。WEPRE:此時(shí)將寫地址和寫數(shù)據(jù)(如果數(shù)據(jù)寬度為64位或32位,由地址FIFO和數(shù)據(jù)FIFO輸出;如果為16位或8位,由寫地址轉(zhuǎn)換狀態(tài)機(jī)輸出)傳給0ΤΡ,并將OTP的片選信號(hào)PCEB置為有效。根據(jù)寄存器控制單元中的OTP時(shí)序控制寄存器所規(guī)定的延時(shí)(按照OTP的時(shí)序要求配置),一定時(shí)間后,狀態(tài)機(jī)進(jìn)入“CM0D”狀態(tài)。CMOD :此時(shí)維持OTP的片選信號(hào)PCEB為有效,并將OTP的模式信號(hào)PTM[2:0]置為 編程模式。根據(jù)寄存器控制單元中的OTP時(shí)序控制寄存器所規(guī)定的延時(shí)(按照OTP的時(shí)序要求配置),一定時(shí)間后,狀態(tài)機(jī)進(jìn)入“WE”狀態(tài)。WE:此時(shí)維持OTP的片選信號(hào)PCEB為有效,維持OTP的模式信號(hào)PTM[2:0]為編程模式,并將OTP的寫使能信號(hào)PWEB置為有效。根據(jù)寄存器控制單元中的OTP時(shí)序控制寄存器所規(guī)定的延時(shí)(按照OTP的時(shí)序要求配置),一定時(shí)間后,狀態(tài)機(jī)進(jìn)入“WD”狀態(tài)。WD :此時(shí)維持OTP的片選信號(hào)PCEB為有效,維持OTP的模式信號(hào)PTM[2:0]為編程模式,并將OTP的寫使能信號(hào)PWEB置為無(wú)效。同時(shí)根據(jù)擦寫單元中的寫數(shù)據(jù)量計(jì)數(shù)器判斷此時(shí)FIFO中是否還有數(shù)據(jù),若沒(méi)有,則進(jìn)入“WES”狀態(tài),否則,進(jìn)入“NW”狀態(tài)開(kāi)始下一個(gè)數(shù)據(jù)的寫入過(guò)程。NW :此時(shí)開(kāi)始下一個(gè)數(shù)據(jù)的寫入過(guò)程,維持OTP的片選信號(hào)PCEB為有效,維持寫使能信號(hào)PWEB為無(wú)效,維持OTP的模式信號(hào)PTM[2:0]為編程模式,并將下一個(gè)寫地址和寫數(shù)據(jù)(如果為64位或32位,則由地址FIFO和數(shù)據(jù)FIFO輸出;如果為16位或8位,則由寫地址轉(zhuǎn)換狀態(tài)機(jī)輸出)傳給0ΤΡ。根據(jù)寄存器控制單元中的OTP時(shí)序控制寄存器所規(guī)定的延時(shí)(按照OTP的時(shí)序要求配置),一定時(shí)間后,狀態(tài)機(jī)再次進(jìn)入“WE”狀態(tài)。WES :此時(shí)維持OTP的片選信號(hào)PCEB為有效,維持寫使能信號(hào)PWEB為無(wú)效,維持OTP的模式信號(hào)PTM[2:0]為編程模式。根據(jù)寄存器控制單元中的OTP時(shí)序控制寄存器所規(guī)定的延時(shí)(按照OTP的時(shí)序要求配置),一定時(shí)間后,狀態(tài)機(jī)進(jìn)入“CD”狀態(tài)。⑶此時(shí)維持OTP的模式信號(hào)PTM[2:0]為編程模式,維持OTP的寫使能信號(hào)PWEB置為無(wú)效,并將OTP的片選信號(hào)PCEB置為無(wú)效。根據(jù)寄存器控制單元中的OTP時(shí)序控制寄存器所規(guī)定的延時(shí)(按照OTP的時(shí)序要求配置),一定時(shí)間后,狀態(tài)機(jī)進(jìn)入“WAIT”狀態(tài)。WAIT :維持OTP的片選信號(hào)PCEB和寫使能信號(hào)PWEB為無(wú)效,并將OTP的模式信號(hào)PTM[2:0]重新置回等待模式,此時(shí)OTP進(jìn)入編程修復(fù)狀態(tài)(Program Recovery)。根據(jù)寄存器控制單元中的OTP時(shí)序控制寄存器所規(guī)定的延時(shí)(按照OTP的時(shí)序要求配置),一定時(shí)間后,狀態(tài)機(jī)返回“IDLE”狀態(tài),寫操作完成。RPRE :此時(shí)將OTP的片選信號(hào)PCEB和輸出使能信號(hào)POEB置為有效。根據(jù)寄存器控制單元中的OTP時(shí)序控制寄存器所規(guī)定的延時(shí)(按照OTP的時(shí)序要求配置),一定時(shí)間后,狀態(tài)機(jī)進(jìn)入“ READ ”狀態(tài)。READ:此時(shí)維持OTP的片選信號(hào)PCEB和輸出使能信號(hào)POEB為有效,并將讀地址輸出傳給OTP。根據(jù)寄存器控制單元中的OTP時(shí)序控制寄存器(按照OTP的時(shí)序要求配置)計(jì)算OTP的輸出數(shù)據(jù)何時(shí)有效,當(dāng)輸出數(shù)據(jù)有效時(shí),若數(shù)據(jù)寬度是64位或者32位,則輸出數(shù)據(jù)回復(fù)給總線并返回IDLE狀態(tài);若數(shù)據(jù)寬度是16位或者8位,則根據(jù)前文所述選擇將數(shù)據(jù)回復(fù)給總線或者繼續(xù)執(zhí)行讀操作。2)當(dāng)控制EEPROM時(shí),主控狀態(tài)機(jī)支持讀、頁(yè)寫以及全片擦功能,此時(shí)狀態(tài)轉(zhuǎn)換如圖10的所示IDLE:無(wú)任何操作時(shí),狀態(tài)機(jī)默認(rèn)為IDLE狀態(tài)。此時(shí)EEPROM的片選信號(hào)CEN、擦寫使能信號(hào)WEN、擦寫開(kāi)始信號(hào)WS、輸出使能信號(hào)OEN無(wú)效以及全片擦使能信號(hào)CHER無(wú)效。當(dāng)用戶將寄存器控制單元中的EEPROM工作模式寄存器配置為頁(yè)寫或全擦模式時(shí),對(duì)EEPROM的擦寫操作開(kāi)始,狀態(tài)機(jī)進(jìn)入WEPRE狀態(tài),此時(shí)若當(dāng)前EEPROM工作模式為全擦,則全片擦使能信號(hào)CHER在整個(gè)擦寫過(guò)程中有效;當(dāng)外部總線通過(guò)外部總線接口單元發(fā)起讀請(qǐng)求時(shí),對(duì)EEPROM的讀操作開(kāi)始,狀態(tài)機(jī)進(jìn)入READ狀態(tài)。WEPRE:此時(shí)將EEPROM的片選信號(hào)CEN置為有效,同時(shí)判斷若當(dāng)前EEPROM工作模式為頁(yè)寫,則將寫地址和寫數(shù)據(jù)(當(dāng)數(shù)據(jù)寬度為64位或32位時(shí),由擦寫單元輸出;當(dāng)為16位或8位時(shí),由寫地址轉(zhuǎn)換狀態(tài)機(jī)輸出)傳給EEPROM ;若當(dāng)前EEPROM工作模式為全片擦,則不傳遞寫地址與寫數(shù)據(jù)。根據(jù)寄存器控制單元中的EEPROM時(shí)序控制寄存器所規(guī)定的延時(shí)(按照EEPROM的時(shí)序要求配置),一定時(shí)間后,狀態(tài)機(jī)進(jìn)入“WE”狀態(tài)。WE:此時(shí)維持EEPROM的片選信號(hào)CEN為有效,并將EEPROM的擦寫使能信號(hào)WEN置為有效。根據(jù)寄存器控制單元中的EEPROM時(shí)序控制寄存器所規(guī)定的延時(shí)(按照EEPROM的時(shí)序要求配置),一定時(shí)間后,狀態(tài)機(jī)進(jìn)入“WD”狀態(tài)。WD :此時(shí)維持EEPROM的片選信號(hào)CEN為有效,并將EEPROM的擦寫使能信號(hào)WEN置為無(wú)效。同時(shí)判斷若當(dāng)前EEPROM工作模式為全片擦,則進(jìn)入“WES”狀態(tài);若當(dāng)前EEPROM工作模式為頁(yè)寫,則根據(jù)擦寫單元中的寫數(shù)據(jù)量計(jì)數(shù)器判斷此時(shí)FIFO中是否還有數(shù)據(jù),若沒(méi)有,則進(jìn)入“WES”狀態(tài),否則,進(jìn)入“NW”狀態(tài)開(kāi)始下一個(gè)數(shù)據(jù)的寫入過(guò)程。NW :此時(shí)開(kāi)始下一個(gè)數(shù)據(jù)的寫入過(guò)程,維持EEPROM的片選信號(hào)CEN為有效,維持擦寫使能信號(hào)WEN為無(wú)效,并將下一個(gè)寫地址和寫數(shù)據(jù)(如果為64位或32位,則由地址FIFO和數(shù)據(jù)FIFO輸出;如果為16位或8位,則由寫地址轉(zhuǎn)換狀態(tài)機(jī)輸出)傳給EEPR0M。根據(jù)寄存器控制單元中的EEPROM時(shí)序控制寄存器所規(guī)定的延時(shí)(按照EEPROM的時(shí)序要求配置),一定時(shí)間后,狀態(tài)機(jī)再次進(jìn)入“WE”狀態(tài)。WES :維持EEPROM的片選信號(hào)CEN為有效,維持擦寫使能信號(hào)WEN為無(wú)效,并將EEPROM的擦寫開(kāi)始信號(hào)WS置為有效,此時(shí)EEPROM進(jìn)入自我擦寫狀態(tài)。根據(jù)寄存器控制單元中的OTP時(shí)序控制寄存器所規(guī)定的延時(shí)(按照EEPROM的時(shí)序要求配置),一定時(shí)間后,主控狀態(tài)機(jī)進(jìn)入“WAIT”狀態(tài)。WAIT :此時(shí)維持EEPROM的片選信號(hào)CEN為有效,維持擦寫使能信號(hào)WEN為無(wú)效,并將EEPROM的擦寫開(kāi)始信號(hào)WS置為無(wú)效。此時(shí)等待EEPROM的擦寫成功信號(hào)READY有效時(shí),狀態(tài)機(jī)返回“ IDLE”狀態(tài),擦寫操作完成。
READ:此時(shí)將EEPROM的片選信號(hào)CEN和輸出使能信號(hào)OEN置為有效,并將讀地址輸出傳給EEPROM。同時(shí)根據(jù)寄存器控制單元中的EEPROM時(shí)序控制寄存器(按照EEPROM的時(shí)序要求配置)計(jì)算EEPROM的輸出數(shù)據(jù)何時(shí)有效,當(dāng)輸出數(shù)據(jù)有效時(shí),若數(shù)據(jù)寬度是64位或者32位,則輸出數(shù)據(jù)回復(fù)給總線并返回IDLE狀態(tài);若數(shù)據(jù)寬度是16位或者8位,則根據(jù)前文所述選擇將數(shù)據(jù)回復(fù)給總線或者繼續(xù)執(zhí)行讀操作。3)當(dāng)控制EFLASH時(shí),主控狀態(tài)機(jī)支持讀、單數(shù)據(jù)寫、頁(yè)擦以及全片擦功能,此時(shí)狀態(tài)轉(zhuǎn)換如圖11的所示IDLE:無(wú)任何操作時(shí),狀態(tài)機(jī)默認(rèn)為IDLE狀態(tài)。此時(shí)EFLASH的片選信號(hào)IFREN、地址使能信號(hào)AE、擦寫開(kāi)始信號(hào)NVSTR、輸出使能信號(hào)0ΕΝ、寫使能信號(hào)PR0G、頁(yè)擦使能信號(hào)SERA以及全片擦使能信號(hào)MASE無(wú)效。當(dāng)用戶通過(guò)外部總線將寄存器控制單元中的EFLASH工作模式寄存器配置為單數(shù)據(jù)寫、頁(yè)擦或全擦模式時(shí),對(duì)EFLASH的擦寫操作開(kāi)始,狀態(tài)機(jī)進(jìn)入WEPRE狀態(tài);當(dāng)外部總線通過(guò)外部總線接口單元發(fā)起讀請(qǐng)求時(shí),對(duì)EFLASH的讀操作開(kāi) 始,狀態(tài)機(jī)進(jìn)入RPRE狀態(tài)。WEPRE:此時(shí)將EFLASH的片選信號(hào)IFREN置為有效,同時(shí)判斷若當(dāng)前EFLASH工作模式為單數(shù)據(jù)寫,則將寫地址和寫數(shù)據(jù)(當(dāng)數(shù)據(jù)寬度為64位或32位時(shí),由地址FIFO和數(shù)據(jù)FIFO輸出;當(dāng)為16位或8位時(shí),由寫地址轉(zhuǎn)換狀態(tài)機(jī)輸出)傳給EFLASH,并將EFLASH的寫使能信號(hào)PROG置為有效;若當(dāng)前EFLASH工作模式為頁(yè)擦,則將頁(yè)地址(由擦寫單元的頁(yè)地址寄存器輸出)傳給EFLASH,并將EFLASH的頁(yè)擦使能信號(hào)SERA置為有效;若當(dāng)前EFLASH工作模式為全片擦,則將EFLASH的全片擦使能信號(hào)MASE置為有效;根據(jù)寄存器控制單元中的EEPROM時(shí)序控制寄存器所規(guī)定的延時(shí)(按照EFLASH的時(shí)序要求配置),一定時(shí)間后,狀態(tài)機(jī)進(jìn)入“WE”狀態(tài)。WE:此時(shí)維持EFLASH的片選信號(hào)IFREN為有效,并按照WEPRE狀態(tài)的判斷,維持EFLASH的寫使能信號(hào)PR0G、頁(yè)擦使能信號(hào)SERA或者全片擦使能信號(hào)MASE為有效,同時(shí)將EFLASH的地址使能信號(hào)AE置為有效。根據(jù)寄存器控制單元中的EEPROM時(shí)序控制寄存器所規(guī)定的延時(shí)(按照EFLASH的時(shí)序要求配置),一定時(shí)間后,狀態(tài)機(jī)進(jìn)入“WAIT”狀態(tài)。WAIT :此時(shí)將EFLASH的片選信號(hào)IFREN、地址使能信號(hào)AE、寫使能信號(hào)PR0G、頁(yè)擦使能信號(hào)SERA以及全片擦使能信號(hào)MASE置為無(wú)效,并將EFLASH的擦寫開(kāi)始信號(hào)NVSTR置為有效,此時(shí)EFLASH進(jìn)入自我擦寫狀態(tài)。根據(jù)寄存器控制單元中的EFLASH時(shí)序控制寄存器所規(guī)定的延時(shí)(按照EFLASH的時(shí)序要求配置),一定時(shí)間后,狀態(tài)機(jī)返回“IDLE”狀態(tài),擦寫操作完成。RPRE :此時(shí)將EFLASH的片選信號(hào)IFREN置為有效,并將讀地址輸出傳給EFLASH。根據(jù)寄存器控制單元中的EFLASH時(shí)序控制寄存器所規(guī)定的延時(shí)(按照EFLASH的時(shí)序要求配置),一定時(shí)間后,狀態(tài)機(jī)進(jìn)入“READ ”狀態(tài)。READ:此時(shí)維持EFLASH的片選信號(hào)IFREN為有效,并將EFLASH的地址使能信號(hào)AE和輸出使能信號(hào)OE置為有效。同時(shí)根據(jù)寄存器控制單元中的EFLASH時(shí)序控制寄存器(按照EFLASH的時(shí)序要求配置)計(jì)算EFLASH的輸出數(shù)據(jù)何時(shí)有效,當(dāng)輸出數(shù)據(jù)有效時(shí),若數(shù)據(jù)寬度是64位或者32位,則輸出數(shù)據(jù)回復(fù)給總線并返回IDLE狀態(tài);若數(shù)據(jù)寬度是16位或者8位,則根據(jù)前文所述選擇將數(shù)據(jù)回復(fù)給總線或者繼續(xù)執(zhí)行讀操作。4)當(dāng)作為虛擬非易失性存儲(chǔ)器控制器時(shí),主控狀態(tài)機(jī)通過(guò)SRAM模擬OTP、EEPROM或者EFLASH的讀、寫、擦?xí)r序,包括讀、單數(shù)據(jù)寫、連續(xù)寫、頁(yè)寫、頁(yè)擦以及全片擦功能。此時(shí)狀態(tài)轉(zhuǎn)換如圖12的所示IDLE:無(wú)任何操作時(shí),狀態(tài)機(jī)默認(rèn)為IDLE狀態(tài)。當(dāng)用戶通過(guò)外部總線將寄存器控制單元中的OTP、EEPROM或者EFLASH工作模式寄存器配置為擦寫模式時(shí),對(duì)非易失性存儲(chǔ)器的模擬擦寫操作開(kāi)始,狀態(tài)機(jī)進(jìn)入WEPRE狀態(tài);當(dāng)外部總線通過(guò)外部總線接口單元發(fā)起讀請(qǐng)求時(shí),對(duì)非易失性存儲(chǔ)器的模擬讀操作開(kāi)始,狀態(tài)機(jī)進(jìn)入RPRE狀態(tài)。WEPRE:此時(shí)判斷OTP、EEPROM或者EFLASH工作模式寄存器的工作模式若為單數(shù)據(jù)寫、連續(xù)寫或頁(yè)寫模式,則根據(jù)擦寫單元輸出的寫數(shù)據(jù)和寫地址,將數(shù)據(jù)寫入SRAM,并根據(jù)擦寫單元中的寫數(shù)據(jù)量計(jì)數(shù)器判斷此時(shí)FIFO中是否還有數(shù)據(jù),若仍有數(shù)據(jù),向擦寫單元的FIFO請(qǐng)求新的數(shù)據(jù)并寫入SRAM,如此循環(huán),直到FIFO中的所有數(shù)據(jù)都存入SRAM,便進(jìn)入“WAIT”狀態(tài)(當(dāng)用戶在一次非易失性存儲(chǔ)器寫操作中只執(zhí)行了一次總線寫操作,即可模擬單數(shù)據(jù)寫);若為頁(yè)擦模式,則將數(shù)據(jù)I循環(huán)寫入擦寫單元中頁(yè)地址寄存器所指定的SRAM區(qū)域,模擬頁(yè)擦,隨后進(jìn)入“WAIT”狀態(tài);若為全片擦模式,則將數(shù)據(jù)I循環(huán)寫入SRAM的所有區(qū)域,模擬全片擦,隨后進(jìn)入“WAIT” 狀態(tài);WAIT :此時(shí)根據(jù)寄存器控制單元中的虛擬時(shí)序模擬寄存器(包括寫時(shí)序模擬寄存器、頁(yè)擦?xí)r序模擬寄存器、全片擦?xí)r序模擬寄存器)模擬一定時(shí)間的擦寫延時(shí),并返回IDLE狀態(tài)。RPRE :此時(shí)根據(jù)總線地址讀取SRAM,并進(jìn)入READ狀態(tài)。READ :此時(shí)根據(jù)寄存器控制單元中的虛擬時(shí)序模擬寄存器(包括讀時(shí)序模擬寄存器)模擬一定時(shí)間的讀取延時(shí)。若數(shù)據(jù)寬度是64位或者32位,則輸出數(shù)據(jù)回復(fù)給總線并返回IDLE狀態(tài);若數(shù)據(jù)寬度是16位或者8位,則根據(jù)前文所述選擇將數(shù)據(jù)回復(fù)給總線或者繼續(xù)執(zhí)行模擬讀操作。
權(quán)利要求
1.一種用于系統(tǒng)芯片集成的通用非易失性存儲(chǔ)器控制裝置,其特征在于所述控制裝置包括外部總線接口單元、寄存器控制單元、擦寫單元以及存儲(chǔ)控制與接口單元,其中,外部總線接口單元,用于采集外部總線的控制信號(hào)及數(shù)據(jù),并進(jìn)行分析如果是訪問(wèn)控制寄存器,將總線信號(hào)傳入寄存器控制單元;如果是對(duì)非易失性存儲(chǔ)單元進(jìn)行讀操作,將總線信號(hào)傳給存儲(chǔ)控制與接口單元,實(shí)現(xiàn)對(duì)非易失性存儲(chǔ)單元的讀操作;如果是對(duì)非易失性存儲(chǔ)單元進(jìn)行寫操作,將總線信號(hào)傳給擦寫單元;寄存器控制單元,用于對(duì)所有寄存器進(jìn)行讀寫控制,所述所有寄存器包括OTP工作模式寄存器、EFLASH工作模式寄存器、EEPROM工作模式寄存器、OTP時(shí)序控制寄存器、EFLASH 時(shí)序控制寄存器、EEPROM時(shí)序控制寄存器和虛擬時(shí)序模擬寄存器,寄存器數(shù)據(jù)將傳給存儲(chǔ)控制與接口單元,供存儲(chǔ)控制與接口單元的有限狀態(tài)機(jī)使用;擦寫單元,用于處理外部總線接口單元傳來(lái)總線信號(hào);存儲(chǔ)控制與接口單元包含兩個(gè)有限狀態(tài)機(jī);一個(gè)是寫數(shù)據(jù)寬度轉(zhuǎn)換狀態(tài)機(jī),用于當(dāng)非易失性存儲(chǔ)器的數(shù)據(jù)寬度以及虛擬非易失性存儲(chǔ)器模擬的數(shù)據(jù)寬度為16位或8位時(shí),根據(jù)擦寫單元輸出的字節(jié)有效信息將擦寫單元輸出的32位寫數(shù)據(jù)拆分為多個(gè)16位或者8位數(shù)據(jù),并由主控狀態(tài)機(jī)控制依次傳給非易失性存儲(chǔ)器;另一個(gè)是主控狀態(tài)機(jī),用于對(duì)多種類型、多種數(shù)據(jù)寬度非易失性存儲(chǔ)器進(jìn)行讀、寫、擦控制,所述類型為EFLASH、OTP和EEPR0M,所述數(shù)據(jù)寬度為8位、16位、32位和64位,同時(shí)還通過(guò)2片支持字節(jié)訪問(wèn)的32位SRAM對(duì)多種類型、多種數(shù)據(jù)寬度非易失性存儲(chǔ)器的真實(shí)讀、寫、擦?xí)r序進(jìn)行模擬,成為虛擬非易失性存儲(chǔ)器控制器。
2.如權(quán)利要求1所述的用于系統(tǒng)芯片集成的通用非易失性存儲(chǔ)器控制裝置,其特征在于所述擦寫單元中,當(dāng)進(jìn)行正常的總線寫操作時(shí),擦寫單元將總線信號(hào)中的寫地址、寫數(shù)據(jù)、數(shù)據(jù)大小信息截取出來(lái)并進(jìn)行處理,產(chǎn)生本次總線寫操作所對(duì)應(yīng)的頁(yè)內(nèi)地址、字節(jié)有效信息以及本次頁(yè)寫操作的頁(yè)地址,同時(shí)對(duì)本次頁(yè)寫或連續(xù)寫操作的數(shù)據(jù)總量信息進(jìn)行累加;這些信息連同每次總線寫操作的寫數(shù)據(jù)一起暫存入FIFO和寄存器中,當(dāng)存儲(chǔ)控制與接口單元中的有限狀態(tài)機(jī)需要時(shí)輸出給存儲(chǔ)控制與接口單元。
3.如權(quán)利要求1或2所述的用于系統(tǒng)芯片集成的通用非易失性存儲(chǔ)器控制裝置,其特征在于所述寄存器控制單元中,所述所有寄存器還包括狀態(tài)寄存器,用于反映當(dāng)前控制存儲(chǔ)控制與接口單元中主控狀態(tài)機(jī)的工作狀態(tài)。
4.如權(quán)利要求1或2所述的用于系統(tǒng)芯片集成的通用非易失性存儲(chǔ)器控制裝置,其特征在于所述虛擬時(shí)序模擬寄存器包括讀時(shí)序模擬寄存器、寫時(shí)序模擬寄存器、頁(yè)擦?xí)r序模擬寄存器和全片擦?xí)r序模擬寄存器,當(dāng)作為虛擬非易失性存儲(chǔ)器控制器時(shí)用于模擬訪問(wèn)非易失性存儲(chǔ)器的讀取延時(shí)、寫延時(shí)、頁(yè)擦延時(shí)以及全片擦延時(shí)。
全文摘要
一種用于系統(tǒng)芯片集成的通用非易失性存儲(chǔ)器控制裝置,所述控制裝置包括外部總線接口單元、寄存器控制單元、擦寫單元以及存儲(chǔ)控制與接口單元,其中,外部總線接口單元,用于采集外部總線的控制信號(hào)及數(shù)據(jù),并進(jìn)行分析;寄存器控制單元,用于對(duì)所有寄存器進(jìn)行讀寫控制,寄存器數(shù)據(jù)將傳給存儲(chǔ)控制與接口單元,供存儲(chǔ)控制與接口單元的有限狀態(tài)機(jī)使用;擦寫單元,用于處理外部總線接口單元傳來(lái)總線信號(hào);存儲(chǔ)控制與接口單元包含兩個(gè)有限狀態(tài)機(jī);一個(gè)是寫數(shù)據(jù)寬度轉(zhuǎn)換狀態(tài)機(jī);另一個(gè)是主控狀態(tài)機(jī),用于對(duì)多種非易失性存儲(chǔ)器進(jìn)行讀、寫、擦控制。本發(fā)明提供一種兼容性良好、簡(jiǎn)化設(shè)計(jì)過(guò)程的用于系統(tǒng)芯片集成的通用非易失性存儲(chǔ)器控制裝置。
文檔編號(hào)G06F13/16GK102999453SQ20121038668
公開(kāi)日2013年3月27日 申請(qǐng)日期2012年10月12日 優(yōu)先權(quán)日2012年10月12日
發(fā)明者葛海通, 王鈺博, 馬德, 嚴(yán)曉浪 申請(qǐng)人:杭州中天微系統(tǒng)有限公司