• 正文
    • 一個(gè)模塊必須有輸入/輸出端口嗎?
    • 什么是編譯指令?
    • Verilog有哪些變量類型?
    • 寄存器類型變量是否就對(duì)應(yīng)于硬件電路中的寄存器?
    • Verilog的3種描述方式是什么?
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

筆記 | verilog語法基礎(chǔ)

2024/01/09
6305
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

一個(gè)模塊必須有輸入/輸出端口嗎?

模塊可大可小,大到一個(gè)復(fù)雜的微處理器系統(tǒng),小到一個(gè)基本的晶體管,都可以作為一個(gè)模塊來設(shè)計(jì)。Verilog中,模塊(module)是基本的組成單位。建議在一個(gè)Verilog文件中,只放一個(gè)module定義,而且使文件名稱和module名稱一致。這是一個(gè)良好的設(shè)計(jì)習(xí)慣。

圖1?標(biāo)準(zhǔn)module格式

通常module具有輸入和輸出端口,在module名稱后面的括號(hào)中列出所有的輸入、輸出和雙向的端口名稱。

那么一個(gè)模塊必須有輸入輸出端口嗎?不一定。有的模塊既沒有輸入端口,也沒有輸出端口。有的模塊只有輸入端口,有的模塊只有輸出端口。

有些module既沒有輸入端口也沒有輸出端口。例如,在仿真平臺(tái)的頂層模塊中,其內(nèi)部已經(jīng)實(shí)例化了所有的設(shè)計(jì)模塊和激勵(lì)模塊,是一個(gè)封閉的系統(tǒng),沒有輸入和輸出。一般這種沒有端口的模塊都是用于仿真的,不用作實(shí)際電路。

有的模塊沒有輸入端口。例如 Tie cell。

圖2??Tie?cell

有的模塊沒有輸出端口,例如某些power switch。

圖3?某種power?switch

什么是編譯指令?

編譯指令(Compiler directive)能夠讓仿真器和綜合工具執(zhí)行一些特殊的操作。特點(diǎn):以`(重音符號(hào))為前綴;從處理位置一直保持有效,除非被其他指令覆蓋或者取消;`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中的一個(gè)抽象的存儲(chǔ)數(shù)據(jù)單元。

①?凡是在always或initial語句中賦值的變量,一定是寄存器變量;

②?在assign中賦值的一定是線網(wǎng)變量。在線網(wǎng)類型下,分為幾種子類,它們具有線網(wǎng)的共性:

??wire、tri:?表示電路間連線,tri主要用于多驅(qū)動(dòng)源建模;

??wor、trior:?表示該連線具有“線或”功能;

??wand、triand:?表示該連線具有“線與”功能;

?trireg:?表示該連線具有總線保持功能;

?tri1、tri0:?表示當(dāng)無驅(qū)動(dòng)時(shí),連線狀態(tài)為1(tri1)和0(tri0);

?supply1、supply0:分別表示電源和地信號(hào)。

在以上描述的線網(wǎng)類型中,除了trireg未初始化時(shí)為“X”以外,其余的未初始化時(shí)的值為“Z”。

線網(wǎng)類型主要用在連續(xù)賦值語句中,以及作為模塊之間的互連信號(hào)。

寄存器類型變量在Verilog語言中通常表示一個(gè)存儲(chǔ)數(shù)據(jù)的空間。尤其是在Verilog仿真器中,寄存器類型變量通常占據(jù)一個(gè)仿真內(nèi)存空間。

?reg:??是最常用的寄存器類型數(shù)據(jù),可以是1位或者多位,或者是二維數(shù)組(存儲(chǔ)器);

?integer:?整型數(shù)據(jù),存儲(chǔ)一個(gè)至少32位的整數(shù);

?time:?時(shí)間類型,存儲(chǔ)一個(gè)至少64位的時(shí)間值;

?real,realtime:?實(shí)數(shù)和實(shí)數(shù)。

寄存器類型變量是否就對(duì)應(yīng)于硬件電路中的寄存器?

“線網(wǎng)”變量可以理解為電路模塊中的連線,但“寄存器”變量并不嚴(yán)格對(duì)應(yīng)于電路上的存儲(chǔ)單元,包括觸發(fā)器(flip-flop)或鎖存器(latch)。從純粹語言表達(dá)的語義角度來說,寄存器類型變量的值,從一個(gè)賦值到下一個(gè)賦值被保存下來,并且在仿真過程中會(huì)保持而不會(huì)丟失。

Verilog的3種描述方式是什么?

我們使用HDL代碼描述硬件功能的時(shí)候,主要有三種基本描述方式,即結(jié)構(gòu)化描述方式、數(shù)據(jù)流描述方式和行為級(jí)描述方式。

結(jié)構(gòu)化描述的抽象級(jí)別最低,是最接近實(shí)際硬件結(jié)構(gòu)的描述方式。直接采用結(jié)構(gòu)化描述語句描述,需要描述實(shí)現(xiàn)功能所需數(shù)字電路的邏輯關(guān)系,及其復(fù)雜;結(jié)構(gòu)化描述語句常用于層次化模塊間的調(diào)用、以及ip核的例化等。

數(shù)據(jù)流描述是使用連續(xù)賦值語句(assign)對(duì)電路的邏輯功能進(jìn)行描述,該方式特別便于對(duì)組合邏輯電路建模。

行為級(jí)描述方式是使用過程塊語句結(jié)構(gòu)(always)和比較抽象的高級(jí)程序語句對(duì)電路的邏輯功能進(jìn)行描述。

相關(guān)推薦

登錄即可解鎖
  • 海量技術(shù)文章
  • 設(shè)計(jì)資源下載
  • 產(chǎn)業(yè)鏈客戶資源
  • 寫文章/發(fā)需求
立即登錄

前華為海思工程師;與非網(wǎng)2022年度影響力創(chuàng)作者;IC技術(shù)圈成員。

微信公眾號(hào)