0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于阻塞賦值和非阻塞賦值的多級(jí)觸發(fā)器級(jí)聯(lián)實(shí)例

電子工程師 ? 來源:CSDN ? 作者:a14730497 ? 2021-05-08 14:47 ? 次閱讀

下面給出一個(gè)基于阻塞賦值和非阻塞賦值的多級(jí)觸發(fā)器級(jí)聯(lián)實(shí)例,要求將輸入數(shù)據(jù)延遲 3 個(gè)時(shí)鐘周期再輸出,并給出對應(yīng)的 RTL 級(jí)結(jié)構(gòu)圖和仿真結(jié)果。

(1)基于 D觸發(fā)器的阻塞賦值語句代碼如下:

module pipeb1 (q3, d, clk);

output [7:0] q3;

input [7:0] d;

input clk;

reg [7:0] q3, q2, q1;

always @(posedge clk)

begin

q1 = d;

q2 = q1;

q3 = q2;

end

endmodule

上述代碼綜合后能得到所期望的邏輯電路嗎? 答案是否定的, 根據(jù)阻塞賦值語句的執(zhí)行過程可以得到執(zhí)行后的結(jié)果是 q1 = d;q2 = d。實(shí)際只會(huì)綜合出一個(gè)寄存器,如圖 8-33 所示,并列出下面的警告信息,而不是所期望的三個(gè)。其中的主要原因就是采用了阻塞賦值,首先將 d 的值賦給 q1,再將q1 的值賦給q2,依次到q3,但是 q1、q2、q3 的值在賦值前其數(shù)值已經(jīng)全部被修改為當(dāng)前時(shí)刻的 d 值,因此上述語句等效于 q3=d,這和圖 8-33 所示的 RTL 結(jié)構(gòu)是一致的。

pIYBAGCWNI-AKXz-AADOG74i4Xg491.jpg

(2) 如何才能得到所需要的電路呢?如果把 always 塊中的兩個(gè)賦值語句的次序顛倒后再進(jìn)行分析:先把 q2 的值賦于 q3、再把 q1 的值賦于 q2,最后把 d 賦于q1。這樣在先賦值再修改,可以使得 q2,q3 的值都不再是 d 的當(dāng)前值。修改后的代碼如下所列。

module pipeb2 (q3, d, clk);

output [7:0] q3;

input [7:0] d;

input clk;

reg [7:0] q3, q2, q1;

always @(posedge clk)

begin

q3 = q2;

q2 = q1;

q1 = d;

end

endmodule

原文標(biāo)題:FPGA學(xué)習(xí):verilog中阻塞的理解與例子

文章出處:【微信公眾號(hào):FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1624

    文章

    21568

    瀏覽量

    600627
  • 電路圖
    +關(guān)注

    關(guān)注

    10306

    文章

    10715

    瀏覽量

    526100
  • Verilog
    +關(guān)注

    關(guān)注

    28

    文章

    1338

    瀏覽量

    109876

原文標(biāo)題:FPGA學(xué)習(xí):verilog中阻塞的理解與例子

