国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

基于FPGA的可靠性E2PROM控制器設(shè)計(jì)

發(fā)布時(shí)間:2010-4-8 17:17    發(fā)布者:我芯依舊
關(guān)鍵詞: FPGA , 可靠性 , 控制器 , 設(shè)計(jì)
1 E2PROM介紹及其應(yīng)用現(xiàn)狀

E2PROM(Electically Erasable Programmable Read-Only Memory),即電可擦除只讀存儲(chǔ)器。它是一種非易欠性存儲(chǔ)器,掉電后數(shù)據(jù)依然存在(一般可保存長(zhǎng)達(dá)100年),讀寫(xiě)耗電極低,擦寫(xiě)時(shí)只需相應(yīng)的電信號(hào)即可,控制方式簡(jiǎn)單,體積小巧。價(jià)格便宜,被廣泛應(yīng)用于對(duì)數(shù)據(jù)存儲(chǔ)安全性及可靠性要求較高的場(chǎng)合,如各類IC卡、智能家電、工業(yè)儀器儀表等。

但E2PROM使用壽命有限,一般為可擦寫(xiě)100萬(wàn)次,即某一位由1寫(xiě)為0或由0寫(xiě)為1的次數(shù)為100萬(wàn)次。一般的系統(tǒng)往往只對(duì)若干同定單元進(jìn)行頻繁的讀寫(xiě),很容易造成這些單元的損壞。而常用的E2PROM存儲(chǔ)系統(tǒng),只要某一個(gè)存儲(chǔ)單元損壞,即使其他絕大部分單元都是完好的,也只能將整個(gè)E2PROM芯片報(bào)廢。這既是對(duì)資源的浪費(fèi),也是系統(tǒng)正常運(yùn)行的潛在風(fēng)險(xiǎn)。

為了延長(zhǎng)E2PROM芯片的壽命,提高存儲(chǔ)系統(tǒng)的可靠性,本文提出一種較可靠的E2PROM控制器沒(méi)計(jì)方法,并在FPGA中用VHDL進(jìn)行了實(shí)現(xiàn)。

2 本文E2PROM控制器的工作原理

在很多領(lǐng)域的存儲(chǔ)系統(tǒng)中,可靠性對(duì)系統(tǒng)安全至關(guān)重要。為了避免系統(tǒng)出錯(cuò),并延長(zhǎng)系統(tǒng)的壽命,本文在適當(dāng)犧牲存儲(chǔ)效率的前提下,著重考慮提高存儲(chǔ)系統(tǒng)的可靠性。

E2PROM存儲(chǔ)器存儲(chǔ)單元的損壞主要是由頻繁的寫(xiě)操作造成的。若要解決問(wèn)題,首先耍避免對(duì)同一單元進(jìn)行頻繁的擦寫(xiě),降低存儲(chǔ)單元損壞的可能;其次當(dāng)某些單元損壞時(shí),讀寫(xiě)控制器應(yīng)該能夠跳過(guò)這些損壞的單元,保證系統(tǒng)能繼續(xù)正常工作。本文設(shè)計(jì)的E2PROM控制器具有這兩個(gè)方面的功能。

本文的設(shè)計(jì)思想是,將整個(gè)EzpROM地址空間劃分為地址分配表區(qū)、備用區(qū)和數(shù)據(jù)區(qū),如圖1所示。


圖1 E2PROM地址空間劃分

