在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

Verilog中的賦值語句的區別

電子設計 ? 來源:博客園 ? 作者:nanoty ? 2020-11-26 10:04 ? 次閱讀

1. 連續賦值語句(Continuous Assignments)

連續賦值語句是Verilog數據流建模的基本語句,用于對線網進行賦值,等價于門級描述,是從更高的抽象角度來對電路進行描述。連續賦值語句必須以關鍵詞assign開始。

連續復制的主要特點是:

連續賦值語句的左值可以是一下類型之一:
①標量線網
②向量線網
③矩陣中的一個元素(該矩陣可以是標量線網類型的,也可以是向量線網類型的)
④向量線網的某一位
⑤向量線網的部分位

以及上述各種類型的拼接體

但是,不能是向量或向量寄存器

連續賦值語句總是處于激活狀態。只要任意一個操作數發生變化,表達式就會被立即重新計算,并且將結果賦給等號左邊的線網。
操作數可以是標量或向量的線網或寄存器,也可以是函數的調用。
賦值延遲用于控制對線網賦予新值的時間,根據仿真時間單位進行說明。賦值延遲類似于門延遲,對于描述實際電路中的時序是非常重要的。

2. 過程賦值語句(Procedural Assignments)

過程賦值語句的更新對象是寄存器、整數、實數或時間變量等。這些類型的變量在被賦值后,其值將保持不變,直到被其他過程賦值語句賦予新值。過程賦值語句只有在執行到的時候才會起作用。過程賦值語句只能在initial或always語句內進行賦值,只能對變量數據類型賦值,同時initial和always中只能使用過程賦值語句。

過程賦值語句的左值可以是以下類型之一:

①reg、整形數、實型數、時間寄存器變量或存儲器單元

②上述各種類型的位選(例如:addr[3])

③上述各種類型的域選(例如:addr[31:16])

④上面三種類型的拼接

過程性賦值語句包括兩種類型的賦值語句:阻塞賦值(=)和非阻塞賦值(<=)(其主要區別詳見各類Verilog參考書,這里不再詳述)。

3. 過程連續賦值語句(Procedural Continuous Assignments)

過程連續賦值是在過程塊內對變量或線網型數據進行連續賦值,是一種過程性賦值,換言之,過程性連續賦值語句是一種能夠在always或initial語句塊中出現的語句。這種賦值可以改寫(Override)所有其他語句對線網或者變量的賦值。這種賦值允許賦值表達式被連續的驅動進入到變量或線網中去。

過程連續賦值語句有兩種類型:

①assign和deassign過程性語句:對變量進行賦值。

②force和release過程性語句:主要用于對線網賦值,也可以用于對變量賦值。

3.1 assign和deassign語句

assign和deassign語句構成了一類過程性連續賦值語句,只能用于對寄存器類型變量的連續賦值操作,不能用來對線網類型數據進行連續賦值操作。

①assign語句

語法:assign <寄存器類型變量> =<賦值表達式>;

assign在執行時,寄存器類型變量將由賦值表達式進行連續驅動,即進入連續賦值狀態。如果此時有普通的過程賦值語句對該寄存器變量進行過程賦值操作,由于過程連續賦值語句assign的優先級高于普通過程賦值語句,所以出于連續賦值狀態的寄存器變量將忽略普通過程賦值語句對它的過程賦值操作,其邏輯狀態仍然由過程連續賦值語句內的賦值表達式所決定。

如果先后有兩條assign語句對同一寄存器變量進行了過程連續賦值操作,那么第二條assign的執行將覆蓋第一條assign的執行效果。

②deassign語句

語法:deassign <寄存器類型變量>;

deassign語句是一條撤銷連續賦值語句,用來結束對變量的連續賦值操作。當deassign語句執行后,原來由assign語句對該變量進行的連續賦值操作將失效,寄存器變量被連續賦值的狀態將得到解除,該變量又可以由普通過程賦值語句進行賦值操作了。這里需要注意一點,當執行該語句撤銷對某寄存器變量的連續賦值后,該寄存器變量仍將保持使用該語句之前的原有值。

③示例:

上述語句執行過程如下:

s0:在0時刻,out被賦值為0,并且保持這個取值;

s1:在10時刻,s1開始執行,實現了對變量out的連續賦值操作,因此從10時刻開始,out將處于連續賦值狀態;

s2:在20時刻,s2開始執行,將覆蓋s1產生的作用,所以從20時刻開始,out將由c & d連續驅動;

s3:s3操作覆蓋掉s2操作;

s4:當deassign語句得到執行,變量out連續賦值狀態被解除,其取值將保持最后一次assign語句賦予的值,即“e & f”;

3.2 force和release語句

force和release語句與assign和deassign語句類似,也是一種過程連續賦值語句。這組賦值語句不僅能對寄存器類型變量產生作用,還能對線網類型數據進行連續賦值操作。

①force語句

語法:force <寄存器變量或者線網數據> = <賦值表達式>>;

