那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

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

wire 和reg是Verilog程序里的常見的兩種變量類型,他們都是構成verilog程序邏輯最基本的元素。正確掌握兩者的使用方法是寫好verilog程序的前提。但同時,因為他們在大多數編程語言中不存在,很多新接觸verilog語言的人并不能很清楚的區別兩種變量的不同之處。這里簡單對他們做一個比較,方便在編程時區別使用。

功能和狀態

Wire主要起信號間連接作用,用以構成信號的傳遞或者形成組合邏輯。因為沒有時序限定,wire的賦值語句通常和其他block語句并行執行。

Wire不保存狀態,它的值可以隨時改變,不受時鐘信號限制。

除了可以在module內聲明,所有module的input 和output默認都是wire型的。

Reg是寄存器的抽象表達,作用類似通常編程語言中的變量,可以儲存數值,作為參與表達式的運算,通常負責時序邏輯,以串行方式執行。

Reg可以保存輸出狀態。狀態改變通常在下一個時鐘信號邊沿翻轉時進行。

賦值方式

Wire有兩種賦值方式

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

wire wire_a = 1’b0;

2.用assign語句賦值,等式右邊可以是wire,reg,一個常量或者是邏輯運算

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的默認狀態是高阻態,即z。

對reg的使用通常需要有觸發條件,在always的block下進行。觸發條件可以是時鐘信號上升沿。賦值語句可以是=或者

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在聲明時候不賦初值。未賦值的reg變量處于不定態,即x。

使用方式

在引用一個module時,輸入端口可以是wire型,也可以reg型。這里可以把對input的賦值看作一個assign語句,使用的變量相當于等號右邊的變量,所以兩者都可以。

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

位寬

這是個使用注意事項。所有的wire和reg在聲明時如果不做特殊聲明,只有1位。這個對于熟悉其他編程語言的人是一個容易犯錯的地方。

執行

wire wire_a = 4’he;

語句最后得到的wire_a是0x1,而不是0xe。因為wire_a只取了0xe的最低位的值而省略掉了其他值。所以正確的語句應該是

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

這樣wire_a輸出的結果才是一個0xe。

小結

這篇文章從功能,變量狀態,賦值方式,使用方式等角度討論了wire和reg變量類型的區別。并且給出了一個在verilog中常見的使用錯誤及解決方法。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 寄存器
    +關注

    關注

    31

    文章

    5363

    瀏覽量

    121199
  • Verilog
    +關注

    關注

    28

    文章

    1351

    瀏覽量

    110400
