Verilog語法簡介

2021-10-03 12:47:48 字數 2641 閱讀 3641

常量

正數常量

含義8』b11001100

寬度為8位的二進位制數

8』hff

寬度為8位的十六進製制數

7』o15

寬度為7位的八進位制數

6』d10

寬度為6位的十進位制數

變數

net型變數相當於硬體電路中各種物料連線其特點是輸出的值緊跟輸入值的變化而變化。wire是最常用的net型變數。wire型訊號可以用作任何表示式的輸入,也可以作為assign語句和例項元件的輸出。

variable型變數可以儲存上次寫入的資料,一般對應硬體上的乙個觸發器或鎖存器等儲存元件。在綜合器綜合的時候,會根據其被賦值的情況來具體確定是對映成連線還是對映為儲存元件。

型別

含義reg

位元資料

interger

整數real

實數向量

可以理解為變數的陣列,示例

定義

含義wire [31:0] bus;

32位的wire型向量,bus[31]是最高位,bus[0]是最低位

reg [31:23] pc;

32位的reg型向量,其中pc[31]是最高位,pc[23]是最低位

運算子

運算子與c語言類似,這裡挑幾個特別的運算子

等式運算子「==「:參與比較的兩個運算元必須逐位相等,其結果才為1.如果某些值是不定態x或高阻態z,其結果是不定態x。等式「===」:參與比較的運算元中為不定態x或高阻態z的位也進行比較,兩個運算元必須完全一致,其結果才為1,否則為0。

位拼接運算子:、}、,op2}…

過程語句

always語句:不斷重複執行的語句

always @(posedge clk) begin

else begin

data<=data_in;

endend

initial語句:只執行一次的語句,不可綜合

賦值語句

持續賦值語句:assign,主要用於對wire型變數賦值。可理解為在電路中將線路直接連線。

過程賦值語句:在always、initial過程語句中的賦值語句稱為過程賦值語句,多用於對reg型變數進行賦值,分為非阻塞賦值和阻塞賦值兩種方式。

(1). 非阻塞賦值「<=」:非阻塞賦值在整個過程語句結束時才會完成賦值操作。

(2). 阻塞賦值「=」:阻塞賦值在該語句結束時就立即完成賦值操作。如果在乙個塊語句中,有多條阻塞賦值語句,那麼在前面的賦值語句沒有完成之前,後面的語句就不能被執行。

在always過程塊中,非阻塞賦值可以理解為賦值語句是併發執行的,而阻塞賦值可以理解為賦值語句序列執行的。在乙個過程塊中,阻塞式賦值與非阻塞式賦值只能使用其中一種。

條件語句

條件語句有if-else、case兩種

always @(posedge clock or posedge reset)begin

if(reset)begin

count<=0;

busy<=0;

busy2<=0;

endend

always@(*)begin

case(m)

2'b00:out<=data_in1;

2'b01:out<=data_in2;

2'b11:out<=data_in3;

default: out<=32'b0;

endcase

end

迴圈語句

迴圈語句有四種:for、forever、while、repeat。除for語句可綜合以外,其它都不可綜合。

編譯指示語句

(1). 巨集替換define (2).include語句,不可綜合

(3). 條件編譯語句`ifdef、`else、`endif

例項**:verilog實現jk觸發器

module jk_ff(

input clk,

input j,

input k,

input rst_n,

output reg q1,

output reg q2

);always @(posedge clk or negedge rst_n) begin

if(~rst_n) begin

q1<=0;

endelse begin

if(k&j) begin

q1<=q2;

endelse if(j) begin

q1<=1;

endelse if(k) begin

q1<=0;

endend

endalways @ (q1)

q2 <= ~q1;

endmodule

學習日記 Verilog語法簡介

此經驗是從被人那裡學來的,一起跟著方法去做 1 需要同時掌握vhdl和verilog 2 和電路的關係 3 可綜合的語法與 行為級語法 4 hdl語言學習經驗 下面列出的是ve r i l o g硬體描述語言的主要能力 基本邏輯門,例如and o r和nand等都內建在語言中。使用者定義原語 u d...

Verilog語法總結

1.阻塞賦值 與非阻塞賦值 的區別 一條非阻塞過程賦值語句對應的賦值操作執行完之前,下一語句也可以開始執行。各條阻塞型過程賦值語句將以他們在順序塊中的排列次序得到執行。2.關係運算子 關係運算子的優先順序比算數運算子的優先順序低.3.縮減運算 縮減運算的過程 第一步將運算元的第一位與第二位進行與或非...

verilog語法隨記

module host cpld 宣告host cpld的輸入輸出變數 input a0,b0,c0 宣告輸入埠a0,b0和c0 output a1,b1,c1 宣告輸出埠a1,b1和c1 reg x 0 reg是暫存器型別,表示需要觸發,無輸入時可保持原來數值 wire x wire是網線型別,表...