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

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

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

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

Verilog中的賦值語句的區(qū)別

電子設(shè)計 ? 來源:博客園 ? 作者:nanoty ? 2020-11-26 10:04 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

連續(xù)賦值語句是Verilog數(shù)據(jù)流建模的基本語句,用于對線網(wǎng)進(jìn)行賦值,等價于門級描述,是從更高的抽象角度來對電路進(jìn)行描述。連續(xù)賦值語句必須以關(guān)鍵詞assign開始。

連續(xù)復(fù)制的主要特點(diǎn)是:

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

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

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

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

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

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

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

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

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

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

④上面三種類型的拼接

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

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

過程連續(xù)賦值是在過程塊內(nèi)對變量或線網(wǎng)型數(shù)據(jù)進(jìn)行連續(xù)賦值,是一種過程性賦值,換言之,過程性連續(xù)賦值語句是一種能夠在always或initial語句塊中出現(xiàn)的語句。這種賦值可以改寫(Override)所有其他語句對線網(wǎng)或者變量的賦值。這種賦值允許賦值表達(dá)式被連續(xù)的驅(qū)動進(jìn)入到變量或線網(wǎng)中去。

過程連續(xù)賦值語句有兩種類型:

①assign和deassign過程性語句:對變量進(jìn)行賦值。

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

3.1 assign和deassign語句

assign和deassign語句構(gòu)成了一類過程性連續(xù)賦值語句,只能用于對寄存器類型變量的連續(xù)賦值操作,不能用來對線網(wǎng)類型數(shù)據(jù)進(jìn)行連續(xù)賦值操作。

①assign語句

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

assign在執(zhí)行時,寄存器類型變量將由賦值表達(dá)式進(jìn)行連續(xù)驅(qū)動,即進(jìn)入連續(xù)賦值狀態(tài)。如果此時有普通的過程賦值語句對該寄存器變量進(jìn)行過程賦值操作,由于過程連續(xù)賦值語句assign的優(yōu)先級高于普通過程賦值語句,所以出于連續(xù)賦值狀態(tài)的寄存器變量將忽略普通過程賦值語句對它的過程賦值操作,其邏輯狀態(tài)仍然由過程連續(xù)賦值語句內(nèi)的賦值表達(dá)式所決定。

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

②deassign語句

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

deassign語句是一條撤銷連續(xù)賦值語句,用來結(jié)束對變量的連續(xù)賦值操作。當(dāng)deassign語句執(zhí)行后,原來由assign語句對該變量進(jìn)行的連續(xù)賦值操作將失效,寄存器變量被連續(xù)賦值的狀態(tài)將得到解除,該變量又可以由普通過程賦值語句進(jìn)行賦值操作了。這里需要注意一點(diǎn),當(dāng)執(zhí)行該語句撤銷對某寄存器變量的連續(xù)賦值后,該寄存器變量仍將保持使用該語句之前的原有值。

③示例:

上述語句執(zhí)行過程如下:

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

s1:在10時刻,s1開始執(zhí)行,實現(xiàn)了對變量out的連續(xù)賦值操作,因此從10時刻開始,out將處于連續(xù)賦值狀態(tài);

s2:在20時刻,s2開始執(zhí)行,將覆蓋s1產(chǎn)生的作用,所以從20時刻開始,out將由c & d連續(xù)驅(qū)動;

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

s4:當(dāng)deassign語句得到執(zhí)行,變量out連續(xù)賦值狀態(tài)被解除,其取值將保持最后一次assign語句賦予的值,即“e & f”;

3.2 force和release語句

force和release語句與assign和deassign語句類似,也是一種過程連續(xù)賦值語句。這組賦值語句不僅能對寄存器類型變量產(chǎn)生作用,還能對線網(wǎng)類型數(shù)據(jù)進(jìn)行連續(xù)賦值操作。

①force語句

語法:force <寄存器變量或者線網(wǎng)數(shù)據(jù)> = <賦值表達(dá)式>>;

force語句應(yīng)用于寄存器類型變量時,則在force語句執(zhí)行后,該寄存器變量將強(qiáng)制由進(jìn)行連續(xù)驅(qū)動,進(jìn)入被連續(xù)賦值的狀態(tài),此時將忽略其他較低優(yōu)先級的賦值語句對該寄存器變量的賦值操作,直到執(zhí)行一條release語句來釋放對該寄存器變量的連續(xù)賦值為止。

force語句應(yīng)用于線網(wǎng)數(shù)據(jù)時,則force語句執(zhí)行后,對應(yīng)的線網(wǎng)數(shù)據(jù)將得到的連續(xù)驅(qū)動,此時將忽略該線網(wǎng)數(shù)據(jù)上較低優(yōu)先級的驅(qū)動,直到有一條release語句執(zhí)行為止。

②release語句

語法:release <寄存器變量或者線網(wǎng)數(shù)據(jù)>;

release語句執(zhí)行后,原先由force語句對變量或者線網(wǎng)施加的過程連續(xù)賦值將失效,變量將解除被被連續(xù)賦值的狀態(tài),較低優(yōu)先級的賦值語句的賦值操作將有效。

③示例:

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

s1:執(zhí)行assign過程連續(xù)賦值語句,用來實現(xiàn)對變量var_reg2的連續(xù)賦值,從而var_reg2將被連續(xù)賦值為3'b001;

