一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

阻塞賦值與非阻塞賦值區(qū)別 異步復(fù)位、同步復(fù)位和異步復(fù)位同步撤銷

sanyue7758 ? 來(lái)源: 硅芯思見(jiàn) ? 2023-08-31 15:24 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前不久一位朋友發(fā)來(lái)一道驗(yàn)證題,雖然題目不是很復(fù)雜,但是琢磨了下感覺(jué)其中需要掌握的內(nèi)容還是很多的,正所謂麻雀雖小五臟俱全。下面將對(duì)此題涉及的一些內(nèi)容進(jìn)行挖掘和示例,與大家分享下。

【問(wèn)題描述】

如下一段Verilog代碼,請(qǐng)根據(jù)代碼的描述,并結(jié)合已知的clk和rst的波形圖,畫出對(duì)應(yīng)信號(hào)的波形。

2d65e1d6-47be-11ee-97a6-92fbcf53809c.png

通過(guò)仿真工具得到對(duì)應(yīng)的仿真波形如下。

【仿真波形】

2d7594fa-47be-11ee-97a6-92fbcf53809c.png

【知識(shí)點(diǎn)挖掘】

0.reg和wire都采用的四值邏輯

reg變量在未進(jìn)行賦值時(shí),其默認(rèn)值為x,wire默認(rèn)為z,上圖中cnt_nxt之所以仿真開(kāi)始時(shí)為不定態(tài),主要是因?yàn)樗怯蒫nt進(jìn)行運(yùn)算后得到的,而cnt剛開(kāi)始就是個(gè)x。

1.變量和線網(wǎng)聲明時(shí)初始化

線網(wǎng)在聲明的同時(shí)進(jìn)行賦值操作實(shí)際上完成的是一種隱含的連續(xù)賦值操作(implicit continuous assignment),即相當(dāng)于該線網(wǎng)從聲明的時(shí)候就開(kāi)始采用了連續(xù)賦值操作,此時(shí)如果有其他對(duì)于該線網(wǎng)的賦值操作,將會(huì)導(dǎo)致多驅(qū)動(dòng);與之相對(duì)應(yīng)的是變量在聲明時(shí)的初始化,實(shí)際上僅僅完成了對(duì)于該變量真正的初始化操作,后續(xù)對(duì)該變量的賦值操作將會(huì)覆蓋聲明時(shí)初始化的值。

示例詳見(jiàn)《硅芯思見(jiàn):【173】隱藏的初始化》

2.縮減操作符

操作符 作用
&(縮減與) 操作數(shù)中只要有任意一位的值為0,則操作的結(jié)果就為0;操作數(shù)中只要有任意一位的值為x或者z,則操作的結(jié)果就為x;否則結(jié)果為1
~&(縮減與非) 上述結(jié)果取反即可
|(縮減或) 操作數(shù)中只要有任意一位的值為1,則操作的結(jié)果就為1;操作數(shù)中只要有任意一位的值為x或者z,則操作的結(jié)果就為x;否則結(jié)果為0
~|(縮減或非) 上述結(jié)果取反即可
^(縮減異或) 操作數(shù)中只要有任意一位的值為x或者z,則操作的結(jié)果就為x;若操作數(shù)中有偶數(shù)個(gè)1,則操作結(jié)果為0;否則其操作結(jié)果為1
~^(縮減同或) 上述結(jié)果取反即可

3.阻塞賦值與非阻塞賦值區(qū)別

詳見(jiàn)《Verilog系列:【17】阻塞賦值與非阻塞賦值》

