一個模塊必須有輸入/輸出端口嗎?
模塊可大可小,大到一個復(fù)雜的微處理器系統(tǒng),小到一個基本的晶體管,都可以作為一個模塊來設(shè)計。Verilog中,模塊(module)是基本的組成單位。建議在一個Verilog文件中,只放一個module定義,而且使文件名稱和module名稱一致。這是一個良好的設(shè)計習(xí)慣。
圖1?標(biāo)準(zhǔn)module格式
通常module具有輸入和輸出端口,在module名稱后面的括號中列出所有的輸入、輸出和雙向的端口名稱。
那么一個模塊必須有輸入輸出端口嗎?不一定。有的模塊既沒有輸入端口,也沒有輸出端口。有的模塊只有輸入端口,有的模塊只有輸出端口。
有些module既沒有輸入端口也沒有輸出端口。例如,在仿真平臺的頂層模塊中,其內(nèi)部已經(jīng)實例化了所有的設(shè)計模塊和激勵模塊,是一個封閉的系統(tǒng),沒有輸入和輸出。一般這種沒有端口的模塊都是用于仿真的,不用作實際電路。
有的模塊沒有輸入端口。例如 Tie cell。
圖2??Tie?cell
有的模塊沒有輸出端口,例如某些power switch。
圖3?某種power?switch
什么是編譯指令?
編譯指令(Compiler directive)能夠讓仿真器和綜合工具執(zhí)行一些特殊的操作。特點:以`(重音符號)為前綴;從處理位置一直保持有效,除非被其他指令覆蓋或者取消;`resetall指令將所有編譯指令復(fù)位成默認(rèn)值。常用編譯指令如下:
?`timescale;
?`define,`undef;
?`ifdef,`else,`endif;
?`include;
?`resetall。
延伸閱讀:
https://www.cnblogs.com/xing-usetc/p/16585290.html
Verilog有哪些變量類型?
在Verilog語言中,有兩大變量類型:
??線網(wǎng)型:表示電路間的物理連線。
??寄存器型:Verilog中的一個抽象的存儲數(shù)據(jù)單元。
①?凡是在always或initial語句中賦值的變量,一定是寄存器變量;
②?在assign中賦值的一定是線網(wǎng)變量。在線網(wǎng)類型下,分為幾種子類,它們具有線網(wǎng)的共性:
??wire、tri:?表示電路間連線,tri主要用于多驅(qū)動源建模;
??wor、trior:?表示該連線具有“線或”功能;
??wand、triand:?表示該連線具有“線與”功能;
?trireg:?表示該連線具有總線保持功能;
?tri1、tri0:?表示當(dāng)無驅(qū)動時,連線狀態(tài)為1(tri1)和0(tri0);
?supply1、supply0:分別表示電源和地信號。
在以上描述的線網(wǎng)類型中,除了trireg未初始化時為“X”以外,其余的未初始化時的值為“Z”。
線網(wǎng)類型主要用在連續(xù)賦值語句中,以及作為模塊之間的互連信號。
寄存器類型變量在Verilog語言中通常表示一個存儲數(shù)據(jù)的空間。尤其是在Verilog仿真器中,寄存器類型變量通常占據(jù)一個仿真內(nèi)存空間。
?reg:??是最常用的寄存器類型數(shù)據(jù),可以是1位或者多位,或者是二維數(shù)組(存儲器);
?integer:?整型數(shù)據(jù),存儲一個至少32位的整數(shù);
?time:?時間類型,存儲一個至少64位的時間值;
?real,realtime:?實數(shù)和實數(shù)。
寄存器類型變量是否就對應(yīng)于硬件電路中的寄存器?
“線網(wǎng)”變量可以理解為電路模塊中的連線,但“寄存器”變量并不嚴(yán)格對應(yīng)于電路上的存儲單元,包括觸發(fā)器(flip-flop)或鎖存器(latch)。從純粹語言表達(dá)的語義角度來說,寄存器類型變量的值,從一個賦值到下一個賦值被保存下來,并且在仿真過程中會保持而不會丟失。
Verilog的3種描述方式是什么?
我們使用HDL代碼描述硬件功能的時候,主要有三種基本描述方式,即結(jié)構(gòu)化描述方式、數(shù)據(jù)流描述方式和行為級描述方式。
結(jié)構(gòu)化描述的抽象級別最低,是最接近實際硬件結(jié)構(gòu)的描述方式。直接采用結(jié)構(gòu)化描述語句描述,需要描述實現(xiàn)功能所需數(shù)字電路的邏輯關(guān)系,及其復(fù)雜;結(jié)構(gòu)化描述語句常用于層次化模塊間的調(diào)用、以及ip核的例化等。
數(shù)據(jù)流描述是使用連續(xù)賦值語句(assign)對電路的邏輯功能進(jìn)行描述,該方式特別便于對組合邏輯電路建模。
行為級描述方式是使用過程塊語句結(jié)構(gòu)(always)和比較抽象的高級程序語句對電路的邏輯功能進(jìn)行描述。