在地址分配表區(qū)中只存儲(chǔ)所有數(shù)據(jù)區(qū)或備用區(qū)存儲(chǔ)單元的地址,初始時(shí)與數(shù)據(jù)區(qū)的每個(gè)存儲(chǔ)單元一一對(duì)應(yīng);當(dāng)某個(gè)數(shù)據(jù)所在的單元損壞時(shí)(由于頻繁讀寫(xiě)的是數(shù)據(jù)所在的單元,所以首先考慮這種情況),則改用備用區(qū)某單元(通過(guò)改寫(xiě)對(duì)應(yīng)的數(shù)據(jù)分配表單元存儲(chǔ)的地址,使其指向改用的備用區(qū)某單元來(lái)實(shí)現(xiàn)),以后每次讀寫(xiě)都指向新的存儲(chǔ)單元,這樣就跳過(guò)了損壞的單元;若要避免對(duì)相同單元頻繁擦寫(xiě),則每過(guò)一段合適的時(shí)間對(duì)整個(gè)數(shù)據(jù)分配表進(jìn)行更新,或?qū)φ麄(gè)E2PROM空間重新劃分;判斷某存儲(chǔ)單元是否損壞的方法是,對(duì)該單元進(jìn)行寫(xiě)操作之后立刻回讀,若讀寫(xiě)內(nèi)容一致則該單元正常,否則已損壞;備用區(qū)的首地址存儲(chǔ)該區(qū)域未使用部分的開(kāi)始地址,以方便數(shù)據(jù)單元損壞時(shí)使用該單元,每當(dāng)有數(shù)據(jù)單元損壞后使用了該單元,備用區(qū)首地址則指向下一單元。

這樣,E2PROM中保存數(shù)據(jù)區(qū)域的損壞單元都能被跳過(guò),只有保存地址的地址分配表和備用區(qū)首地址單元的損壞對(duì)系統(tǒng)的正常運(yùn)行有致命的影響。而備用區(qū)首地址單元的寫(xiě)頻率是最高的,保存數(shù)據(jù)的單元每出現(xiàn)一個(gè)損壞單元就要對(duì)其改寫(xiě)一次。因此,理論上當(dāng)有100萬(wàn)個(gè)單元(1MB)因?qū)懖僮鲹p壞時(shí),備用區(qū)首地址單元的壽命也即耗盡。但目前較常用的E2PROM芯片的容量最大也就若干MB,如果出現(xiàn)近100萬(wàn)個(gè)損壞單元,芯片早已應(yīng)該報(bào)廢。所以,理論上該方法已足夠可靠。

3 系統(tǒng)總體設(shè)計(jì)

本文E2PROM存儲(chǔ)芯片選用ATMEL公司的AT24C01,F(xiàn)PGA芯片采用Altera公司的CycIone II系列。

系統(tǒng)的總體框圖如圖1所示。系統(tǒng)主要分為FPGA部分和E2PROM部分。FPGA接受外界控制信號(hào)、數(shù)據(jù)及時(shí)鐘等信號(hào),并對(duì)E2PROM進(jìn)行控制。E2PROM根據(jù)FPGA的控制信號(hào)進(jìn)行相應(yīng)的讀寫(xiě)操作。

AT24C01內(nèi)部數(shù)據(jù)單元組織方式為128x8位。將其分為三部分:前48x8位作為地址分配表區(qū),地址范圍0000000~0101111;中間32x8位作為備用區(qū),地址范圍為0110000~1001111;后48x8位為數(shù)據(jù)區(qū)。地址范圍為1010000~1111111。地址空間劃分說(shuō)明如圖2所示。
本文的E2PROM控制器在FPGA中用VHDL語(yǔ)言進(jìn)行設(shè)計(jì)。用有限狀態(tài)機(jī)技術(shù)實(shí)現(xiàn)。


圖2系統(tǒng)總體結(jié)構(gòu)

4 AT24C01 E2PROM讀寫(xiě)控制原理

4.1 I2C總線工作原理

AT24C01采用簡(jiǎn)單的雙向兩線串行總線PC總線標(biāo)準(zhǔn)。I2c總線由數(shù)據(jù)線SDA和時(shí)鐘線SCL構(gòu)成,可發(fā)送和接收數(shù)據(jù)。其數(shù)據(jù)傳輸過(guò)程中共有四種基本類型信號(hào):