文章出處:【微信號(hào):gh_9d70b445f494,微信公眾號(hào):FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    Verilog HDL的基礎(chǔ)知識(shí)

    本文繼續(xù)介紹Verilog HDL基礎(chǔ)知識(shí),重點(diǎn)介紹賦值語句、阻塞阻塞、循環(huán)語句、同步與異步、函數(shù)與任務(wù)語法知識(shí)。
    的頭像 發(fā)表于 10-24 15:00 ?57次閱讀
    Verilog HDL的基礎(chǔ)知識(shí)

    怎么用jk觸發(fā)器變成t觸發(fā)器

    將JK觸發(fā)器變成T觸發(fā)器,主要涉及到對JK觸發(fā)器的輸入端口進(jìn)行適當(dāng)?shù)倪B接和配置,以實(shí)現(xiàn)T觸發(fā)器的邏輯功能。以下是將JK觸發(fā)器轉(zhuǎn)換為T
    的頭像 發(fā)表于 08-28 09:41 ?569次閱讀

    t觸發(fā)器變?yōu)閐觸發(fā)器的條件

    在數(shù)字電路設(shè)計(jì)中,觸發(fā)器是一種非常重要的存儲(chǔ)元件,用于存儲(chǔ)一位二進(jìn)制信息。觸發(fā)器的種類很多,其中最為常見的有JK觸發(fā)器、D觸發(fā)器和T觸發(fā)器
    的頭像 發(fā)表于 08-22 10:33 ?528次閱讀

    socket阻塞阻塞的區(qū)別是什么

    在計(jì)算機(jī)編程中,socket 是一種通信端點(diǎn),用于在網(wǎng)絡(luò)中進(jìn)行數(shù)據(jù)傳輸。Socket 可以是阻塞的或阻塞的,這兩種模式在處理數(shù)據(jù)傳輸時(shí)有不同的行為。 阻塞模式(Blocking Mo
    的頭像 發(fā)表于 08-16 11:13 ?451次閱讀

    為什么指針之間不要隨意賦值呢?

    指針之間也不能隨意賦值。
    的頭像 發(fā)表于 03-28 17:13 ?391次閱讀
    為什么指針之間不要隨意<b class='flag-5'>賦值</b>呢?

    什么是阻塞阻塞?

    什么是阻塞阻塞?我們就用管道的讀寫來舉例子。
    的頭像 發(fā)表于 03-25 10:04 ?428次閱讀

    mapgis如何給區(qū)屬性賦值

    MapGIS是一款功能強(qiáng)大的地理信息系統(tǒng)軟件,它提供了豐富的功能和工具,使用戶能夠?qū)Φ乩頂?shù)據(jù)進(jìn)行快速、高效的管理和分析。其中一個(gè)重要的功能就是給區(qū)屬性賦值,即對地圖中的區(qū)域進(jìn)行分類和標(biāo)記,以便更好
    的頭像 發(fā)表于 02-23 17:49 ?1805次閱讀

    proteus屬性賦值工具怎么用

    Proteus是一種電路設(shè)計(jì)和仿真軟件,在進(jìn)行電路設(shè)計(jì)和仿真時(shí),屬性賦值是非常重要的步驟。屬性賦值工具可以幫助用戶快速有效地配置電路元件的屬性,從而實(shí)現(xiàn)電路的準(zhǔn)確仿真。下面是關(guān)于Proteus屬性
    的頭像 發(fā)表于 02-23 17:19 ?3410次閱讀

    verilog同步和異步的區(qū)別 verilog阻塞賦值阻塞賦值的區(qū)別

    Verilog是一種硬件描述語言,用于設(shè)計(jì)和模擬數(shù)字電路。在Verilog中,同步和異步是用來描述數(shù)據(jù)傳輸和信號(hào)處理的兩種不同方式,而阻塞賦值阻塞
    的頭像 發(fā)表于 02-22 15:33 ?1346次閱讀

    t觸發(fā)器和jk觸發(fā)器的區(qū)別和聯(lián)系

    觸發(fā)器是數(shù)字電路中常用的組合邏輯電路,在現(xiàn)代電子系統(tǒng)中有著廣泛的應(yīng)用。其中,最常用的兩種觸發(fā)器是T觸發(fā)器和JK觸發(fā)器。本文將詳細(xì)介紹T觸發(fā)器
    的頭像 發(fā)表于 02-06 14:04 ?5331次閱讀

    觸發(fā)器觸發(fā)順序是什么

    不同類型的觸發(fā)器可能有不同的執(zhí)行順序。例如,對于同一個(gè)表上的多個(gè)觸發(fā)器,插入觸發(fā)器(INSERT trigger)可能先于更新觸發(fā)器(UPDATE trigger)執(zhí)行。
    的頭像 發(fā)表于 02-05 10:09 ?975次閱讀
    <b class='flag-5'>觸發(fā)器</b>的<b class='flag-5'>觸發(fā)</b>順序是什么

    oracle sql 定義變量并賦值

    賦值可以通過使用PL/SQL語句塊或使用SQL*Plus工具來實(shí)現(xiàn)。下面將詳細(xì)介紹這兩種方法以及它們的具體用法。 使用PL/SQL語句塊定義和賦值變量: 在Oracle SQL中,PL/SQL是一種過程化語言,允許在代碼中定義和使用變量。下面是一個(gè)示例的PL/SQL語句塊
    的頭像 發(fā)表于 12-06 10:46 ?2380次閱讀

    阻塞的的connect()函數(shù)如何編寫

    由于網(wǎng)絡(luò)編程涉及很多細(xì)節(jié)和技巧,一直想寫篇文章來總結(jié)下這方面的心得與經(jīng)驗(yàn),希望對來者有一點(diǎn)幫助,那就善莫大焉了。 一、阻塞的的connect()函數(shù)如何編寫 我們知道用connect()函數(shù)默認(rèn)
    的頭像 發(fā)表于 11-11 16:23 ?1355次閱讀
    <b class='flag-5'>非</b><b class='flag-5'>阻塞</b>的的connect()函數(shù)如何編寫

    安全模塊的串口收發(fā),想實(shí)現(xiàn)阻塞要怎么操作?

    改成阻塞的收發(fā),需要修改那些地方呢?
    發(fā)表于 10-28 06:58

    SystemVerilog相比于Verilog的優(yōu)勢

    和always_latch。always_ff用于描述時(shí)序邏輯,對應(yīng)FPGA中的觸發(fā)器,其內(nèi)部應(yīng)使用阻塞
    的頭像 發(fā)表于 10-26 10:05 ?823次閱讀
    SystemVerilog相比于Verilog的優(yōu)勢