• 沒有找到結果。

Verilog Verilog

N/A
N/A
Protected

Academic year: 2022

Share "Verilog Verilog"

Copied!
18
0
0

加載中.... (立即查看全文)

全文

(1)

Yen-Bor

Verilog Verilog Verilog

Verilog語法 語法 語法 語法 Verilog

Verilog Verilog

Verilog語法 語法 語法 語法

大綱 大綱 大綱 大綱

VerilogVerilog的模型與層次VerilogVerilog的模型與層次的模型與層次的模型與層次

VerilogVerilog的架構VerilogVerilog的架構的架構的架構

VerilogVerilog的語法協定VerilogVerilog的語法協定的語法協定的語法協定

基本資料型態基本資料型態基本資料型態基本資料型態

輸入輸出埠輸入輸出埠輸入輸出埠輸入輸出埠

資料流模型的敘述資料流模型的敘述資料流模型的敘述資料流模型的敘述

行為模型的敘述行為模型的敘述行為模型的敘述行為模型的敘述

模組間埠對應的方式模組間埠對應的方式模組間埠對應的方式模組間埠對應的方式

(2)

yen_bor@yahoo.com.tw yen_bor@yahoo.com.tw

Verilog Verilog Verilog

Verilog的模型與層次 的模型與層次 的模型與層次 的模型與層次

電晶體電晶體(transistor)電晶體電晶體(transistor)(transistor)模型(transistor)模型模型模型

=

==

=開關階層開關階層開關階層開關階層(switch level) (switch level) (switch level) (switch level)

邏輯閘階層邏輯閘階層(gate level)邏輯閘階層邏輯閘階層(gate level)(gate level)模型(gate level)模型模型模型

暫存器轉移階層暫存器轉移階層(暫存器轉移階層暫存器轉移階層(((rrrregister egister egister tegister tttransfer ransfer ransfer ransfer llllevel)evel)evel)模型evel)模型模型模型

===

=資料流資料流資料流資料流(data flow)(data flow)(data flow)(data flow)模型模型模型模型

行為行為(behavioral)行為行為(behavioral)(behavioral)模型(behavioral)模型模型模型

transistor RTL gate behavioral

Verilog Verilog Verilog

Verilog的模型 的模型 的模型 的模型

邏輯閘階層邏輯閘階層(gate level)邏輯閘階層邏輯閘階層(gate level)(gate level)模型(gate level)模型模型模型

 電路模組是由最基本的邏輯閘所連接形成的

(3)

yen_bor@yahoo.com.tw yen_bor@yahoo.com.tw

Verilog Verilog Verilog

Verilog的模型 的模型 的模型 的模型

暫存器轉移階層暫存器轉移階層(RTL)暫存器轉移階層暫存器轉移階層(RTL)(RTL)模型(RTL)模型模型模型

 設計重點在於說明資料如何在電路中的傳送過程

Verilog Verilog Verilog

Verilog的模型 的模型 的模型 的模型

行為行為(behavioral)行為行為(behavioral)(behavioral)模型(behavioral)模型模型模型

 Verilog HDL中的最高階層

 只需考慮電路功能,不需考慮其硬體的詳細內容

(4)

yen_bor@yahoo.com.tw yen_bor@yahoo.com.tw

Verilog Verilog Verilog

Verilog的架構 的架構 的架構 的架構

模組模組:模組模組::組成一個電路的基本單位:組成一個電路的基本單位組成一個電路的基本單位組成一個電路的基本單位

 模組的名稱

 所用到的輸出入埠名稱、個數與大小

 電路所需的接線與暫存器

 引用之較低階的模組別名

 電路所需功能的指定敘述(assign)

 電路所需功能的行為層級的描述

 函數(functions) 與任務(task)

Verilog Verilog Verilog

Verilog的架構 的架構 的架構 的架構

模組的基本架構模組的基本架構(1/2)模組的基本架構模組的基本架構(1/2)(1/2)(1/2)

module 模組名稱(輸入輸出埠清單);

輸入輸出埠的宣告 // input, output, inout 變數資料型態宣告 // wire, reg, … 引用較低階的模組

邏輯閘階層之描述 資料流階層之描述 function 或 task 的宣告 行為階層之描述區塊 endmodule

(5)

yen_bor@yahoo.com.tw yen_bor@yahoo.com.tw

Verilog Verilog Verilog

Verilog的架構 的架構 的架構 的架構