(1)開(kāi)始信號(hào),當(dāng)SCL為高電平時(shí)SDA由高電平向低電平跳變,表明傳送數(shù)據(jù)開(kāi)始;
(2)結(jié)束信號(hào),當(dāng)SCL為高電平時(shí)SDA由低電平向高電平跳變,表明傳送數(shù)據(jù)結(jié)束;
(3)數(shù)據(jù)信號(hào)。即SDA線上傳輸?shù)臄?shù)據(jù),當(dāng)SCL為高電平時(shí)有效,不允許改變,當(dāng)SCL為低電平無(wú)效。允許改變;
(4)應(yīng)答信號(hào),接收端正確接收到8位數(shù)據(jù)后,向發(fā)送端發(fā)出特定的低電平脈沖,表示已收到數(shù)據(jù)。

4.2兩線E2PROM字節(jié)讀寫(xiě)工作原理

兩線E2PROM的寫(xiě)操作方式分為字節(jié)寫(xiě)和按頁(yè)寫(xiě)。讀操作方式分為字節(jié)讀和順序讀。本文僅使用以最基本的讀寫(xiě)方式——字節(jié)寫(xiě)和字節(jié)讀方式為例說(shuō)明設(shè)計(jì)過(guò)程,其它讀寫(xiě)方式的設(shè)計(jì)過(guò)程與此相似。

(1)E2PROM的字節(jié)寫(xiě)操作。在控制器對(duì)E2PROM發(fā)送啟動(dòng)信號(hào)之后,緊接著發(fā)送一個(gè)8位的寫(xiě)控制字。控制字的組成包括4位12C特征碼(E2PROM一般為“1010”)、3位芯片地址碼(單片E2PROM為“000”)以及1位讀寫(xiě)狀態(tài)位(讀操作為‘1’,寫(xiě)操作為‘0’)。 E2PROM正確接收到寫(xiě)控制字后,發(fā)送l位低電平的應(yīng)答信號(hào)。控制器緊接著發(fā)送E2PROM存儲(chǔ)單元地址和要寫(xiě)入的數(shù)據(jù)。E2PROM每次止確地接收到一個(gè)字節(jié)的數(shù)據(jù)都要發(fā)送一個(gè)應(yīng)答信號(hào)返回給控制器。隨后控制器發(fā)送停止信號(hào),對(duì)E2PROM寫(xiě)一個(gè)字節(jié)的操作完成。

(2)E2PROM的字節(jié)讀操作。E2PROM的讀操作包括寫(xiě)地址和讀數(shù)據(jù)兩個(gè)階段。控制器首先發(fā)送一個(gè)啟動(dòng)信號(hào)和8位的寫(xiě)控制字節(jié)(讀些狀態(tài)位R/W=‘0’),E2PROM正確接收到控制字后發(fā)送1位低電平的應(yīng)答信號(hào),之后控制器發(fā)送8位的E2PROM地址。通過(guò)寫(xiě)操作設(shè)置E2PROM存儲(chǔ)單元地址。接著控制器再發(fā)送一個(gè)啟動(dòng)信號(hào)和讀控制字節(jié)(此時(shí)R/W=‘1’),啟動(dòng)讀操作,E2PROM收到信息后發(fā)送1位的低電平應(yīng)答信號(hào),然后將指定單元的數(shù)據(jù)發(fā)送到SDA線上,控制器正確收到數(shù)據(jù)后返回一個(gè)低電平的應(yīng)答信號(hào)給E2PROM,隨后發(fā)送停止信號(hào),字節(jié)讀操作結(jié)束。

5 可靠性E2PROM控制器設(shè)計(jì)

本文用VHDL語(yǔ)言,以有限狀態(tài)機(jī)的方式在實(shí)現(xiàn)FPGA對(duì)E2PROM的控制。對(duì)于一般的讀寫(xiě)過(guò)程,只需要7個(gè)基本狀態(tài)便可實(shí)現(xiàn),即:空閑,開(kāi)始。寫(xiě)控制字,寫(xiě)地址,寫(xiě)數(shù)據(jù),讀數(shù)據(jù),停止。

