異步FIFO常用于跨時鐘域之間的數(shù)據(jù)傳輸,其可以實現(xiàn)數(shù)據(jù)的存儲,也可以處理異步時鐘數(shù)據(jù)傳輸?shù)膩喎€(wěn)態(tài)問題。異步FIFO的設(shè)計其關(guān)鍵點:通過格雷碼對內(nèi)部讀寫指針進行編碼,然后比較產(chǎn)生空滿標(biāo)志,以維護FIFO的正常工作。
很多人在面試時被問到為什么異步FIFO中需要用到格雷碼,可能大部分的答案是格雷碼可以消除亞穩(wěn)態(tài)。這種回答比較模糊,今天我們就針對這個來深入探討一下。如下圖所示:
Push信息產(chǎn)生的連續(xù)寫指針wpt, 通過同步后,在rclk域與rpt進行比較,以產(chǎn)生rclk域的Empty信號。Empty信號用于控制讀操作,以避免在FIFO為空時仍然進行讀操作而導(dǎo)致的錯誤,并影響后續(xù)所有的FIFO讀操作。
Pop 信息產(chǎn)生的連續(xù)讀指針rpt, 通過同步后,在wclk域與wpt進行比較,以產(chǎn)生wclk域的Full信號。Full信號用于控制寫操作,以避免在FIFO為滿時仍然進行寫操作而導(dǎo)致的錯誤,并影響后續(xù)的所有的FIFO寫操作。
異步時鐘產(chǎn)生的亞穩(wěn)態(tài)發(fā)生在不同時鐘域信號wpt和rpt的比較上。對于多bit的讀寫指針信號,在跨時鐘域傳輸時會存在bit之前不同延時導(dǎo)致的毛刺,比如寫地址在從0111到1000轉(zhuǎn)換時4條地址線都會跳變,這樣在寫地址同步到讀時鐘域后得到的寫地址可能是0000-1111的某個值,因此本來wpt = rpt的情況變成了wpt > rpt的情況,本來應(yīng)該出現(xiàn)空狀態(tài),因為亞穩(wěn)態(tài)導(dǎo)致未被發(fā)現(xiàn),讀操作繼續(xù)進行,從而影響了整個FIFO的功能。
我們知道,格雷碼編碼的連續(xù)數(shù)值之間只有1bit會發(fā)生變化,這種特性其實不能消除異步時鐘數(shù)據(jù)傳輸出現(xiàn)的亞穩(wěn)態(tài)。假設(shè)格雷碼編碼的寫地址從001(2)->011(3),讀時鐘域同步出錯,寫地址為001->001,也就是地址沒有跳變,此時用這個錯誤的寫地址與讀地址進行比較,出現(xiàn)虛假的空標(biāo)志,但這種虛空只是提前阻止了后續(xù)的讀操作,不會發(fā)生讀空的情況,因此不會影響后續(xù)的操作及整個FIFO的功能。
同樣對于讀地址同步到寫時鐘域時也會出現(xiàn)虛滿的情況,這種虛空和虛滿,不會影響FIFO的功能,因此gray碼保證的是在出現(xiàn)亞穩(wěn)態(tài)的情形下,F(xiàn)IFO依然能夠正常的工作。
審核編輯:劉清
-
數(shù)據(jù)傳輸
+關(guān)注
關(guān)注
9文章
1961瀏覽量
64866 -
fifo
+關(guān)注
關(guān)注
3文章
390瀏覽量
43894 -
編碼
+關(guān)注
關(guān)注
6文章
959瀏覽量
54969
原文標(biāo)題:異步FIFO-格雷碼
文章出處:【微信號:芯司機,微信公眾號:芯司機】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
做的一個系統(tǒng)需要用到4片ADS1298,在多器件聯(lián)接方式中,標(biāo)準(zhǔn)模式和菊鏈模式,哪個更換好一些?
如果用ADS129X采集EEG信號,需要用到右腿驅(qū)動嗎?
n型焊接頭需要用到哪些材料
![n型焊接頭<b class='flag-5'>需要用到</b>哪些材料](https://file1.elecfans.com/web1/M00/F5/7B/wKgaoWc9TsmAffgvAADPZU3PhRE272.png)
ADS9234R這個AD的寄存器如何配置,需要用到哪幾個引腳?
調(diào)試音頻放大倍數(shù)時,需要用到1khz 0db的正弦波測試音源,請問下這個0db對應(yīng)的電壓峰峰值的幅度是多少?
在進行高速信號放大設(shè)計時,往往需要用到反饋電路,是否反饋電路越短越好?
射頻連接器mcx需要用到護線套嗎
![射頻連接器mcx<b class='flag-5'>需要用到</b>護線套嗎](https://file1.elecfans.com/web2/M00/FE/0D/wKgZomagVCqAfc-eAADMgIN9HQI291.png)
同步FIFO和異步FIFO區(qū)別介紹
![同步<b class='flag-5'>FIFO</b>和<b class='flag-5'>異步</b><b class='flag-5'>FIFO</b>區(qū)別介紹](https://file1.elecfans.com/web2/M00/EB/91/wKgZomZetI6ACXETAAAiwkYcoTM829.png)
ADXL1002噪聲密度,非線性度,量程,靈敏度該如何測試?需要用到哪些器件?
![](https://file1.elecfans.com/web2/M00/E4/44/wKgZomY_GQKAAvRvAAn23lL5W1Q519.png)
在一個應(yīng)用中需要用到ST32的觸摸遇到的疑問求解
FIFO漫談之異步FIFO空滿信號的產(chǎn)生位置
![<b class='flag-5'>FIFO</b>漫談之<b class='flag-5'>異步</b><b class='flag-5'>FIFO</b>空滿信號的產(chǎn)生位置](https://file1.elecfans.com/web2/M00/C5/DF/wKgaomX5JPCAD32jAAAGRuMDTk4371.png)
評論