Ch1 - Verilog 基本簡介
1.1 Verilog 基本架構
module 模組名稱( 輸出入埠名稱 );
輸出入埠 敘述
資料型態 敘述
內部電路 敘述
endmodule
1.2 module
- Verilog 主要的架構就是模組(module)
- 每一個 Verilog 檔案,必須包含一個 Module
- Module 就像是積木,而一個大型的數位系統就是由一些特定功能的積木組成
表示法:
module 模組名稱( 輸出入埠名稱 );
… … … …
endmodule
1.3 模組名稱
- 通常具有描述模組功能的責任
- 盡量避免無意義的命名
1.4 輸出入埠名稱
- 這個 module 的輸出輸入敘述
- 不須按照順序排列
- 兩個或兩個以上的輸出入埠必須使用逗號分開
表示法:
module 模組名稱( In1, In2, Out1, Out2, InOut1 );
… … … …
endmodule
1.5 輸出入埠敘述
表示法:
module 模組名稱( In1, In2, Out1, Out2, InOut1 );
input in1, in2; // 敘述輸出入型態
output Out1, Out2;
inout InOut1;
… … … …
endmodule
1.5.1 Intput(輸出埠)敘述
- 模組內可接 net
- 模組外可接 net、register
1.5.2 Output(輸出埠)敘述
- 模組內可接 net、register
- 模組外可接 net
1.5.3 InOut(雙向埠)敘述
- 模組內可接 net
- 模組外可接 net
1.6 資料型態敘述(詳細Ch2會講解)
- 較常使用 wire(連接線net)與 reg(暫存器register與實體記憶體不同)
表示法:
module 模組名稱( In1, In2, Out1, Out2, InOut1 );
input in1, in2;
output Out1, Out2;
inout InOut1;
wire In1, In2, Out1;
wire InOut1;
reg Out2;
… … … …
endmodule
- Verilog 最重要的部分,負責描述模組的電路架構與功能
- 主要有四種層次的描述:(高階→低階 )
- 行為層次(Behavior Level)
- 資料流層次(Dataflow Level)
- 邏輯閘層次(Gate Level)
- 電晶體層次(Switch Level)
- 行為層次與資料流層次合稱"暫存器轉換層次 RTL(Register Transfer Level )"
- 通常在撰 寫Verilog 時,只會接觸行為、資料流、邏輯閘層次而已
範例:
module 模組名稱( In1, In2, Out1, Out2, InOut1 );
input in1, in2;
output Out1, Out2;
inout InOut1;
wire In1, In2, Out1;
wire InOut1;
reg Out2;
// 以下為三種層級分別描述 In1 與 In2 and 做 and 運算的方法
// 邏輯閘層次( Gate Level )
and and1( Out1, In1, In2 );
// 資料流層次( Dataflow Level )
assign Out1 = In1 & In2;
// 行為層次( Behavior Level )
allways @(*) begin
Out2 = In1 & In2;
end
endmodule
1.7 補充
- 與 C 語言相同,有 // 及 /**/ 兩種註解方式
- module 後面要記得加上分號;