石永慧
(山西職業(yè)技術(shù)學(xué)院,山西 太原030006)
EEPROM ,全稱為Electrically Erasable Programmable Read Only Memory[1]。它是一種只讀存儲器,帶電之后,可進(jìn)行擦除,亦可進(jìn)行編程。這種存儲芯片具有的特點是可擦可編程,并且在掉電之后數(shù)據(jù)不丟失。存儲器的特性決定了它的廣泛應(yīng)用。從市場規(guī)模來看,EEPROM存儲器芯片主要應(yīng)用于消費(fèi)電子、工業(yè)以及汽車市場等領(lǐng)域。
消費(fèi)電子是EEPROM存儲器芯片需求量最大的細(xì)分市場,其次是汽車電子市場和工業(yè)電子市場,2018年全球消費(fèi)電子EEPROM存儲器芯片和汽車EEPROM存儲器芯片市場需求量分別達(dá)到了21.63億顆和17.29億顆[2]。隨著5G智能手機(jī)、通訊、計算機(jī)及周邊等消費(fèi)電子的發(fā)展、汽車產(chǎn)品電子化以及工業(yè)電子需求的提升,EEPROM存儲器芯片市場在不斷增長,因此,對存儲器數(shù)據(jù)的讀取速度也成為了一個亟待解決的問題。針對這一問題,本文以EEPROM存儲器在工業(yè)領(lǐng)域中的應(yīng)用,提出了一種加快EEPROM存儲器讀寫方法,提高存取時間,解決了工業(yè)中時間余量問題,經(jīng)過實驗驗證,該方法可行有效。
某嵌入式壓力處理傳感器軟件的定時周期為12.5 ms,在EEPROM存儲器存儲故障字時,由于存儲數(shù)據(jù)讀取時間太久,不滿足時間余量的要求。為了縮短故障字?jǐn)?shù)據(jù)存取時間,滿足時間余量的要求,針對這一問題,探究影響故障字?jǐn)?shù)據(jù)存儲時間的因素,本文做了如下探究:
1) 使用同一類型的EEPROM存儲器芯片,在不同的產(chǎn)品中燒注相同的故障字存儲軟件,數(shù)據(jù)存儲耗時時間是否存在差異;
2) 故障字?jǐn)?shù)據(jù)存儲時間久和存儲芯片本身特性是否相關(guān);
3) 是否存在其他的芯片影響了數(shù)據(jù)存儲時間?;谝陨蠁栴},本文做了相關(guān)的實驗,提出了縮短故障字?jǐn)?shù)據(jù)存取時間的方法,并驗證了方法的準(zhǔn)確性和可行性。
結(jié)合上述提出的問題,考慮到單一變量的原則,本文存儲的故障字?jǐn)?shù)據(jù)均是相同的,在此基礎(chǔ)上,本文進(jìn)行了兩組實驗,探究并分析影響故障字?jǐn)?shù)據(jù)存儲時間的原因。兩組實驗的產(chǎn)品硬件狀態(tài)均相同,通過兩組實驗得出數(shù)據(jù),分析存儲器存儲數(shù)據(jù)耗時原因,實現(xiàn)存儲器快速存儲數(shù)據(jù)。
對某嵌入式壓力處理傳感器軟件進(jìn)行實驗,該產(chǎn)品的硬件狀態(tài)如圖1所示。
圖1 產(chǎn)品硬件狀態(tài)
由圖1可以看到,該嵌入式壓力處理傳感器中EEPROM存儲器與收發(fā)器相連通,收發(fā)器接收到故障字?jǐn)?shù)據(jù)后存儲于EEPROM存儲器中。
2.2.1 原軟件設(shè)計方法
原軟件設(shè)計中,存儲數(shù)據(jù)分為兩部分,一部分是索引信息,存入EEPROM存儲器的第0頁;另一部分是故障字信息,從第1頁開始存儲。在索引信息存儲之后,延時20 000次,之后進(jìn)行故障信息的存儲。在每次存儲索引信息或者故障信息數(shù)據(jù)時,首先將片選信號置低,將故障信息存入鎖存器,之后存儲器進(jìn)行內(nèi)部搬運(yùn),將數(shù)據(jù)搬運(yùn)至存儲器,搬運(yùn)完成后,片選信號置高,存儲數(shù)據(jù)流程結(jié)束。
2.2.2 實驗測試
1) 測試時間:該狀態(tài)下產(chǎn)品的運(yùn)行時間進(jìn)行測量,測試時間如表1所示。
表1 某嵌入式壓力傳感器軟件在不同測試時機(jī)的測試時間
由表1可知,整個定時周期耗時11.37 ms,不滿足30%時間余量。
同時,對其他三個產(chǎn)品的周期運(yùn)行時間進(jìn)行了測試,測試時間如表2所示。
表2 其他產(chǎn)品不同測試時機(jī)的測試時間
由表1和表2得知,燒注相同的故障字頁寫軟件,某嵌入式壓力傳感器軟件的索引信息存儲操作時間明顯高于其他產(chǎn)品的索引信息存儲操作。
2) 脈沖分析:因為索引存儲操作在第一次讀取RDY狀態(tài)時,EEPROM仍在片選,并沒有開始進(jìn)行內(nèi)部搬運(yùn)操作,主設(shè)備讀取的RDY狀態(tài)并非實際的EEPROM返回的狀態(tài),而是獲取了原來的SPISOMI引腳脈沖。此時的SPISOMI引腳脈沖為收發(fā)器的高組態(tài)(收發(fā)器的高組態(tài)為高),故造成了一種EEPROM正在進(jìn)行存儲操作的假象。在第一次獲取完RDY狀態(tài)時,EEPROM無片選,內(nèi)部開始存儲操作,進(jìn)入新一輪讀取RDY狀態(tài),直到存儲操作結(jié)束,RDY狀態(tài)為空閑。
3) 時序圖:原軟件設(shè)計方法的時序圖如圖2所示。
圖2 原軟件設(shè)計的時序圖
由圖2可知,該狀態(tài)下相當(dāng)于既正常等待了/RDY,又加了延時delay(20 000),于是,在原軟件設(shè)計下存儲一次數(shù)據(jù)所用的時間為3.77 ms+2.97 ms=6.74 ms,時間超長。
2.3.1 設(shè)計方法
改進(jìn)后的軟件設(shè)計,數(shù)據(jù)存儲實現(xiàn)流程如圖3所示。
圖3 節(jié)目監(jiān)測流程圖
從圖3(a)可以看出,存儲數(shù)據(jù)分為兩部分,一部分是索引信息,存入EEPROM存儲器的第0頁;另一部分是故障字信息,從第1頁開始存儲。在索引信息存儲之后,沒有延時,索引信息存儲結(jié)束后,立即進(jìn)行故障信息的存儲。由圖3(b)可知,每次存儲數(shù)據(jù)時,片選信號置低,將故障信息存入鎖存器,片選信號置高,之后存儲器進(jìn)行內(nèi)部搬運(yùn),將數(shù)據(jù)搬運(yùn)至存儲器,搬運(yùn)完成后,存儲數(shù)據(jù)流程結(jié)束。
2.3.2 實驗測試
1) 測試時間:該方法下產(chǎn)品的運(yùn)行時間進(jìn)行測量,測試時間如表3所示。
該狀態(tài)的軟件刪除了冗余的delay(20 000)的運(yùn)行時間,在最后一次執(zhí)行存儲操作時,內(nèi)部搬運(yùn)時間可以利用時間余量來完成,故主設(shè)備不再讀取的RDY狀態(tài)。鎖存器寫操作結(jié)束即可。
2) 脈沖圖:改進(jìn)后軟件設(shè)計的SPI接口的4個引腳的脈沖如圖4所示。
圖4 動態(tài)環(huán)境監(jiān)測流程圖
圖4 數(shù)據(jù)存儲波形圖
由圖4可以看出,在開始進(jìn)行索引頁存儲操作和故障頁存儲操作時,片選出現(xiàn)一個上升沿,EEPROM開始進(jìn)行內(nèi)部存儲操作。獲取RDY狀態(tài),判斷存儲操作是否結(jié)束。當(dāng)存儲操作結(jié)束時,RDY狀態(tài)為空閑,RDY 為0。
3) 時序圖:改進(jìn)后的軟件對應(yīng)時序圖如圖5所示。
圖5 最終狀態(tài)下時序圖
由圖5可以看出,由于某嵌入式壓力傳感器軟件一個周期時間為12.5 ms,常溫狀態(tài)下,前一個周期第二次寫到第二個周期第一次寫時間間隔約為9 ms,為保證軟件30%時間余量,第二次寫之后不再判斷/RDY。經(jīng)測試,高低溫狀態(tài)下的運(yùn)行時間與常溫下相差不大,時間余量符合要求,索引信息和故障信息均可正確進(jìn)行存儲。
在不連接傳感器的情況下,周期運(yùn)行時間為8.4 ms,比原來減少了2.97 ms;在連接傳感器的情況下,周期運(yùn)行時間為4.8 ms,符合余量要求。
1) 時序圖:產(chǎn)品1原始軟件設(shè)計下的時序圖如圖6所示。
圖6 產(chǎn)品1原始軟件設(shè)計下時序圖
產(chǎn)品1原始軟件設(shè)計和某嵌入式壓力傳感器軟件原始設(shè)計方法相同,產(chǎn)品1原始設(shè)計時序圖如圖6所示,產(chǎn)品1軟件在CPU把數(shù)據(jù)存入EEPROM的寄存器(臨時)后,也沒有及時把/CS置1,由于發(fā)數(shù)據(jù)存儲指令完成后繼續(xù)發(fā)冗余指令時引腳處于高阻態(tài)并被下拉,導(dǎo)致獲取讀值為0,軟件判斷EEPROM已經(jīng)寫完,結(jié)束獲取/RDY信號循環(huán),將/CS置1,此時EEPROM真正開始將寄存器中的數(shù)據(jù)寫入存儲器地址(長期)。從EEPROM讀取數(shù)據(jù)發(fā)現(xiàn)并沒有寫入,于是軟件加delay(20 000),使EEPROM完成存儲操作。
按照更改后的軟件,對產(chǎn)品1進(jìn)行測試驗證,由采集到的脈沖可以發(fā)現(xiàn),在索引頁內(nèi)部存儲操作執(zhí)行結(jié)束后,馬上進(jìn)入故障存儲操作,獲取SOMI上的數(shù)據(jù)進(jìn)行解析,數(shù)據(jù)正確,且所有數(shù)據(jù)正常存儲操作均可完整執(zhí)行。故無需再進(jìn)行delay(20 000)的操作。
在某嵌入式壓力傳感器的硬件上增加下拉電阻,將設(shè)計的原軟件注入該嵌入式壓力傳感器中,對引腳脈沖進(jìn)行分析。
4.2.1 SPI接口的引腳脈沖
由于存在下拉電阻,故主設(shè)備認(rèn)為/RDY=0,出循環(huán),造成了時間短的假象。之后通過軟件delay(20 000),實現(xiàn)EEPROM寫入存儲器地址,用時3.5 ms。
另外,將硬件狀態(tài)更改為DSP只連接EEPROM,燒注不同的軟件,均證明上述情況及結(jié)論。對不同硬件狀態(tài)加下拉電阻,燒注不同的軟件,不同狀態(tài)下均可證明上述結(jié)果及以下結(jié)論。
測試過程中發(fā)現(xiàn),國產(chǎn)EEPROM芯片比進(jìn)口芯片存儲速度慢一些,原狀態(tài)軟件中的dealy(20 000)并不適合所有產(chǎn)品。
本文通過對原軟件設(shè)計采集數(shù)據(jù)的分析,找出影響EEPROM存儲數(shù)據(jù)耗時的因素,通過對原軟件設(shè)計方法的改進(jìn),并且對該方法進(jìn)行驗證。實驗結(jié)果證明,使用該方法進(jìn)行數(shù)據(jù)存儲,時間大大縮短了,滿足了時間余量,并且數(shù)據(jù)正確有效。比原始的算法更加快速、高效,并且通過實驗測試結(jié)果證明了該算法的合理性和可行性。