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

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

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

Verilog HDL語言中連續(xù)賦值的特征

電子工程師 ? 來源:FPGA設(shè)計(jì)論壇 ? 作者:FPGA設(shè)計(jì)論壇 ? 2021-03-05 15:38 ? 次閱讀

數(shù)據(jù)流模型化

本章講述Verilog HDL語言中連續(xù)賦值的特征。連續(xù)賦值用于數(shù)據(jù)流行為建模;相反,過程賦值用于(下章的主題)順序行為建模。組合邏輯電路的行為最好使用連續(xù)賦值語句建模。

7.1 連續(xù)賦值語句

連續(xù)賦值語句將值賦給線網(wǎng)(連續(xù)賦值不能為寄存器賦值),它的格式如下(簡(jiǎn)單形式):assignLHS_target = RHS_expression ;例如,wire [3:0] Z, Preset, Clear; // 線網(wǎng)說明assign Z = Preset & Clear; //連續(xù)賦值語句連續(xù)賦值的目標(biāo)為 Z,表達(dá)式右端為“ Preset & Clear”。注意連續(xù)賦值語句中的關(guān)鍵詞assign。連續(xù)賦值語句在什么時(shí)候執(zhí)行呢 ?

只要在右端表達(dá)式的操作數(shù)上有事件 (事件為值的變化)發(fā)生時(shí),表達(dá)式即被計(jì)算;如果結(jié)果值有變化,新結(jié)果就賦給左邊的線網(wǎng)。在上面的例子中,如果 P re s e t或C l e a r變化,就計(jì)算右邊的整個(gè)表達(dá)式。如果結(jié)果變化,那么結(jié)果即賦值到線網(wǎng)Z。連續(xù)賦值的目標(biāo)類型如下:

1) 標(biāo)量線網(wǎng)

2)。 向量線網(wǎng)

3) 向量的常數(shù)型位選擇4) 向量的常數(shù)型部分選擇5) 上述類型的任意的拼接運(yùn)算結(jié)果下面是連續(xù)賦值語句的另一些例子:assgin BusErr = Parity| (One & OP) ;assign Z = ~ (A | B) & (C | D) & (E | F) ;只要A、B、C、D、E或F的值變化,最后一個(gè)連續(xù)賦值語句就執(zhí)行。在這種情況下,計(jì)算右邊整個(gè)表達(dá)式,并將結(jié)果賦給目標(biāo) Z。

在下一個(gè)例子中,目標(biāo)是一個(gè)向量線網(wǎng)和一個(gè)標(biāo)量線網(wǎng)的拼接結(jié)果。wireCout, C i n ;wire [3:0] Sum, A, B;。 。 .assign{Cout, Sum} = A + B + Cin;因?yàn)锳和B是4位寬,加操作的結(jié)果最大能夠產(chǎn)生 5位結(jié)果。左端表達(dá)式的長(zhǎng)度指定為 5位(Cout 1位,Sum 4位)。

賦值語句因此促使右端表達(dá)式最右邊的 4位的結(jié)果賦給S u m,第5位(進(jìn)位位)賦給C o u t。下例說明如何在一個(gè)連續(xù)賦值語句中編寫多個(gè)賦值方式。assgin M u x = (S = = 0)?

A : ‘bz, M u x = (S = = 1)?

B : ’bz, M u x = (S = = 2)?

C : ‘bz, M u x = (S = = 3)?

D : ’bz;這是下述4個(gè)獨(dú)立的連續(xù)賦值語句的簡(jiǎn)化書寫形式。

assign M u x = (S = = 0)? A : ‘bz;assign M u x = (S = = 1)? B : ’bz;assign M u x = (S = = 2)? C : ‘bz;assign M u x = (S = = 3)? D : ’bz;

7.2 舉例

下例采用數(shù)據(jù)流方式描述1位全加器。

