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

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

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

一文了解阻塞賦值與非阻塞賦值

jf_pJlTbmA9 ? 來源:jf_pJlTbmA9 ? 作者:jf_pJlTbmA9 ? 2023-07-07 14:15 ? 次閱讀

關(guān)于阻塞賦值和非阻塞賦值的問題,明德?lián)P的學(xué)員提得比較多,今天小黑老師專門給大家普及一下阻塞賦值和非阻塞賦值的相關(guān)知識。

一、概述

1、阻塞賦值對應(yīng)的電路往往與觸發(fā)沿沒有關(guān)系,只與電平的變化有關(guān)系。

阻塞賦值符號“=”。

2、非阻塞賦值對應(yīng)的電路結(jié)構(gòu)往往與邊沿觸發(fā)有關(guān)系,只有在觸發(fā)沿時才有可能發(fā)生賦值的情況。

非阻塞賦值符號“<=”。

二、賦值方式

1、阻塞賦值

阻塞賦值操作符用等號(即 = )表示。阻塞賦值時先計算等號右手方向(RHS)部分的值,這時賦值語句不允許任何別的語句的干擾,直到現(xiàn)行的賦值完成時刻,即把RHS賦值給 LHS的時刻,它才允許別的賦值語句的執(zhí)行。一般可綜合的阻塞賦值操作在RHS不能設(shè)定有延遲,(即使是零延遲也不允許)。若在RHS 加上延遲,則在延遲期間會阻止賦值語句的執(zhí)行, 延遲后才執(zhí)行賦值,這種賦值語句是不可綜合的,在需要綜合的模塊設(shè)計中不可使用這種風(fēng)格的代碼。

阻塞賦值的執(zhí)行可以認(rèn)為是只有一個步驟的操作:

所謂阻塞的概念是指在同一個always塊中,其后面的賦值語句從概念上(即使不設(shè)定延遲)是在前一句賦值語句結(jié)束后再開始賦值的。

如果在一個過程塊中阻塞賦值的RHS變量正好是另一個過程塊中阻塞賦值的LHS變量,這兩個過程塊又用同一個時鐘沿觸發(fā),這時阻塞賦值操作會出現(xiàn)問題,即如果阻塞賦值的次序安排不好,就會出現(xiàn)競爭。若這兩個阻塞賦值操作用同一個時鐘沿觸發(fā),則執(zhí)行的次序是無法確定的。

2、非阻塞賦值

非阻塞賦值操作符用小于等于號 (即 <= )表示。在賦值操作時刻開始時計算非阻塞賦值符的RHS表達式,賦值操作時刻結(jié)束時更新LHS。在計算非阻塞賦值的RHS表達式和更新LHS期間,其他的Verilog語句,包括其他的Verilog非阻塞賦值語句都能同時計算RHS表達式和更新LHS。非阻塞賦值允許其他的Verilog語句同時進行操作。

非阻塞賦值的操作可以看作為兩個步驟的過程:

1)在賦值時刻開始時,計算非阻塞賦值RHS表達式。

2)在賦值時刻結(jié)束時,更新非阻塞賦值LHS表達式。

非阻塞賦值操作只能用于對寄存器類型變量進行賦值,因此只能用在“initial”塊和“always”塊等過程塊中。非阻塞賦值不允許用于連續(xù)賦值。

三、舉例

1、阻塞賦值

1672127081461505.jpg

2、非阻塞賦值

1672127091918810.jpg

四、總結(jié)

綜上所述,明德?lián)P至簡設(shè)計法提出這樣的規(guī)則:

時序邏輯用非阻塞賦值

組合邏輯用阻塞賦值。

審核編輯:湯梓紅

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

    關(guān)注

    0

    文章

    608

    瀏覽量

    28285
  • 阻塞賦值
    +關(guān)注

    關(guān)注

    0

    文章

    9

    瀏覽量

    9150
  • 非阻塞賦值
    +關(guān)注

    關(guān)注

    0

    文章

    10

    瀏覽量

    9993
