資料類型
Verilog中常用的基本資料類型:wire 、reg、 integer、 parameter
常量
在程式運作過程中,不被改變的量稱為常量:數字 和 參數
數字:
整數在程式中是最常用的,整數常量常有以下4種進制表示:
1、二進制(b或B)
2、十進制(d或D)
3、十六進制(h 或 H)
4、八進制(o或 O)
數字的表達方式有以下3種:
1、<位寬><進制><數字> 這是一種全面的表達方式;
2、在<進制><數字>這種表達方式中,數字的位寬采用預設位寬(由具體的機器系統決定)
3、在<數字>這種描述中,采用預設進制(十進制)
示例如下:
8'd100 //十進制 100
8'h64 //十六進 100
8'b01100100 //二進制 100
8'o144 //八進制 100
參數(parameter)
在verilog 中,用parameter 來定義常量,即用parameter來定義一個辨別符來代替常量,稱為符号常量,即辨別符形式的的常量。采用辨別符代替一個常量,可以提高程式的可讀性和可維護性。
parameter 說明格式如下:
parameter 參數名1= 表達式1,參數名1= 表達式1,參數名1= 表達式1,…參數名n= 表達式n;
示例如下:
parameter STOP_BYTE = 1'b01; //定義了一個常量:停止位
parameter START_BYTE = 1'b0; //定義了一個常量 :起始位
parameter WIDTH = 4'd6; //定義了一個常量:資料寬度
需要注意的是:表達式隻能包含數字或之前已經定義的參數。
變量
1、wire 型
wire型資料常用來表示用以assign關鍵字指定的組合邏輯。Verilog程式子產品中輸入、輸出信号類型預設時自動定義為wire型,wire型信号可以用作任何方程式的輸入,也可以用作“assign”語句或執行個體元件的輸出。
wire 型信号定義格式如下:
wire [位寬-1] 資料1,資料2,資料3,…資料n;
也可以分開定義,如下所示:
wire [位寬-1:0] 資料1;
wire [位寬-1:0] 資料2;
wire [位寬-1:0] 資料3;
wire [位寬-1:0] 資料n;
執行個體如下:
wire [3:0] data_length; //定義了一個4位的資料: data_length
wire a; //定義了一個1位的資料 : a
2、reg型
寄存器是資料單元的抽象,寄存器資料類型的關鍵字是reg。
reg資料常用來表示“always”子產品内的制定信号,常代表觸發器。在“always”子產品内被指派的每一個信号都必須定義為reg型 。
reg資料定義的格式如下:
reg [位寬-1] 資料1,資料2,資料3,…資料n;
也可以分開定義,如下所示:
reg [位寬-1:0] 資料1;
reg [位寬-1:0] 資料2;
reg [位寬-1:0] 資料3;
reg [位寬-1:0] 資料n;
示例如下:
reg [3:0] data; //定義了一個4位的資料: data
reg b; //定義了一個1位的資料 : b
總結:
1、在verilog子產品中所有過程塊(如:initial:塊 always塊)、assign連續指派語句 、
執行個體引用都是并行的。
2、在 同一子產品中各個子產品中各個過程塊、各條連續指派語句和各條執行個體引用語句這三者出現的先後順序沒有關系。
3、隻有連續指派語句assign 和執行個體引用語句可以獨立于過程塊而存在于子產品的功能定義部分。
4、被執行個體引用的得子產品,其端口可以通過不同名的的連線或者寄存器類型的變量連結到别的子產品相應的輸入、輸出信号 端。
5、在“always"子產品内被指派的每一個信号都必須定義為reg型。