s2:在執(zhí)行本條語句時,var_reg1未被assign語句進(jìn)行過連續(xù)賦值操作,因此var_reg1被force連續(xù)賦值為3'b100;

s3:執(zhí)行本條語句后,var_reg2被force連續(xù)賦值為3'b100;

s4:執(zhí)行本條語句時,因為變量var_reg1將退出連續(xù)賦值的狀態(tài),因為var_reg1未曾被assign語句進(jìn)行過連續(xù)賦值操作,故var_reg1取值保持不變,即保持force狀態(tài)時的值3'b100;

s5:執(zhí)行本語句時,因為var_reg2在執(zhí)行s3之前已經(jīng)由s1實現(xiàn)了連續(xù)賦值,所以在本條語句s5執(zhí)行后,變量var_reg2將恢復(fù)到由assign語句s1確定的連續(xù)賦值狀態(tài),即3'b001;

4. 賦值語句的區(qū)別

4.1 連續(xù)賦值語句和過程賦值語句之間的區(qū)別

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

4.2 過程連續(xù)賦值語句和連續(xù)賦值語句之間的區(qū)別

? 過程連續(xù)賦值語句只能用在過程塊(initial過程快或always過程塊)內(nèi),而連續(xù)賦值語句不能出現(xiàn)在過程塊中。
? 過程連續(xù)賦值語句可以對寄存器類型變量進(jìn)行連續(xù)賦值(其中force-release語句還可以對線網(wǎng)進(jìn)行連續(xù)賦值),但是其賦值目標(biāo)不能是變量或線網(wǎng)的某一位或某幾位,而連續(xù)賦值語句只能對線網(wǎng)數(shù)據(jù)進(jìn)行賦值,賦值目標(biāo)可以是線網(wǎng)型數(shù)據(jù)的某一位或某幾位。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 存儲器
    +關(guān)注

    關(guān)注

    38

    文章

    7653

    瀏覽量

    167413
  • Verilog
    +關(guān)注

    關(guān)注

    29

    文章

    1367

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    matlab appdesigner 表格組件賦值問題,求助

    如上圖所示,我在用matlab2021Ra APP模塊進(jìn)行編程的時候,想在表格調(diào)入自己編寫的結(jié)構(gòu)數(shù)組,我從網(wǎng)上AI了一個程序語句,看著沒問題,但是就是給表格賦值不了,還請各位大神幫忙看一下這個是怎么回事,我是初學(xué)者,請各位幫
    發(fā)表于 07-12 11:45

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

    IF 語句是編程中最基本和最重要的控制結(jié)構(gòu)之一,它的主要作用是根據(jù)條件決定程序的執(zhí)行路徑,IF 語句是編程實現(xiàn)邏輯判斷和決策的基礎(chǔ)。
    的頭像 發(fā)表于 05-24 15:01 ?582次閱讀
    詳解TIA Portal SCL編程語言中的IF<b class='flag-5'>語句</b>

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

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

    FPGA Verilog HDL語法之編譯預(yù)處理

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

    Verilogsigned和$signed()的用法

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

    淺談Verilog和VHDL的區(qū)別

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

    Verilog 電路仿真常見問題 Verilog 在芯片設(shè)計的應(yīng)用

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

    Verilog 與 ASIC 設(shè)計的關(guān)系 Verilog 代碼優(yōu)化技巧

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

    Verilog 測試平臺設(shè)計方法 Verilog FPGA開發(fā)指南

    Verilog測試平臺設(shè)計方法是Verilog FPGA開發(fā)的重要環(huán)節(jié),它用于驗證Verilog設(shè)計的正確性和性能。以下是一個詳細(xì)的Verilog
    的頭像 發(fā)表于 12-17 09:50 ?1146次閱讀

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

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

    Verilog語法運(yùn)算符的用法

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

    Verilog HDL的基礎(chǔ)知識

    本文繼續(xù)介紹Verilog HDL基礎(chǔ)知識,重點(diǎn)介紹賦值語句、阻塞與非阻塞、循環(huán)語句、同步與異步、函數(shù)與任務(wù)語法知識。
    的頭像 發(fā)表于 10-24 15:00 ?1199次閱讀
    <b class='flag-5'>Verilog</b> HDL的基礎(chǔ)知識

    FPGA Verilog HDL代碼如何debug?

    monitor 語句,在關(guān)鍵位置輸出一些關(guān)鍵變量或中間結(jié)果的值,以便了解代碼執(zhí)行過程的數(shù)據(jù)變化。 分模塊調(diào)試:將復(fù)雜的設(shè)計分解為較小的模塊,分別對每個模塊進(jìn)行單獨(dú)的調(diào)試和驗證,確保每個模塊的功能正確后再集成
    發(fā)表于 09-24 19:16

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

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

    FPGA Verilog HDL有什么奇技巧?

    reg 變量,因為 initial 塊是不可綜合的,只能在仿真環(huán)境中使用,用于初始化寄存器、內(nèi)存或執(zhí)行仿真期間的其他任務(wù)。 但在 FPGA 設(shè)計,可以使用默認(rèn)賦值或者使用有條件的賦值語句
    發(fā)表于 09-12 19:10