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

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

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

比較Verilog中Wire和Reg的不同之處

汽車玩家 ? 來(lái)源:CSDN ? 作者:MangoWen ? 2020-03-08 17:18 ? 次閱讀

wire 和reg是Verilog程序里的常見(jiàn)的兩種變量類型,他們都是構(gòu)成verilog程序邏輯最基本的元素。正確掌握兩者的使用方法是寫好verilog程序的前提。但同時(shí),因?yàn)樗麄冊(cè)诖蠖鄶?shù)編程語(yǔ)言中不存在,很多新接觸verilog語(yǔ)言的人并不能很清楚的區(qū)別兩種變量的不同之處。這里簡(jiǎn)單對(duì)他們做一個(gè)比較,方便在編程時(shí)區(qū)別使用。

功能和狀態(tài)

Wire主要起信號(hào)間連接作用,用以構(gòu)成信號(hào)的傳遞或者形成組合邏輯。因?yàn)闆](méi)有時(shí)序限定,wire的賦值語(yǔ)句通常和其他block語(yǔ)句并行執(zhí)行。

Wire不保存狀態(tài),它的值可以隨時(shí)改變,不受時(shí)鐘信號(hào)限制。

除了可以在module內(nèi)聲明,所有module的input 和output默認(rèn)都是wire型的。

Reg是寄存器的抽象表達(dá),作用類似通常編程語(yǔ)言中的變量,可以儲(chǔ)存數(shù)值,作為參與表達(dá)式的運(yùn)算,通常負(fù)責(zé)時(shí)序邏輯,以串行方式執(zhí)行。

Reg可以保存輸出狀態(tài)。狀態(tài)改變通常在下一個(gè)時(shí)鐘信號(hào)邊沿翻轉(zhuǎn)時(shí)進(jìn)行。

賦值方式

Wire有兩種賦值方式

1.在定義變量時(shí)賦初值,方式是用=。如果之后沒(méi)有再做賦值,初值會(huì)一直保留,(是否可以給邏輯?)

wire wire_a = 1’b0;

2.用assign語(yǔ)句賦值,等式右邊可以是wire,reg,一個(gè)常量或者是邏輯運(yùn)算

Wire wire_a;
Wire wire_b;
Wire wire_c;
Reg reg_a;
assign wire_b = wire_a;
assign wire_c =reg_a;
assign wire_d =wire_b & wire_c;

如果不賦值,wire的默認(rèn)狀態(tài)是高阻態(tài),即z。

對(duì)reg的使用通常需要有觸發(fā)條件,在always的block下進(jìn)行。觸發(fā)條件可以是時(shí)鐘信號(hào)上升沿。賦值語(yǔ)句可以是=或者

Wire wire_a;
Wire wire_b;
Reg reg_a;
Reg reg_b;
Always @( posedge clk)
Begin
Reg_b =reg_a;
Reg_c = wire_a | wire_b;
end

Reg在聲明時(shí)候不賦初值。未賦值的reg變量處于不定態(tài),即x。

使用方式

在引用一個(gè)module時(shí),輸入端口可以是wire型,也可以reg型。這里可以把對(duì)input的賦值看作一個(gè)assign語(yǔ)句,使用的變量相當(dāng)于等號(hào)右邊的變量,所以兩者都可以。

而對(duì)于輸出端口,必須使用reg型,而不能是wire型。同樣用assign的角度考慮,module的輸出在等號(hào)右邊,而使用的變量成了等號(hào)左邊,assign語(yǔ)句等號(hào)左邊只能是wire型。

位寬

這是個(gè)使用注意事項(xiàng)。所有的wire和reg在聲明時(shí)如果不做特殊聲明,只有1位。這個(gè)對(duì)于熟悉其他編程語(yǔ)言的人是一個(gè)容易犯錯(cuò)的地方。

執(zhí)行

wire wire_a = 4’he;

語(yǔ)句最后得到的wire_a是0x1,而不是0xe。因?yàn)閣ire_a只取了0xe的最低位的值而省略掉了其他值。所以正確的語(yǔ)句應(yīng)該是