force語句應用于寄存器類型變量時,則在force語句執行后,該寄存器變量將強制由進行連續驅動,進入被連續賦值的狀態,此時將忽略其他較低優先級的賦值語句對該寄存器變量的賦值操作,直到執行一條release語句來釋放對該寄存器變量的連續賦值為止。

force語句應用于線網數據時,則force語句執行后,對應的線網數據將得到的連續驅動,此時將忽略該線網數據上較低優先級的驅動,直到有一條release語句執行為止。

②release語句

語法:release <寄存器變量或者線網數據>;

release語句執行后,原先由force語句對變量或者線網施加的過程連續賦值將失效,變量將解除被被連續賦值的狀態,較低優先級的賦值語句的賦值操作將有效。

③示例:

s0:實現對變量var_reg1的過程賦值操作,即var_reg1被賦值為3'b000;

s1:執行assign過程連續賦值語句,用來實現對變量var_reg2的連續賦值,從而var_reg2將被連續賦值為3'b001;

s2:在執行本條語句時,var_reg1未被assign語句進行過連續賦值操作,因此var_reg1被force連續賦值為3'b100;

s3:執行本條語句后,var_reg2被force連續賦值為3'b100;

s4:執行本條語句時,因為變量var_reg1將退出連續賦值的狀態,因為var_reg1未曾被assign語句進行過連續賦值操作,故var_reg1取值保持不變,即保持force狀態時的值3'b100;

s5:執行本語句時,因為var_reg2在執行s3之前已經由s1實現了連續賦值,所以在本條語句s5執行后,變量var_reg2將恢復到由assign語句s1確定的連續賦值狀態,即3'b001;

4. 賦值語句的區別

4.1 連續賦值語句和過程賦值語句之間的區別

? 連續賦值語句由assign來標示,而過程賦值語句不能包含這個關鍵詞;
? 連續賦值語句中左側的數據類型必須是線網數據類型,而過程賦值語句中的被賦值數據類型則必須是寄存器類型的變量;
? 連續賦值語句不能出現在過程塊(initial或always)中,而過程賦值語句可以;
? 連續賦值語句主要用來對組合邏輯電路進行建模以及對線網數據間的連接進行描述,而過程賦值語句主要用來對時序邏輯電路進行行為描述;
? 連續賦值語句對被賦值線網型數據的賦值是“連續”的(即賦值表達式的任何變化都會在立刻反應在線網數據的取值上),而過程性賦值語句,只有在過程賦值語句被執行時才執行賦值操作,語句執行完后被賦值變量的取值不再受到賦值表達式的影響(注意這里的一次是指:在initial塊中,過程性賦值只順序執行一次,而在always塊中,每一次滿足always的條件時,都要順序執行一次該always塊中的語句。)。
? 連續賦值與過程賦值的區別:

4.2 過程連續賦值語句和連續賦值語句之間的區別