阻塞賦值(blocking assignment) 非阻塞賦值(non-blocking assignment)
格式:“LHS”=“RHS” 格式:“LHS”<= “RHS”
阻塞賦值RHS會(huì)延遲指定延遲(如果沒(méi)有指定就是0延遲,如果指定了非零延遲,那么就延遲非零延遲,關(guān)于延遲位置不同結(jié)果不同可參見(jiàn)topic“阻塞賦值中的延遲”)后立即更新至LHS 非阻塞賦值LHS會(huì)在當(dāng)前仿真時(shí)間槽(time-slot)最后被更新,即RHS變化后不會(huì)立即反應(yīng)在LHS上
當(dāng)多條阻塞賦值語(yǔ)句順序出現(xiàn)在同一個(gè)進(jìn)程中時(shí),所有的語(yǔ)句按順序執(zhí)行,即后續(xù)的語(yǔ)句必須在當(dāng)前賦值操作完成后才能進(jìn)行 同一個(gè)進(jìn)程中的非阻塞賦值在同一個(gè)時(shí)間槽中是同時(shí)執(zhí)行的,即不會(huì)互相阻塞
建議在組合邏輯的結(jié)構(gòu)中使用 建議在時(shí)序邏輯進(jìn)程中使用
可以在過(guò)程性賦值和連續(xù)性賦值中使用 建議在時(shí)序進(jìn)程中使用
當(dāng)阻塞賦值中的變量同時(shí)出現(xiàn)在不同的進(jìn)程中時(shí),可能會(huì)出現(xiàn)競(jìng)爭(zhēng)的情況 非阻塞賦值LHS更新在仿真時(shí)間槽的最后,可以在一定程度上避免競(jìng)爭(zhēng)的出現(xiàn)
【示例】
initial begin
temp_1 = #5 2'b10;
temp_2 = #1 2'b01;
end
從仿真0時(shí)刻開(kāi)始,temp_1在時(shí)刻5被賦值為2'b10,temp_2在時(shí)刻6(5+1)被賦值為2'b01,即temp_2更新發(fā)生在temp_1之后,即兩次賦值有先后順序
【示例】
initial begin
temp_1 <= #5 2'b10;
temp_2 <= #1 2'b01;
end
從仿真0時(shí)刻開(kāi)始,temp_1在時(shí)刻5被賦值為2'b10,temp_2在時(shí)刻1被賦值為2'b01,即temp_2更新發(fā)生在temp_1之前,即兩次賦值從同一時(shí)刻同時(shí)開(kāi)始

4.+:和-:位選操作

2d850f8e-47be-11ee-97a6-92fbcf53809c.png

2d95c4b4-47be-11ee-97a6-92fbcf53809c.png

如果base_expr和width_expr經(jīng)過(guò)位選后超過(guò)d本身的位寬,那么讀取超出部分將獲得不定態(tài)表示。其中base_expr是可以在仿真運(yùn)行過(guò)程中按照需要變化的,但是width_expr是必須是確定的。

【示例】

2da67e62-47be-11ee-97a6-92fbcf53809c.png

【仿真結(jié)果】

2db2668c-47be-11ee-97a6-92fbcf53809c.png

5.wire和reg分別在什么時(shí)候使用

wire常用于連續(xù)賦值語(yǔ)句(連續(xù)賦值語(yǔ)句左側(cè)信號(hào))、模塊端口(input、output、inout,其中注意output默認(rèn)為wire),reg常用于過(guò)程性賦值語(yǔ)句(當(dāng)然也可以位于連續(xù)賦值語(yǔ)句的右側(cè)),關(guān)于連續(xù)賦值語(yǔ)句和過(guò)程性賦值語(yǔ)句的關(guān)系可以參看《Verilog系列:【32】Verilog中的幾種賦值語(yǔ)句》

6.異步復(fù)位、同步復(fù)位和異步復(fù)位同步撤銷

復(fù)位主要用于將數(shù)字電路中的觸發(fā)器置為一個(gè)確定的初始值上,例如可以是狀態(tài)機(jī)工作于初始狀態(tài)。而觸發(fā)器一般情況下分為兩種:一種是有復(fù)位引腳的,一種是沒(méi)有復(fù)位引腳的,帶有復(fù)位的觸發(fā)器占用的面積比沒(méi)有復(fù)位引腳的觸發(fā)器大一些。一般情況下,處于數(shù)據(jù)路徑上的觸發(fā)器的初始值無(wú)關(guān)緊要,此時(shí)可以使用不帶復(fù)位引腳的觸發(fā)器,以降低芯片的面積。兩者之間的優(yōu)缺點(diǎn)如下。

【同步復(fù)位】

