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

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

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

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

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

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

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

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ù)阻塞賦值語(yǔ)句的執(zhí)行過(guò)程可以得到執(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 值,因此上述語(yǔ)句等效于 q3=d,這和圖 8-33 所示的 RTL 結(jié)構(gòu)是一致的。

pIYBAGCWNI-AKXz-AADOG74i4Xg491.jpg

(2) 如何才能得到所需要的電路呢?如果把 always 塊中的兩個(gè)賦值語(yǔ)句的次序顛倒后再進(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)載請(qǐng)注明出處。

責(zé)任編輯:haq

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

    關(guān)注

    1625

    文章

    21620

    瀏覽量

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

    關(guān)注

    10316

    文章

    10717

    瀏覽量

    527216
  • Verilog
    +關(guān)注

    關(guān)注

    28

    文章

    1343

    瀏覽量

    109925

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

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    socket編程中的阻塞阻塞

    在網(wǎng)絡(luò)編程中, socket 是一個(gè)非常重要的概念,它提供了一個(gè)抽象層,使得開(kāi)發(fā)者可以不必關(guān)心底層的網(wǎng)絡(luò)通信細(xì)節(jié)。 socket 編程中的阻塞阻塞模式是兩種不同的操作方式,它們對(duì)程序的響應(yīng)性
    的頭像 發(fā)表于 11-01 16:13 ?101次閱讀

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

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

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

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

    d觸發(fā)器和jk觸發(fā)器的區(qū)別是什么

    引言 數(shù)字電路是現(xiàn)代電子技術(shù)的基礎(chǔ),廣泛應(yīng)用于計(jì)算機(jī)、通信、控制等領(lǐng)域。觸發(fā)器是數(shù)字電路中的一種基本邏輯元件,具有存儲(chǔ)和傳遞信息的功能。 觸發(fā)器的基本概念 觸發(fā)器是一種具有記憶功能的數(shù)字電路元件
    的頭像 發(fā)表于 08-22 10:37 ?922次閱讀

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

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

    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 ?534次閱讀

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

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

    什么是阻塞阻塞?

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

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

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

    proteus屬性賦值工具怎么用

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

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

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

    如何用jk觸發(fā)器構(gòu)成t觸發(fā)器?t觸發(fā)器邏輯功能有哪些

    如何用JK觸發(fā)器構(gòu)成T觸發(fā)器 JK觸發(fā)器是一種基本的觸發(fā)器電路,由兩個(gè)輸入端J和K控制,以及兩個(gè)輸出端Q和Q'組成。JK觸發(fā)器的輸出可以持續(xù)
    的頭像 發(fā)表于 02-06 14:11 ?7397次閱讀

    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 ?5622次閱讀

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

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

    oracle sql 定義變量并賦值

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