首先必須知道該訊號的最大值(計算該訊號的位寬)
wire用於結構化器件之間物理連線的建模
在verilog中,wire永遠是wire,就是相當於一條連線,用來連線電路,不能儲存資料,無驅動能力,是組合邏輯;並且只能在assign左側賦值,不能在always @ 中賦值。
reg可以綜合成register,latch,甚至是wire(當其只是中間變數的時候),能儲存資料,有驅動能力,可以用於組合邏輯或者時序邏輯;在always @模組表示式左側被賦值。
只要在always中設計的訊號都用reg,其他訊號都定義為wire型。
example: 訊號x是用always設計的,所以要定義為reg型,但是實際的電路中x不是暫存器型別,但仍然定義為reg型。
1、功能檔案:由本模組產生,並且用always產生的訊號,就定義成reg
2、測試檔案:由初始化initial產生(一般是對測模組的輸入)的訊號,就定義成reg
3、除了以上兩種情況,就定義成wire型
(乙個模組中可以有許多個initial塊,它們都是並行執行的。initial語句最常見的是用於測試檔案裡面的初始化語句,用來產生測試環境和設定訊號記錄。)
數位電路根據邏輯功能的不同特點,可以分成兩大類,一類叫組合邏輯電路(簡稱組合電路),另一類叫做時序邏輯電路(簡稱時序電路)。掌握組合邏輯和時序邏輯的區分手段與實現方法是數字系統設計的基本要求。
8.1.1 組合邏輯設計
1.組合邏輯概念
組合邏輯是veriloghdl設計中的乙個重要組成部分。從電路本質上講,組合邏輯電路的特點是輸出訊號只是當前時刻輸入訊號的函式,與其他時刻的輸入狀態無關。無儲存電路,也沒有反饋電路其典型結構如圖8-1所示。從電路行為上看,其特徵就是輸出訊號的變化僅僅與輸入訊號的電平有關,不涉及對訊號跳變沿的處理。
根據組合邏輯的電路行為,可以得到兩種常用的rtl 級描述方式。第一種是always模組的觸發事件為電平敏感訊號列表;第二種就是用assign 關鍵字描述的資料流賦值語句。
(1)always 模組的敏感表為電平敏感訊號的電路
這種方式的組合電路應用非常廣泛,幾乎可以完成對所有組合邏輯電路的建模。always模組的敏感列表為所有判斷條件訊號和輸入訊號,但一定要注意敏感列表的完整性。在always模組中可以使用if、case 和for 等各種rtl關鍵字結構。由於賦值語句有阻塞賦值和非阻塞賦值兩類,建議讀者使用阻塞賦值語句「=」,詳細原因將在8.3.1 節進行說明。
always 模組中的訊號必須定義為reg 型,不過最終的實現結果中並沒有暫存器。這是由於在組合邏輯電路描述中,將訊號定義為reg型,只是為了滿足語法要求。
(2)assign語句描述的電路
利用條件符「?」可以描述一些相對簡單的組合邏輯電路,訊號只能被定義為wire型。當組合邏輯比較複雜時,需要很多條assign語句或者多重巢狀「?」,使得**可讀性極差,因此此時推薦第一種組合邏輯建模方式。
時序電路
1.時序邏輯中的always定義的 reg 型訊號都被綜合成 reg (暫存器),一般建議使用非阻塞賦值操作 「<=」,但是要注意並行執行的語句可能會帶來的delay_cycle的問題
2.敏感變數表中只要有時鐘沿的變化即可,即每次觸發輸出變化都是時鐘沿引起的
不定態(x態)
常用於判斷條件,
如果有影響的話,考慮其是0還是1,不影響的話,不考慮。
=」和「」不同體現在對含有不定製x和高阻態z資料的處理中:
先說結論:
==為邏輯相等,沒有x/z時相同輸出1,不同輸出0;有x/z時,若其餘位相同,輸出是x,其餘位不同,輸出為0;
!=為邏輯不等,沒有x/z時相同輸出0,不同輸出1;有x/z時,若其餘位相同,輸出是x,其餘位不同,輸出為1;
===與!===為邏輯全等和邏輯不全等,x/z當作普通元素處理。
高阻態(z態)
表示不會驅動這個訊號,(既不給也不給1)。通常用於三態門中。
「不驅動匯流排」
Verilog基本語法和vivado
veriloghdl 是一種用於數字邏輯電路設計的硬體描述語言 使用veriloghdl可以像設計軟體一樣設計硬體系統。hdl hardware description language 硬體描述語言 常量 變數 變數 運算子 八種 表示式基本結構 verilog模組的基本結構 module 模組名...
Verilog基本語法 原語篇(Gate門)
verilog中已有一些建立好的邏輯門和開關的模型。在所涉及的模組中,可通過例項引用這些門與開關模型,從而對模組進行結構化的描述。and output,input,nand output,input,or output,input,nor output,input,xor output,input,...
verilog 基本語法 大括號的使用
的基本使用是兩個,乙個是拼接,乙個是複製,下面列舉了幾種常見用法。基本用法 表示拼接,表示複製,等同於 所以 就表示將13個1拼接起來,即13 b1111111111111。拼接語法詳解 即把某些倍號的某些位詳細地列出來,中間用逗號分開,最後用大括號括起來表示乙個整體訊號,例如 a,b 3 0 c,...