l抗干擾性強(qiáng),可以容忍一定的毛刺,但是前提是這個(gè)毛刺不要出現(xiàn)在setup和hold違例區(qū)間;

l利于后端人員進(jìn)行STA分析;

l觸發(fā)器的復(fù)位信號(hào)完全同步于時(shí)鐘源,確保時(shí)鐘和復(fù)位作用下的邏輯電路的一致性;

l復(fù)位信號(hào)要確保大于時(shí)鐘周期,避免沒(méi)有被采樣到;

l因?yàn)橛|發(fā)器本身不帶復(fù)位引腳,綜合后會(huì)增加很多其他的邏輯資源;

l如果時(shí)鐘信號(hào)出現(xiàn)問(wèn)題,可能會(huì)影響到復(fù)位;

【異步復(fù)位】

相較于同步復(fù)位,異步復(fù)位有以下特點(diǎn)。

l復(fù)位信號(hào)不依賴于時(shí)鐘;

l大多數(shù)庫(kù)提供的觸發(fā)器都是自帶異步復(fù)位的觸發(fā)器;

l異步復(fù)位不管產(chǎn)生或撤銷復(fù)位信號(hào),都是一個(gè)異步過(guò)程,但是撤銷時(shí)就出現(xiàn)了問(wèn)題,如果異步復(fù)位在觸發(fā)器時(shí)鐘有效沿附近釋放,觸發(fā)器的輸出就會(huì)進(jìn)入亞穩(wěn)態(tài),因此導(dǎo)致復(fù)位狀態(tài)丟失;

l毛刺容易對(duì)電路造成干擾,導(dǎo)致不期望的復(fù)位產(chǎn)生;

l異步復(fù)位需要滿足時(shí)序要求(recover time、remove time,類似于setup和hold);

為了綜合兩種復(fù)位的優(yōu)缺點(diǎn),提出了一種異步復(fù)位同步釋放的方式,就是指在復(fù)位信號(hào)到來(lái)的時(shí)候不受時(shí)鐘信號(hào)的同步,而是在復(fù)位信號(hào)釋放的時(shí)候受到時(shí)鐘信號(hào)的同步,即用一個(gè)同步器來(lái)將異步復(fù)位信號(hào)轉(zhuǎn)換為同步的復(fù)位信號(hào),從而確保復(fù)位操作的可控性和穩(wěn)定性。。其典型結(jié)構(gòu)圖如下。

2dbbe07c-47be-11ee-97a6-92fbcf53809c.png

其操作過(guò)程如下為當(dāng)復(fù)位信號(hào)rst_async_n有效時(shí),第一個(gè)D觸發(fā)器的輸出是低電平,第二個(gè)D觸發(fā)器的輸出rst_sync_n也為低電平,此時(shí)驅(qū)動(dòng)后級(jí)方框中的異步復(fù)位端口有效,其輸出被復(fù)位。復(fù)位撤銷時(shí),rst_async_n經(jīng)過(guò)兩級(jí)觸發(fā)器同步后得到的rst_sync_n是與時(shí)鐘同步的,從而可以實(shí)現(xiàn)復(fù)位的同步撤銷。假設(shè)rst_async_n在clk的上升沿時(shí)撤除,那么第一個(gè)大黃框中的第一級(jí)觸發(fā)器處于亞穩(wěn)態(tài),但是由于兩級(jí)觸發(fā)器的同步作用,第二級(jí)觸發(fā)器的輸入為clk到來(lái)前第一級(jí)觸發(fā)器的輸出,即為低電平。因此,此時(shí)第二級(jí)觸發(fā)器的輸出一定是穩(wěn)定的低電平,方框左中觸發(fā)器此時(shí)還處于復(fù)位狀態(tài)。在第二個(gè)clk到來(lái)時(shí),第一級(jí)觸發(fā)器的輸出已經(jīng)是穩(wěn)定的高電平了,故rst_sync_n已經(jīng)是穩(wěn)定的高電平,此時(shí)復(fù)位釋放,也就是同步釋放。

7.~和!區(qū)別