收藏 人收藏

    評論

    相關推薦

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

    Verilog 與 VHDL 比較 1. 語法和風格 VerilogVerilog 的語法更接近于 C 語言,對于有 C 語言背景的工程師來說,學習曲線較平緩。它支持結構化編程,代
    的頭像 發表于 12-17 09:44 ?362次閱讀

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

    ? ? ? ?本文介紹了CCD傳感器與CMOS傳感器的相同之處不同之處。 相對最早發展起來的模擬相機,數字相機也是一個很龐大的家族,早在20世紀70年代,相機里出現了以CMOS技術為核心的類型分支
    的頭像 發表于 11-24 10:39 ?1613次閱讀

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

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

    請問PCM2912AE2PJTR與PCM2912APJTR,兩個型號尾綴不同之處(E2)有何意義及差別?

    請問PCM2912AE2PJTR與PCM2912APJTR,兩個型號尾綴不同之處(E2)有何意義及差別?急需解答迷津,不勝感激
    發表于 10-28 08:10

    FPGA算法工程師、邏輯工程師、原型驗證工程師有什么區別?

    。但在實際工作,這三個角色的工作可能會有一定的重疊和交叉。 交流問題(二) Q:Verilog 定義信號為什么要區分 wirereg
    發表于 09-23 18:26

    FPGA Verilog HDL有什么奇技巧?

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

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

    繼電器和接觸器是兩種常用的電氣元件,它們在電路起著非常重要的作用。雖然它們在某些方面有相似之處,但它們之間還是存在一些不同之處。以下是對繼電器和接觸器的詳細比較: 定義和工作原理 繼
    的頭像 發表于 06-21 10:10 ?1082次閱讀

    智能制造與傳統制造有什么不同之處

    、生產方式、管理模式等方面存在很大的不同,這些不同之處正是智能制造的優勢和特點。 二、設計理念的不同 傳統制造設計理念 傳統制造的設計理念主要側重于產品的功能性、穩定性和成本效益。在設計過程,設計師需要充分考
    的頭像 發表于 06-07 15:36 ?3521次閱讀

    單片機和plc有什么相同和不同之處

    某些方面具有相似之處,但在許多關鍵方面也存在顯著差異。本文將詳細探討單片機和PLC的相同和不同之處。 一、相同之處 控制功能:單片機和PLC都具有控制功能,可以對各種設備和系統進行控制。它們可以接收輸入信號,處理這些信號,然后輸
    的頭像 發表于 06-06 14:05 ?1384次閱讀

    AUTOSAR MCAL驅動程序與演示程序的Libraries的驅動程序有什么不同之處

    1.關于 AUTOSAR MCAL 驅動程序 與演示程序的 Libraries 的驅動程序 有什么不同之處? 2.AUTOSAR MCAL 驅動程序是否包含了 TC397 安全菜
    發表于 05-17 06:55

    verilog語音實現浮點運算

    Verilog可以通過使用IEEE標準的浮點數表示來實現浮點運算。下面是一個基本的Verilog模塊示例,展示了如何進行加法、乘法和除法等常見的浮點運算操作: module
    發表于 03-25 21:49

    veriloginput和output作用

    Verilog,input和output用于定義模塊的輸入和輸出端口。它們是用于通信的關鍵元素,定義了模塊與其它模塊之間的數據傳輸接口。通過input和output端口,模塊之間可以互相傳遞數據
    的頭像 發表于 02-23 10:29 ?3406次閱讀

    verilog與其他編程語言的接口機制

    Verilog是一種硬件描述語言,用于描述數字電路的行為和結構。與其他編程語言相比,Verilog具有與硬件緊密結合的特點,因此其接口機制也有一些與眾不同之處。本文將詳細介紹Verilog
    的頭像 發表于 02-23 10:22 ?775次閱讀

    verilog雙向端口的使用

    輸出信號。本文將詳細介紹Verilog雙向端口的使用,并提供示例說明其在實際應用的作用。 第一部分:雙向端口的定義和語法 在Verilog,可以使用
    的頭像 發表于 02-23 10:18 ?1529次閱讀

    verilogfor循環是串行執行還是并行執行

    Verilog,for循環是并行執行的。Verilog是一種硬件描述語言,用于描述和設計數字電路和系統。在硬件系統,各個電路模塊是同時運行的,并且可以并行執行多個操作。因此,在
    的頭像 發表于 02-22 16:06 ?3146次閱讀
    ,瑞丰国际娱乐场| 曼哈顿百家乐的玩法技巧和规则| 百家乐官网赌钱| 百家乐事一箩筐的微博| 云鼎百家乐官网作弊| 离岛区| 丽都百家乐的玩法技巧和规则| 新锦江百家乐官网娱乐场开户注册| 吴旗县| 天津水果机定位器| 澳门百家乐海洋阿强| 百家乐官网2号破解下载| 太阳城娱乐网站| 威尼斯人娱乐城代理| 百家乐假在哪里| 真人百家乐官网导航| 利澳娱乐城注册| 百家乐稳赢技法| 博彩百家乐官网组选六六组 | 百家乐官网什么叫缆| 太阳城直属现金网| 电脑版百家乐下注技巧| 百家乐官网必胜绝| 百家乐官网娱乐用品| bet365开户| 大发8888娱乐城 真钱| 太阳城百家乐公司| 三国百家乐官网娱乐城| 百家乐官网网络游戏平台| 真钱百家乐赌博| 大发888娱乐城手机版| 百家乐娱乐下载| 百家乐玩法的技巧| 蓝盾百家乐官网赌场娱乐网规则 | 24山吉凶段| 百家乐官网开户导航| 赌博百家乐官网作弊法| 金宝博188| 大发888国际娱乐net| 利都百家乐国际娱乐场开户注册| 百家乐网络投注|