wire[3:0] wire_a = 4’he;

這樣wire_a輸出的結(jié)果才是一個(gè)0xe。

小結(jié)

這篇文章從功能,變量狀態(tài),賦值方式,使用方式等角度討論了wire和reg變量類型的區(qū)別。并且給出了一個(gè)在verilog中常見(jiàn)的使用錯(cuò)誤及解決方法。

聲明:本文內(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)注

    31

    文章

    5343

    瀏覽量

    120366
  • Verilog
    +關(guān)注

    關(guān)注

    28

    文章

    1351

    瀏覽量

    110100
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Verilog與VHDL的比較 Verilog HDL編程技巧

    Verilog 與 VHDL 比較 1. 語(yǔ)法和風(fēng)格 VerilogVerilog 的語(yǔ)法更接近于 C 語(yǔ)言,對(duì)于有 C 語(yǔ)言背景的工程師來(lái)說(shuō),學(xué)習(xí)曲線較平緩。它支持結(jié)構(gòu)化編程,代
    的頭像 發(fā)表于 12-17 09:44 ?145次閱讀

    CCD傳感器與CMOS傳感器的相同之處不同之處

    ? ? ? ?本文介紹了CCD傳感器與CMOS傳感器的相同之處不同之處。 相對(duì)最早發(fā)展起來(lái)的模擬相機(jī),數(shù)字相機(jī)也是一個(gè)很龐大的家族,早在20世紀(jì)70年代,相機(jī)里出現(xiàn)了以CMOS技術(shù)為核心的類型分支
    的頭像 發(fā)表于 11-24 10:39 ?882次閱讀

    NXP MCX N23和MCX N94/54的不同之處

    繼2024年一月份發(fā)布了MCXN94/54系列之后,NXP又在6月份發(fā)布了N系列的第二款產(chǎn)品,MCX N23系列,下面小編就為大家揭開(kāi)它的神秘面紗,來(lái)看看這款產(chǎn)品有何特點(diǎn),了解一下它和N94/54又有什么不同之處呢!
    的頭像 發(fā)表于 11-01 12:35 ?426次閱讀
    NXP MCX N23和MCX N94/54的<b class='flag-5'>不同之處</b>

    請(qǐng)問(wèn)PCM2912AE2PJTR與PCM2912APJTR,兩個(gè)型號(hào)尾綴不同之處(E2)有何意義及差別?

    請(qǐng)問(wèn)PCM2912AE2PJTR與PCM2912APJTR,兩個(gè)型號(hào)尾綴不同之處(E2)有何意義及差別?急需解答迷津,不勝感激
    發(fā)表于 10-28 08:10

    FPGA算法工程師、邏輯工程師、原型驗(yàn)證工程師有什么區(qū)別?

    。但在實(shí)際工作,這三個(gè)角色的工作可能會(huì)有一定的重疊和交叉。 交流問(wèn)題(二) Q:Verilog 定義信號(hào)為什么要區(qū)分 wirereg
    發(fā)表于 09-23 18:26

    FPGA Verilog HDL有什么奇技巧?

    的話,仿真波形是z,雖然出結(jié)果時(shí)不影響,有沒(méi)有必要一開(kāi)始的時(shí)候直接reg賦初值?在rtl文件里能不能使用initial賦初值,這樣的rtl代碼能否綜合? A:在 Verilog ,是否有必要為所有
    發(fā)表于 09-12 19:10

    繼電器和接觸器有什么不同之處?

    繼電器和接觸器是兩種常用的電氣元件,它們?cè)陔娐?b class='flag-5'>中起著非常重要的作用。雖然它們?cè)谀承┓矫嬗邢嗨?b class='flag-5'>之處,但它們之間還是存在一些不同之處。以下是對(duì)繼電器和接觸器的詳細(xì)比較: 定義和工作原理 繼
    的頭像 發(fā)表于 06-21 10:10 ?899次閱讀

    智能制造與傳統(tǒng)制造有什么不同之處

    、生產(chǎn)方式、管理模式等方面存在很大的不同,這些不同之處正是智能制造的優(yōu)勢(shì)和特點(diǎn)。 二、設(shè)計(jì)理念的不同 傳統(tǒng)制造設(shè)計(jì)理念 傳統(tǒng)制造的設(shè)計(jì)理念主要側(cè)重于產(chǎn)品的功能性、穩(wěn)定性和成本效益。在設(shè)計(jì)過(guò)程,設(shè)計(jì)師需要充分考
    的頭像 發(fā)表于 06-07 15:36 ?3319次閱讀

    單片機(jī)和plc有什么相同和不同之處

    某些方面具有相似之處,但在許多關(guān)鍵方面也存在顯著差異。本文將詳細(xì)探討單片機(jī)和PLC的相同和不同之處。 一、相同之處 控制功能:?jiǎn)纹瑱C(jī)和PLC都具有控制功能,可以對(duì)各種設(shè)備和系統(tǒng)進(jìn)行控制。它們可以接收輸入信號(hào),處理這些信號(hào),然后輸
    的頭像 發(fā)表于 06-06 14:05 ?1219次閱讀

    AUTOSAR MCAL驅(qū)動(dòng)程序與演示程序的Libraries的驅(qū)動(dòng)程序有什么不同之處?

    1.關(guān)于 AUTOSAR MCAL 驅(qū)動(dòng)程序 與演示程序的 Libraries 的驅(qū)動(dòng)程序 有什么不同之處? 2.AUTOSAR MCAL 驅(qū)動(dòng)程序是否包含了 TC397 安全菜
    發(fā)表于 05-17 06:55

    verilog與其他編程語(yǔ)言的接口機(jī)制

    Verilog是一種硬件描述語(yǔ)言,用于描述數(shù)字電路的行為和結(jié)構(gòu)。與其他編程語(yǔ)言相比,Verilog具有與硬件緊密結(jié)合的特點(diǎn),因此其接口機(jī)制也有一些與眾不同之處。本文將詳細(xì)介紹Verilog
    的頭像 發(fā)表于 02-23 10:22 ?704次閱讀

    verilog雙向端口的使用

    輸出信號(hào)。本文將詳細(xì)介紹Verilog雙向端口的使用,并提供示例說(shuō)明其在實(shí)際應(yīng)用的作用。 第一部分:雙向端口的定義和語(yǔ)法 在Verilog,可以使用
    的頭像 發(fā)表于 02-23 10:18 ?1411次閱讀

    AMOLED與OLED的不同之處在哪

    AMOLED還是在。雖然LED在日常生活比較常見(jiàn),但是在屏幕,每個(gè)LED的尺寸都非常之小,并且被分成了紅綠藍(lán)三個(gè)子像素群,然后再形成不一樣的顏色,而子像素的排列方式也會(huì)影響到整個(gè)顯示效果。
    發(fā)表于 02-01 16:46 ?547次閱讀

    光纖和光纜有何不同之處?

    很多人會(huì)有這樣的疑問(wèn),光纖和光纜有何不同之處?主要是因?yàn)楣饫w和光纜這兩個(gè)名詞容易引起混淆。在嚴(yán)格的定義下,光纖和光纜是兩種不同的東西,然而在現(xiàn)實(shí)生活,許多人仍然會(huì)混淆這兩者。為了更好地理解光纖和光纜之間的區(qū)別,我們一起來(lái)看一下。
    的頭像 發(fā)表于 01-15 17:01 ?851次閱讀

    Linux系統(tǒng)文件比較工具集合

    在Linux系統(tǒng),文件比較是一種常見(jiàn)的任務(wù),用于比較兩個(gè)文件之間的差異。文件比較可以幫助我們找出兩個(gè)文件的不同之處,或者確定它們是否完全相
    的頭像 發(fā)表于 01-02 13:53 ?693次閱讀