所謂不同的抽象類別,實際上是指同一個物理電路,可以在不同層次上用Verilog語言來描述。如果只從行為功能的角度來描述某一電路模塊,就稱作行為模塊。如果從電路結構的角度來描述該電路模塊,就稱作結構模塊。根據抽象的級別將Verilog的模塊分為5種不同的等級: 1)系統級 2)演算法級 3)RTL級(r ...
所謂不同的抽象類別,實際上是指同一個物理電路,可以在不同層次上用Verilog語言來描述。如果只從行為功能的角度來描述某一電路模塊,就稱作行為模塊。如果從電路結構的角度來描述該電路模塊,就稱作結構模塊。根據抽象的級別將Verilog的模塊分為5種不同的等級:
1)系統級 2)演算法級 3)RTL級(register-transfer-level)4)門級 5)開關級。
對於數字系統的邏輯設計工程師而言:熟練地掌握門級、RTL級、演算法級、系統級的描述是非常重要的。
對於電路基本元部件的設計者而言,則需要掌握用戶自定義原語(UDP)和開關級的描述。
Verilog中有關門類型的關鍵字有26個,這裡簡單介紹其中8種:
and-與門;nand-與非門;or-或門;nor-或非門;xor-異或門;xnor-異或非門;buf-緩衝器;not-非門。
用戶定義原語:
用戶定義原語是從英語User Defined Primitive直接翻譯過來的,簡稱UDP。利用用戶定義原語可以自己定義自己設計的基本邏輯器件的功能,由於UDP是用查表的方法來確定輸出的,在用模擬器進行模擬時,對他的處理較對一般用戶編寫的模塊和組合邏輯快得多。UDP的定義和一般模塊類似,只是不用module而是改用primitive作為關鍵詞,不用endmodule而是endprimitive關鍵詞結束。
語法:primitive 元件名(輸出埠,輸入埠1,輸入埠2,....); //書上沒有分號?
output 輸出埠名;
input 輸入埠1,輸入埠2....;
reg 輸出埠;
initial
begin 輸出埠寄存器或者時序邏輯內部寄存器初始化0; end
table
//輸入1 輸入2 輸入3 ... :輸出
邏輯1 邏輯2 邏輯3 ... :邏輯值;
邏輯1 邏輯2 邏輯3 ... :邏輯值;
邏輯1 邏輯2 邏輯3 ... :邏輯值;
... .... ... ... ..... ...........;
endtable
endprimitive
註意:
1)UDP只能有一個輸出量,而且必須是埠說明的第一項;
2)UDP可以有多個輸入端,最多允許有10個輸入端;
3)UDP所有埠變數必須是標量,即必須是1位的;
4)在UDP的邏輯表中只允許出現0,1,x三種邏輯值,高阻狀態z不允許出現。
5)只有輸出端可以定義為reg寄存器類型變數;
6)initial語句用於為時序電路內部寄存器賦初值,只允許賦0,1,x的三種邏輯值,預設值為X。