? 過程連續賦值語句只能用在過程塊(initial過程快或always過程塊)內,而連續賦值語句不能出現在過程塊中。
? 過程連續賦值語句可以對寄存器類型變量進行連續賦值(其中force-release語句還可以對線網進行連續賦值),但是其賦值目標不能是變量或線網的某一位或某幾位,而連續賦值語句只能對線網數據進行賦值,賦值目標可以是線網型數據的某一位或某幾位。

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

    關注

    38

    文章

    7639

    瀏覽量

    166623
  • Verilog
    +關注

    關注

    29

    文章

    1366

    瀏覽量

    111966
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    詳解TIA Portal SCL編程語言中的IF語句

    IF 語句是編程中最基本和最重要的控制結構之一,它的主要作用是根據條件決定程序的執行路徑,IF 語句是編程實現邏輯判斷和決策的基礎。
    的頭像 發表于 05-24 15:01 ?430次閱讀
    詳解TIA Portal SCL編程語言中的IF<b class='flag-5'>語句</b>

    在testbench如何使用阻塞賦值和非阻塞賦值

    本文詳細闡述了在一個testbench,應該如何使用阻塞賦值與非阻塞賦值。首先說結論,建議在testbench,對時鐘信號(包括分頻時鐘)使用阻塞
    的頭像 發表于 04-15 09:34 ?576次閱讀
    在testbench<b class='flag-5'>中</b>如何使用阻塞<b class='flag-5'>賦值</b>和非阻塞<b class='flag-5'>賦值</b>

    FPGA Verilog HDL語法之編譯預處理

    語句)。Verilog HDL編譯系統通常先對這些特殊的命令進行“預處理”,然后將預處理的結果和源程序一起在進行通常的編譯處理。
    的頭像 發表于 03-27 13:30 ?510次閱讀
    FPGA <b class='flag-5'>Verilog</b> HDL語法之編譯預處理

    Verilogsigned和$signed()的用法

    嗎?其實不是的,因為有符號數和無符號數據的加法強結果和乘法器結構是一樣的,signed的真正作用是決定如何對操作數擴位的問題。 2、verilog的加法和乘法操作前,會先對操作數據擴位成結果相同的位寬,然后進行加法或者乘法處理。比如a/b都為4位數據,c為5位數據,c
    的頭像 發表于 02-17 17:47 ?577次閱讀
    <b class='flag-5'>Verilog</b><b class='flag-5'>中</b>signed和$signed()的用法

    淺談Verilog和VHDL的區別

    Verilog和VHDL是兩種廣泛使用的硬件描述語言(HDL),它們用于描述和模擬數字電路系統的行為和結構。這兩種語言的主要作用是幫助工程師設計、仿真和驗證集成電路(IC)和系統級芯片(SoC)的硬件模塊。
    的頭像 發表于 02-17 14:20 ?1322次閱讀
    淺談<b class='flag-5'>Verilog</b>和VHDL的<b class='flag-5'>區別</b>

    Verilog 電路仿真常見問題 Verilog 在芯片設計的應用

    。然而,在實際應用,設計師可能會遇到各種問題,這些問題可能會影響仿真的準確性和設計的可靠性。 Verilog電路仿真常見問題 仿真環境的搭建問題 仿真環境的搭建是進行Verilog仿真的第一步。設計師需要選擇合適的仿真工具,并
    的頭像 發表于 12-17 09:53 ?1108次閱讀

    Verilog 與 ASIC 設計的關系 Verilog 代碼優化技巧

    Verilog與ASIC設計的關系 Verilog作為一種硬件描述語言(HDL),在ASIC設計扮演著至關重要的角色。ASIC(Application Specific Integrated
    的頭像 發表于 12-17 09:52 ?952次閱讀

    Verilog 測試平臺設計方法 Verilog FPGA開發指南

    Verilog測試平臺設計方法是Verilog FPGA開發的重要環節,它用于驗證Verilog設計的正確性和性能。以下是一個詳細的Verilog
    的頭像 發表于 12-17 09:50 ?1060次閱讀

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

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

    Verilog語法運算符的用法

    verilog語法中使用以下兩個運算符可以簡化我們的位選擇代碼。
    的頭像 發表于 10-25 15:17 ?2394次閱讀
    <b class='flag-5'>Verilog</b>語法<b class='flag-5'>中</b>運算符的用法

    Verilog HDL的基礎知識

    本文繼續介紹Verilog HDL基礎知識,重點介紹賦值語句、阻塞與非阻塞、循環語句、同步與異步、函數與任務語法知識。
    的頭像 發表于 10-24 15:00 ?1109次閱讀
    <b class='flag-5'>Verilog</b> HDL的基礎知識

    【「數字IC設計入門」閱讀體驗】+目錄和前2章

    UDP50 6.3.3邊沿觸發的時序電路UDP51 6.3.4邊沿觸發和電平觸發的混合行為51 6.4另一實例52 6.5表項匯總52 第7章數據流模型化54 7.1連續賦值語句54 7.2舉例55 7.3
    發表于 10-10 17:12

    FPGA Verilog HDL代碼如何debug?

    monitor 語句,在關鍵位置輸出一些關鍵變量或中間結果的值,以便了解代碼執行過程的數據變化。 分模塊調試:將復雜的設計分解為較小的模塊,分別對每個模塊進行單獨的調試和驗證,確保每個模塊的功能正確后再集成
    發表于 09-24 19:16

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

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

    FPGA Verilog HDL有什么奇技巧?

    reg 變量,因為 initial 塊是不可綜合的,只能在仿真環境中使用,用于初始化寄存器、內存或執行仿真期間的其他任務。 但在 FPGA 設計,可以使用默認賦值或者使用有條件的賦值語句
    發表于 09-12 19:10
    主站蜘蛛池模板: 一级黄色毛片播放 | wwwxx在线观看 | 免费一级片在线 | 7777在线 | 国产精品区在线12p 国产精品任我爽爆在线播放6080 | 性生活毛片| 国产性videosgratis | 大色综合色综合网站 | 日本黄色片免费看 | 人人玩人人弄人人曰 | 米奇精品一区二区三区 | 视频一区二区在线 | 女性一级全黄生活片在线播放 | 亚洲国产tv | 欧美一级黄色片 | 亚洲情a成黄在线观看动 | 黄色a站| 寂寞午夜影院 | 最近2018免费中文字幕视频 | 特黄三级 | 国产精品福利视频手机免费观看 | 日本一区免费在线观看 | 天天操天天摸天天干 | 欧美人另类zooz | 午夜网站免费版在线观看 | 日本不卡1 | 午夜看看 | 四虎影永久在线观看网址 | 俺去啦在线视频 | 久久综合色婷婷 | 最黄毛片 | 欧美日韩性猛交xxxxx免费看 | 综合激情网五月 | 天天操天天搞 | 四虎影院免费在线播放 | 日本美女黄色一级片 | 美女国产| 久久久福利 | 天天看天天操 | 在线免费观看视频 | 新版天堂中文在线8官网 |