Verilog基本语法之wire和reg
? ? ? ?Verilog語法之多,初期學習只需要掌握常用的語法就OK了,基本就可以用Verilog HDL語言去描述邏輯電路了,今天學習兩種數據類型:wire和reg。在數字電路中信號只有兩種形態,一種是傳輸,通過線(wire),一種是存儲,通過寄存器(reg)。因此,也就清楚wire和reg變量在Verilog HDL中的重要性了。下圖是wire和reg變量的模型。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ?
? ? ? ? (1)wire(線型)變量:
? ? ? ? ①在物理結構上只是一根線,在Verilog?HDL描述時,對線型變量賦值用assign即可,相對比較簡單。
? ? ? ? ②wire是最常用的net型數據變量,net型數據相當于硬件電路中的各種物理連接,其特點是輸出的值隨輸入值的變化而變化。net?型數據的值取決于驅動的值,對net型變量有兩種驅動方式,一種方式是在結構描述中將其連接到一個門元件或模塊的輸出端;另一種方式是用持續賦值語句assign對其進行賦值。如果net型變量沒有連接到驅動,則其值為高阻態z?(trireg?除外)。Verilog?模塊中的輸入/輸出信號在沒有明確指定數據類型時都被默認為wire型。
| 類型 | 功能 | 可綜合性 |
| wire,tri | 連線類型 | √ |
| wor,?trior | 具有線或特性的多重驅動連線? | |
| wand,?triand | 具有線與特性的多重驅動連線 | |
| tril,?tri0 | 分別為上拉電阻和下拉電阻 | |
| supply1,?supply0 | 分別為電源(邏輯1)和地(邏輯0) | √ |
| trireg | 具有電荷保持作用的連線,可用于電容的建模 |
? ? ? ? ?③wire型變量定義:①wire a,b;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//聲明2個wire型變量a和b(一位)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?②wire[7:0]? databus;? ? ? ? ? ? ? ?//databus(數據總線)的寬度是8位
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? wire[19:0] addrbus;? ? ? ? ? ? ?//addrbus(地址總線)的寬度是20位? ? ? ? ? ? ? ? ?
? ? ? ? (2)reg(寄存器型)變量:
? ? ? ? ①在物理結構上相對比較麻煩,左端有一個輸入端口?D,右端有一個輸出端口?Q,?并且?reg?型存儲數據需要在CLK(時鐘)沿的控制下完成,在?Verilog?HDL?描述時也相對麻煩。在對reg?型變量進行賦值時,必須在?always?塊內完成。
? ? ? ??②reg型變量是最常用的variable型變量,variable型變量必須放在過程語句(如initial、?always)?中,通過過程賦值語句賦值;在always、initial等過程塊內被賦值的信號也必須定義成variable型。variable型變量(reg)并不意味著一定對應著硬件上的一個觸發器或寄存器等存儲元件,在綜合器進行綜合時,綜合器會根據具體情況確定是映射成連線還是映射為存儲元件(觸發器或寄存器)。
| 類型 | 功能 | 可綜合性 |
| reg | 常用寄存器型變量 | √ |
| integer | 32位帶符號整型變量 | √ |
| real | 64位帶符號實型變量 | |
| time | 64位無符號時間變量 |
? ? ? ?③wire型變量定義:①reg a,b;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//聲明2個reg型變量a和b(一位)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?②reg[7:0]? out;? ? ? ? ? ? ? ? ? ?? ?//out的寬度是8位
部分轉載:FPGA入門系列3--wire與reg
? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
總結
以上是生活随笔為你收集整理的Verilog基本语法之wire和reg的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 多层板PCB设计知识
- 下一篇: 包学会之浅入浅出Vue.js:开学篇(转