一、變量類型
①數值
數值表示採用 <二進制位數>'<數值表示的進制><數值>的結構。
其中進制可以爲b、o、d、h分別代表二、八、十、十六進制。
例如22'd0代表22位二進制數用十進制表示爲0。
②寄存器類型
reg聲明寄存器類型變量,如 reg[0:3] my[0:63];是64個4位寄存器構成的存儲器。
其中[22:0]代表位寬爲23位,最高位在前,含義是[msb:lsb]。
注意,存儲器賦值不能在一條語句內完成,但寄存器賦值可以,類似於數組元素不能一次性全部賦值。
③還有input,output類型變量
④參數類型parameter
parameter類似於const類型,是常量,與const的區別是可以在定義時不初始化,但僅能賦值一次。常用於定義延時和變量寬度。
二、基本用法
模塊開始用module,結束用endmodule
2.1 延時語句
①`timescale 1ns/1ns //定義延時單位和精度,單位和精度均爲1ns,注意開頭爲反引號。
反引號`代表的是編譯器指令,與C語言中#一樣。
②assign #n Sum= A + B; //n應該替換爲數字,代表幾個延時單位
每當右邊的操作數有所變化時,延時n個單位後,會執行這條語句,將新值賦給左邊。
2.2 行爲描述語句
2.2.1 初始化語句
初始化語句只執行一次。
用法
initial
begin
//code
end
2.2.2 循環語句
always @ (條件)
begin
//code
end
注意:在塊外的語句都是並行,在begin-end內是串行,在fork-join內是並行的。
三 操作符
當使用賦值運算符的時候,=爲擁塞賦值,<=爲非擁塞賦值。擁塞賦值的含義是當前面的賦值語句完成後,纔會執行下面的賦值語句。