模組的基本架構模組的基本架構(2/2)模組的基本架構模組的基本架構(2/2)(2/2)(2/2)

 如C語言的函數一般,Verilog的模組中不能再有 其他的模組存在

 一個Verilog檔案中,可以同時存在多個模組

 模組宣告的順序可以是任意的

 模組名稱的命名規則與一般識別字相同

Verilog Verilog Verilog

Verilog的語法協定 的語法協定 的語法協定 的語法協定

註解註解註解註解

 單行註解

使用「//」作為開始符號

結束符號為換行符號(end_of_line)

 多行註解

使用「/*」作為開始符號

使用「*/」作為結束符號

(6)

yen_bor@yahoo.com.tw yen_bor@yahoo.com.tw

Verilog Verilog Verilog

Verilog的語法協定 的語法協定 的語法協定 的語法協定

關鍵字關鍵字關鍵字關鍵字

 所有的關鍵字必須使用英文小寫字母來表示

 常見的關鍵字:

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

Verilog Verilog Verilog

Verilog的語法協定 的語法協定 的語法協定 的語法協定



識別字 識別字 識別字 識別字



用於定義名稱

變數

函數

模組

物件實例(instance)



命名規則:

第一個字元必須是英文字母

第二個之後的字元可以是英文字母、數字、底線( _ ) 、或是 錢字號($)

識別字的長度沒有限制

識別字有區分英文大小寫(case-sensitive)

(7)

yen_bor@yahoo.com.tw yen_bor@yahoo.com.tw

Verilog Verilog Verilog

Verilog的語法協定 的語法協定 的語法協定 的語法協定



運算子 運算子 運算子 運算子



Binary bit-wise operators: ~, &, |, ^, ~^, ^~



Unary reduction operators: &, ~&, |, ~|, ^, ~^, ^~



Logical operators: !, &&, ||



2’s complement operators: +, -, *, /

///, %%%%



Relational operators: >, <, >=, <=, ==, !=,===

=========, !==!==!==!==



Logical shift operators: >>, <<



Conditional operators: ? :



Duplication operators: {n{ <exp> <,<exp>> *}}



Concatenation operators: {}

Verilog Verilog Verilog

Verilog的語法協定 的語法協定 的語法協定 的語法協定

數字數字數字數字

 固定長度的數字

語法:<size>’<base><number>

<size>:使用的bits數目,十進位表示法

<base>:可以是B、O、D、H、b、o、d、h

例:1’B0, 4’O7, 8’hF, 10’D9

 不定長度的數字

不使用<size> 來指定bit數目,而是使用HDL編譯程 式的內定值

例:’h89ab, 128, ’O377, ’b1001

(8)

yen_bor@yahoo.com.tw yen_bor@yahoo.com.tw

基本資料型態 基本資料型態 基本資料型態 基本資料型態

wirewire:wirewire::代表一條接線:代表一條接線代表一條接線代表一條接線

wandwand:wandwand::Wired:WiredWired-Wired---ANDANDANDAND

worwor:worwor:::WiredWiredWiredWired----OROROROR

regreg:regreg:::暫存器暫存器暫存器暫存器

 主要功能為用於維持電路中的某個值

integer, real, integer, real, …:integer, real, integer, real, :::用於計算的過程用於計算的過程用於計算的過程用於計算的過程

基本資料型態 基本資料型態 基本資料型態 基本資料型態

四種數值準位四種數值準位四種數值準位四種數值準位

 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)

yen_bor@yahoo.com.tw yen_bor@yahoo.com.tw

基本資料型態 基本資料型態 基本資料型態 基本資料型態

wire wire 的特性wire wire 的特性的特性的特性

 連接硬體元件之連接線

 變數必須被驅動,才能改變它的內容

 除非被宣告為一向量,否則wire 型態的變數內定 為一個位元的值,且其內定值為Z

regreg 的特性regreg 的特性的特性的特性

 功能和一般程式語言中的變數類似,可以直接給定 一個數值

 除非被宣告為一向量,否則reg 型態的變數內定為 一個位元的值,且其值為X

基本資料型態 基本資料型態 基本資料型態 基本資料型態

使用使用 wire 使用使用 wire wire wire 或或或 reg或 regregreg 的時機的時機的時機的時機

 使用wire所宣告的變數必須配合assign敘述來改變 其值,且不能在always區塊中作為敘述的左值(L- value)

 使用reg所宣告的變數必須使用在always區塊中作 為敘述的左值