首先條件判斷語(yǔ)句根據(jù)根據(jù)判斷其關(guān)鍵字后的條件判斷表達(dá)式結(jié)果的真假(非零的結(jié)果被認(rèn)為"真",零的結(jié)果對(duì)應(yīng)為"假")來(lái)選擇不同的條件分支,即可以將條件表達(dá)式分為兩步來(lái)實(shí)現(xiàn):第一步計(jì)算條件表達(dá)式,第二步判斷條件表達(dá)式結(jié)果;其次,在Verilog中"!"的意思為邏輯非,"~"為按位操作符, "!"主要是對(duì)操作數(shù)進(jìn)行邏輯非操作,其預(yù)算結(jié)果只能為"0"(假)或者"1"(真),"~"主要是對(duì)操作數(shù)進(jìn)行按位運(yùn)算,即對(duì)操作數(shù)的每一位進(jìn)行取反操作.但是這里需要注意的是對(duì)于一位數(shù)據(jù)來(lái)說(shuō),兩種操作的結(jié)果是一樣的,但是如果操作數(shù)為多位數(shù)據(jù),那么兩個(gè)操作的運(yùn)算結(jié)果將會(huì)不一樣.使用邏輯操作符"!",在進(jìn)行位運(yùn)算時(shí)使用按位運(yùn)算符"

【示例】

2dd3f66c-47be-11ee-97a6-92fbcf53809c.png

【仿真結(jié)果】

2de9729e-47be-11ee-97a6-92fbcf53809c.png

從上例仿真結(jié)果可以觀測(cè)到,代碼10行沒(méi)有執(zhí)行,13行執(zhí)行。代碼中9行的條件判斷語(yǔ)句"if(!sig_1)"中的"!sig_1"計(jì)算結(jié)果為"0",條件表達(dá)式對(duì)應(yīng)的分支不會(huì)執(zhí)行,所以仿真過(guò)程中并沒(méi)有顯示對(duì)應(yīng)的消息;12行的"if(~sig_2)"中的"~sig_2"計(jì)算結(jié)果為"2'b10",為非零值,即條件表達(dá)式判斷的條件為真,所以對(duì)應(yīng)的分支被有效執(zhí)行;17和20行兩個(gè)條件表達(dá)式都為真,所以對(duì)應(yīng)的分支都被有效執(zhí)行,但是這時(shí)需要注意兩個(gè)條件表達(dá)式的具體計(jì)算結(jié)果并不相同,17行"!sig_1"計(jì)算結(jié)果為"1",而20行"~sig_2"計(jì)算結(jié)果為"2'b11",兩者的相同點(diǎn)是均為非零值,所以對(duì)于條件語(yǔ)句來(lái)說(shuō)都是為真的條件,所以對(duì)應(yīng)的分支會(huì)被執(zhí)行.在具體使用這兩種操作符的時(shí)候,一般情況下推薦進(jìn)行邏輯判斷時(shí)~"。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(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)投訴
  • 仿真
    +關(guān)注

    關(guān)注

    52

    文章

    4289

    瀏覽量

    135884
  • 信號(hào)
    +關(guān)注

    關(guān)注

    11

    文章

    2853

    瀏覽量

    78299
  • Verilog
    +關(guān)注

    關(guān)注

    29

    文章

    1367

    瀏覽量

    112300
  • 波形圖
    +關(guān)注

    關(guān)注

    1

    文章

    35

    瀏覽量

    15205
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4900

    瀏覽量

    70761

原文標(biāo)題:一道設(shè)計(jì)&驗(yàn)證“麻雀”題

