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