加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
    • 一個(gè)模塊必須有輸入/輸出端口嗎?
    • 什么是編譯指令?
    • Verilog有哪些變量類型?
    • 寄存器類型變量是否就對應(yīng)于硬件電路中的寄存器?
    • Verilog的3種描述方式是什么?
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

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

2023/01/09
2854
閱讀需 6 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(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名稱后面的括號中列出所有的輸入、輸出和雙向的端口名稱。

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

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

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

圖2??Tie?cell

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

圖3?某種power?switch

什么是編譯指令?

編譯指令(Compiler directive)能夠讓仿真器和綜合工具執(zhí)行一些特殊的操作。特點(diǎn):以`(重音符號)為前綴;從處理位置一直保持有效,除非被其他指令覆蓋或者取消;`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è)抽象的存儲數(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ū)動時(shí),連線狀態(tài)為1(tri1)和0(tri0);

?supply1、supply0:分別表示電源和地信號。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

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

微信公眾號