国产chinesehdxxxx老太婆,办公室玩弄爆乳女秘hd,扒开腿狂躁女人爽出白浆 ,丁香婷婷激情俺也去俺来也,ww国产内射精品后入国产

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

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

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

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

TLOc_gh_3394704 ? 來源:Verilog數(shù)字系統(tǒng)設(shè)計(jì) ? 作者:夏宇聞 ? 2021-08-17 16:18 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

來源:《Verilog數(shù)字系統(tǒng)設(shè)計(jì)(夏宇聞)》

阻塞和非阻塞賦值的語言結(jié)構(gòu)是Verilog 語言中最難理解概念之一。甚至有些很有經(jīng)驗(yàn)的Verilog 設(shè)計(jì)工程師也不能完全正確地理解:何時(shí)使用非阻塞賦值何時(shí)使用阻塞賦值才能設(shè)計(jì)出符合要求的電路。

他們也不完全明白在電路結(jié)構(gòu)的設(shè)計(jì)中,即可綜合風(fēng)格的Verilog模塊的設(shè)計(jì)中,究竟為什么還要用非阻塞賦值,以及符合IEEE 標(biāo)準(zhǔn)的Verilog 仿真器究竟如何來處理非阻塞賦值的仿真。

本小節(jié)的目的是盡可能地把阻塞和非阻塞賦值的含義詳細(xì)地解釋清楚,并明確地提出可綜合的Verilog模塊編程在使用賦值操作時(shí)應(yīng)注意的要點(diǎn),按照這些要點(diǎn)來編寫代碼就可以避免在Verilog 仿真時(shí)出現(xiàn)冒險(xiǎn)和競爭的現(xiàn)象。我們在前面曾提到過下面兩個(gè)要點(diǎn):

在描述組合邏輯的always塊中用阻塞賦值,則綜合成組合邏輯的電路結(jié)構(gòu)。

在描述時(shí)序邏輯的always塊中用非阻塞賦值,則綜合成時(shí)序邏輯的電路結(jié)構(gòu)。

為什么一定要這樣做呢?回答是,這是因?yàn)橐咕C合前仿真和綜合后仿真一致的緣故。如果不按照上面兩個(gè)要點(diǎn)來編寫Verilog代碼,也有可能綜合出正確的邏輯,但前后仿真的結(jié)果就會(huì)不一致。

為了更好地理解上述要點(diǎn),我們需要對Verilog 語言中的阻塞賦值和非阻塞賦值的功能和執(zhí)行時(shí)間上的差別有深入的了解。為了解釋問題方便下面定義兩個(gè)縮寫字:

RHS – 方程式右手方向的表達(dá)式或變量可分別縮寫為:RHS表達(dá)式或RHS變量。

LHS – 方程式左手方向的表達(dá)式或變量可分別縮寫為:LHS表達(dá)式或LHS變量。

IEEE Verilog標(biāo)準(zhǔn)定義了有些語句有確定的執(zhí)行時(shí)間,有些語句沒有確定的執(zhí)行時(shí)間。若有兩條或兩條以上語句準(zhǔn)備在同一時(shí)刻執(zhí)行,但由于語句的排列次序不同(而這種排列次序的不同是IEEE Verilog標(biāo)準(zhǔn)所允許的), 卻產(chǎn)生了不同的輸出結(jié)果。這就是造成Verilog模塊冒險(xiǎn)和競爭現(xiàn)象的原因。為了避免產(chǎn)生競爭,理解阻塞和非阻塞賦值在執(zhí)行時(shí)間上的差別是至關(guān)重要的。

阻塞賦值阻塞賦值操作符用等號(即 = )表示。為什么稱這種賦值為阻塞賦值呢?這是因?yàn)樵谫x值時(shí)先計(jì)算等號右手方向(RHS)部分的值,這時(shí)賦值語句不允許任何別的Verilog語句的干擾,直到現(xiàn)行的賦值完成時(shí)刻,即把RHS賦值給 LHS的時(shí)刻,它才允許別的賦值語句的執(zhí)行。

一般可綜合的阻塞賦值操作在RHS不能設(shè)定有延遲,(即使是零延遲也不允許)。從理論上講,它與后面的賦值語句只有概念上的先后,而無實(shí)質(zhì)上的延遲。若在RHS 加上延遲,則在延遲期間會(huì)阻止賦值語句的執(zhí)行, 延遲后才執(zhí)行賦值,這種賦值語句是不可綜合的,在需要綜合的模塊設(shè)計(jì)中不可使用這種風(fēng)格的代碼。

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

