資源描述:
《異步FIFO地實(shí)現(xiàn)方式》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、標(biāo)準(zhǔn)文案異步FIFO的實(shí)現(xiàn)方式實(shí)驗(yàn)?zāi)康谋敬螌?shí)驗(yàn)介紹一種異步FIFO的實(shí)現(xiàn)方式。使用FIFO存儲(chǔ)器可以在兩個(gè)不同時(shí)鐘系統(tǒng)之間快速而方便的傳輸數(shù)據(jù)。另外,在網(wǎng)絡(luò)接口,圖像處理等方面異步FIFO存儲(chǔ)器也得到了廣泛的應(yīng)用。因此,異步FIFO存儲(chǔ)器具有較大的研究和應(yīng)用價(jià)值。異步FIFO的介紹和整體結(jié)構(gòu)異步FIFO(FirstInFirstOut)存儲(chǔ)器是指向FIFO緩沖器中寫入數(shù)據(jù)的時(shí)鐘域和從FIFO緩沖器中讀取數(shù)據(jù)的時(shí)鐘域是不同的,這兩個(gè)時(shí)鐘之間沒有必然的因果關(guān)系。異步FIFO是一種先進(jìn)先出的電路,使用在異步時(shí)鐘域數(shù)據(jù)接口的部分,用來存儲(chǔ)、緩沖在兩個(gè)異步時(shí)鐘之間的數(shù)據(jù)傳輸。在異步電路中,由于
2、時(shí)鐘之間周期和相位完全獨(dú)立,所以數(shù)據(jù)的丟失概率不為零。如何設(shè)計(jì)一個(gè)高可靠性、高速的異步FIFO存儲(chǔ)器便成為一個(gè)難點(diǎn)。異步FIFO的一般結(jié)構(gòu)如圖1所示,都是由一個(gè)讀時(shí)鐘域電路、一個(gè)寫時(shí)鐘域電路和一個(gè)雙端口的RAM來構(gòu)成的。異步FIFO與同步FIFO所做的工作是相同的,都是在寫信號(hào)有效時(shí)寫數(shù)據(jù)到RAM中,在讀信號(hào)有效時(shí)把數(shù)據(jù)從RAM中讀出,所以對(duì)于中間部分的RAM設(shè)計(jì)是比較簡單的。另外,讀電路和寫電路單獨(dú)實(shí)現(xiàn)起來也是比較容易的,只需要按照同步FIFO的工作情況,如果沒有寫滿或讀空的狀態(tài)時(shí)每寫一個(gè)數(shù)據(jù)就把寫地址加1,每讀一個(gè)數(shù)據(jù)就把讀地址減1。設(shè)計(jì)難點(diǎn)在于兩個(gè)時(shí)鐘域的交疊部分:滿、空狀態(tài)的
3、產(chǎn)生,這也是設(shè)計(jì)的重點(diǎn)。大全標(biāo)準(zhǔn)文案圖1異步FIFO結(jié)構(gòu)針對(duì)這個(gè)問題,先從對(duì)亞穩(wěn)態(tài)的處理開始介紹亞穩(wěn)態(tài)的處理一個(gè)觸發(fā)器進(jìn)入亞穩(wěn)態(tài)時(shí),既無法預(yù)測(cè)該單元的輸出電平,也無法預(yù)測(cè)何時(shí)輸出才能穩(wěn)定在某個(gè)正確的電平上。在這個(gè)穩(wěn)定期間,觸發(fā)器輸出一些中間級(jí)電平,或者可能處于振蕩狀態(tài)、并且這種無用的輸出電平可以沿信號(hào)通道上的各個(gè)觸發(fā)器級(jí)聯(lián)式傳播下去。亞穩(wěn)態(tài)發(fā)生的原因是由于在同步系統(tǒng)中,如果觸發(fā)器的建立時(shí)間或保持時(shí)間不滿足,就可能產(chǎn)生亞穩(wěn)態(tài),此時(shí)觸發(fā)器輸出端Q在亞穩(wěn)態(tài)是指觸發(fā)器無法在某個(gè)規(guī)定時(shí)間段內(nèi)達(dá)到一個(gè)可確認(rèn)的狀態(tài),邏輯誤判有可能通過電路的特殊設(shè)計(jì)減輕危害(如本設(shè)計(jì)中將使用的Gray碼計(jì)數(shù)器),而
4、亞穩(wěn)態(tài)的傳播則擴(kuò)大了故障面,難以處理。大全標(biāo)準(zhǔn)文案在數(shù)字集成電路中寄存器要滿足建立時(shí)間和保持時(shí)間。建立時(shí)間是在時(shí)鐘翻轉(zhuǎn)之前數(shù)據(jù)輸入必須有效的時(shí)間,保持時(shí)間是在時(shí)鐘沿之后數(shù)據(jù)輸出必須仍然有效的時(shí)間。當(dāng)一個(gè)信號(hào)被寄存器鎖存時(shí),如果信號(hào)和時(shí)鐘之間不滿足這個(gè)要求,Q的值是不確定的,并且在未知的時(shí)刻會(huì)固定到高電平或低電平。此時(shí)寄存器進(jìn)入了亞穩(wěn)態(tài)(Metastability)。解決這一問題的最簡單方法是使用同步器,使得在另一個(gè)時(shí)鐘域采樣時(shí)信號(hào)足夠穩(wěn)定。同步器的設(shè)計(jì)本身就是一個(gè)比較麻煩的問題,本次設(shè)計(jì)中也不深入討論一些細(xì)節(jié)性的問題,直接采用兩級(jí)采樣的同步器,避免了使用一級(jí)同步器仍可能出現(xiàn)亞穩(wěn)態(tài)的情
5、況。每個(gè)這樣的同步器都具有一個(gè)等于時(shí)鐘周期的等待時(shí)間。這種同步器可以把一些亞穩(wěn)態(tài)的值同步為確定值,但并不一定是正確值,同時(shí)有一些亞穩(wěn)態(tài)也還是無法穩(wěn)定成確切值的,這種情況稱為同步出錯(cuò)。由于同步出錯(cuò)的隨機(jī)性,很難對(duì)它們進(jìn)行跟蹤。如果想進(jìn)一步降低亞穩(wěn)態(tài)出現(xiàn)的概率、可以再増加同步器的級(jí)數(shù),但是太多的同步器會(huì)使系統(tǒng)的性能下降,所以系統(tǒng)中不會(huì)用太多的同步器,一般使用兩個(gè)同步器已經(jīng)足夠。空滿狀態(tài)的判斷大全標(biāo)準(zhǔn)文案之所以在前面介紹了亞穩(wěn)態(tài)的問題,是因?yàn)檫@是判斷滿狀態(tài)或空狀態(tài)無法回避的一個(gè)問題。因?yàn)樽x電路在讀控制時(shí)維持一個(gè)地址指針,寫電路在寫控制時(shí)維持一個(gè)地址指針,簡單來說,這兩個(gè)地址指針直接一比較,
6、就能得到空滿的判斷結(jié)果,但是實(shí)際操作起來非常麻煩。例如對(duì)于滿狀態(tài)來說,這是寫入電路所關(guān)心的狀態(tài),因?yàn)闈M狀態(tài)下不能繼續(xù)寫入數(shù)據(jù),但是空狀態(tài)對(duì)于寫電路沒有影響。如果寫入電路要判斷當(dāng)前FIFO是否為滿,就需要把寫電路自身維持的寫指針和讀電路維持的讀指針做比較,這個(gè)讀指針就需要送入寫電路中,此時(shí)就發(fā)生了穿過時(shí)鐘域的問題,也就是說,讀指針要從讀時(shí)鐘域同步到寫時(shí)鐘域,然后參與判斷,此時(shí)就需要前面介紹的同步器。同樣,對(duì)于空狀態(tài)來說,這是讀出電路所關(guān)心的狀態(tài),也是由讀電路來維持的,因?yàn)榭諣顟B(tài)下再讀數(shù)就會(huì)得到錯(cuò)誤的數(shù)據(jù),但是滿狀態(tài)下讀數(shù)是沒有影響的。如果讀電路要判斷當(dāng)前FIFO是否為空,就需要把寫時(shí)鐘
7、域中的寫指針取到讀時(shí)鐘域來,和讀時(shí)鐘域的讀指針進(jìn)行比較得出是否是空狀態(tài),同樣跨越了時(shí)鐘域。在跨時(shí)鐘域系統(tǒng)中希望出現(xiàn)錯(cuò)誤的概率越低越好,此時(shí)格雷碼無疑是最好的一個(gè)選擇。格雷碼屬于可靠性編碼,是一種誤差最小化的編碼,它大大減少了由一個(gè)狀態(tài)到下一個(gè)狀態(tài)時(shí)電路混淆。由這種編碼相鄰的兩個(gè)碼組之間只有一位不同,和其他編碼同時(shí)改變2位和多位的情況相比更為可靠。表1所示是格雷碼與二進(jìn)制碼的對(duì)應(yīng)關(guān)系。表1格雷碼與二進(jìn)制碼轉(zhuǎn)換真值表大全標(biāo)準(zhǔn)文案由前面的介紹可知通過同步器之后信