(10)

yen_bor@yahoo.com.tw yen_bor@yahoo.com.tw

基本資料型態 基本資料型態 基本資料型態 基本資料型態

向量向量向量向量

 wire 與reg 均可用於定義向量

 是一個多位元的元件

 位元選擇:選擇變數的某個位元

 部分選擇:選擇變數的某一些連續的位元

輸入輸出埠 輸入輸出埠 輸入輸出埠 輸入輸出埠

在在Verilog在在VerilogVerilog 中Verilog 中中,中,,所有輸入輸出埠,所有輸入輸出埠所有輸入輸出埠(input所有輸入輸出埠(input(input、(input、、、 output

outputoutput

output、、、inout、inoutinout)inout)))的內定資料型態為的內定資料型態為的內定資料型態為wire的內定資料型態為wirewirewire

若需將訊號的值存起來若需將訊號的值存起來,若需將訊號的值存起來若需將訊號的值存起來,,則必須將其資料型態宣,則必須將其資料型態宣則必須將其資料型態宣則必須將其資料型態宣 告為

告為告為 告為regregregreg

由於輸出入埠由於輸出入埠(由於輸出入埠由於輸出入埠(((inoutinoutinoutinout))))可用於與其他模組進行連可用於與其他模組進行連可用於與其他模組進行連可用於與其他模組進行連 接接接

接,,,因此可以將其視為在模組內外相互連接的兩,因此可以將其視為在模組內外相互連接的兩因此可以將其視為在模組內外相互連接的兩因此可以將其視為在模組內外相互連接的兩 個部分個部分個部分

個部分

(11)

yen_bor@yahoo.com.tw yen_bor@yahoo.com.tw

資料流模型的敘述 資料流模型的敘述 資料流模型的敘述 資料流模型的敘述

設計重點設計重點:設計重點設計重點::說明資料如何在電路中的傳送過程:說明資料如何在電路中的傳送過程說明資料如何在電路中的傳送過程說明資料如何在電路中的傳送過程

在此模型中在此模型中,在此模型中在此模型中,,常用的敘述,常用的敘述常用的敘述:常用的敘述::assign:assignassignassign

 驅動某個值到wire、wand、wor 或tri

 用於描述組合邏輯電路

 必須避免使用迴路式的寫法:assign a = b + a;

組合邏輯電路範例組合邏輯電路範例組合邏輯電路範例組合邏輯電路範例

 X = A‧C ‧D’ + B ‧C’ + B ‧D + C ‧D

 Y = A’ + B + C

資料流模型的敘述 資料流模型的敘述 資料流模型的敘述 資料流模型的敘述



可用於電路合成的運算子 可用於電路合成的運算子 可用於電路合成的運算子 可用於電路合成的運算子

 Binary bit-wise operators

~:NOT

&:AND

|:OR

^:XOR

~^, ^~:XNOR

 Unary reduction operators

&:AND

~&:NAND

|:OR

~|:NOR

^:XOR

(12)

yen_bor@yahoo.com.tw yen_bor@yahoo.com.tw

資料流模型的敘述 資料流模型的敘述 資料流模型的敘述 資料流模型的敘述

可用於電路合成的運算子可用於電路合成的運算子可用於電路合成的運算子可用於電路合成的運算子

 Logical operators

!:NOT

&&:AND

||:OR

 2's complement arithmetic

+:Add

-:Subtract

*:Multiply

/:Divide

%:Module

資料流模型的敘述 資料流模型的敘述 資料流模型的敘述 資料流模型的敘述

可用於電路合成的運算子可用於電路合成的運算子可用於電路合成的運算子可用於電路合成的運算子

 Relational operators

>

<

>=

<=

==

!=

 Logical shift operators

>>

<<

(13)

yen_bor@yahoo.com.tw yen_bor@yahoo.com.tw

資料流模型的敘述 資料流模型的敘述 資料流模型的敘述 資料流模型的敘述

可用於電路合成的運算子可用於電路合成的運算子可用於電路合成的運算子可用於電路合成的運算子

 Conditional operator

?:

 Duplication operator

{{}}

 Concatenation operator

{}

行為模型的敘述 行為模型的敘述 行為模型的敘述 行為模型的敘述

只需考慮電路模組的功能只需考慮電路模組的功能,只需考慮電路模組的功能只需考慮電路模組的功能,,而不需考慮其硬體的,而不需考慮其硬體的而不需考慮其硬體的而不需考慮其硬體的 詳細內容詳細內容詳細內容