收藏 人收藏

    評論

    相關(guān)推薦

    FPGA基礎(chǔ)篇():阻塞阻塞賦值,不只是比原始信號差個時鐘周期的問題?。ㄉ钊肫饰觯?/a>

    阻塞阻塞賦值 首先從名字上理解,阻塞賦值賦值
    的頭像 發(fā)表于 09-19 18:32 ?1.3w次閱讀

    Verilog語言中阻塞阻塞賦值的不同

    來源:《Verilog數(shù)字系統(tǒng)設(shè)計(夏宇聞)》 阻塞阻塞賦值的語言結(jié)構(gòu)是Verilog 語言中最難理解概念之。甚至有些很有經(jīng)驗的Ver
    的頭像 發(fā)表于 08-17 16:18 ?6289次閱讀

    fpga基礎(chǔ)篇():阻塞阻塞賦值

    ,常用阻塞賦值,時序電路常用阻塞賦值。先看個大家都熟悉的例子:先看
    發(fā)表于 04-05 09:53

    【技巧分享】FPGA至簡設(shè)計-阻塞賦值阻塞賦值

    阻塞阻塞作者:小黑同學(xué)、 概述1、阻塞賦值對應(yīng)的電路往往與觸發(fā)沿沒有關(guān)系,只與電平的變化有
    發(fā)表于 04-24 14:49

    FPGA學(xué)習(xí)系列:5.阻塞賦值阻塞賦值

    設(shè)計背景: 阻塞 (=)和阻塞(=)直是在我們FPGA中討論的問題,資深的學(xué)者都是討論的是賦值應(yīng)該發(fā)生在上升下降沿還是在哪里,我們在仿真
    的頭像 發(fā)表于 05-31 11:40 ?6702次閱讀
    FPGA學(xué)習(xí)系列:5.<b class='flag-5'>阻塞</b><b class='flag-5'>賦值</b>與<b class='flag-5'>非</b><b class='flag-5'>阻塞</b><b class='flag-5'>賦值</b>

    阻塞賦值阻塞賦值的用法篇文章就夠了

    對于VerilogHDL語言中,經(jīng)常在always模塊中,面臨兩種賦值方式:阻塞賦值阻塞賦值
    的頭像 發(fā)表于 01-30 17:41 ?2.2w次閱讀

    verilog中阻塞賦值阻塞賦值到底有什么區(qū)別

    1、阻塞賦值操作符用等號(即 = )表示?!?b class='flag-5'>阻塞”是指在進程語句(initial和always)中,當(dāng)前的賦值語句阻斷了其后的語句,也就是說后面的語句必須等到當(dāng)前的
    發(fā)表于 04-25 08:00 ?0次下載
    verilog中<b class='flag-5'>阻塞</b><b class='flag-5'>賦值</b>和<b class='flag-5'>非</b><b class='flag-5'>阻塞</b><b class='flag-5'>賦值</b>到底有什么區(qū)別

    IEEE Verilog阻塞賦值阻塞賦值的區(qū)別

    阻塞賦值對應(yīng)的電路往往與觸發(fā)沿沒有關(guān)系,只與輸入電平的變化有關(guān)系。阻塞賦值對應(yīng)的電路結(jié)構(gòu)往往與觸發(fā)沿有關(guān)系,只有在觸發(fā)沿時才有可能發(fā)生
    的頭像 發(fā)表于 06-17 11:57 ?1.1w次閱讀
    IEEE Verilog<b class='flag-5'>阻塞</b><b class='flag-5'>賦值</b>和<b class='flag-5'>非</b><b class='flag-5'>阻塞</b><b class='flag-5'>賦值</b>的區(qū)別

    VerilogHDL語言:清阻塞賦值阻塞賦值

    不清楚,Bug就會找到我們,下面掃清阻塞賦值阻塞賦值
    發(fā)表于 11-19 15:48 ?1087次閱讀

    簡述阻塞賦值阻塞賦值的可綜合性

    ,所以基于的C的術(shù)語和概念出現(xiàn)在EDA中,原本是個“誤打誤撞”,但歷史造成的現(xiàn)實則是:必須理解和正確掌握它們的用法。 軟件中阻塞進程,是指調(diào)用返回之前,應(yīng)用進程直等待: 為了保證應(yīng)用進程的效率,不至于被子程序的運算過程“掛起
    的頭像 發(fā)表于 05-12 09:45 ?2660次閱讀
    簡述<b class='flag-5'>阻塞</b><b class='flag-5'>賦值</b>和<b class='flag-5'>非</b><b class='flag-5'>阻塞</b><b class='flag-5'>賦值</b>的可綜合性

    時序邏輯中的阻塞阻塞

    Verilog HDL的賦值語句分為阻塞賦值阻塞賦值兩種。
    的頭像 發(fā)表于 03-15 13:53 ?2917次閱讀

    verilog中阻塞賦值阻塞賦值的區(qū)別

    阻塞賦值操作符用等號(即 = )表示。“阻塞”是指在進程語句(initial和always)中,當(dāng)前的賦值語句阻斷了其后的語句,也就是說后面的語句必須等到當(dāng)前的
    發(fā)表于 12-19 16:49 ?6983次閱讀

    Verilog中阻塞阻塞賦值金規(guī)

    對于VerilogHDL語言中,經(jīng)常在always模塊中,面臨兩種賦值方式:阻塞賦值阻塞賦值
    的頭像 發(fā)表于 06-01 09:21 ?1076次閱讀

    阻塞賦值阻塞賦值

    ”=“阻塞賦值與”
    的頭像 發(fā)表于 09-12 09:06 ?941次閱讀
    <b class='flag-5'>阻塞</b><b class='flag-5'>賦值</b>與<b class='flag-5'>非</b><b class='flag-5'>阻塞</b><b class='flag-5'>賦值</b>

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

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