但由于本文的讀寫(xiě)過(guò)程較為復(fù)雜,雖然基本的狀態(tài)仍為這7個(gè),但如果僅用這7種狀態(tài),會(huì)使得程序流程異常繁雜。考慮到每次讀寫(xiě)中都首先要從地址分配表中讀出數(shù)據(jù)地址,然后才在數(shù)據(jù)地址讀寫(xiě)數(shù)據(jù),這兩個(gè)階段雖然過(guò)程相近,但狀態(tài)轉(zhuǎn)換條件不同,將它們分離開(kāi)來(lái)能使?fàn)顟B(tài)轉(zhuǎn)換和程序流程更清晰。所以本系統(tǒng)對(duì)這兩個(gè)階段的狀態(tài)分開(kāi)實(shí)現(xiàn),用14個(gè)狀態(tài)實(shí)現(xiàn)整個(gè)讀寫(xiě)過(guò)程,即:S0空閑,S1開(kāi)始,S2控制字(寫(xiě)操作)。s3寫(xiě)地址,s4開(kāi)始,S5控制字(讀操作),S6讀數(shù)據(jù)(從地址分配表中讀取數(shù)據(jù)地址),S7結(jié)束(查表結(jié)束,此后為數(shù)據(jù)讀寫(xiě)過(guò)程),S8開(kāi)始,S9寫(xiě)控制字,S10寫(xiě)地址,Sll寫(xiě)數(shù)據(jù),S12讀數(shù)據(jù),S13停止。其中Sl到S7為查地址分配表的過(guò)程.S8到S13為進(jìn)行數(shù)據(jù)讀寫(xiě)的過(guò)程。整個(gè)過(guò)程的狀態(tài)轉(zhuǎn)換過(guò)程如圖3所示。

本文設(shè)計(jì)的E2PROM采用的方法需要首先對(duì)E2PROM芯片進(jìn)行格式化,即對(duì)整個(gè)E2PROM存儲(chǔ)空間進(jìn)行劃分,建立地址分配表。這個(gè)過(guò)程為基本寫(xiě)操作的循環(huán),可以嵌入系統(tǒng)讀寫(xiě)過(guò)程中。

因此,整個(gè)系統(tǒng)共有3個(gè)主要進(jìn)程:時(shí)鐘產(chǎn)生進(jìn)程,狀態(tài)轉(zhuǎn)換進(jìn)程和狀態(tài)控制進(jìn)程。

1、時(shí)鐘產(chǎn)生進(jìn)程,負(fù)責(zé)產(chǎn)生滿足系統(tǒng)所需的各種時(shí)鐘,主要是E2PROM的SCL,并且為了方便方便按照時(shí)鐘要求讀寫(xiě)數(shù)據(jù),將SCL周期內(nèi)劃分為4個(gè)子周期。工作在1.8V、2.5V和2.7v時(shí),E2PROM的工作頻率為100KHz。本文采用100M的外
部晶振產(chǎn)生外部時(shí)鐘clk,則需進(jìn)行1000分頻來(lái)產(chǎn)生E2PROM所需的SCL時(shí)鐘信號(hào)。該進(jìn)程如下:

CLK_GEN:PROCESS(clk)
BEGIN
IF clk’EVENT AND clk=’1’THEN
IF ncount=499 THEN
ncount<=0;sclsig<=NOT sclsig;
ELSE ncount<=ncount+l;
END IF:
END IF;
sel<=selsig;
END PROCESS;

2、狀態(tài)轉(zhuǎn)換進(jìn)程,負(fù)責(zé)在適當(dāng)?shù)臅r(shí)機(jī)將狀態(tài)機(jī)轉(zhuǎn)入下一狀態(tài),代碼如下:

STATE_TRANS:PROCESS(sclsig)
BEGIN
IF sclsig’EVENT AND sclsig=’0’THEN
curstate<=nextstate;
END IF;
END PROCESS

