国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Verilog基礎(chǔ):仿真時(shí)x信號(hào)的產(chǎn)生和x信號(hào)對(duì)于各運(yùn)算符的特性

這篇具有很好參考價(jià)值的文章主要介紹了Verilog基礎(chǔ):仿真時(shí)x信號(hào)的產(chǎn)生和x信號(hào)對(duì)于各運(yùn)算符的特性。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

相關(guān)閱讀

Verilog基礎(chǔ)https://blog.csdn.net/weixin_45791458/category_12263729.html?spm=1001.2014.3001.5482


? ? ? ? 信號(hào)爆x也許是所有IC人的噩夢(mèng),滿屏的紅色波形常讓人頭疼不已,但x信號(hào)的產(chǎn)生原因卻常常只有幾種,只要遵循一定的代碼規(guī)范,就可以避免產(chǎn)生信號(hào)中出現(xiàn)x的問(wèn)題。

? ? ? ? 最常見問(wèn)題就是使用了未初始化的reg型變量,因?yàn)閞eg型變量在被創(chuàng)建后使用默認(rèn)值x。如果在初始化變量之前在其他地方提前使用了,便有可能造成x態(tài)的傳播。為了避免,可以給所有時(shí)序邏輯中用到的reg型變量賦初值(不可綜合),但更為推薦的是為所有時(shí)序邏輯中使用到的reg型變量添加復(fù)位邏輯(可綜合)并確保復(fù)位,如下所示。對(duì)于組合邏輯中使用到的reg型變量,只需要確保始終有正確的驅(qū)動(dòng)即可。

reg a = 0;

reg b;

always@(posedge clk, negedge rst_n)begin
    if(rst_n)
        b <= 0;
    else
        b <= ***;
end

? ? ? ? 連續(xù)賦值語(yǔ)句也可能會(huì)導(dǎo)致x信號(hào)的產(chǎn)生,在連續(xù)賦值語(yǔ)句對(duì)wire型線網(wǎng)賦值時(shí),如果出現(xiàn)了多個(gè)驅(qū)動(dòng)源同時(shí)驅(qū)動(dòng)為不同的值,并且強(qiáng)度一致(除z外,因?yàn)閦看做沒有驅(qū)動(dòng))時(shí),會(huì)顯示為不定態(tài),直到多個(gè)驅(qū)動(dòng)不沖突,如下所示。

//一個(gè)很幼稚的例子
assign a = 1'b0;
assign a = 1'b1; //賦值沖突,所以a的值為x

//一個(gè)依舊很幼稚的例子
initial begin
    b = 1'b0;
    c = 1'b1;
end

assign a = b;
assign a = c; //同樣是賦值沖突,所以a的值為x


//一個(gè)復(fù)雜一點(diǎn)的例子
wire  a;
reg b, c;
initial begin
    b = 1'b0;
    c = 1'b0;
    #5 c = 1'b1;
    #5 c = 1'b0;
    #5 c = 1'b1;
    #5 c = 1'b0;
end

assign a = b;
assign a = c; //因?yàn)橛袝r(shí)沖突,有時(shí)不沖突,所以a的值交替為0和x,最后為0

//一個(gè)迷惑一點(diǎn)的例子
wire  a;
reg b, c;
initial begin
    b = 1'b0;
    c = 1'b0;
    #25;
    #5 c = 1'b1;
    #5 c = 1'b0;
    #5 c = 1'b1;
    #5 c = 1'b0;
end

assign a = b;
assign #20 a  = c; //因?yàn)檫B續(xù)賦值有延遲,而25ns后每次c改變的脈沖都小于20ns,所以沒有進(jìn)行賦值,最后的c值為0,因此a的值一直是0

? ? ? ? 有些運(yùn)算也可能會(huì)產(chǎn)生x信號(hào),下面簡(jiǎn)單介紹,但需要注意的是,他們大多只是x信號(hào)的傳播者,而不是x信號(hào)的制造者。

算數(shù)操作符+、-、*、/、%、**

? ? ? ? 對(duì)于算術(shù)運(yùn)算符,當(dāng)操作符的操作數(shù)中出現(xiàn)了x時(shí),無(wú)論原本結(jié)果是否可能全部或部分確認(rèn),結(jié)果全為x值。

