跨時(shí)鐘域的問(wèn)題:前一篇已經(jīng)提到要通過(guò)比較讀寫(xiě)指針來(lái)判斷產(chǎn)生讀空和寫(xiě)滿(mǎn)信號(hào),但是讀指針是屬于讀時(shí)鐘域的,寫(xiě)指針是屬于寫(xiě)時(shí)鐘域的,而異步FIFO的讀寫(xiě)時(shí)鐘域不同,是異步的,要是將讀時(shí)鐘域的讀指針與寫(xiě)時(shí)鐘域的寫(xiě)指針不做任何處理直接比較肯定是錯(cuò)誤的,因此我們需要進(jìn)行同步處理以后進(jìn)行比較。
解決方法:兩級(jí)寄存器同步 + 格雷碼
同步的過(guò)程有兩個(gè):
(1)將寫(xiě)時(shí)鐘域的寫(xiě)指針同步到讀時(shí)鐘域,將同步后的寫(xiě)指針與讀時(shí)鐘域的讀指針進(jìn)行比較產(chǎn)生讀空信號(hào);
(2)將讀時(shí)鐘域的讀指針同步到寫(xiě)時(shí)鐘域,將同步后的讀指針與寫(xiě)時(shí)鐘域的寫(xiě)指針進(jìn)行比較產(chǎn)生寫(xiě)滿(mǎn)信號(hào);
異步FIFO的寫(xiě)指針和讀指針?lè)謱俨煌瑫r(shí)鐘域,這樣指針在進(jìn)行同步過(guò)程中很容易出錯(cuò),比如寫(xiě)指針在從0111到1000跳變時(shí)4位同時(shí)改變,這樣讀時(shí)鐘在進(jìn)行寫(xiě)指針同步后得到的寫(xiě)指針可能是0000-1111的某個(gè)值,一共有2^4個(gè)可能的情況,而這些都是不可控制的,你并不能確定會(huì)出現(xiàn)哪個(gè)值,那出錯(cuò)的概率非常大,怎么辦呢?到了格雷碼發(fā)揮作用的時(shí)候了,而格雷碼的編碼特點(diǎn)是相鄰位每次只有 1 位發(fā)生變化, 這樣在進(jìn)行指針同步的時(shí)候,只有兩種可能出現(xiàn)的情況:
指針同步正確,正是我們所要的;
指針同步出錯(cuò),舉例假設(shè)格雷碼寫(xiě)指針從000->001,將寫(xiě)指針同步到讀時(shí)鐘域同步出錯(cuò),出錯(cuò)的結(jié)果只可能是000->000,因?yàn)橄噜徫坏母窭状a每次只有一位變化,這個(gè)出錯(cuò)結(jié)果實(shí)際上也就是寫(xiě)指針沒(méi)有跳變保持不變,我們所關(guān)心的就是這個(gè)錯(cuò)誤會(huì)不會(huì)導(dǎo)致讀空判斷出錯(cuò)?答案是不會(huì),最多是讓空標(biāo)志在FIFO不是真正空的時(shí)候產(chǎn)生,而不會(huì)出現(xiàn)空讀的情形。所以gray碼保證的是同步后的讀寫(xiě)指針即使在出錯(cuò)的情形下依然能夠保證FIFO功能的正確性。在同步過(guò)程中的亞穩(wěn)態(tài)不可能消除,但是我們只要保證它不會(huì)影響我們的正常工作即可。
-
寄存器
+關(guān)注
關(guān)注
31文章
5392瀏覽量
121934 -
fifo
+關(guān)注
關(guān)注
3文章
392瀏覽量
44107
原文標(biāo)題:異步FIFO跨時(shí)鐘域亞穩(wěn)態(tài)如何解決?
文章出處:【微信號(hào):ALIFPGA,微信公眾號(hào):FPGA極客空間】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
FPGA中復(fù)位電路的亞穩(wěn)態(tài)技術(shù)詳解

跨時(shí)鐘域的解決方案

FPGA中亞穩(wěn)態(tài)——讓你無(wú)處可逃
FPGA中亞穩(wěn)態(tài)——讓你無(wú)處可逃
FPGA的亞穩(wěn)態(tài)現(xiàn)象是什么?
在FPGA復(fù)位電路中產(chǎn)生亞穩(wěn)態(tài)的原因
FPGA--中復(fù)位電路產(chǎn)生亞穩(wěn)態(tài)的原因
在FPGA中,同步信號(hào)、異步信號(hào)和亞穩(wěn)態(tài)的理解
今日說(shuō)“法”:讓FPGA設(shè)計(jì)中的亞穩(wěn)態(tài)“無(wú)處可逃”
異步FIFO結(jié)構(gòu)及FPGA設(shè)計(jì)
時(shí)序問(wèn)題常見(jiàn)的跨時(shí)鐘域亞穩(wěn)態(tài)問(wèn)題
Verilog電路設(shè)計(jì)之單bit跨時(shí)鐘域同步和異步FIFO
跨時(shí)鐘域類(lèi)型介紹 同步FIFO和異步FIFO的架構(gòu)設(shè)計(jì)

FPGA設(shè)計(jì)中的亞穩(wěn)態(tài)解析

如何處理跨時(shí)鐘域這些基礎(chǔ)問(wèn)題

評(píng)論