在本例中,有兩個(gè)連續(xù)賦值語句。這些賦值語句是并發(fā)的,與其書寫的順序無關(guān)。只要連續(xù)賦值語句右端表達(dá)式中操作數(shù)的值變化 (即有事件發(fā)生), 連續(xù)賦值語句即被執(zhí)行。如果 A變化,則兩個(gè)連續(xù)賦值都被計(jì)算,即同時(shí)對(duì)右端表達(dá)式求值,并將結(jié)果賦給左端目標(biāo)。

7.3 線網(wǎng)說明賦值

連續(xù)賦值可作為線網(wǎng)說明本身的一部分。這樣的賦值被稱為線網(wǎng)說明賦值。例如 :wire [3:0] S u m = 4‘b0;wire C l e a r = ’b1;wire A _ G T _ B = A 》 B, B_GT_A= B 》 A;線網(wǎng)說明賦值說明線網(wǎng)與連續(xù)賦值。說明線網(wǎng)然后編寫連續(xù)賦值語句是一種方便的形式。參見下例。wire Clear;assign Clear= ‘b1;等價(jià)于線網(wǎng)聲明e賦值:wire Clear= ’b1;不允許在同一個(gè)線網(wǎng)上出現(xiàn)多個(gè)線網(wǎng)說明賦值。如果多個(gè)賦值是必需的,則必須使用連續(xù)賦值語句。

7.4 時(shí)延

如果在連續(xù)賦值語句中沒有定義時(shí)延,如前面的例子,則右端表達(dá)式的值立即賦給左端表達(dá)式, 時(shí)延為0。如下例所示顯式定義連續(xù)賦值的時(shí)延。assign #6 Ask = Quiet | | L a t e;規(guī)定右邊表達(dá)式結(jié)果的計(jì)算到其賦給左邊目標(biāo)需經(jīng)過 6個(gè)時(shí)間單位時(shí)延。例如,如果在時(shí)刻5,L a t e值發(fā)生變化,則賦值的右端表達(dá)式被計(jì)算,并且 A s k在時(shí)刻11( = 5 +6)被賦于新值。圖7 - 1舉例說明了時(shí)延概念。

2dff7374-7c77-11eb-8b86-12bb97331649.png

如果右端在傳輸給左端之前變化,會(huì)發(fā)生什么呢?在這種情況下,應(yīng)用最新的變化值。下例顯示了這種行為:assign #4 Cab = Drm;圖7 - 2顯示了這種變化的效果。右端發(fā)生在時(shí)延間隔內(nèi)的變化被濾掉。例如,在時(shí)刻 5,Dr m的上升邊沿預(yù)定在時(shí)刻9顯示在Cab上,但是因?yàn)镈rm在時(shí)刻8下降為0,預(yù)定在Cab上的值被刪除。同樣, Drm在時(shí)刻1 8和2 0之間的脈沖被濾掉。這也同樣適用于慣性時(shí)延行為:即右端值變化在能夠傳播到左端前必須至少保持時(shí)延間隔;如果在時(shí)延間隔內(nèi)右端值變化,則前面的值不能傳輸?shù)捷敵觥?/p>

2e69f7da-7c77-11eb-8b86-12bb97331649.png

對(duì)于每個(gè)時(shí)延定義,總共能夠指定三類時(shí)延值:1) 上升時(shí)延2) 下降時(shí)延3) 關(guān)閉時(shí)延這三類時(shí)延的語法如下:

在第一個(gè)賦值語句中,上升時(shí)延、下降時(shí)延、截止時(shí)延和傳遞到 x的時(shí)延相同,都為 4。在第二個(gè)語句中,上升時(shí)延為4,下降時(shí)延為8,傳遞到x和z的時(shí)延相同,是4和8中的最小值,即4。在第3個(gè)賦值中,上升時(shí)延為 4,下降時(shí)延為8,截止時(shí)延為6,傳遞到x的時(shí)延為4 ( 4、8和6中的最小值)。在最后的語句中,所有的時(shí)延都為 0。上升時(shí)延對(duì)于向量線網(wǎng)目標(biāo)意味著什么呢 ? 如果右端從非0向量變化到0向量,那么就使用下降時(shí)延。如果右端值到達(dá)z,那么使用下降時(shí)延;否則使用上升時(shí)延。