計(jì)算RHS并更新LHS,此時(shí)不能允許有來自任何其他Verilog語句的干擾。所謂阻塞的概念是指在同一個(gè)always塊中,其后面的賦值語句從概念上(即使不設(shè)定延遲)是在前一句賦值語句結(jié)束后再開始賦值的。

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

[例1]。 用阻塞賦值的反饋振蕩器

module fbosc1 (y1, y2, clk, rst);

output y1, y2;

input clk, rst;

reg y1, y2;

always @(posedge clk or posedge rst)

if (rst) y1 = 0; // reset

else y1 = y2;

always @(posedge clk or posedge rst)

if (rst) y2 = 1; // preset

else y2 = y1;

endmodule

按照IEEE Verilog 的標(biāo)準(zhǔn),上例中兩個(gè)always塊是并行執(zhí)行的,與前后次序無關(guān)。如果前一個(gè)always塊的復(fù)位信號先到0時(shí)刻,則y1 和y2都會(huì)取1,而如果后一個(gè)always塊的復(fù)位信號先到0時(shí)刻,則y1 和y2都會(huì)取0。這清楚地說明這個(gè)Verilog模塊是不穩(wěn)定的會(huì)產(chǎn)生冒險(xiǎn)和競爭的情況。

非阻塞賦值非阻塞賦值操作符用小于等于號 (即 《= )表示。為什么稱這種賦值為非阻塞賦值?這是因?yàn)樵谫x值操作時(shí)刻開始時(shí)計(jì)算非阻塞賦值符的RHS表達(dá)式,賦值操作時(shí)刻結(jié)束時(shí)更新LHS。

在計(jì)算非阻塞賦值的RHS表達(dá)式和更新LHS期間,其他的Verilog語句,包括其他的Verilog非阻塞賦值語句都能同時(shí)計(jì)算RHS表達(dá)式和更新LHS。非阻塞賦值允許其他的Verilog語句同時(shí)進(jìn)行操作。非阻塞賦值的操作可以看作為兩個(gè)步驟的過程:

在賦值時(shí)刻開始時(shí),計(jì)算非阻塞賦值RHS表達(dá)式。

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

非阻塞賦值操作只能用于對寄存器類型變量進(jìn)行賦值,因此只能用在“initial”塊和“always”塊等過程塊中。非阻塞賦值不允許用于連續(xù)賦值。下面的例子可以說明這個(gè)問題:

[例2]。 用非阻塞賦值的反饋振蕩器

module fbosc2 (y1, y2, clk, rst);

output y1, y2;

input clk, rst;

reg y1, y2;

always @(posedge clk or posedge rst)

if (rst) y1 《= 0; // reset

else y1 《= y2;

always @(posedge clk or posedge rst)

if (rst) y2 《= 1; // preset

else y2 《= y1;

endmodule

同樣,按照IEEE Verilog 的標(biāo)準(zhǔn),上例中兩個(gè)always塊是并行執(zhí)行的,與前后次序無關(guān)。無論哪一個(gè)always塊的復(fù)位信號先到, 兩個(gè)always塊中的非阻塞賦值都在賦值開始時(shí)刻計(jì)算RHS表達(dá)式,而在結(jié)束時(shí)刻才更新LHS表達(dá)式。所以這兩個(gè)always塊在復(fù)位信號到來后,在always塊結(jié)束時(shí) y1為0而y2為1是確定的。從用戶的角度看這兩個(gè)非阻塞賦值正好是并行執(zhí)行的。

Verilog模塊編程要點(diǎn):

下面我們還將對阻塞和非阻塞賦值做進(jìn)一步解釋并將舉更多的例子來說明這個(gè)問題。在此之前,掌握可綜合風(fēng)格的Verilog模塊編程的八個(gè)原則會(huì)有很大的幫助。在編寫時(shí)牢記這八個(gè)要點(diǎn)可以為絕大多數(shù)的Verilog用戶解決在綜合后仿真中出現(xiàn)的90-100% 的冒險(xiǎn)競爭問題。

時(shí)序電路建模時(shí),用非阻塞賦值。

