iT邦幫忙

2024 iThome 鐵人賽

DAY 6
0
自我挑戰組

硬體學習日記系列 第 6

Day-6 Verilog介紹-2 變數

  • 分享至 

  • xImage
  •  

上一篇介紹了組成verilog的主要架構-module以及他的端口,今天要來介紹的是verilog中的變數、資料型態及變數的宣告。

變數資料型態

Verilog有好幾種的資料型態,每個資料都有四種狀態:

狀態 意思
0 邏輯0(Low) 信號處於低電平
1 邏輯1(High) 信號處於高電平
X/x 未知的值 信號狀態不確定,可能由於信號衝突、位初始化。
Z/z 高阻抗 信號處於高阻抗狀態,常用於三太緩衝器、總線信號。

接下來就來列點介紹一些基本的data types~

Net類型

  1. 常見的有wire、wand、wor、tri這幾個。
  2. 被用於連接組合邏輯電路。
  3. 他代表了硬體中的電線,不能儲存數值。
  4. wire是default type,如果宣告時沒有指定類型,就會自動視為wire。
  5. 他的default value是z。

他的宣告大概是這樣:

module newwork(A,B);
	input A;
	output B;
	wire a,b; //net
	reg c[3:0];
	
	//使用
	and( a, c[3], c[2], c[1] );
	and( b, c[0], ~c[1] );
	
endmodule

Register類型

  1. 負責儲存資料。
  2. 用於時序邏輯。
  3. default value為x。
  4. 需要在「always」的區塊內賦予值。

跟Net的狀態差異很多吧~用register宣告的話:

reg a;
reg b[3:0];

always @(*) //賦予暫存器值
	a = 10;

Integer類型

  1. 用於儲存整數。
  2. default為32-bit。

宣告的話跟C很像:

integer i;
i = 1;

Real類型

  1. 負責儲存float。
  2. 如果把real指派給整數型態的資料,則會進行四捨五入(eg.把5.6傳給型態為integer的變數,則該變數的值為6)。
  3. 不能在posedge和negedge。
  4. default為0。

宣告方式:

real num;
num = 3.2;

Parameter類型

  1. 用來定義常數。
  2. 可在module初始化時傳遞、改變常數數值,在其他地方不可改變。

宣告方式:

parameter UPPER = 10;

Localparam類型

  1. 類似parameter。
  2. 只能在定義module內使用,不可被外部修改。

宣告方式:

localparam MAX = 10;

Vector類型

  1. 宣告變數、訊號等可以用vector的方式宣告(在有多個bit widths的時候)。
  2. 用在表示多-bit訊號。
  3. 宣告變數時,可以在type及名稱的中間加上[],設定該變數的寬度。
  4. [最高位元:最低位元]或[最低位元:最高位元],這兩種表示法都可以。

宣告方式:

wire [3:0] data_1; //4-bit
reg [15:0] data_3; //16-bit

Array類型

可以利用array來表示一組同個type的信號。

範例:

integer A[5:0]; //A為6個integer
wire [3:0] B[7:0]; //宣告8條4-bit連接線(B)
reg [15:0] C[3:0]; //C為4個16-bit register

//使用
A = 0; //清空A的全部內容
C[2][7] = 3;//[2]的第3個bit值設為3

也可以用array來定義二維暫存器。

reg A[3:0][7:0]; //A為4*8個1-bit register

//使用
A[2][1] = 5; //A陣列的[2][1]值為5

時間類型

  1. 模擬時間的設定。
  2. time:unsigned, 64-bit
  3. real time:float

宣告他們:

time t; //64-bit
realtime t_t; //float

今天就先到這邊~第一次接觸這些時有點頭暈腦脹XD


上一篇
Day-5 Verilog介紹-1 開檔及module
下一篇
Day-7 Verilog介紹-3 function & task
系列文
硬體學習日記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言