3、狀態(tài)控制進(jìn)程,負(fù)責(zé)在格式化及讀寫(xiě)過(guò)程中各種信號(hào)的設(shè)置,這是整個(gè)系統(tǒng)最復(fù)雜也是最核心的部分,其本質(zhì)就是系統(tǒng)狀態(tài)轉(zhuǎn)換圖的VHDL代碼實(shí)現(xiàn)。但其過(guò)程相當(dāng)繁瑣,在這里只能將這個(gè)進(jìn)程代碼的主要部分展示出來(lái),然后對(duì)各狀態(tài)的具體操作進(jìn)行適當(dāng)?shù)恼f(shuō)明。

本進(jìn)程的主要代碼如下:

STATE_CTR:PROCESS(clk)
BEGIN
IF clk’EVENT AND clk=’1’THEN
CASE curstate IS
WHEN S0=>
IF rwf/="00"
THEN nextstate<=S1;
END IF;
......
WHEN S13=>
IF sclsig=O AND ncount=499
THEN sda<=’0’:
ELSIF sclsig=1 AND nclk=124
THEN sda<=’1’;nextstate<=sO;
END IF;
END CASE;
END IF;
END PROCESS;


圖3系統(tǒng)狀態(tài)轉(zhuǎn)換圖

對(duì)各狀態(tài)的說(shuō)明如下:

S0:空閑狀態(tài),檢測(cè)rwf信號(hào)輸入。如果為格式化命令(“l(fā)l”)則轉(zhuǎn)入S8,如果為讀操作或?qū)懖僮髅?分別為“0l”和“10”)則轉(zhuǎn)入S1。
S1:產(chǎn)生開(kāi)始信號(hào)。完成后轉(zhuǎn)入入S2。
S2:向SDA線輸出寫(xiě)操作控制字。完成后轉(zhuǎn)入S3。
S3:寫(xiě)地址(由外部輸入)。即所需操作的數(shù)據(jù)單元對(duì)應(yīng)在地址分配表中的地址。完成后轉(zhuǎn)入S4。
S4:產(chǎn)生開(kāi)始信號(hào)。完成后轉(zhuǎn)入S5。
S5:向SDA線讀操作控制字。完成后轉(zhuǎn)入S6。
S6:讀取數(shù)據(jù),此處為所需數(shù)據(jù)所在的地址。完成后轉(zhuǎn)入s7。
S7:產(chǎn)生結(jié)束信號(hào)。完成后轉(zhuǎn)入S8。至此查表過(guò)程結(jié)束,此后為實(shí)際讀寫(xiě)過(guò)程。
s8:產(chǎn)生開(kāi)始信號(hào)。完成后轉(zhuǎn)入S9。
S9:輸出控制字。如果在讀操作過(guò)程中且為第二次進(jìn)入該狀態(tài),則向SDA線輸出讀操作控制字,完成后轉(zhuǎn)入S12;否則輸出寫(xiě)操作控制字,完成后轉(zhuǎn)入S1O。
S1O:寫(xiě)地址(即S6狀態(tài)中讀取的數(shù)據(jù))。完成后,如果為讀操作則轉(zhuǎn)入S11,否則轉(zhuǎn)入S8。
S11:寫(xiě)數(shù)據(jù),向SDA線寫(xiě)外部提供的數(shù)據(jù)。完成后轉(zhuǎn)入S13。
S12:讀數(shù)據(jù),完成后轉(zhuǎn)入S13。
S13:產(chǎn)生結(jié)束信號(hào)。如果處于讀操作結(jié)束狀態(tài),則轉(zhuǎn)入SO;如果處于寫(xiě)操作結(jié)束狀態(tài)并且沒(méi)有對(duì)數(shù)據(jù)回讀以檢查所寫(xiě)單元是否正常。則轉(zhuǎn)入S6進(jìn)行回讀;如果處于寫(xiě)操作回讀結(jié)束狀態(tài),無(wú)誤則轉(zhuǎn)入S0,有誤則轉(zhuǎn)入S1讀備用區(qū)首地址;如果是對(duì)備用區(qū)寫(xiě)操作回讀有誤,則地址加l后進(jìn)入S6寫(xiě)下一地址,直至能正確寫(xiě)入,之后將地址加1寫(xiě)入備用區(qū)首地址.然后轉(zhuǎn)入S0;如果處于格式化過(guò)程中,則地址加1后轉(zhuǎn)入S8,直到格式化結(jié)束轉(zhuǎn)入S0。

