摘 要: 通過(guò)在MEMS信號(hào)處理電路中設(shè)計(jì)一個(gè)異步結(jié)構(gòu)的FIFO,,可以有效地降低系統(tǒng)對(duì)MEMS的頻繁訪問(wèn),。設(shè)計(jì)一個(gè)具有多種工作模式的FIFO,可以滿足一些特殊的姿態(tài)檢測(cè)需求,,更好地滿足系統(tǒng)智能化操作需要,。實(shí)現(xiàn)了一個(gè)具體可行的方案,可以實(shí)際應(yīng)用到各種MEMS電路模塊中,。
關(guān)鍵詞: MEMS,;智能終端;FIFO,;同步雙端口RAM
MEMS傳感器是采用微電子和微機(jī)械加工技術(shù)制造出來(lái)的新型傳感器,。目前,加速度計(jì)已普遍用于智能終端(如智能手機(jī))中,未來(lái)幾年,,陀螺儀也將普遍應(yīng)用到智能終端中,。同時(shí),組合傳感器,,如3軸加速度計(jì)+3軸磁力計(jì),3軸加速度計(jì)+3軸陀螺儀,,甚至9軸組合傳感器未來(lái)都會(huì)得到廣泛應(yīng)用,,相應(yīng)地也會(huì)帶來(lái)數(shù)據(jù)處理量的增加。目前的加速度計(jì),、陀螺儀和磁力計(jì)等MEMS電路的數(shù)據(jù)輸出速率一般在幾赫茲到幾百赫茲之間,。主系統(tǒng)處理單元一般通過(guò)串行通信接口I2C或者SPI訪問(wèn)MEMS電路來(lái)獲取數(shù)據(jù),除了需要實(shí)時(shí)響應(yīng)的一些數(shù)據(jù)以外,,主系統(tǒng)單元有時(shí)可能不希望頻繁地用串行接口去檢測(cè)MEMS電路狀態(tài),,看內(nèi)部數(shù)據(jù)是否已經(jīng)準(zhǔn)備好,然后讀取有效數(shù)據(jù),,因?yàn)檫@樣會(huì)降低整個(gè)系統(tǒng)的工作效率,。對(duì)于類似于智能手機(jī)的智能終端而言,隨著功能越來(lái)越強(qiáng)大,,系統(tǒng)處理的任務(wù)也越來(lái)越多,,如何平衡將是一個(gè)問(wèn)題。
針對(duì)上述情況,,本文設(shè)計(jì)了一個(gè)48 bit數(shù)據(jù)寬度,、64級(jí)存儲(chǔ)深度的異步FIFO(First In First Out),可以有效解決主系統(tǒng)單元頻繁訪問(wèn)MEMS電路的問(wèn)題,。這個(gè)FIFO具有旁路模式,、連續(xù)模式、先入先出模式和中斷模式4種工作模式,,在中斷模式下,,通過(guò)設(shè)置不同的條件,可以在不需要主系統(tǒng)單元干涉的情況下自動(dòng)抓取一些特殊狀態(tài)的數(shù)據(jù),。這樣可以節(jié)省很多系統(tǒng)資源,。
1 FIFO系統(tǒng)設(shè)計(jì)
傳統(tǒng)異步FIFO[1-2]采用觸發(fā)器同步異步輸入信號(hào)來(lái)降低出現(xiàn)亞穩(wěn)態(tài)的幾率,然后地址通過(guò)格雷碼編碼方式來(lái)消除地址多位變化導(dǎo)致的空滿狀態(tài)誤判,,需要用到真正的雙端口RAM,。采用觸發(fā)器同步雖然可以降低亞穩(wěn)態(tài)的幾率,但也帶來(lái)了時(shí)序分析和綜合后仿真的難點(diǎn),。格雷碼帶來(lái)了設(shè)計(jì)的復(fù)雜性,,可以通過(guò)時(shí)序邏輯的設(shè)計(jì)方式,在布局布線時(shí)插入時(shí)鐘樹來(lái)避免空滿狀態(tài)的不定。同時(shí)真正的雙端口RAM不是每個(gè)集成電路工藝線都支持的,,采用偽雙端口RAM更實(shí)際,,也能使設(shè)計(jì)適用范圍更廣泛。
整個(gè)系統(tǒng)實(shí)現(xiàn)還要包括I2C和SPI接口模塊,、信號(hào)處理模塊以及中斷檢測(cè)模塊,,本文僅僅描述FIFO模塊。FIFO模塊的實(shí)現(xiàn)框圖如圖1所示,。寫時(shí)鐘是MEMS數(shù)據(jù)采樣時(shí)鐘,,讀時(shí)鐘是串口I2C或者SPI讀數(shù)據(jù)時(shí)鐘。為了消除讀寫同時(shí)進(jìn)行產(chǎn)生的沖突,,增加了一個(gè)寫使能信號(hào),,其與寫時(shí)鐘同時(shí)由內(nèi)部邏輯產(chǎn)生,寫時(shí)鐘比讀時(shí)鐘優(yōu)先級(jí)高,。這樣可能會(huì)引入一個(gè)問(wèn)題,,那就是讀寫恰好同時(shí)進(jìn)行的時(shí)候,讀的數(shù)據(jù)依然是上一個(gè)數(shù)據(jù),,但可以設(shè)置為先入先出模式,,數(shù)據(jù)滿了之后不再更新,這樣就不會(huì)有這個(gè)問(wèn)題,。模式設(shè)置和水印閾值設(shè)置通過(guò)串口I2C或者SPI寫入,。同步雙端口RAM采用SMIC 0.18 m工藝Memory Compiler綜合出來(lái)的64×48 bit的IP模塊,這是一個(gè)偽雙端口RAM,,讀寫時(shí)鐘是共用的,。48 bit數(shù)據(jù)寬度可以同時(shí)存儲(chǔ)3個(gè)軸的MEMS檢測(cè)數(shù)據(jù),每個(gè)軸16 bit數(shù)據(jù)寬度,,基本可以滿足目前的MEMS精度要求,。
2 功能模塊設(shè)計(jì)
2.1 讀地址產(chǎn)生邏輯
讀地址產(chǎn)生邏輯,根據(jù)工作模式和FIFO的狀態(tài),,生成讀地址指針,。假如讀時(shí)鐘有效,并且FIFO不為空,,則讀地址加1,,假如FIFO為空,則讀地址保持不變,。在連續(xù)工作模式下,,由于數(shù)據(jù)不斷滾動(dòng)更新,當(dāng)數(shù)據(jù)滿的情況下,,假如寫入有效,,讀地址加1,,保證讀地址指針指向最先寫入的數(shù)據(jù)地址。
2.2 寫地址產(chǎn)生邏輯
假如寫入有效,,寫地址指針自動(dòng)加1,。通過(guò)控制RAM時(shí)鐘,在先入先出模式下,,假如FIFO滿,,終止寫入新的數(shù)據(jù)到RAM中,因此寫地址指針不再更新,,除非重新使能整個(gè)FIFO模塊,。
2.3 狀態(tài)生成邏輯
FIFO的狀態(tài)可以直接用寫地址指針減去讀地址指針來(lái)獲得,但也需要考慮到當(dāng)FIFO滿的時(shí)候,,讀地址指針和寫地址指針是指向同一個(gè)地址的,這時(shí)候減出來(lái)數(shù)據(jù)就為0了,。因此需要增加中間寄存器,,在未滿的時(shí)候輸出減法器的數(shù)值,在滿的時(shí)候輸出全1數(shù)值,。滿和空狀態(tài)信號(hào),、水印標(biāo)記信號(hào)和FIFO停止信號(hào)都由時(shí)序邏輯生成,滿信號(hào)邏輯電路圖如圖2所示,,用RAM時(shí)鐘的反相信號(hào)來(lái)觸發(fā),。水印標(biāo)記可以通過(guò)設(shè)置水印的閾值來(lái)獲得,閾值范圍可以是0~63,。當(dāng)FIFO的狀態(tài)值超過(guò)設(shè)置的閾值,,就產(chǎn)生水印標(biāo)記中斷;當(dāng)FIFO的狀態(tài)小于設(shè)置的閾值,,水印標(biāo)記中斷就清除,,這可以讓主系統(tǒng)根據(jù)應(yīng)用場(chǎng)合靈活選擇。FIFO停止信號(hào)有兩種情況,,在先入先出模式下,,滿了之后產(chǎn)生FIFO停止信號(hào),RAM數(shù)據(jù)停止更新,;在中斷模式下,,在中斷信號(hào)產(chǎn)生之前,不產(chǎn)生FIFO停止信號(hào),,中斷信號(hào)產(chǎn)生之后,,根據(jù)滿狀態(tài)信號(hào)產(chǎn)生FIFO停止信號(hào)。
3 工作模式
3.1 旁路模式
在旁路模式下,,復(fù)位信號(hào)有效,,F(xiàn)IFO不工作,,主系統(tǒng)單元直接讀出ADC輸出的數(shù)據(jù)。
3.2 連續(xù)模式
在連續(xù)模式下,,數(shù)據(jù)在FIFO里面不斷更新,,相應(yīng)地,讀地址指針和寫地址指針也不斷滾動(dòng)更新,,讀地址指針指向最先輸入的RAM地址,。在連續(xù)模式下,假如數(shù)據(jù)滿了之后,,寫時(shí)鐘有效,,讀地址指針和寫地址指針需要同時(shí)加1,因?yàn)樽钕鹊臄?shù)據(jù)已經(jīng)被覆蓋了,。同時(shí)在寫時(shí)鐘無(wú)效的時(shí)候,,讀時(shí)鐘有效,讀地址指針也要加1,。
3.3 先入先出模式
在先入先出模式下,,數(shù)據(jù)填充滿了就自動(dòng)終止,產(chǎn)生滿中斷信號(hào),。在沒有讀時(shí)鐘的情況下,,最終讀地址指針和寫地址指針將會(huì)同時(shí)指向地址0。相應(yīng)地,,在未充滿的情況下,,假如讀時(shí)鐘有效,最終讀地址指針和寫地址指針會(huì)同時(shí)指向中間某一個(gè)地址,。
3.4 中斷模式
在中斷模式下,,數(shù)據(jù)先是以連續(xù)模式工作,假如中斷信號(hào)有效,,進(jìn)入先入先出模式,,數(shù)據(jù)填充滿了就自動(dòng)終止。工作時(shí)序圖如圖3所示,,數(shù)據(jù)在未填充滿的情況下,,產(chǎn)生中斷信號(hào),數(shù)據(jù)填充滿了就產(chǎn)生終止信號(hào),,滿中斷信號(hào)置1,,數(shù)據(jù)開始讀出之后,滿中斷信號(hào)清0,,當(dāng)數(shù)據(jù)完全讀完后,,空中斷信號(hào)置1。假如FIFO需要重復(fù)上面的工作流程,,需要清中斷,,重新啟動(dòng)FIFO,,在數(shù)據(jù)開始重新寫入FIFO時(shí),空中斷信號(hào)清0,。
與傳統(tǒng)的異步FIFO不同,,本文實(shí)現(xiàn)了一個(gè)更加簡(jiǎn)單、并且實(shí)際可行的FIFO結(jié)構(gòu),,操作靈活可靠,。通過(guò)在MEMS信號(hào)處理電路中加入異步FIFO設(shè)計(jì),可以更好地滿足系統(tǒng)對(duì)低功耗和操作靈活性的需求,。通過(guò)DC綜合并流片驗(yàn)證,,該FIFO電路已經(jīng)應(yīng)用到多個(gè)MEMS電路產(chǎn)品中,得到很好的效果,。特別對(duì)于未來(lái)MEMS組合傳感器,、數(shù)據(jù)量的增加以及特殊姿態(tài)的處理,引入更多靈活性的FIFO將會(huì)帶來(lái)更多的優(yōu)越性,。
參考文獻(xiàn)
[1] 于海,,樊曉椏.基于FPGA異步FIFO的研究與實(shí)現(xiàn)[J].微電子學(xué)與計(jì)算機(jī),2007(3):210-213.
[2] 劉祥遠(yuǎn),,陳書明.一種高性能的異步FIFO結(jié)構(gòu)[J].電子學(xué)報(bào),2007(11):2098-2104.