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