那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

異步FIFO用格雷碼的原因有哪些

FPGA設計論壇 ? 來源:博客園 ? 作者:子皿木公 ? 2021-08-04 14:05 ? 次閱讀

異步FIFO通過比較讀寫地址進行滿空判斷,但是讀寫地址屬于不同的時鐘域,所以在比較之前需要先將讀寫地址進行同步處理,將寫地址同步到讀時鐘域再和讀地址比較進行FIFO空狀態判斷(同步后的寫地址一定是小于或者等于當前的寫地址,所以此時判斷FIFO為空不一定是真空,這樣更保守)。

將讀地址同步到寫時鐘域再和寫地址比較進行FIFO滿狀態判斷(同步后的讀地址一定是小于或者等于當前的讀地址,所以此時判斷FIFO為滿不一定是真空,這樣更保守),這樣可以保證FIFO的特性:FIFO空之后不能繼續讀取,FIFO滿之后不能繼續寫入。

大多數情形下,異步FIFO兩端的時鐘不是同頻的,或者讀快寫慢,或者讀慢寫快,這時候進行地址同步的時候,可能會有地址遺漏,以讀慢寫快為例,進行滿標志判斷的時候需要將讀地址同步到寫時鐘域,因為讀慢寫快,所以不會有讀地址遺漏,同步后的讀地址滯后當前讀地址,所以可能滿標志會提前產生。

進行空標志判斷的時候需要將寫地址同步到讀地址,因為讀慢寫快,所以當讀時鐘同步寫地址的時候,必然會漏掉一部分寫地址(寫時鐘快,寫地址隨寫時鐘翻轉,直到滿標志出現為止),那到底讀時鐘會同步到哪個寫地址?

不必在意是哪一個,我們關注的是漏掉的地址會不會對FIFO的空標志產生影響。比如寫地址從0寫到10,期間讀時鐘域只同步到了2,5,7這三個寫地址,漏掉了其他地址。同步到7地址時,真實的寫地址可能已經寫到10地址,相當于“在讀時鐘域還沒來得及覺察的情況下,寫時鐘域可能偷偷寫了數據到FIFO去”,這樣在比較讀寫地址的時候不會產生FIFO“空”讀操作。漏掉的地址也沒有對FIFO的邏輯操作產生影響。

我們可以對異步FIFO的地址采用binary編碼,這樣并不影響異步FIFO的功能,前提是讀寫地址同步時能夠保持正確。這種情況在功能仿真時完全正確,問題只有到時序仿真時才會遇到。毛刺可以說是異步電路的殺手,一個毛刺被觸發器采樣后會被放大,然后傳播,導致電路功能出錯。

binary編碼的地址總線在跳變時極易產生毛刺,因為binary編碼是多位跳變,在實現電路時不可能做到所有的地址總線等長,address bus skew必然存在,而且寫地址和讀地址分屬不同時鐘域,讀寫時鐘完全異步,這樣地址總線在進行同步過程中出錯不可避免,比如寫地址在從0111到1000轉換時4條地址線同時跳變,這樣讀時鐘在進行寫地址同步后得到的寫地址可能是0000-1111的某個值,這個完全不能確定,所以用這個同步后的寫地址進行FIFO空判斷的時候難免出錯。

這個時候gray碼體現了價值,一次只有一位數據發生變化,這樣在進行地址同步的時候,只有兩種情況:1.地址同步正確;2.地址同步出錯,但是只有1位出錯;

第一種正確的情況不需要分析,我們關注第二種,假設寫地址從000-》001,讀時鐘域同步出錯,寫地址為000-》000,也就是地址沒有跳變,但是用這個錯誤的寫地址去做空判斷不會出錯,最多是讓空標志在FIFO不是真正空的時候產生,而不會出現空讀的情形。

所以gray碼保證的是同步后的讀寫地址即使在出錯的情形下依然能夠保證FIFO功能的正確性,當然同步后的讀寫地址出錯總是存在的(因為時鐘異步,采樣點不確定)。

這里需要注意gray碼只是在相鄰兩次跳變之間才會出現只有1位數據不一致的情形,超過兩個周期則不一定,所有地址總線bus skew一定不能超過一個周期,否則可能出現gray碼多位數據跳變的情況,這個時候gray碼就失去了作用,因為這時候同步后的地址已經不能保證只有1位跳變了。

