<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 電源與新能源 > 設計應用 > 基于VHDL的異步FIFO設計

基于VHDL的異步FIFO設計

作者: 時(shí)間:2011-08-17 來(lái)源:網(wǎng)絡(luò ) 收藏

摘要:經(jīng)常應用于從一個(gè)時(shí)鐘域傳輸數據到另一個(gè)時(shí)鐘域。為解決過(guò)程中空滿(mǎn)標志判斷難以及FPGA亞穩態(tài)的問(wèn)題,提出一種新穎的方案,即利用格雷碼計數器(每次時(shí)鐘到來(lái)僅有1位發(fā)生改變)表示讀/寫(xiě)指針,二級同步鏈為跨越不同時(shí)鐘域的讀/寫(xiě)指針,以提供充足的穩定時(shí)間,并通過(guò)對比格雷碼指針產(chǎn)生空滿(mǎn)標志位。該設計采用語(yǔ)言進(jìn)行設計,利用ALTERA公司的FPGA得以實(shí)現。經(jīng)驗證進(jìn)一步表明,模塊化的設計不僅避免了亞穩態(tài)的產(chǎn)生,增大平均無(wú)故障工作時(shí)間(MBTF),也使工作效率大為提升。
關(guān)鍵詞:;;亞穩態(tài);格雷碼

先進(jìn)先出緩存電路讀/寫(xiě)(FIFO)在大規模邏輯設計中被廣泛應用,幾乎每個(gè)芯片都要涉及,同樣在空空導彈的數據傳輸體系中也得以大量應用。FIFO類(lèi)型可以分為兩種,第一種為同步FIFO,即讀/寫(xiě)時(shí)鐘是同步的,這里的同步不僅僅是指讀/寫(xiě)時(shí)鐘為同一個(gè)時(shí)鐘,即屬于同一個(gè)時(shí)終域。當讀/寫(xiě)時(shí)鐘頻率為倍數關(guān)系,即相位關(guān)系確定時(shí),也歸屬同步FIFO的范疇。另一種為異步FIFO,讀/寫(xiě)時(shí)鐘頻率不成倍數關(guān)系或相位關(guān)系不確定,即跨時(shí)鐘域。異步FIFO可以在不同的時(shí)鐘域之間快速方便地傳輸實(shí)時(shí)數據,因此在遙測數據傳輸中,異步FIFO實(shí)用性更好。然而如何正確地產(chǎn)生空滿(mǎn)標志以及如果解決亞穩態(tài)問(wèn)題是異步FIFO設計的難點(diǎn)。

1 FIFO結構
首先,典型的FIFO結構框圖如圖1所示。FIFO的數據存儲在具有獨立寫(xiě)端口和讀端口的RAM中。讀指針r0_pointer指向下一個(gè)將要讀取的位置,寫(xiě)指針wrpointer指向下一個(gè)將要寫(xiě)入的位置,每1次寫(xiě)操作后寫(xiě)指針加1,讀操作使讀指針加1。狀態(tài)產(chǎn)生模塊中,full和empty表示FIFO讀/寫(xiě)的臨界狀態(tài)。FIFO設計的關(guān)鍵是產(chǎn)生讀/寫(xiě)地址和空滿(mǎn)標志??諠M(mǎn)標志是引起指針相等的操作。如果是復位或者讀操作引起
讀/寫(xiě)指針相等,FIFO認為是空;如果原因是寫(xiě)操作,那么FIFO認為是滿(mǎn)。異步FIFO設計的難點(diǎn)是如何同步跨時(shí)鐘域的指針以及空滿(mǎn)標志的產(chǎn)生。

本文引用地址:http://dyxdggzs.com/article/178738.htm

a.jpg



2 亞穩態(tài)
亞穩態(tài)是當信號在無(wú)關(guān)的電路中或異步時(shí)鐘域之間傳輸時(shí)導致FPGA系統失效的一種現象。包括FPGA在內的所有數字器件的寄存器都定義了信號時(shí)序要求,以保證每一個(gè)寄存器都能夠從輸入端獲取數據和在輸出端產(chǎn)生數據。為了確??煽康牟僮?,輸入信號必須在時(shí)鐘沿之前穩定一段時(shí)間(寄存器建立時(shí)間tsu),并且在時(shí)鐘沿之后穩定一段時(shí)間(寄存器保持時(shí)間th),然后寄存器輸出經(jīng)過(guò)一個(gè)特定的時(shí)鐘到輸出延時(shí)后有效。滿(mǎn)足此要求寄存器才可以正確的在輸入端獲取數據在輸出端產(chǎn)生數據,否則輸出有可能是亞穩態(tài)。在亞穩態(tài)時(shí),寄存器的輸出電壓在高低電平之間搖擺,即輸出將有可能是邏輯0(0 V)或者邏輯1(+5 V),或者是介于0~5 V中間的某個(gè)值。亞穩態(tài)產(chǎn)生機制圖如圖2所示,當建立時(shí)間或者保持時(shí)間不滿(mǎn)足時(shí)序要求時(shí)便會(huì )產(chǎn)生亞穩態(tài)。

b.jpg


在同步系統中,輸入信號必須總是滿(mǎn)足寄存器時(shí)序要求,所以亞穩態(tài)不會(huì )發(fā)生。亞穩態(tài)問(wèn)題通常發(fā)生在當一個(gè)信號在無(wú)關(guān)的線(xiàn)路中或異步時(shí)鐘域中傳輸。一個(gè)寄存器進(jìn)入亞穩態(tài)和從亞穩態(tài)進(jìn)入穩態(tài)的時(shí)間依賴(lài)于制造商的制造工藝和使用環(huán)境。大部分情況下,寄存器會(huì )很快的進(jìn)入一個(gè)定義的穩態(tài)中。在異步FIFO設計中就要避免亞穩態(tài)的產(chǎn)生。


上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞: 設計 FIFO 異步 VHDL 基于

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>