a = 3'b001;
b = 3'bx01;    
$display("result is %b",a+b);//結(jié)果為xxx

a = 3'bx01;
b = 3'b000;    
$display("result is %b",a*b);//結(jié)果為xxx

比較運(yùn)算符<、<=、>、>=、===、!==、==、!=

? ? ? ? 對(duì)于<、<=、>、>=、==、!=,它們的比較結(jié)果是0或1,但是如果操作數(shù)中存在x,比較結(jié)果為x。

? ? ? ? 對(duì)于===、!==,它們嚴(yán)格比較兩個(gè)操作數(shù)中的x,因此結(jié)果只能為0或1。。

b = 3'b111;
c = 3'b0x1;    
$display("result is %b",b<c);//結(jié)果為x

b = 3'b0x1;
c = 3'b0x1;    
$display("result is %b",b===c);//結(jié)果為1

邏輯操作符&&、||、!

? ? ? ? 邏輯運(yùn)算符的運(yùn)算結(jié)果為0或1,但是如果操作數(shù)中存在x,結(jié)果為x。

b = 3'b0x1;
c = 3'b001;    
$display("result is %b",b&&c);//結(jié)果為x


c = 3'b0x1;    
$display("result is %b",!c);//結(jié)果為x

位運(yùn)算操作符&、|、^、~^、~

? ? ? ? 位運(yùn)算符按位對(duì)操作數(shù)進(jìn)行操作,注意對(duì)于這些運(yùn)算符,某位的x不會(huì)影響其他非x位的結(jié)果。且x與1為x,x與0為0,x或1為1,x或0為x。對(duì)于異或、同或和取反運(yùn)算,x位的結(jié)果是x。

b = 3'b0x1;
c = 3'bx11;    
$display("result is %b",b&c);//結(jié)果為0x1

b = 3'b0x1;
c = 3'bx11;    
$display("result is %b",b^c);//結(jié)果為xx0

規(guī)約運(yùn)算符&、|、^、~&、~&、~^

? ? ? ? 規(guī)約運(yùn)算符的運(yùn)算結(jié)果為0或1,對(duì)于&,如果操作數(shù)中存在0,結(jié)果為0(不管是否含有x),對(duì)于|,如果操作數(shù)中存在1,結(jié)果為1(不管是否含有x)。其他情況下,如果操作數(shù)中有x,結(jié)果為x。

b = 3'bx10;    
$display("result is %b",|b);//結(jié)果為1

b = 3'bx10;    
$display("result is %b",&b);//結(jié)果為0

b = 3'bx10;    
$display("result is %b",^b);//結(jié)果為x

移位操作符<<、>>、<<<、>>>

? ? ? ??<<、>>為邏輯移位,即補(bǔ)0移位。而<<<、>>>為算數(shù)移位,對(duì)于有符號(hào)的操作數(shù),算數(shù)右移>>>時(shí)會(huì)在左邊補(bǔ)符號(hào)位(最高位),其他情況下,算數(shù)移位和邏輯移位效果一樣。

? ? ? ? 當(dāng)移位操作符的右操作數(shù)中有x時(shí),結(jié)果為x。

b = 3'b1x1;   
    $display("result is %b",b>>1'bx);//結(jié)果為xxx

b = 3'b1x1;   
    $display("result is %b",b<<1);//結(jié)果為x10

signed reg b;
b = 3'bx01;   
    $display("result is %b",b>>>1);//結(jié)果為xx0

條件運(yùn)算符?:

? ? ? ? 當(dāng)條件中因?yàn)橛衳無(wú)法確定是否為0時(shí),結(jié)果會(huì)含有x,但不一定全是x。對(duì)于這一點(diǎn),感興趣的可以看往期文章,有關(guān)于表達(dá)式位寬和符號(hào)拓展的討論。

b = 3'b0x;   
$display("result is %b",b?2'sb1:2'sb0);//結(jié)果為xx

b = 3'b1x;   
$display("result is %b",b?1'sb1:2'sb0);//結(jié)果為11(符號(hào)拓展)