6 仿真結(jié)果和結(jié)論


圖4寫(xiě)操作功能仿真的部分波形


圖5讀操作功能仿真的部分波形

在Quartos II軟件中對(duì)本文設(shè)計(jì)的E2PROM控制器進(jìn)行了功能仿真。寫(xiě)操作和讀操作功能仿真的部分波形如圖4和圖5所示。根據(jù)仿真波形可知,其結(jié)果與預(yù)期基本一致。在工程中的成功應(yīng)用也證明了本設(shè)計(jì)的正確性。

本文作者創(chuàng)新點(diǎn):對(duì)E2PROM存儲(chǔ)空間進(jìn)行適當(dāng)?shù)膭澐郑灶愃浦羔樀姆绞竭M(jìn)行讀寫(xiě)操作,減少了系統(tǒng)對(duì)特定存儲(chǔ)單元的依賴,提高了系統(tǒng)的可靠性。


作者:接輝,顧文燦      來(lái)源:《微計(jì)算機(jī)信息》(嵌入式與SOC)2009年第7-2期
本文地址:http://www.qingdxww.cn/thread-10268-1-1.html     【打印本頁(yè)】

本站部分文章為轉(zhuǎn)載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé);文章版權(quán)歸原作者及原出處所有,如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,我們將根據(jù)著作權(quán)人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評(píng)論 登錄 | 立即注冊(cè)

廠商推薦

  • Microchip視頻專區(qū)
  • Dev Tool Bits——使用MPLAB® Discover瀏覽資源
  • Dev Tool Bits——使用條件軟件斷點(diǎn)宏來(lái)節(jié)省時(shí)間和空間
  • Dev Tool Bits——使用DVRT協(xié)議查看項(xiàng)目中的數(shù)據(jù)
  • Dev Tool Bits——使用MPLAB® Data Visualizer進(jìn)行功率監(jiān)視
  • 貿(mào)澤電子(Mouser)專區(qū)

相關(guān)在線工具

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號(hào) | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美亚洲另类在线观看 | 国内高清自拍 | 日韩毛片免费线上观看 | 在线色| 人人干人人艹 | 日本vr超清在线视频免费 | 国产精品国产三级国产an | 在哪里看黄 | 91桃色国产线观看免费 | sdmua-011| 香蕉视频亚洲 | 亚洲免费一级视频 | 又黄又粗 | 亚洲精品国精品久久99热 | 青青草国产在线观看 | 国产一级片在线播放 | 国产成人亚洲精品乱码在线观看 | 成人精品视频在线观看 | 好爽毛片一区二区三区四区 | 国产高清精品毛片基地 | 日韩免费视频一区二区 | 亚洲国产一区二区在线 | 美女国产在线观看免费观看 | 亚洲一级片免费 | 国产福利一区二区在线观看 | 成年女人视频播放免费观看 | 成人精品 | 四虎影视成人永久在线播放 | 在线观看色 | 99在线免费观看视频 | 国产精品高清一区二区三区 | 久久久噜噜噜久久久 | 特级全黄一级毛片视频 | 一级有奶水毛片免费看 | 国产成人午夜性a一级毛片 国产成人午夜视频 | 四虎影视成人精品 | 国产成人亚洲精品乱码在线观看 | 欧美日韩一区二区三区自拍 | 日本一区视频在线播放 | 四虎午夜影院 | 啊~用力cao我cao死我 |