




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
基于各類二進(jìn)制代碼實(shí)現(xiàn)異步FIFO的設(shè)計(jì)一、概述在大規(guī)模ASIC或FPGA設(shè)計(jì)中,多時(shí)鐘系統(tǒng)往往是不可避免的,這樣就產(chǎn)生了不同時(shí)鐘域數(shù)據(jù)傳輸?shù)膯栴},其中一個(gè)比較好的解決方案就是使用異步FIFO來作不同時(shí)鐘域數(shù)據(jù)傳輸?shù)木彌_區(qū),這樣既可以使相異時(shí)鐘域數(shù)據(jù)傳輸?shù)臅r(shí)序要求變得寬松,也提高了它們之間的傳輸效率。此文內(nèi)容就是闡述異步FIFO的設(shè)計(jì)。二、設(shè)計(jì)原理2.1結(jié)構(gòu)框圖Fig.2.1.1如上圖所示的同步模塊synchronizetowriteclk,其作用是把讀時(shí)鐘域的讀指針rd_ptr采集到寫時(shí)鐘(wr_clk)域,然后和寫指針wr_ptr進(jìn)行比較從而產(chǎn)生或撤消寫滿標(biāo)志位wr_full;類似地,同步模塊synchronizetoreadclk的作用是把寫時(shí)鐘域的寫指針wr_ptr采集到讀時(shí)鐘域,然后和讀指針rd_ptr進(jìn)行比較從而產(chǎn)生或撤消讀空標(biāo)志位rd_empty。另外還有寫指針wr_ptr和寫滿標(biāo)志位wr_full產(chǎn)生模塊,讀指針rd_ptr和讀空標(biāo)志位rd_empty產(chǎn)生模塊,以及雙端口存儲(chǔ)RAM模塊。2.2二進(jìn)制計(jì)數(shù)器存在的問題異步FIFO讀寫指針需要在數(shù)學(xué)上的操作和比較才能產(chǎn)生準(zhǔn)確的空滿標(biāo)志位,但由于讀寫指針屬于不同的時(shí)鐘域及讀寫時(shí)鐘相位關(guān)系的不確定性,同步模塊采集另一時(shí)鐘域的指針時(shí),此指針有可能正處在跳變的過程中,如圖Fig.2.2.1所示,那么采集到的值很有可能是不期望的值,當(dāng)然,不期望的錯(cuò)誤結(jié)果也會(huì)隨之發(fā)生。Fig.2.2.1上圖中,rd_ptr2sync3和4以及4和5之間的中間態(tài)是由于到各寄存器的時(shí)鐘rd_clk存在偏差而引起的。二進(jìn)制的遞增操作,在大多數(shù)情況下都會(huì)有兩位或者兩以上的bit位在同一個(gè)遞增操作內(nèi)發(fā)生變化,但由于實(shí)際電路中會(huì)存在時(shí)鐘偏差和不同的路徑延時(shí),二進(jìn)制計(jì)數(shù)器在自增時(shí)會(huì)不可避免地產(chǎn)生錯(cuò)誤的中間結(jié)果,如圖Fig.2.2.2。Fig.2.2.2上圖是Fig.2.2.1的電路原型以及局部波形的放大。由于rd_clk上升沿到達(dá)三寄存器的時(shí)間各不相同,這就導(dǎo)致了rd_ptr2sync的值從3’b011跳變3’b100的過程中經(jīng)歷了3’b111和3’b101,直到最后一個(gè)時(shí)鐘(rd_clk0)沿的到來后rd_ptr2sync才跳變到正確結(jié)果3’b100。中間結(jié)果的持續(xù)的時(shí)間雖然相對(duì)短暫,但是這些不正確的中間結(jié)果完全有可能被其它時(shí)鐘域的同步模塊采集到而產(chǎn)生錯(cuò)誤的動(dòng)作,見上圖。由此可見,要避免中間結(jié)果的產(chǎn)生,其中一個(gè)可行的方案就是使被同步模塊采集的數(shù)據(jù)遞變時(shí),每次只有一個(gè)bit位發(fā)生改變。格雷碼計(jì)數(shù)器就是一個(gè)不錯(cuò)的選擇。2.3格雷碼計(jì)數(shù)器的實(shí)現(xiàn)2.3.1格雷碼的表現(xiàn)形式格雷碼一個(gè)最大的特點(diǎn)就是在遞增或遞減的過程中,每次只變化一位,這是它最大的優(yōu)點(diǎn)。同時(shí)它也有自己的局限性,那就是循環(huán)計(jì)數(shù)深度必須是2的n次冪,否則就失去了每次只變化一位的特性。深度為16的二進(jìn)制及格雷碼遞變表如下:BinaryGray0000000001000100012001000113001100104010001105010101116011001017011101008100011009100111011010101111111011111012110010101311011011141110100115111110000000000002.3.2二進(jìn)制和格雷碼的相互轉(zhuǎn)換1、二進(jìn)制到格雷碼:2.3.3格雷碼計(jì)數(shù)器的實(shí)現(xiàn)如下圖fig.2.3.1所示,指向存儲(chǔ)器的地址指針由二進(jìn)制計(jì)數(shù)器產(chǎn)生,而用于跨時(shí)鐘域傳播的格雷碼指針是對(duì)二進(jìn)制指針的實(shí)時(shí)轉(zhuǎn)換并用寄存器采集獲得的。這里要注意的是,計(jì)數(shù)器的位寬比實(shí)際所需的位寬要多出一位,這樣做的目的是方便判斷FIFO的空或滿,這一點(diǎn)下文中將會(huì)介紹。Fig.2.3.1格雷碼計(jì)數(shù)器結(jié)構(gòu)圖2.4空滿標(biāo)志位的產(chǎn)生異步FIFO最核心的部分就是精確產(chǎn)生空滿標(biāo)志位,這直接關(guān)系到設(shè)計(jì)的成敗。本文采用比較讀寫指針來判斷FIFO的空滿,如果FIFO的深度是n-1位線所能訪問到的地址空間,那么此設(shè)計(jì)所要用的指針位寬就比實(shí)際多出一位,也就是n位,這樣做有助于判斷FIFO是空還是滿。2.4.1讀空標(biāo)志位的產(chǎn)生當(dāng)讀地址rd_ptr趕上寫地址wr_ptr,也就是rd_ptr完全等于wr_ptr時(shí),可以斷定,F(xiàn)IFO里的數(shù)據(jù)已被讀空,而且只有在兩種情況下,F(xiàn)IFO才會(huì)為空:第一種是系統(tǒng)復(fù)位,讀寫指針全部清零;另一種情況是在FIFO不為空時(shí),數(shù)據(jù)讀出的速率快于數(shù)據(jù)寫入的速率,讀地址趕上寫地址時(shí)FIFO為空。空標(biāo)志位的產(chǎn)生需要在讀時(shí)鐘域里完成,這樣不至于發(fā)生FIFO已經(jīng)為空了而空標(biāo)志位還沒有產(chǎn)生的情況,但是可能會(huì)發(fā)生FIFO里已經(jīng)有數(shù)據(jù)了而空標(biāo)志位還沒有撤消的情況,不過就算是在最壞情況下,空標(biāo)志位撤消的滯后也只有三個(gè)時(shí)鐘周期,這個(gè)問題不會(huì)引起傳輸錯(cuò)誤;還有一種情況就是空標(biāo)志比較邏輯檢測到讀地址和寫地址相同后緊接著系統(tǒng)產(chǎn)生了寫操作,寫地址增加,F(xiàn)IFO內(nèi)有了新數(shù)據(jù),由于同步模塊的滯后性,用于比較的寫地址不能及時(shí)更新,這樣,一個(gè)本不應(yīng)該有的空標(biāo)志信號(hào)就產(chǎn)生了,不過這種情況也不會(huì)導(dǎo)致錯(cuò)誤的發(fā)生,像這種FIFO非空而產(chǎn)生空標(biāo)志信號(hào)的情況稱為“虛空”。Fig.空標(biāo)志產(chǎn)生邏輯如圖Fig.空標(biāo)志產(chǎn)生邏輯,寫時(shí)鐘域的寫指針通過兩級(jí)寄存被同步到讀時(shí)鐘域之后與讀指針進(jìn)行比較,如果完全相等,則會(huì)產(chǎn)生空標(biāo)志信號(hào);同步模塊用兩級(jí)寄存器來實(shí)現(xiàn)是為了消除可能的亞穩(wěn)態(tài),正如前面所述,因?yàn)閣r_ptr_gray是用格雷碼實(shí)現(xiàn)的,即使同步模塊是在wr_ptr_gray跳變的時(shí)刻進(jìn)行采集,其采集到的所有可能值也只有兩個(gè),一個(gè)是跳變之前的值,一個(gè)是跳變之后的值,它們只相差1,最壞情況也只是產(chǎn)生了“虛空”信號(hào),而這不會(huì)引起錯(cuò)誤傳輸。Fig.空標(biāo)志產(chǎn)生時(shí)序2.4.2寫滿標(biāo)志位的產(chǎn)生和讀空標(biāo)志位產(chǎn)生機(jī)制一樣,寫滿標(biāo)志位也是通過比較讀寫地址產(chǎn)生的。讀寫指針的關(guān)系就好比A,B兩個(gè)田徑運(yùn)動(dòng)員在一環(huán)形跑道上賽跑一樣,當(dāng)B運(yùn)動(dòng)員領(lǐng)先A并整整超前一圈時(shí),A,B兩人的地點(diǎn)相同,此種情況對(duì)應(yīng)于讀寫指針指向了同一地址,但寫指針超前整整一圈,F(xiàn)IFO被寫滿。和讀空標(biāo)志產(chǎn)生一樣,寫滿標(biāo)志也是讀寫指針相同時(shí)產(chǎn)生。但是如果地址的寬度和FIFO實(shí)際深度所需的寬度相等,某一時(shí)刻讀寫地址相同了,那FIFO是空還是滿就難以判斷了。所以讀寫指針需要增加一位來標(biāo)記寫地址是否超前讀地址(在系統(tǒng)正確工作的前提下,讀地址不可能超前于寫地址),比如FIFO的深度為8,我們需要用寬度為4的指針。Fig.格雷碼指針和存儲(chǔ)空間的映射關(guān)系如果讀指針的最高位為0,而寫指針的最高位為1,說明寫指針超前于讀指針,這時(shí)如果讀寫指針指向同一存儲(chǔ)空間,參照Fig.,則可判斷為FIFO被寫滿。寫滿標(biāo)志位產(chǎn)生邏輯只需關(guān)心格雷碼指針最高位不同(寫超前于讀)且它們指向同一存儲(chǔ)空間的情況,那么怎么通過比較兩格雷碼指針來判斷這種情況的發(fā)生呢?首先,最高位相異(因?yàn)樽x指針不可能超前于寫指針,所以只可能是寫指針超前于讀指針);其次,如果把最高位為1的所有格雷碼指針的次高位
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 高中地理野外實(shí)踐課程設(shè)計(jì)與應(yīng)用論文
- 2024年度河南省二級(jí)造價(jià)工程師之建設(shè)工程造價(jià)管理基礎(chǔ)知識(shí)真題練習(xí)試卷B卷附答案
- 小學(xué)環(huán)保教育實(shí)驗(yàn):廚余堆肥蚯蚓糞對(duì)小白菜生長實(shí)驗(yàn)觀察報(bào)告論文
- 中國醫(yī)藥行業(yè)用黃原膠行業(yè)市場前景預(yù)測及投資價(jià)值評(píng)估分析報(bào)告
- 節(jié)假日裝修管理制度
- 苯乙烯儲(chǔ)存管理制度
- 茶藝坊安全管理制度
- 調(diào)試組1019題庫題庫(500道)
- 一年級(jí)《古對(duì)今》課件
- 財(cái)務(wù)預(yù)算練習(xí)題及參考答案
- 【MOOC】《Python語言程序設(shè)計(jì)》(東北大學(xué))中國大學(xué)慕課答案
- 2024年黑龍江省《輔警招聘考試必刷500題》考試題庫附答案(滿分必刷)
- 2025年廣西宏桂集團(tuán)招聘筆試參考題庫含答案解析
- 管道工程圖畫法基礎(chǔ)入門
- 電網(wǎng)智能化運(yùn)維管理平臺(tái)建設(shè)
- 無處不在-傳染病知到智慧樹章節(jié)測試課后答案2024年秋南昌大學(xué)
- 2025年煤礦從業(yè)人員安全培訓(xùn)考試題庫
- 公司人事管理制度范文(2篇)
- 國家開放大學(xué)電大22270資源與運(yùn)營管理(統(tǒng)設(shè)課)期末終考題庫參考答案
- 《口腔固定修復(fù)工藝技術(shù)》期末考試復(fù)習(xí)題庫(含答案)
- 酒店養(yǎng)生藥膳培訓(xùn)課件
評(píng)論
0/150
提交評(píng)論