文章出處:【微信號(hào):處芯積律,微信公眾號(hào):處芯積律】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    Xilinx FPGA異步復(fù)位同步釋放—同步后的復(fù)位該當(dāng)作同步復(fù)位還是異步復(fù)位

    針對(duì)異步復(fù)位、同步釋放,一直沒(méi)搞明白在使用同步化以后的復(fù)位信號(hào)時(shí),到底是使用同步
    發(fā)表于 06-21 09:59 ?1994次閱讀
    Xilinx FPGA<b class='flag-5'>異步</b><b class='flag-5'>復(fù)位</b><b class='flag-5'>同步</b>釋放—<b class='flag-5'>同步</b>后的<b class='flag-5'>復(fù)位</b>該當(dāng)作<b class='flag-5'>同步</b><b class='flag-5'>復(fù)位</b>還是<b class='flag-5'>異步</b><b class='flag-5'>復(fù)位</b>?

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

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

    同步異步,阻塞阻塞區(qū)別是什么

    同步異步阻塞阻塞區(qū)別
    發(fā)表于 01-26 06:12

    同步復(fù)位異步復(fù)位有什么聯(lián)系與區(qū)別,優(yōu)缺點(diǎn)!

     異步復(fù)位原理:異步復(fù)位只要有復(fù)位信號(hào)系統(tǒng)馬上復(fù)位,因此異步
    發(fā)表于 11-30 08:45 ?10w次閱讀
    <b class='flag-5'>同步</b><b class='flag-5'>復(fù)位</b>和<b class='flag-5'>異步</b><b class='flag-5'>復(fù)位</b>有什么聯(lián)系與<b class='flag-5'>區(qū)別</b>,優(yōu)缺點(diǎn)!

    FPGA設(shè)計(jì)中的異步復(fù)位同步釋放問(wèn)題

    異步復(fù)位同步釋放 首先要說(shuō)一下同步復(fù)位異步復(fù)位
    發(fā)表于 06-07 02:46 ?2359次閱讀

    如何區(qū)分同步復(fù)位異步復(fù)位?

    問(wèn):如何區(qū)分同步復(fù)位異步復(fù)位?可以理解為同步復(fù)位是作用于狀態(tài),然后通過(guò)狀態(tài)來(lái)驅(qū)動(dòng)電路
    的頭像 發(fā)表于 06-11 15:15 ?7150次閱讀

    Xilinx FPGA的同步復(fù)位異步復(fù)位

    對(duì)于xilinx 7系列的FPGA而言,flip-flop支持高有效的異步復(fù)/置位和同步復(fù)位/置位。對(duì)普通邏輯設(shè)計(jì),同步復(fù)位
    發(fā)表于 07-13 09:31 ?7238次閱讀

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

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

    VerilogHDL語(yǔ)言:清阻塞賦值阻塞賦值

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

    詳細(xì)講解同步后的復(fù)位同步復(fù)位還是異步復(fù)位?

    針對(duì)異步復(fù)位、同步釋放,一直沒(méi)搞明白在使用同步化以后的復(fù)位信號(hào)時(shí),到底是使用同步
    的頭像 發(fā)表于 04-27 18:12 ?5222次閱讀
    詳細(xì)講解<b class='flag-5'>同步</b>后的<b class='flag-5'>復(fù)位</b>是<b class='flag-5'>同步</b><b class='flag-5'>復(fù)位</b>還是<b class='flag-5'>異步</b><b class='flag-5'>復(fù)位</b>?

    【FPGA】異步復(fù)位,同步釋放的理解

    異步復(fù)位同步釋放的理解目錄目錄 同步復(fù)位異步復(fù)位
    發(fā)表于 01-17 12:53 ?4次下載
    【FPGA】<b class='flag-5'>異步</b><b class='flag-5'>復(fù)位</b>,<b class='flag-5'>同步</b>釋放的理解

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

    今天給大家普及一下阻塞賦值阻塞賦值的相關(guān)知識(shí)
    的頭像 發(fā)表于 07-07 14:15 ?2626次閱讀
    一文了解<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ù)位異步復(fù)位區(qū)別

    請(qǐng)簡(jiǎn)述同步復(fù)位異步復(fù)位區(qū)別,說(shuō)明兩種復(fù)位方式的優(yōu)缺點(diǎn),并解釋“
    的頭像 發(fā)表于 08-14 11:49 ?8043次閱讀

    阻塞賦值阻塞賦值

    ”=“阻塞賦值與”
    的頭像 發(fā)表于 09-12 09:06 ?1432次閱讀
    <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中同步異步區(qū)別,以及阻塞賦值阻塞
    的頭像 發(fā)表于 02-22 15:33 ?2477次閱讀