100-1 ksu-verilog 02-lecture -...
TRANSCRIPT
-
1
Yen-Bor
VerilogVerilogVerilogVerilog語法語法語法語法VerilogVerilogVerilogVerilog語法語法語法語法
[email protected][email protected]
大綱大綱大綱大綱
�VerilogVerilogVerilogVerilog的模型與層次的模型與層次的模型與層次的模型與層次
�VerilogVerilogVerilogVerilog的架構的架構的架構的架構
�VerilogVerilogVerilogVerilog的語法協定的語法協定的語法協定的語法協定
�基本資料型態基本資料型態基本資料型態基本資料型態
�輸入輸出埠輸入輸出埠輸入輸出埠輸入輸出埠
�資料流模型的敘述資料流模型的敘述資料流模型的敘述資料流模型的敘述
�行為模型的敘述行為模型的敘述行為模型的敘述行為模型的敘述
�模組間埠對應的方式模組間埠對應的方式模組間埠對應的方式模組間埠對應的方式
-
2
[email protected][email protected]
VerilogVerilogVerilogVerilog的模型與層次的模型與層次的模型與層次的模型與層次
�電晶體電晶體電晶體電晶體(transistor)(transistor)(transistor)(transistor)模型模型模型模型====開關階層開關階層開關階層開關階層(switch level) (switch level) (switch level) (switch level)
�邏輯閘階層邏輯閘階層邏輯閘階層邏輯閘階層(gate level)(gate level)(gate level)(gate level)模型模型模型模型
�暫存器轉移階層暫存器轉移階層暫存器轉移階層暫存器轉移階層((((rrrregister egister egister egister ttttransfer ransfer ransfer ransfer llllevel)evel)evel)evel)模型模型模型模型====資料流資料流資料流資料流(data flow)(data flow)(data flow)(data flow)模型模型模型模型
�行為行為行為行為(behavioral)(behavioral)(behavioral)(behavioral)模型模型模型模型
transistor
RTL
gate
behavioral
[email protected][email protected]
VerilogVerilogVerilogVerilog的模型的模型的模型的模型
�邏輯閘階層邏輯閘階層邏輯閘階層邏輯閘階層(gate level)(gate level)(gate level)(gate level)模型模型模型模型
� 電路模組是由最基本的邏輯閘所連接形成的
-
3
[email protected][email protected]
VerilogVerilogVerilogVerilog的模型的模型的模型的模型
�暫存器轉移階層暫存器轉移階層暫存器轉移階層暫存器轉移階層(RTL)(RTL)(RTL)(RTL)模型模型模型模型
� 設計重點在於說明資料如何在電路中的傳送過程
[email protected][email protected]
VerilogVerilogVerilogVerilog的模型的模型的模型的模型
�行為行為行為行為(behavioral)(behavioral)(behavioral)(behavioral)模型模型模型模型
� Verilog HDL中的最高階層
� 只需考慮電路功能,不需考慮其硬體的詳細內容
-
4
[email protected][email protected]
VerilogVerilogVerilogVerilog的架構的架構的架構的架構
�模組模組模組模組::::組成一個電路的基本單位組成一個電路的基本單位組成一個電路的基本單位組成一個電路的基本單位
� 模組的名稱
� 所用到的輸出入埠名稱、個數與大小
� 電路所需的接線與暫存器
� 引用之較低階的模組別名
� 電路所需功能的指定敘述(assign)
� 電路所需功能的行為層級的描述
� 函數(functions) 與任務(task)
[email protected][email protected]
VerilogVerilogVerilogVerilog的架構的架構的架構的架構
�模組的基本架構模組的基本架構模組的基本架構模組的基本架構(1/2)(1/2)(1/2)(1/2)
module 模組名稱(輸入輸出埠清單);
輸入輸出埠的宣告 // input, output, inout
變數資料型態宣告 // wire, reg, …
引用較低階的模組
邏輯閘階層之描述
資料流階層之描述
function 或 task 的宣告
行為階層之描述區塊
endmodule
-
5
[email protected][email protected]
VerilogVerilogVerilogVerilog的架構的架構的架構的架構
�模組的基本架構模組的基本架構模組的基本架構模組的基本架構(2/2)(2/2)(2/2)(2/2)
� 如C語言的函數一般,Verilog的模組中不能再有其他的模組存在
� 一個Verilog檔案中,可以同時存在多個模組
� 模組宣告的順序可以是任意的
� 模組名稱的命名規則與一般識別字相同
[email protected][email protected]
VerilogVerilogVerilogVerilog的語法協定的語法協定的語法協定的語法協定
�註解註解註解註解
� 單行註解
• 使用「//」作為開始符號
• 結束符號為換行符號(end_of_line)
� 多行註解
• 使用「/*」作為開始符號
• 使用「*/」作為結束符號
-
6
[email protected][email protected]
VerilogVerilogVerilogVerilog的語法協定的語法協定的語法協定的語法協定
�關鍵字關鍵字關鍵字關鍵字
� 所有的關鍵字必須使用英文小寫字母來表示
� 常見的關鍵字:
always negedge posedge
begin end assign wire
integer function endfunction
module endmodule
for if else
inout input output
and buf nand nor
not or xnor xor
[email protected][email protected]
VerilogVerilogVerilogVerilog的語法協定的語法協定的語法協定的語法協定
� 識別字識別字識別字識別字
� 用於定義名稱• 變數
• 函數
• 模組
• 物件實例(instance)
� 命名規則:• 第一個字元必須是英文字母
• 第二個之後的字元可以是英文字母、數字、底線( _ ) 、或是錢字號($)
• 識別字的長度沒有限制
• 識別字有區分英文大小寫(case-sensitive)
-
7
[email protected][email protected]
VerilogVerilogVerilogVerilog的語法協定的語法協定的語法協定的語法協定
� 運算子運算子運算子運算子
� Binary bit-wise operators: ~, &, |, ^, ~^, ^~
� Unary reduction operators: &, ~&, |, ~|, ^, ~^, ^~
� Logical operators: !, &&, ||
� 2’s complement operators: +, -, *, ////, %%%%
� Relational operators: >, =, >,
-
8
[email protected][email protected]
基本資料型態基本資料型態基本資料型態基本資料型態
�wirewirewirewire::::代表一條接線代表一條接線代表一條接線代表一條接線
�wandwandwandwand::::WiredWiredWiredWired----ANDANDANDAND
�worworworwor::::WiredWiredWiredWired----OROROROR
�regregregreg::::暫存器暫存器暫存器暫存器
� 主要功能為用於維持電路中的某個值
�integer, real, integer, real, integer, real, integer, real, …::::用於計算的過程用於計算的過程用於計算的過程用於計算的過程
[email protected][email protected]
基本資料型態基本資料型態基本資料型態基本資料型態
�四種數值準位四種數值準位四種數值準位四種數值準位
� 0:邏輯0, Zero, False, Low, Logic Low,Ground, VSS, Negative Assertion
� 1:邏輯1, One, True, High, Logic High,Power, VDD, VCC, Positive Assertion
� X:Unknown value
� Z:High impedance, Floating state,Tri-state, Disable driver
-
9
[email protected][email protected]
基本資料型態基本資料型態基本資料型態基本資料型態
�wire wire wire wire 的特性的特性的特性的特性� 連接硬體元件之連接線
� 變數必須被驅動,才能改變它的內容
� 除非被宣告為一向量,否則wire 型態的變數內定為一個位元的值,且其內定值為Z
�regregregreg 的特性的特性的特性的特性� 功能和一般程式語言中的變數類似,可以直接給定一個數值
� 除非被宣告為一向量,否則reg 型態的變數內定為一個位元的值,且其值為X
[email protected][email protected]
基本資料型態基本資料型態基本資料型態基本資料型態
�使用使用使用使用 wire wire wire wire 或或或或 regregregreg 的時機的時機的時機的時機
� 使用wire所宣告的變數必須配合assign敘述來改變其值,且不能在always區塊中作為敘述的左值(L-value)
� 使用reg所宣告的變數必須使用在always區塊中作為敘述的左值
-
10
[email protected][email protected]
基本資料型態基本資料型態基本資料型態基本資料型態
�向量向量向量向量
� wire 與reg 均可用於定義向量
� 是一個多位元的元件
� 位元選擇:選擇變數的某個位元
� 部分選擇:選擇變數的某一些連續的位元
[email protected][email protected]
輸入輸出埠輸入輸出埠輸入輸出埠輸入輸出埠
�在在在在VerilogVerilogVerilogVerilog 中中中中,,,,所有輸入輸出埠所有輸入輸出埠所有輸入輸出埠所有輸入輸出埠(input(input(input(input、、、、outputoutputoutputoutput、、、、inoutinoutinoutinout))))的內定資料型態為的內定資料型態為的內定資料型態為的內定資料型態為wirewirewirewire
�若需將訊號的值存起來若需將訊號的值存起來若需將訊號的值存起來若需將訊號的值存起來,,,,則必須將其資料型態宣則必須將其資料型態宣則必須將其資料型態宣則必須將其資料型態宣告為告為告為告為regregregreg
�由於輸出入埠由於輸出入埠由於輸出入埠由於輸出入埠((((inoutinoutinoutinout))))可用於與其他模組進行連可用於與其他模組進行連可用於與其他模組進行連可用於與其他模組進行連接接接接,,,,因此可以將其視為在模組內外相互連接的兩因此可以將其視為在模組內外相互連接的兩因此可以將其視為在模組內外相互連接的兩因此可以將其視為在模組內外相互連接的兩個部分個部分個部分個部分
-
11
[email protected][email protected]
資料流模型的敘述資料流模型的敘述資料流模型的敘述資料流模型的敘述
�設計重點設計重點設計重點設計重點::::說明資料如何在電路中的傳送過程說明資料如何在電路中的傳送過程說明資料如何在電路中的傳送過程說明資料如何在電路中的傳送過程
�在此模型中在此模型中在此模型中在此模型中,,,,常用的敘述常用的敘述常用的敘述常用的敘述::::assignassignassignassign� 驅動某個值到wire、wand、wor 或tri
� 用於描述組合邏輯電路
� 必須避免使用迴路式的寫法:assign a = b + a;
�組合邏輯電路範例組合邏輯電路範例組合邏輯電路範例組合邏輯電路範例
� X = A‧C ‧D’ + B ‧C’ + B ‧D + C ‧D
� Y = A’ + B + C
[email protected][email protected]
資料流模型的敘述資料流模型的敘述資料流模型的敘述資料流模型的敘述
� 可用於電路合成的運算子可用於電路合成的運算子可用於電路合成的運算子可用於電路合成的運算子� Binary bit-wise operators
• ~:NOT
• &:AND
• |:OR
• ^:XOR
• ~^, ^~:XNOR
� Unary reduction operators
• &:AND
• ~&:NAND
• |:OR
• ~|:NOR
• ^:XOR
• ~^, ^~:XNOR
-
12
[email protected][email protected]
資料流模型的敘述資料流模型的敘述資料流模型的敘述資料流模型的敘述
�可用於電路合成的運算子可用於電路合成的運算子可用於電路合成的運算子可用於電路合成的運算子
� Logical operators
• !:NOT
• &&:AND
• ||:OR
� 2's complement arithmetic
• +:Add
• -:Subtract
• *:Multiply
• /:Divide
• %:Module
[email protected][email protected]
資料流模型的敘述資料流模型的敘述資料流模型的敘述資料流模型的敘述
�可用於電路合成的運算子可用於電路合成的運算子可用於電路合成的運算子可用於電路合成的運算子
� Relational operators
• >
• <
• >=
• >
•
-
13
[email protected][email protected]
資料流模型的敘述資料流模型的敘述資料流模型的敘述資料流模型的敘述
�可用於電路合成的運算子可用於電路合成的運算子可用於電路合成的運算子可用於電路合成的運算子
� Conditional operator
• ?:
� Duplication operator
• {{}}
� Concatenation operator
• {}
[email protected][email protected]
行為模型的敘述行為模型的敘述行為模型的敘述行為模型的敘述
�只需考慮電路模組的功能只需考慮電路模組的功能只需考慮電路模組的功能只需考慮電路模組的功能,,,,而不需考慮其硬體的而不需考慮其硬體的而不需考慮其硬體的而不需考慮其硬體的詳細內容詳細內容詳細內容詳細內容
�以事件為基礎的時序控制以事件為基礎的時序控制以事件為基礎的時序控制以事件為基礎的時序控制
� 事件:
• 接線或暫存器的值被改變
• 模組的輸入埠接收到新的值
� 可電路合成的控制方式:正緣、負緣、訊號值改變
-
14
[email protected][email protected]
行為模型的敘述行為模型的敘述行為模型的敘述行為模型的敘述
�always always always always 敘述敘述敘述敘述
� 隨時監督輸入輸出埠訊號的變化,然後告知模組內部進行相關的處理
always begin
…
statements
…
endalways@(event_expression) begin
…
statements
…
end
[email protected][email protected]
行為模型的敘述行為模型的敘述行為模型的敘述行為模型的敘述
� always@(always@(always@(always@(…) ) ) ) 括弧內的運算式稱之為事件運算式括弧內的運算式稱之為事件運算式括弧內的運算式稱之為事件運算式括弧內的運算式稱之為事件運算式(event expression)(event expression)(event expression)(event expression)
� 單一訊號
• 屬於準位觸發(level trigger)
� 多個訊號
• 利用or關鍵字連接不同訊號
• 屬於準位觸發(level trigger)
-
15
[email protected][email protected]
行為模型的敘述行為模型的敘述行為模型的敘述行為模型的敘述
� 邊緣觸發
• 正緣觸發:posedge
• 負緣觸發:negedge
[email protected][email protected]
行為模型的敘述行為模型的敘述行為模型的敘述行為模型的敘述
�if if if if 敘述敘述敘述敘述
� 進行訊號值的判斷,根據判斷結果執行相關處理
� 能處理正準位與負準位觸發兩種訊號
� 準位觸發,範例:if (expression) begin
…
statements
…
end
-
16
[email protected][email protected]
行為模型的敘述行為模型的敘述行為模型的敘述行為模型的敘述
�ifififif----else else else else 敘述敘述敘述敘述if (expression) begin
…
statements
…
end else begin
…
statements
…
end
if (expression) begin
…
statements
…
end else if (expression) begin
…
statements
…
end else begin
…
statements
…
end
if (expression)
statement
else if (expression)
statement
else
statement
end
[email protected][email protected]
行為模型的敘述行為模型的敘述行為模型的敘述行為模型的敘述
�ifififif----else else else else 敘述敘述敘述敘述
� 例:優先權編碼器(priority encoder)
-
17
[email protected][email protected]
行為模型的敘述行為模型的敘述行為模型的敘述行為模型的敘述
�casecasecasecase敘述敘述敘述敘述
� 多路分支選擇
� 如果所有可能的分支判別條件都被指定了,則稱為full case
case (expression)
條件1:
相關處理
條件2:相關處理
條件3:相關處理
…
default:
預設處理endcase
[email protected][email protected]
行為模型的敘述行為模型的敘述行為模型的敘述行為模型的敘述
�casecasecasecase敘述敘述敘述敘述
� 例:2x1 多工器(Multiplexor)
-
18
[email protected][email protected]
行為模型的敘述行為模型的敘述行為模型的敘述行為模型的敘述
�forforforfor敘述敘述敘述敘述
� Verilog 提供有 for、while、repeat 和 forever 等迴圈敘述
� 所有迴圈敘述僅能在always敘述中執行
� 例:
[email protected][email protected]
模組間埠對應的方式
�依模組定義之輸出入埠的依模組定義之輸出入埠的依模組定義之輸出入埠的依模組定義之輸出入埠的「「「「順序順序順序順序」」」」來連接來連接來連接來連接
�依依依依「「「「指定輸出入埠名稱指定輸出入埠名稱指定輸出入埠名稱指定輸出入埠名稱」」」」的方式來連接的方式來連接的方式來連接的方式來連接
o2 o3 o4o1