<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > Verilog的語言要素有哪些?

          Verilog的語言要素有哪些?

          作者: 時間:2018-08-03 來源:網(wǎng)絡(luò) 收藏

          本文引用地址:http://www.ex-cimer.com/article/201808/385258.htm

          語言定義了實數(shù)如何隱式地轉(zhuǎn)換為整數(shù)。實數(shù)通過四舍五入被轉(zhuǎn)換為最相近的整數(shù)。

          42.446, 42.45 轉(zhuǎn)換為整數(shù)42

          92.5, 92.699 轉(zhuǎn)換為整數(shù)93

          -15.62 轉(zhuǎn)換為整數(shù)-16

          -26.22 轉(zhuǎn)換為整數(shù)-26

          3.6.3 字符串

          字符串是雙引號內(nèi)的字符序列。字符串不能分成多行書寫。例如:

          INTERNAL ERROR

          REACHED->HERE

          用8位ASCII值表示的字符可看作是無符號整數(shù)。因此字符串是8位ASCII值的序列。為存儲字符串“INTERNAL ERROR”,變量需要8*14位。

          reg [1 : 8*14] Message;

          . . .

          Message = INTERNAL ERROR

          反斜線 ( ) 用于對確定的特殊字符轉(zhuǎn)義。

          n 換行符

          t 制表符

          \ 字符本身

          字符

          206 八進制數(shù)206對應(yīng)的字符

          3.7 數(shù)據(jù)類型

          HDL 有兩大類數(shù)據(jù)類型。

          1) 線網(wǎng)類型。net type 表示結(jié)構(gòu)化元件間的物理連線。它的值由驅(qū)動元件的值決定,例如連續(xù)賦值或門的輸出。如果沒有驅(qū)動元件連接到線網(wǎng),線網(wǎng)的缺省值為z。

          2) 寄存器類型。register type表示一個抽象的數(shù)據(jù)存儲單元,它只能在always語句和initial語句中被賦值,并且它的值從一個賦值到另一個賦值被保存下來。寄存器類型的變量具有x 的缺省值。

          3.7.1 線網(wǎng)類型

          線網(wǎng)數(shù)據(jù)類型包含下述不同種類的線網(wǎng)子類型。

          * wire

          * tri

          * wor

          * trior

          * wand

          * triand

          * trireg

          * tri1

          * tri0

          * supply0

          * supply1

          簡單的線網(wǎng)類型說明語法為:

          net_kind [msb:lsb] net1, net2, . . . , netN;

          net_kind 是上述線網(wǎng)類型的一種。msb和lsb 是用于定義線網(wǎng)范圍的常量表達式;范圍定義是可選的;如果沒有定義范圍,缺省的線網(wǎng)類型為1位。下面是線網(wǎng)類型說明實例。

          wire Rdy, Start; //2個1位的連線。

          wand [2:0] Addr; //Addr是3位線與。

          當(dāng)一個線網(wǎng)有多個驅(qū)動器時,即對一個線網(wǎng)有多個賦值時,不同的線網(wǎng)產(chǎn)生不同的行為。例如,

          wor Rde;

          . . .

          assign Rde = Blt Wyl;

          . . .

          assign Rde = Kbl | Kip;

          本例中,Rde有兩個驅(qū)動源,分別來自于兩個連續(xù)賦值語句。由于它是線或線網(wǎng),Rde的有效值由使用驅(qū)動源的值(右邊表達式的值)的線或(wor)表(參見后面線或網(wǎng)的有關(guān)章節(jié))決定。

          1. wire和tri線網(wǎng)

          用于連接單元的連線是最常見的線網(wǎng)類型。連線與三態(tài)線(tri)網(wǎng)語法和語義一致;三態(tài)線可以用于描述多個驅(qū)動源驅(qū)動同一根線的線網(wǎng)類型;并且沒有其他特殊的意義。

          wire Reset;

          wire [3:2] Cla, Pla, Sla;

          tri [ MSB-1 : LSB +1] Art;

          如果多個驅(qū)動源驅(qū)動一個連線(或三態(tài)線網(wǎng)),線網(wǎng)的有效值由下表決定。

          wire (或 tri) 0 1 x z

          0 0 x x 0

          1 x 1 x 1

          x x x x x

          z 0 1 x z

          下面是一個具體實例:

          assign Cla = Pla Sla;

          . . .

          assign Cla = Pla ^ Sla;

          在這個實例中,Cla有兩個驅(qū)動源。兩個驅(qū)動源的值(右側(cè)表達式的值)用于在上表中索引,以便決定Cla的有效值。由于Cla是一個向量,每位的計算是相關(guān)的。例如,如果第一個右側(cè)表達式的值為01x, 并且第二個右測表達式的值為11z,那么Cla 的有效值是x1x (第一位0和1在表中索引到x, 第二位1和1在表中索引到1,第三位x 和z在表中索引到x)。

          2. wor和trior線網(wǎng)

          線或指如果某個驅(qū)動源為1,那么線網(wǎng)的值也為1。線或和三態(tài)線或(trior)在語法和功能上是一致的。

          wor [MSB:LSB] Art;

          trior [MAX-1: MIN-1] Rdx, Sdx, Bdx;

          如果多個驅(qū)動源驅(qū)動這類網(wǎng),網(wǎng)的有效值由下表決定。

          wor (或 trior) 0 1 x z

          0 0 1 x 0

          1 1 1 1 1

          x x 1 x x

          z 0 1 x z

          3. wand和triand線網(wǎng)

          線與(wand)網(wǎng)指如果某個驅(qū)動源為0,那么線網(wǎng)的值為0。線與和三態(tài)線與(triand)網(wǎng)在語法和功能上是一致的。

          wand [-7 : 0] Dbus;

          triand Reset, Clk;

          如果這類線網(wǎng)存在多個驅(qū)動源,線網(wǎng)的有效值由下表決定。

          wand (或 triand) 0 1 x z

          0 0 0 0 0

          1 0 1 x 1

          x 0 x x x

          z 0 1 x z

          4. trireg線網(wǎng)

          此線網(wǎng)存儲數(shù)值(類似于寄存器),并且用于電容節(jié)點的建模。當(dāng)三態(tài)寄存器(trireg)的所有驅(qū)動源都處于高阻態(tài),也就是說,值為z時,三態(tài)寄存器線網(wǎng)保存作用在線網(wǎng)上的最后一個值。此外,三態(tài)寄存器線網(wǎng)的缺省初始值為x。

          trireg [1:8] Dbus, Abus;

          5. tri0和tri1線網(wǎng)

          這類線網(wǎng)可用于線邏輯的建模,即線網(wǎng)有多于一個驅(qū)動源。tri0(tri1)線網(wǎng)的特征是,若無驅(qū)動源驅(qū)動,它的值為0(tri1的值為1)。

          tri0 [-3:3] GndBus;

          tri1 [0:-5] OtBus, ItBus;

          下表顯示在多個驅(qū)動源情況下tri0或tri1網(wǎng)的有效值。

          tri0 (tri1) 0 1 x z

          0 0 x x 0

          1 x 1 x 1

          x x x x x

          z 0 1 x 0(1)

          6. supply0和supply1線網(wǎng)

          supply0用于對“地”建模,即低電平0;supply1網(wǎng)用于對電源建模,即高電平1;例如:

          supply0 Gnd, ClkGnd;

          supply1 [2:0] Vcc;

          3.7.2 未說明的線網(wǎng)

          在Verilog HDL中,有可能不必聲明某種線網(wǎng)類型。在這樣的情況下,缺省線網(wǎng)類型為1位線網(wǎng)。

          可以使用`default_nettype編譯器指令改變這一隱式線網(wǎng)說明方式。使用方法如下:

          `default_nettype net_kind

          例如,帶有下列編譯器指令:

          `default_nettype wand

          任何未被說明的網(wǎng)缺省為1位線與網(wǎng)。

          3.7.3 向量和標(biāo)量線網(wǎng)

          在定義向量線網(wǎng)時可選用關(guān)鍵詞scalared 或vectored。如果一個線網(wǎng)定義時使用了關(guān)鍵詞vectored, 那么就不允許位選擇和部分選擇該線網(wǎng)。換句話說,必須對線網(wǎng)整體賦值(位選擇和部分選擇在下一章中講解)。例如:



          關(guān)鍵詞: Verilog FPGA

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();