b = 3'b0x;   
$display("result is %b",b?2'b1:2'b0);//結(jié)果為0x(補(bǔ)零拓展)

連接運(yùn)算符{}

? ? ? ? 對(duì)于連接運(yùn)算符,某一位的x不會(huì)影響其他位。

$display("result is %b",{1'bx,3'b111});//結(jié)果為x111

向量的位選、域選

? ? ? ? ?當(dāng)位選超出界限時(shí),會(huì)返回x。當(dāng)域選超出界限時(shí),超出的部分會(huì)用x填充。當(dāng)數(shù)組索引超出界限時(shí),結(jié)果全為x。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-753387.html

b = 3'b111;   
$display("result is %b",b[3]);//結(jié)果為x

b = 3'b111;   
$display("result is %b",b[4:2]);//結(jié)果為xx1

reg [2:0] c [1:0]
c[0] = 3'b000;
c[1] = 3'b111;
$display("result is %b",c[2]]);//結(jié)果為xxx

到了這里,關(guān)于Verilog基礎(chǔ):仿真時(shí)x信號(hào)的產(chǎn)生和x信號(hào)對(duì)于各運(yùn)算符的特性的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Verilog語(yǔ)法(二)——運(yùn)算符

    Verilog HDL 中支持多種運(yùn)算符,包括算術(shù)運(yùn)算符、比較運(yùn)算符、邏輯運(yùn)算符、位運(yùn)算符等等。以下是一些常用的運(yùn)算符及其用法。 Verilog 中的算術(shù)運(yùn)算符包括加法、減法、乘法、除法、取模等。它們的用法與常見的編程語(yǔ)言類似,如: 加法:+ 減法:- 乘法:* 除法:/ 取模:

    2024年02月01日
    瀏覽(20)
  • Verilog運(yùn)算符優(yōu)先級(jí)

    0 ! ~ 1 * / % 2 + 1 3 4 = = 5 == != === !== 6 ~ 7 ^ ^~ 8 | ~| 9 10 || 11 ?: 從上至下優(yōu)先級(jí)依次降低

    2024年02月16日
    瀏覽(24)
  • Verilog基本語(yǔ)法之運(yùn)算符(三)

    Verilog基本語(yǔ)法之運(yùn)算符(三)

    運(yùn)算符按功能分為9類: 算術(shù)運(yùn)算符 邏輯運(yùn)算符 關(guān)系運(yùn)算符 等式運(yùn)算符 縮減運(yùn)算符 條件運(yùn)算符 位運(yùn)算符 移位運(yùn)算符 位拼接運(yùn)算符 運(yùn)算符按操作數(shù)的個(gè)數(shù)分為3類: 單目運(yùn)算符:帶一個(gè)操作數(shù) 邏輯非!,按位取反~,縮減運(yùn)算符,移位運(yùn)算符 雙目運(yùn)算符:帶兩個(gè)操作數(shù) 算

    2023年04月09日
    瀏覽(27)
  • Verilog常用運(yùn)算符及表達(dá)式

    Verilog常用運(yùn)算符及表達(dá)式

    本文詳細(xì)介紹了Verilog常用的運(yùn)算符和表達(dá)式,特別是分享了處理“計(jì)算位寬溢出”和“負(fù)數(shù)”的可行方式,幫助讀者更加輕松地理解和掌握Verilog語(yǔ)言的運(yùn)算符。 算數(shù)運(yùn)算符:加(+)、減(-)、乘(*)、除(/)、取余(%) 賦值運(yùn)算符:非阻塞賦值(=)、阻塞賦值(=);

    2024年02月08日
    瀏覽(29)
  • Verilog語(yǔ)法——2.模塊例化、運(yùn)算符

    Verilog語(yǔ)法——2.模塊例化、運(yùn)算符

    參考資料 【明德?lián)P_verilog零基礎(chǔ)入門語(yǔ)法HDL仿真快速掌握-手把手教你寫FPGA/ASIC代碼設(shè)計(jì)流程中的應(yīng)用】 2.1.1 什么是模塊例化 例化,即將項(xiàng)目不斷拆分成次級(jí)功能模塊,然后從最簡(jiǎn)單的模塊開始實(shí)現(xiàn),進(jìn)而完成整個(gè)復(fù)雜項(xiàng)目 2.1.2 模塊例化的方法 針對(duì)已經(jīng)抽象好的模塊,需要

    2024年01月16日
    瀏覽(54)
  • Verilog學(xué)習(xí)記錄3——三目運(yùn)算符

    進(jìn)階示例: 以??途W(wǎng) VL1 四選一多路器 為例 使用三目運(yùn)算符寫法:

    2024年02月11日
    瀏覽(23)
  • QuartusDDS信號(hào)發(fā)生器Verilog代碼仿真

    QuartusDDS信號(hào)發(fā)生器Verilog代碼仿真

    名稱:QuartusDDS信號(hào)發(fā)生器Verilog代碼仿真(文末獲?。?軟件:Quartus 語(yǔ)言:Verilog 代碼功能: DDS信號(hào)發(fā)生器 可以輸出正弦波、方波、三角波 可以改變波形的頻率 1. 工程文件 2. 程序文件 3. 程序編譯 4. RTL圖 5. Testbench 6. 仿真圖 整體仿真圖 方波ROM模塊 三角波ROM模塊 Sin波ROM模塊

    2024年02月02日
    瀏覽(20)
  • 【JavaScript】JavaScript 運(yùn)算符 ⑤ ( 賦值運(yùn)算符 | 基礎(chǔ)賦值運(yùn)算符 與 復(fù)合賦值運(yùn)算符 )

    【JavaScript】JavaScript 運(yùn)算符 ⑤ ( 賦值運(yùn)算符 | 基礎(chǔ)賦值運(yùn)算符 與 復(fù)合賦值運(yùn)算符 )

    JavaScript 賦值運(yùn)算符種類 : 基礎(chǔ)賦值運(yùn)算符 : 等于 : = ; 復(fù)合賦值運(yùn)算符 : 加等 : += 減等 : -= 乘等 : *= 除等 : /= 取模等 : %= 有符號(hào)左移等 : = 有符號(hào)右移等 : = 無(wú)符號(hào)左移等 : = 無(wú)符號(hào)右移等 : = 在 JavaScript 語(yǔ)言中 , \\\" 賦值運(yùn)算符 \\\" 的 作用是 為 變量 分配值 ; 最基礎(chǔ)的 \\\" 賦值運(yùn)算

    2024年03月25日
    瀏覽(25)
  • 基于FPGA的DDS原理信號(hào)發(fā)生器設(shè)計(jì) quartusII 9.1平臺(tái) Verilog HDL語(yǔ)言編程 可產(chǎn)生正弦波

    基于FPGA的DDS原理信號(hào)發(fā)生器設(shè)計(jì) quartusII 9.1平臺(tái) Verilog HDL語(yǔ)言編程 可產(chǎn)生正弦波

    基于FPGA的DDS原理信號(hào)發(fā)生器設(shè)計(jì) quartusII 9.1平臺(tái) Verilog HDL語(yǔ)言編程 ?可產(chǎn)生正弦波、方波、鋸齒波以及三角波 ? 頻率幅度可調(diào)節(jié) ? 代碼+原理圖 在現(xiàn)代電子技術(shù)領(lǐng)域,針對(duì)各種應(yīng)用的信號(hào)發(fā)生器是一種非常核心的設(shè)備,而基于現(xiàn)場(chǎng)可編程邏輯門陣列(FPGA)的直接數(shù)字合成(

    2024年04月27日
    瀏覽(30)
  • Java基礎(chǔ)(運(yùn)算符)

    Java基礎(chǔ)(運(yùn)算符)

    運(yùn)算符和表達(dá)式 運(yùn)算符:對(duì)字面量或者變量進(jìn)行操作的 符號(hào) 表達(dá)式:用 運(yùn)算符 把字面量或者變量連接起來(lái), 符合java語(yǔ)法的式子 就可以稱為表達(dá)式;不同運(yùn)算符連接的表達(dá)式體現(xiàn)的是不同類型的表達(dá)式。 算術(shù)運(yùn)算符(加、減、乘、除、取模、取余)(字符串只有加) 一、

    2024年04月26日
    瀏覽(59)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包