7.5 線網(wǎng)時(shí)延

時(shí)延也可以在線網(wǎng)說明中定義,如下面的說明。wire #5 A r b;這個(gè)時(shí)延表明A r b驅(qū)動(dòng)源值改變與線網(wǎng)A r b本身間的時(shí)延。考慮下面對(duì)線網(wǎng) A r b的連續(xù)賦值語句:

assign # 2 Arb = Bod & Cap;

2ef9ce6e-7c77-11eb-8b86-12bb97331649.png

假定在時(shí)刻1 0,B o d上的事件促使右端表達(dá)式計(jì)算。如果結(jié)果不同,則在 2個(gè)時(shí)間單位后賦值給 A r b,即時(shí)刻1 2。但是因?yàn)槎x了線網(wǎng)時(shí)延,實(shí)際對(duì) A r b的賦值發(fā)生在時(shí)刻17( = 10 + 2 + 5)。圖7 - 3的波形舉例說明了不同的時(shí)延。圖7 - 4很好地描述了線網(wǎng)時(shí)延的效果。首先使用賦值時(shí)延,然后增加任意線網(wǎng)時(shí)延。如果時(shí)延在線網(wǎng)說明賦值中出現(xiàn),那么時(shí)延不是線網(wǎng)時(shí)延,而是賦值時(shí)延。下面是 A的線網(wǎng)說明賦值,2個(gè)時(shí)間單位是賦值時(shí)延,而不是線網(wǎng)時(shí)延。w i r e #2 A = B - C; // 賦值時(shí)延

7.6 舉例

7.6.1 主從觸發(fā)器

下面是圖5 - 9所示的主從觸發(fā)器的Verilog HDL模型。

7.6.2 數(shù)值比較器

下面是8位(參數(shù)定義的)數(shù)值比較器數(shù)據(jù)流模型。

原文標(biāo)題:Verilog入門-數(shù)據(jù)流模型化

文章出處:【微信公眾號(hào):FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

責(zé)任編輯:haq

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

    關(guān)注

    28

    文章

    1339

    瀏覽量

    109880
  • HDL
    HDL
    +關(guān)注

    關(guān)注

    8

    文章

    325

    瀏覽量

    47288

原文標(biāo)題:Verilog入門-數(shù)據(jù)流模型化