另外需要將地址總線打兩拍,這是為了避免亞穩態傳播,理論上將打兩拍不能消除亞穩態現象,因為時鐘異步,亞穩態不可避免,但是可以極大降低亞穩態傳播的概率,低頻情況下甚至STA不需要分析這里的異步時序,因為寄存器都可以在一拍內將亞穩態消除,恢復到正常0/1態。而在高頻情況下則不一定,尤其在28nm工藝以下,需要檢查兩級觸發器的延遲,保證延遲低,這樣可以提高Tr,提高系統MTBF。

編輯:jq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 異步FIFO
    +關注

    關注

    0

    文章

    20

    瀏覽量

    8409

原文標題:異步FIFO為什么用格雷碼

文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設計論壇】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    FIFO Generator的Xilinx官方手冊

    FIFO作為FPGA崗位求職過程中最常被問到的基礎知識點,也是項目中最常被使用到的IP,其意義是非常重要的。本文基于對FIFO Generator的Xilinx官方手冊的閱讀與總結,匯總主要知識點
    的頭像 發表于 11-12 10:46 ?710次閱讀
    <b class='flag-5'>FIFO</b> Generator的Xilinx官方手冊

    什么是工業設備,工業掃什么優勢

    工業設備概述工業設備,通常指的是工業掃器,是一種高性能的一維條碼和二維條碼掃描設備,廣泛應用于工業生產、倉儲等場景中。相較于普
    的頭像 發表于 11-07 14:44 ?222次閱讀
    什么是工業<b class='flag-5'>用</b>掃<b class='flag-5'>碼</b>設備,工業掃<b class='flag-5'>碼</b>器<b class='flag-5'>有</b>什么優勢

    總線異步通信幾種聯絡類型

    的靈活性和擴展性。 在總線異步通信中,多種聯絡類型,每種類型都有其特定的應用場景和特點。以下是對這些聯絡類型的介紹: 單工通信 單工通信是一種最基本的通信方式,它只允許數據在一個方向上傳輸。在這種通信方式中,
    的頭像 發表于 07-23 09:21 ?597次閱讀

    具有FIFO的雙異步通信元件TL16C552A數據表

    電子發燒友網站提供《具有FIFO的雙異步通信元件TL16C552A數據表.pdf》資料免費下載
    發表于 06-26 11:28 ?0次下載
    具有<b class='flag-5'>FIFO</b>的雙<b class='flag-5'>異步</b>通信元件TL16C552A數據表

    異步永磁電機無法達到同步轉速的原因

    將詳細分析異步永磁電機無法達到同步轉速的原因異步電機的基本原理 異步電機是一種交流電機,其工作原理基于電磁感應。當交流電通過定子繞組時,會在定子中產生旋轉磁場。這個旋轉磁場會與轉子
    的頭像 發表于 06-13 09:58 ?914次閱讀

    同步FIFO異步FIFO區別介紹

    ,并且間隔時間長,也就是突發寫入。那么通過設置一定深度的FIFO,可以起到數據暫存的功能,且使得后續處理流程平滑。 時鐘域的隔離:主要用異步FIFO。對于不同時鐘域的數據傳輸,可以通過FIFO
    的頭像 發表于 06-04 14:27 ?1805次閱讀
    同步<b class='flag-5'>FIFO</b>和<b class='flag-5'>異步</b><b class='flag-5'>FIFO</b>區別介紹

    DMA產生FIFO error interrupt錯誤的原因

    DMA用于接收采集AD轉化數據,而且AD每間隔50us采集一次,DMA配置成單次模式,并收數長度50次,未啟用FIFO模式,但是當外部中斷非常頻繁時,DMA不知怎么回事,產生了FIFO 錯誤,按道理
    發表于 05-15 06:34

    關于同步FIFO異步FIFO的基礎知識總結

    FIFO是一種先進先出數據緩存器,它與普通存儲器的區別是沒有外部讀寫地址線,使用起來非常簡單,缺點是只能順序讀寫,而不能隨機讀寫。
    的頭像 發表于 04-09 14:23 ?3434次閱讀
    關于同步<b class='flag-5'>FIFO</b>和<b class='flag-5'>異步</b><b class='flag-5'>FIFO</b>的基礎知識總結

    FIFO漫談之異步FIFO空滿信號的產生位置

    的事聊完了,后面順理成章的就是讀寫通路模塊的設計。不過在讀寫控制通路之前還要明確下另一個問題,就是空滿信號的產生位置的事情。
    的頭像 發表于 03-19 13:37 ?741次閱讀
    <b class='flag-5'>FIFO</b>漫談之<b class='flag-5'>異步</b><b class='flag-5'>FIFO</b>空滿信號的產生位置

    ?車傳感器頻繁損壞的原因及解決方案

    1.車傳感器頻繁損壞的原因?卯EMC小哥,在汽車客戶做整改中發現,車傳感器頻繁損壞,主要的共同原因:不穩定的電壓。在車輛工作過程中,電
    的頭像 發表于 03-06 08:02 ?1238次閱讀
    ?車<b class='flag-5'>用</b>傳感器頻繁損壞的<b class='flag-5'>原因</b>及解決方案

    傳感器頻繁損壞的原因?車傳感器頻繁損壞的解決方案

    卯EMC小哥,在汽車客戶做整改中發現,車傳感器頻繁損壞,主要的共同原因:不穩定的電壓。
    的頭像 發表于 03-05 14:49 ?743次閱讀
    車<b class='flag-5'>用</b>傳感器頻繁損壞的<b class='flag-5'>原因</b>?車<b class='flag-5'>用</b>傳感器頻繁損壞的解決方案

    cy7c68013a slave fifo寫數據出現異常的原因哪些?如何解決?

    我使用68013A和MCU采用Slave Fifo 異步方式進行通訊,EP2為AUTOOUT,EP6為AUTOIN,16位。現在有一個奇怪的現象出現,當通過mcu發送0x00 00 ff ff 00
    發表于 02-29 07:00

    傳感器頻繁損壞的原因及解決方案

    1.車傳感器頻繁損壞的原因卯EMC小哥,在汽車客戶做整改中發現,車傳感器頻繁損壞,主要的共同原因:不穩定的電壓。 在車輛工作過程中
    的頭像 發表于 02-26 10:59 ?587次閱讀
    車<b class='flag-5'>用</b>傳感器頻繁損壞的<b class='flag-5'>原因</b>及解決方案

    sim卡pin怎么設置 pin和puk什么區別

    可以設置一個PIN以及一個PUK。PIN是個人識別(Personal Identification Number),PUK是個人解
    的頭像 發表于 02-19 16:20 ?5267次閱讀

    異步FIFO結構設計

    電子發燒友網站提供《異步FIFO結構設計.pdf》資料免費下載
    發表于 02-06 09:06 ?0次下載
    金牌百家乐的玩法技巧和规则 | 大发888体育竞技| 百家乐官网投注哪个信誉好| 凯旋门百家乐官网技巧| 南召县| 百乐坊百家乐官网游戏| 百家乐官网纯数字玩法| 百家乐官网概率下注法| 百家乐官网赌场技巧网| 百家乐官网家居 | 澳门百家乐怎么下载| 百家乐红桌布| 大发888赌场| 娱乐场游戏| 嘉祥县| 免费百家乐过滤软件| 大发888-大发娱乐城下载| 百家乐真人游戏娱乐网| 百家乐在线赌场娱乐网规则| 百家乐群必胜打朽法| 高额德州扑克第七季| 普定县| 真钱百家乐官网哪里最好| 戒掉百家乐官网的玩法技巧和规则 | 职业百家乐的玩法技巧和规则| 百家乐群的微博| 德州扑克玩法说明| 潼南县| 百家乐官网娱乐优惠| 赌百家乐赢的奥妙| 百家乐筹码14克| 赌场风云剧情介绍| 网络百家乐官网赌博赢钱| 澳门百家乐官网怎赌才能赚钱 | 百家乐必胜打| 六合彩今天开什么| 现金百家乐官网网上娱乐| 华盛顿百家乐官网的玩法技巧和规则 | 玉树县| 百家乐官网赌场博彩赌场网| 百家乐出千大全|