詳細內容

以事件為基礎的時序控制以事件為基礎的時序控制以事件為基礎的時序控制以事件為基礎的時序控制

 事件:

接線或暫存器的值被改變

模組的輸入埠接收到新的值

 可電路合成的控制方式:正緣、負緣、訊號值改變

(14)

yen_bor@yahoo.com.tw yen_bor@yahoo.com.tw

行為模型的敘述 行為模型的敘述 行為模型的敘述 行為模型的敘述

always always 敘述always always 敘述敘述敘述

 隨時監督輸入輸出埠訊號的變化,然後告知模組內 部進行相關的處理

always begin

statements

end

always@(event_expression) begin

statements

end

行為模型的敘述 行為模型的敘述 行為模型的敘述 行為模型的敘述

always@(always@(…) always@(always@( ) ) ) 括弧內的運算式稱之為事件運算式括弧內的運算式稱之為事件運算式括弧內的運算式稱之為事件運算式括弧內的運算式稱之為事件運算式 (event expression)

(event expression)(event expression) (event expression)

 單一訊號

屬於準位觸發

(level trigger)

 多個訊號

利用or關鍵字連接不同訊號

屬於準位觸發

(level trigger)

(15)

yen_bor@yahoo.com.tw yen_bor@yahoo.com.tw

行為模型的敘述 行為模型的敘述 行為模型的敘述 行為模型的敘述

 邊緣觸發

• 正緣觸發:posedge

• 負緣觸發:negedge

行為模型的敘述 行為模型的敘述 行為模型的敘述 行為模型的敘述

if if 敘述if if 敘述敘述敘述

 進行訊號值的判斷,根據判斷結果執行相關處理

 能處理正準位與負準位觸發兩種訊號

 準位觸發,範例:

if (expression) begin

statements

end

(16)

yen_bor@yahoo.com.tw yen_bor@yahoo.com.tw

行為模型的敘述 行為模型的敘述 行為模型的敘述 行為模型的敘述

ifif-ifif---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

行為模型的敘述 行為模型的敘述 行為模型的敘述 行為模型的敘述

ifif-ifif---else else else else 敘述敘述敘述敘述

 例:優先權編碼器(priority encoder)

(17)

yen_bor@yahoo.com.tw yen_bor@yahoo.com.tw

行為模型的敘述 行為模型的敘述 行為模型的敘述 行為模型的敘述

casecase敘述casecase敘述敘述敘述

 多路分支選擇

 如果所有可能的分支判別條件都被指定了,

則稱為full case

case (expression) 條件1:

相關處理 條件2:

相關處理 條件3:

相關處理

default:

預設處理 endcase

行為模型的敘述 行為模型的敘述 行為模型的敘述 行為模型的敘述

casecase敘述casecase敘述敘述敘述

 例:2x1 多工器(Multiplexor)

(18)

yen_bor@yahoo.com.tw yen_bor@yahoo.com.tw

行為模型的敘述 行為模型的敘述 行為模型的敘述 行為模型的敘述

forfor敘述forfor敘述敘述敘述

 Verilog 提供有 for、while、repeat 和 forever 等迴圈敘述

 所有迴圈敘述僅能在always敘述中執行

 例:

模組間埠對應的方式

依模組定義之輸出入埠的依模組定義之輸出入埠的「依模組定義之輸出入埠的依模組定義之輸出入埠的「「順序「順序順序」順序」」來連接」來連接來連接來連接

依依「依依「「指定輸出入埠名稱「指定輸出入埠名稱指定輸出入埠名稱」指定輸出入埠名稱」」的方式來連接」的方式來連接的方式來連接的方式來連接

o2 o3 o4

o1

參考文獻

相關文件

„ FPGA –現場可規劃邏輯陣列 (field- programmable

„ FPGA –現場可規劃邏輯陣列 (field- programmable

邏輯閘層次的最小化(gate-level minimization)可歸類為求取 描述數位電路之布林函數的最佳化閘-層次執行電路的設計工作。此項

„ FPGA –現場可規劃邏輯陣列 (field- programmable

邏輯閘層次的最小化(gate-level minimization)可歸類為求取描述數位電

四資工-A 林宗賢 4000E068 四資工-A

[r]

由高位址向低位址遞減 由高位址向低位址遞減 由高位址向低位址遞減 由高位址向低位址遞減