文章出處:【微信號(hào):gh_9d70b445f494,微信公眾號(hào):FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Verilog HDL的基礎(chǔ)知識(shí)

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

    c語言中從左到右結(jié)合怎么看

    在C語言中,操作符的結(jié)合性(Associativity)是指當(dāng)操作符在表達(dá)式中連續(xù)出現(xiàn)時(shí),它們?nèi)绾闻c操作數(shù)結(jié)合的順序。對(duì)于大多數(shù)二元操作符(即需要兩個(gè)操作數(shù)的操作符),C語言遵循兩種基本的結(jié)合方式
    的頭像 發(fā)表于 08-20 11:42 ?506次閱讀

    有什么好用的verilog HDL編輯工具可用?

    有什么好用的verilog HDL編輯工具可用?最好能集成實(shí)時(shí)的verilog HDL語法檢測(cè)、自定義模塊識(shí)別觸發(fā)等功能,最好能夠免費(fèi);
    發(fā)表于 04-28 11:00

    fpga是用c語言還是verilog

    FPGA(現(xiàn)場(chǎng)可編程邏輯門陣列)開發(fā)主要使用的編程語言是硬件描述語言HDL),其中Verilog是最常用的編程語言之一。而C
    的頭像 發(fā)表于 03-27 14:38 ?1545次閱讀

    fpga用什么語言編程

    FPGA(現(xiàn)場(chǎng)可編程門陣列)的編程主要使用硬件描述語言HDL),其中最常用的是Verilog HDL和VHDL。
    的頭像 發(fā)表于 03-14 18:17 ?2433次閱讀

    fpga用的是什么編程語言 fpga用什么語言開發(fā)

    fpga用的是什么編程語言 FPGA(現(xiàn)場(chǎng)可編程邏輯門陣列)主要使用的編程語言是硬件描述語言(HDL)。在眾多的HDL中,
    的頭像 發(fā)表于 03-14 17:09 ?3149次閱讀

    fpga芯片用什么編程語言

    FPGA芯片主要使用的編程語言包括Verilog HDL和VHDL。這兩種語言都是硬件描述語言,用于描述數(shù)字系統(tǒng)的結(jié)構(gòu)和行為。
    的頭像 發(fā)表于 03-14 16:07 ?1381次閱讀

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

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

    verilog調(diào)用模塊端口對(duì)應(yīng)方式

    Verilog是一種硬件描述語言HDL),廣泛應(yīng)用于數(shù)字電路設(shè)計(jì)和硬件驗(yàn)證。在Verilog中,模塊是構(gòu)建電路的基本單元,而模塊端口對(duì)應(yīng)方式則用于描述模塊之間信號(hào)傳遞的方式。本文將介
    的頭像 發(fā)表于 02-23 10:20 ?1398次閱讀

    verilog同步和異步的區(qū)別 verilog阻塞賦值和非阻塞賦值的區(qū)別

    Verilog是一種硬件描述語言,用于設(shè)計(jì)和模擬數(shù)字電路。在Verilog中,同步和異步是用來描述數(shù)據(jù)傳輸和信號(hào)處理的兩種不同方式,而阻塞賦值和非阻塞
    的頭像 發(fā)表于 02-22 15:33 ?1352次閱讀

    Verilog HDL數(shù)字集成電路設(shè)計(jì)方法概述

    電子發(fā)燒友網(wǎng)站提供《Verilog HDL數(shù)字集成電路設(shè)計(jì)方法概述.zip》資料免費(fèi)下載
    發(fā)表于 02-03 09:27 ?2次下載

    C語言中結(jié)構(gòu)體能不能相加

    C語言中,結(jié)構(gòu)體能不能相加?
    的頭像 發(fā)表于 12-19 17:04 ?1148次閱讀
    C<b class='flag-5'>語言中</b>結(jié)構(gòu)體能不能相加

    c語言中數(shù)據(jù)溢出是歸0還是歸1

    語言中的變量類型有不同的字節(jié)數(shù),因此它們能夠表示的最大值也不同。例如,一個(gè)無符號(hào)整數(shù)類型的變量(如unsigned int)通常有32位,它能表示的最大值為2^32-1,即4294967295。如果超過這個(gè)數(shù)值進(jìn)行計(jì)算或賦值,數(shù)據(jù)溢出就會(huì)發(fā)生。 數(shù)據(jù)溢出對(duì)
    的頭像 發(fā)表于 11-30 11:47 ?2354次閱讀

    scanf在C語言中的作用

    scanf在C語言中的作用? scanf是C語言中的輸入函數(shù),用于從標(biāo)準(zhǔn)輸入設(shè)備(如鍵盤)讀取數(shù)據(jù),并將其存儲(chǔ)到變量中。它是C語言中最常用的標(biāo)準(zhǔn)庫(kù)函數(shù)之一,對(duì)于控制臺(tái)交互式程序開發(fā)
    的頭像 發(fā)表于 11-23 14:13 ?1170次閱讀

    C語言中如何實(shí)現(xiàn)注釋

    在C語言中,注釋是用來增加代碼可讀性和注釋過程和功能的文本。C語言中支持兩種類型的注釋:?jiǎn)涡凶⑨尯投嘈凶⑨尅?單行注釋以雙斜杠(//)開始,直到該行結(jié)束。該注釋語句可以在代碼的任何位置插入,用于解釋
    的頭像 發(fā)表于 11-22 10:17 ?1131次閱讀