付費限定

[Verilog] 再次征戰FIFO地獄 - (3) async fifo

更新 發佈閱讀 5 分鐘

在了解sync fifo後,可以開始來研究一下何謂async fifo?

小弟在這邊盡量利用了sync fifo的架構圖來呈現async fifo的運作,

以方便各位更容易的理解其中的奧妙

以Top view來看,基本上和sync fifo沒太大的不同,

最大的差異則是clk和rst長出了兩組,

一個給予write端做使用一個則給予read端

raw-image

接著讓我們來看看內部的細節

raw-image

從上面的架構圖看下來,

和sync fifo不同之處就只有原先的cnt出現了變化,

改成了2組名為B2G的function block和用來消除metastable的2dff.

看到這邊就會開始不經懷疑真這麼簡單?

就架構上來說是的,

不過其中卻充滿了許多的內涵,

大家有興趣也可以研讀看看下面這篇paper, 堪稱async fifo的權威

Simulation and Synthesis Techniques for Asynchronous FIFO Design, Clifford E. Cummings, Sunburst Design, Inc.

如果懶得看英文也可以看看小弟接下來的文章


對於async fifo架構來說mem的上半部和sync基本上是沒有差異的

差別在cnt會換成了B2G和2dff,

因此接下來會會各位解釋一下這邊的核心價值,

相信大家在看到小弟的文章前也瀏覽過許多不同人對於這塊地闡述,

或許有些不懂的地方就由我來換個方式說明看看.

我們在sync fifo中提到說cnt的function是用來計算fifo的使用情況的,

當cnt數到fifo depth數時代表fifo wirte寫滿了,

當cnt數到0時代表fifo是空的,

既簡單又清楚,

那為甚麼在async fifo上就無法使用這個手法了呢?

