異步FIFO常用于跨時(shí)鐘域之間的數(shù)據(jù)傳輸,其可以實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ),也可以處理異步時(shí)鐘數(shù)據(jù)傳輸?shù)膩喎€(wěn)態(tài)問題。異步FIFO的設(shè)計(jì)其關(guān)鍵點(diǎn):通過格雷碼對(duì)內(nèi)部讀寫指針進(jìn)行編碼,然后比較產(chǎn)生空滿標(biāo)志,以維護(hù)FIFO的正常工作。
很多人在面試時(shí)被問到為什么異步FIFO中需要用到格雷碼,可能大部分的答案是格雷碼可以消除亞穩(wěn)態(tài)。這種回答比較模糊,今天我們就針對(duì)這個(gè)來深入探討一下。如下圖所示:

Push信息產(chǎn)生的連續(xù)寫指針wpt, 通過同步后,在rclk域與rpt進(jìn)行比較,以產(chǎn)生rclk域的Empty信號(hào)。Empty信號(hào)用于控制讀操作,以避免在FIFO為空時(shí)仍然進(jìn)行讀操作而導(dǎo)致的錯(cuò)誤,并影響后續(xù)所有的FIFO讀操作。
Pop 信息產(chǎn)生的連續(xù)讀指針rpt, 通過同步后,在wclk域與wpt進(jìn)行比較,以產(chǎn)生wclk域的Full信號(hào)。Full信號(hào)用于控制寫操作,以避免在FIFO為滿時(shí)仍然進(jìn)行寫操作而導(dǎo)致的錯(cuò)誤,并影響后續(xù)的所有的FIFO寫操作。
異步時(shí)鐘產(chǎn)生的亞穩(wěn)態(tài)發(fā)生在不同時(shí)鐘域信號(hào)wpt和rpt的比較上。對(duì)于多bit的讀寫指針信號(hào),在跨時(shí)鐘域傳輸時(shí)會(huì)存在bit之前不同延時(shí)導(dǎo)致的毛刺,比如寫地址在從0111到1000轉(zhuǎn)換時(shí)4條地址線都會(huì)跳變,這樣在寫地址同步到讀時(shí)鐘域后得到的寫地址可能是0000-1111的某個(gè)值,因此本來wpt = rpt的情況變成了wpt > rpt的情況,本來應(yīng)該出現(xiàn)空狀態(tài),因?yàn)閬喎€(wěn)態(tài)導(dǎo)致未被發(fā)現(xiàn),讀操作繼續(xù)進(jìn)行,從而影響了整個(gè)FIFO的功能。
我們知道,格雷碼編碼的連續(xù)數(shù)值之間只有1bit會(huì)發(fā)生變化,這種特性其實(shí)不能消除異步時(shí)鐘數(shù)據(jù)傳輸出現(xiàn)的亞穩(wěn)態(tài)。假設(shè)格雷碼編碼的寫地址從001(2)->011(3),讀時(shí)鐘域同步出錯(cuò),寫地址為001->001,也就是地址沒有跳變,此時(shí)用這個(gè)錯(cuò)誤的寫地址與讀地址進(jìn)行比較,出現(xiàn)虛假的空標(biāo)志,但這種虛空只是提前阻止了后續(xù)的讀操作,不會(huì)發(fā)生讀空的情況,因此不會(huì)影響后續(xù)的操作及整個(gè)FIFO的功能。
同樣對(duì)于讀地址同步到寫時(shí)鐘域時(shí)也會(huì)出現(xiàn)虛滿的情況,這種虛空和虛滿,不會(huì)影響FIFO的功能,因此gray碼保證的是在出現(xiàn)亞穩(wěn)態(tài)的情形下,F(xiàn)IFO依然能夠正常的工作。
審核編輯:劉清
-
數(shù)據(jù)傳輸
+關(guān)注
關(guān)注
9文章
2201瀏覽量
67594 -
fifo
+關(guān)注
關(guān)注
3文章
407瀏覽量
45761 -
編碼
+關(guān)注
關(guān)注
6文章
1039瀏覽量
56992
原文標(biāo)題:異步FIFO-格雷碼
文章出處:【微信號(hào):芯司機(jī),微信公眾號(hào):芯司機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
機(jī)器人環(huán)境適應(yīng)性試驗(yàn)怎么做?需要用到哪些設(shè)備和標(biāo)準(zhǔn)?
汽車上哪些零部件需要用到注塑磁體?
哪些情況下需要用單模光纜
瑞薩RA系列FSP庫(kù)開發(fā)實(shí)戰(zhàn)指南之DTC外部中斷觸發(fā)傳輸實(shí)驗(yàn)
誰有3566+電池+POE充電的方案,有個(gè)項(xiàng)目需要用該功能的主板
蜂鳥E203 SoC的UART中斷的使用
校準(zhǔn)電能質(zhì)量在線監(jiān)測(cè)裝置的抗干擾能力時(shí),需要用到哪些儀器設(shè)備?
使用studio,最高版本的系統(tǒng)是4.0.3,用到LVGL,但是可選的版本是9.1的,不匹配怎么解決?
漢思新材料:無人機(jī)哪些部件需要用到環(huán)氧固定膠
機(jī)床數(shù)據(jù)采集需要用到協(xié)議轉(zhuǎn)換網(wǎng)關(guān)嗎
哪些工程中需要用到多向應(yīng)變計(jì)組?
企業(yè)數(shù)字化改造需要用到哪些平臺(tái)
cy7c68013a異步slave fifo模式,外部mcu無法讀寫fifo怎么解決?
電力|智能配電房需要用到哪些設(shè)備?
智多晶FIFO_Generator IP介紹
為什么異步FIFO中需要用到格雷碼
評(píng)論