鎖存器電路建模時(shí),用非阻塞賦值。

用always塊建立組合邏輯模型時(shí),用阻塞賦值。

在同一個(gè)always塊中建立時(shí)序和組合邏輯電路時(shí),用非阻塞賦值。

在同一個(gè)always塊中不要既用非阻塞賦值又用阻塞賦值。

不要在一個(gè)以上的always塊中為同一個(gè)變量賦值。

用$strobe系統(tǒng)任務(wù)來顯示用非阻塞賦值的變量值

在賦值時(shí)不要使用 #0 延遲

Verilog的新用戶在徹底搞明白這兩種賦值功能差別之前,一定要牢記這幾條要點(diǎn)。照著要點(diǎn)來編寫Verilog模塊程序,就可省去很多麻煩。

編輯:jq

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

    關(guān)注

    28

    文章

    3995

    瀏覽量

    140764
  • Verilog
    +關(guān)注

    關(guān)注

    29

    文章

    1367

    瀏覽量

    112189
  • 阻塞
    +關(guān)注

    關(guān)注

    0

    文章

    24

    瀏覽量

    8279

原文標(biāo)題:【Verilog】深入理解阻塞和非阻塞賦值的不同

文章出處:【微信號:gh_339470469b7d,微信公眾號:FPGA與數(shù)據(jù)通信】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    在testbench中如何使用阻塞賦值阻塞賦值

    本文詳細(xì)闡述了在一個(gè)testbench中,應(yīng)該如何使用阻塞賦值阻塞賦值。首先說結(jié)論,建議在testbench中,對時(shí)鐘信號(包括分頻時(shí)鐘
    的頭像 發(fā)表于 04-15 09:34 ?638次閱讀
    在testbench中如何使用<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阻塞阻塞原理分析

    Verilog阻塞阻塞原理分析在Verilog語言最難弄明白的結(jié)構(gòu)中“
    發(fā)表于 11-23 12:02

    Verilog阻塞賦值阻塞賦值的正確使用

    [table][tr][td] Verilog中有兩種為變量賦值的方法。一種叫做連續(xù)賦值,另一種叫做過程賦值。過程賦值又分為
    發(fā)表于 07-03 03:06

    Verilog阻塞賦值阻塞賦值的區(qū)別是什么

    Verilog阻塞賦值阻塞賦值的區(qū)別
    發(fā)表于 12-30 06:22

    verilog阻塞賦值阻塞賦值

    阻塞阻塞語句作為verilog HDL語言的最大難點(diǎn)之一,一直困擾著FPGA設(shè)計(jì)者,即使是一個(gè)頗富經(jīng)驗(yàn)的設(shè)計(jì)工程師,也很容易在這個(gè)點(diǎn)上犯
    發(fā)表于 03-15 10:57 ?7096次閱讀

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

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

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

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

    對于VerilogHDL語言中,經(jīng)常在always模塊中,面臨兩種賦值方式:阻塞賦值阻塞
    發(fā)表于 11-19 15:48 ?1381次閱讀

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

    阻塞賦值阻塞賦值的可綜合性 Blocking Assignment阻塞
    的頭像 發(fā)表于 05-12 09:45 ?2999次閱讀
    簡述<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中阻塞語句和阻塞語句的區(qū)別

    ? 在Verilog中有兩種類型的賦值語句:阻塞賦值語句(“=”)和阻塞
    的頭像 發(fā)表于 12-02 18:24 ?6753次閱讀
    簡述<b class='flag-5'>Verilog</b> HDL中<b class='flag-5'>阻塞</b>語句和<b class='flag-5'>非</b><b class='flag-5'>阻塞</b>語句的區(qū)別

    時(shí)序邏輯中的阻塞阻塞

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

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

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

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

    今天給大家普及一下阻塞賦值阻塞賦值的相關(guān)知識
    的頭像 發(fā)表于 07-07 14:15 ?2613次閱讀
    一文了解<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>

    阻塞賦值阻塞賦值

    ”=“阻塞賦值與”
    的頭像 發(fā)表于 09-12 09:06 ?1413次閱讀
    <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è)計(jì)和模擬數(shù)字電路。在Verilog中,同步和異步是用來描述數(shù)據(jù)傳輸和信號處理的兩種不同方式,而阻塞賦值
    的頭像 發(fā)表于 02-22 15:33 ?2442次閱讀