以行動支持創作者!付費即可解鎖
本篇內容共 1749 字、0 則留言,僅發佈於IC面試專班你目前無法檢視以下內容,可能因為尚未登入,或沒有該房間的查看權限。
留言
avatar-img
數位IC設計第一品牌
177會員
30內容數
數位IC設計第一品牌 從0到1用嘴做IC 觀念大權
2025/05/09
前面介紹完sync fifo的function block用途後, 這篇開始來帶入code要怎麼implement. Full code: module sync_fifo #(parameter N=8, parameter depth=8) (input clk, input rst_
Thumbnail
2025/05/09
前面介紹完sync fifo的function block用途後, 這篇開始來帶入code要怎麼implement. Full code: module sync_fifo #(parameter N=8, parameter depth=8) (input clk, input rst_
Thumbnail
2025/05/02
FIFO題目答得好不好可以直接看出面試者的程度為何, FIFO看似簡單卻濃縮了非常多的design細節在裡面, 在這邊來和各位分享一下我個人的心得. 作為designer最常使用到的fifo就只有兩種屬性 1.sync fifo 2.async fifo 那這邊的sync或asy
Thumbnail
2025/05/02
FIFO題目答得好不好可以直接看出面試者的程度為何, FIFO看似簡單卻濃縮了非常多的design細節在裡面, 在這邊來和各位分享一下我個人的心得. 作為designer最常使用到的fifo就只有兩種屬性 1.sync fifo 2.async fifo 那這邊的sync或asy
Thumbnail
2025/04/23
作為designer一定經常看到spec中描述當edge出現時需要trigger電路運作, 舉個實際的例子 2 phase的handshake protocal, 以下方paper中的圖例來看. Quasi Delay-Insensitive High Speed Two-Phase Prot
Thumbnail
2025/04/23
作為designer一定經常看到spec中描述當edge出現時需要trigger電路運作, 舉個實際的例子 2 phase的handshake protocal, 以下方paper中的圖例來看. Quasi Delay-Insensitive High Speed Two-Phase Prot
Thumbnail
看更多
你可能也想看
Thumbnail
創作不只是個人戰,在 vocus ,也可以是一場集體冒險、組隊升級。最具代表性的創作者社群「vocus 野格團」,現在有了更強大的新夥伴加入!除了大家熟悉的「官方主題沙龍」,這次我們徵召了 8 位領域各異的「個人主題專家」,將再度嘗試創作的各種可能,和格友們激發出更多未知的火花。
Thumbnail
創作不只是個人戰,在 vocus ,也可以是一場集體冒險、組隊升級。最具代表性的創作者社群「vocus 野格團」,現在有了更強大的新夥伴加入!除了大家熟悉的「官方主題沙龍」,這次我們徵召了 8 位領域各異的「個人主題專家」,將再度嘗試創作的各種可能,和格友們激發出更多未知的火花。
Thumbnail
vocus 最具指標性的創作者社群──「野格團」, 2026 年春季,這支充滿專業、熱情的團隊再次擴編,迎來了 8 位實力堅強的「個人主題專家」新成員 💫💫💫 從投資理財、自我成長、閱讀書評到電影戲劇,他們各自帶著獨特的「創作超能力」準備在格友大廳與大家見面。
Thumbnail
vocus 最具指標性的創作者社群──「野格團」, 2026 年春季,這支充滿專業、熱情的團隊再次擴編,迎來了 8 位實力堅強的「個人主題專家」新成員 💫💫💫 從投資理財、自我成長、閱讀書評到電影戲劇,他們各自帶著獨特的「創作超能力」準備在格友大廳與大家見面。
Thumbnail
sync rst 和 async rst reg 在rtl上只有差在always block的condition不同,但是在合成上卻是兩種不同type的register,有著不同的優缺 sync reset reg : always @ (postedge clk) begin if (!rs
Thumbnail
sync rst 和 async rst reg 在rtl上只有差在always block的condition不同,但是在合成上卻是兩種不同type的register,有著不同的優缺 sync reset reg : always @ (postedge clk) begin if (!rs
Thumbnail
在網路速度有限的情況下,依序記錄不斷產生的資訊,能統計使用者在頁面上操作了哪些功能。
Thumbnail
在網路速度有限的情況下,依序記錄不斷產生的資訊,能統計使用者在頁面上操作了哪些功能。
Thumbnail
本章節提供了關於Typescript中流程控制元素的詳細介紹,包括if, else if, else語句,三元運算子,switch語句,各種for迴圈,while迴圈,循環嵌套和控制迴圈語句(break,continue和標籤)的使用。
Thumbnail
本章節提供了關於Typescript中流程控制元素的詳細介紹,包括if, else if, else語句,三元運算子,switch語句,各種for迴圈,while迴圈,循環嵌套和控制迴圈語句(break,continue和標籤)的使用。
Thumbnail
簡要說明 JavaScript 的 Event Loop JavaScript 是單執行緒 (single-threaded) 語言,這意味著它一次只能執行一件事,因此所有函式都需要排隊等待執行,這被稱為同步 (synchronous)。在同步操作中,若函式過多或過於複雜,會導致程式阻塞 (blo
Thumbnail
簡要說明 JavaScript 的 Event Loop JavaScript 是單執行緒 (single-threaded) 語言,這意味著它一次只能執行一件事,因此所有函式都需要排隊等待執行,這被稱為同步 (synchronous)。在同步操作中,若函式過多或過於複雜,會導致程式阻塞 (blo
Thumbnail
訊息的即時傳遞已然成為現代社會的趨勢了, 而扮演中樞平台的系統架構功能也漸趨複雜完整, Kafka是一個事件流平台, 正好滿足串流時代之下的即時訊息傳遞架構, 因此我們有必要深入來學習這套事件流平台, 不論是自動化、金融交易、IOT、物流…皆離不開即時的需求, 所以就讓我們蹲好馬步來好好的學習一
Thumbnail
訊息的即時傳遞已然成為現代社會的趨勢了, 而扮演中樞平台的系統架構功能也漸趨複雜完整, Kafka是一個事件流平台, 正好滿足串流時代之下的即時訊息傳遞架構, 因此我們有必要深入來學習這套事件流平台, 不論是自動化、金融交易、IOT、物流…皆離不開即時的需求, 所以就讓我們蹲好馬步來好好的學習一
Thumbnail
Kafka是一個先進的分佈式流處理平臺,具有高吞吐量、可擴展性、容錯性和低延遲特性,提供瞭解耦、非同步和削峰特點。本文介紹了Kafka的通訊模式、適合的應用場景和未來發展趨勢,旨在幫助使用者更好地理解和應用Kafka。
Thumbnail
Kafka是一個先進的分佈式流處理平臺,具有高吞吐量、可擴展性、容錯性和低延遲特性,提供瞭解耦、非同步和削峰特點。本文介紹了Kafka的通訊模式、適合的應用場景和未來發展趨勢,旨在幫助使用者更好地理解和應用Kafka。
Thumbnail
在Python中,queue是一個非常有用的模块。 它提供了多種佇列(queue)實現,用於在多線程環境中安全地交換信息或者數據。 佇列(queue)是一種先進先出(FIFO)的數據結構,允許在佇列的一端插入元素,另一端取出元素。(FIFO 是First In, First Out 的縮寫)
Thumbnail
在Python中,queue是一個非常有用的模块。 它提供了多種佇列(queue)實現,用於在多線程環境中安全地交換信息或者數據。 佇列(queue)是一種先進先出(FIFO)的數據結構,允許在佇列的一端插入元素,另一端取出元素。(FIFO 是First In, First Out 的縮寫)
Thumbnail
非同步程式設計(Asynchronous programming) 或是簡單的稱之為 async,它是一種並發程式模型(concurrent programming model),其目的就是讓多個任務能同時在作業系統的執行緒上執行,並透過 async/.await 保留同步。
Thumbnail
非同步程式設計(Asynchronous programming) 或是簡單的稱之為 async,它是一種並發程式模型(concurrent programming model),其目的就是讓多個任務能同時在作業系統的執行緒上執行,並透過 async/.await 保留同步。
Thumbnail
為什麼需要非同步? 我們在「【Web微知識系列】 Web Workers」有介紹到在瀏覽器可執行腳本Javascript環境底下如何完成非同步的操作, 主要是為了讓任務更有效率的進行, 不會因為一個非常耗時的工作堵塞住整個服務, 導致無法服務他人的窘境。 大家應該經常在餐廳裡會看到服務員協
Thumbnail
為什麼需要非同步? 我們在「【Web微知識系列】 Web Workers」有介紹到在瀏覽器可執行腳本Javascript環境底下如何完成非同步的操作, 主要是為了讓任務更有效率的進行, 不會因為一個非常耗時的工作堵塞住整個服務, 導致無法服務他人的窘境。 大家應該經常在餐廳裡會看到服務員協
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News