Verilog學習筆記(四)

2021-08-10 10:42:25 字數 1699 閱讀 2726

initial語句:在**中只執行一次,用於初始化變數,描述一次性行為,在**時刻0開始執行。

下面是initial語句的示例:

`timescale 1ns/1ns 

moduletest(pop,pid);

outputpop,pid;

regpop,pid;

initial

begin

pop=0;//語句1。

pid=0;//語句2。

pop=#51;//語句3。

pid=#31;//語句4。

pop=#60;//語句5。

pid=#20;//語句6。

end

endmodule

initial語句包含乙個順序過程。這一順序過程在0ns時開始執行,並且在順序過程中所有語句全部執行完畢後,initial語句永遠掛起。這一順序過程包含帶有定義語句內時延的分組過程賦值的例項。語句1和2在0ns時執行。第三條語句也在0時刻執行,導致pop在第5ns時被賦值。語句4在第5ns執行,並且pid在第8ns被賦值。同樣,pop在14ns被賦值0,pid在第16ns被賦值0。第6條語句執行後,initial語句永遠被掛起。

verilog-always語句

always語句總是迴圈執行,或者說此語句重複執行。

只有暫存器型別資料能夠在這種語句中被賦值。暫存器型別資料在被賦新值前保持原有值不變。所有的初始化語句和always語句在0時刻併發執行。

下例為always語句對1位全加器電路建模的示例,如圖2-4。

modulefa_seq(a,b,cin,sum,cou)t;

inputa,b,cin;

outputsum,cout;

regsum,cout;

regt1,t2,t3;

always

@(aorborcin)begin

sum=(a^b)^cin;

t1=a&cin;

t2=b&cin;

t3=a&b;

cout=(t1|t2)|t3;

end 

endmodule

模組fa_seq有三個輸入和兩個輸出。由於sum、cout、t1、t2和t3在always語句中被賦值,它們被說明為reg型別(reg是暫存器資料型別的一種)。

always語句中有乙個與事件控制(緊跟在字元@後面的表示式)。相關聯的順序過程(begin-end對)。這意味著只要a、b或cin上發生事件,即a、b或cin之一的值發生變化,順序過程就執行。在順序過程中的語句順序執行,並且在順序過程執行結束後被掛起。順序過程執行完成後,always語句再次等待a、b或cin上發生的事件。

在順序過程中出現的語句是過程賦值模組化的例項。模組化過程賦值在下一條語句執行前完成執行。過程賦值可以有乙個可選的時延。

時延可以細分為兩種型別:

1)語句間時延:這是時延語句執行的時延。

2)語句內時延:這是右邊表示式數值計算與左邊表示式賦值間的時延。

下面是語句間時延的示例:

sum=(a^b)^cin; 

#4t1=a&cin;

在第二條語句中的時延規定賦值延遲4個時間單位執行。就是說,在第一條語句執行後等待4個時間單位,然後執行第二條語句。下面是語句內時延的示例。

sum=#3(a^b)^cin;

這個賦值中的時延意味著首先計算右邊表示式的值,等待3個時間單位,然後賦值給sum。

VGA學習筆記(verilog

參考大大大神 杜老師實驗 關於本實驗採用的vga引數解釋 800 600 72hz 800 600解析度 800 行同步訊號區間內,應該連續傳送800個有效的rgb資料。此時有效訊號是rgb資料 600 場同步訊號區間內,應該連續傳送600個有效的行訊號。此時有效訊號是行訊號。同步頭訊號 下降沿可作...

Verilog學習筆記(五)

verilog的結構化描述形式 在veriloghdl中可使用如下方式描述結構 1 內建門原語 在門級 2 開關級原語 在電晶體級 3 使用者定義的原語 在門級 4 模組例項 建立層次結構 在這一例項中,模組包含門的例項語句,也就是說包含內建門xor and和or的例項語句。門例項由線網型別變數s1...

Verilog學習筆記(二) 模組

模組是 verilog 的基本描述單位,用於描述某個設計的功能或結構及其與其他模組通訊的外部埠。乙個設計的結構可使用開關級原語 門級原語和使用者定義的原語方式描述 設計的資料流行為使用連續賦值語句進行描述 時序行為使用過程結構描述。乙個模組可以在另乙個模組中使用。乙個模組的基本語法如下 module...