上一篇嘗試構(gòu)建了基于靜態(tài)隨機(jī)函數(shù)的單比特跨時鐘同步器并進(jìn)行了簡單的仿真,這一篇實現(xiàn)一下本系列文章的最終目的 —— 多比特跨時鐘域的仿真模塊。其實在單比特的模塊完成后,本篇的多比特同步器就比較簡單了,只需要對單比特模塊進(jìn)行封裝:
module multi_bit_async #( //parameter parameter WD = 4)( /*AUTOARG*/ // Outputs o_data, // Inputs i_clk, i_rst_n, i_data, o_clk, o_rst_n );
// ----------------------------------------------------------------// Interface declare// ----------------------------------------------------------------input i_clk;input i_rst_n;input [WD -1:0]i_data;
input o_clk;input o_rst_n;output[WD -1:0]o_data;
genvar i;generate for(i=0; i1)begin: MULTI_OSYNC bit_async u_bit_async( .i_clk (i_clk), .i_rst_n (i_rst_n), .i_data (i_data), .o_clk (o_clk), .o_rst_n (o_rst_n), .o_data (o_data) ); endendgenerate全部代碼就完成了,而后進(jìn)行下簡單的測試。先來“試錯”所以把順序增長計數(shù)器送進(jìn)去看看,快打慢的場景是這樣的:
慢打快:
從這兩個圖可以清晰的看出來,異步FIFO里如果使用普通的計數(shù)器通過多比特同步器同步確實會造成指針邏輯判斷錯誤。
接下來換成格雷碼跨異步的測試:
以及慢打快,都沒有發(fā)生異常的計數(shù)值傳遞:
系列文章入口——
【芯片設(shè)計】SoC 101(一):緒論 | 【芯片設(shè)計】FIFO漫談(零)從無處不在的FIFO開始說起 | 【芯片設(shè)計】計算機(jī)體系結(jié)構(gòu)(一)虛擬內(nèi)存 | 【芯片設(shè)計】深入理解AMBA總線(零)緒論
| 【芯片設(shè)計】握手協(xié)議的介紹與時序說明 | 【芯片設(shè)計】復(fù)位那些小事 —— 復(fù)位消抖 | 【芯片設(shè)計】快速入門數(shù)字芯片設(shè)計(一)Introduction | 【芯片驗證】UVM源碼計劃(零)下定決心讀源碼前的自測環(huán)節(jié)
| 【芯片設(shè)計】異步電路碎碎念(一) 到底什么是異步電路
| 【芯片設(shè)計】從RTL到GDS(一):Introduction
| 其他文章鏈接——
【芯片驗證】sva_assertion: 15道助力飛升的斷言練習(xí) | 【芯片驗證】可能是RTL定向驗證的巔峰之作 | 【芯片驗證】RTL仿真中X態(tài)行為的傳播 —— 從xprop說起 | 【芯片驗證】年輕人的第一個systemVerilog驗證環(huán)境全工程與解析 |
【芯片設(shè)計】verilog中有符號數(shù)和無符號數(shù)的本質(zhì)探究
| 【芯片設(shè)計】論RTL中always語法的消失術(shù) | 【芯片設(shè)計】代碼即注釋,注釋即代碼 | 【芯片設(shè)計】700行代碼的risc處理器你確實不能要求太多了 |
入職芯片開發(fā)部門后,每天摸魚之外的時間我們要做些什么呢 | 如何計算系統(tǒng)的outstanding 和 burst length? | 芯片搬磚日常·逼死強(qiáng)迫癥的關(guān)鍵詞不對齊事件 | 熟人社會里,一群沒有社會價值的局外人 |
|