Verilog學習日誌(二)

2021-10-02 06:34:46 字數 1935 閱讀 5992

1)非阻塞賦值方法(如 b<=a)

塊結束後才完成賦值操作、b的值並不是立刻改變、這是一種常用的賦值方法

2)阻塞賦值方法(如 b=a)

賦值語句執行完後塊才結束、b的值在賦值語句執行後立刻改變、可能產生意想不到的結果

1)塊內的語句是按順序執行的,上一條語句執行完才能執行下一條語句

2)每條語句的延遲世家是相對於前一條語句的**時間而言的

3)直到最後一條語句執行完,程式流程控制才跳出該語句塊

例:begin

語句 1;

語句 2;

…;語句n;

end或者

begin:塊名

塊內宣告語句

語句1;

語句2;

…;語句n;

end1)塊內語句是同時執行的,程式流程控制已進入到該並行塊,塊內語句則開始同時並行地執行

2)塊內每條語句的延遲時間相當於程式流程控制進入到塊內的**時間

3)延遲時間是用來給賦值語句提供執行時序的

4)當按時間時序排列在最後的語句執行完成後或乙份disable語句執行時,流程控制跳出該程式塊

例:fork

語句 1;

語句 2;

…;語句 n;

join

或者 fork

塊名塊內宣告語句

語句 1;

語句 2;

…;語句 n;

join

在verilog中可以給每個塊乙個塊名,只需將名字加在關鍵字begin或fork後面即可

在並行塊和順序塊中都有乙個起始時間和結束時間的概念。對於順序塊,起始時間就是第一條語句開始被執行的時間,結束時間就是最後一條語句執行完的時間

對於並行塊,起始時間對於塊內所有的語句都是相同的,即程式流程控制進入該塊的時間,其結束時間是按時間安排的在最後的語句執行完的時間

(1) if(表示式)語句

if(a>b)

out 1<=int 1;

(2) if(表示式) 語句1;

else 語句2

if(a>b) out1<=int1;

else out2<=int2;

(3)if(表示式1) 語句1;

else if(表示式2) 語句2;

else if(表示式3) 語句3;

…else if(表示式m) 語句m;

else 語句n;

a)case括弧內的表示式稱為控制表示式,case分支項中的表示式稱為分支表示式。控制表 達式通常表示為控制訊號的某些位,分支表示式則用這些控制訊號的具體狀態值來表示, 因此 分支表示式又可以稱為常量表示式。

b)當控制表示式的值與分支表示式的值相等時,就執行分支表示式後面的語句。如果所有 的分支表示式的值都沒有與控制表示式的值相匹配的,就執行default後面的語句。

c)default項可有可無,乙個case語句裡只准有乙個default項。

d) 每乙個case分項的分支表示式的值必須互不相同,否則就會出現矛盾現象(對表示式的同 乙個值,有多種執行方案)。

e) 執行完case分項後的語句,則跳出該case語句結構,終止case語句的執行。

f) 在用case語句表示式進行比較的過程中,只有當訊號的對應位的值能明確進行比較時, 比較才能成功。因此要注意詳細說明case分項的分支表示式的值。

g) case語句的所有表示式的值的位寬必須相等,只有這樣控制表示式和分支表示式才能進 行對應位的比較。乙個經常犯的錯誤是用』bx, 'bz 來替代 n』bx, n』bz,這樣寫是不對 的,因為訊號x, z的預設寬度是機器的位元組寬度,通常是32位(此處 n 是case控制表達 式的位寬)。

Verilog學習筆記(二) 模組

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

學習日誌二

佟奇 寫於2018年9月11日 1.今日任務完成情況 最終完成200多 量,完成計畫。2.學習任務 基本儲備 先進後出 線性結構儲存方式 順序儲存 連續 鏈式儲存 不連續 棧 長度 棧頂指標 陣列下標 容量 起始位址 red hat終端c程式的編輯有關指令 a 插入 誤關,ls a,刪除 rm rf...

FPGA學習筆記(二) verilog 語法講解

verilog語法介紹 數位電路中主要有組合邏輯和時序邏輯兩種電路。組合邏輯 多路選擇器 解碼器 加法器 乘法器等 時序邏輯 最基本的是計數器。verilog檔案的基本結構 乙個檔案中可以包含多個模組。方法1 模組宣告 模組名 埠列表 module mux2 a,b,sel,out,io 埠屬性定義...