與C語(yǔ)言類比,可以把任務(wù)理解成返回類型為void的子程序,把函數(shù)理解為帶有返回值類型的子程序。
1、任務(wù)(task)
(1)任務(wù)定義的語(yǔ)法為:
task《任務(wù)名》; 《端口與類型說(shuō)明》 《局部變量說(shuō)明》 begin 《語(yǔ)句》 endendtask
需要注意的是,在第一行task語(yǔ)句中不能列出端口名列表;可以沒(méi)有輸入、輸出端口和雙向端口,也可以有一個(gè)或多個(gè)輸入、輸出端口和雙向端口。
(2)任務(wù)的調(diào)用
《任務(wù)名》(端口1,端口2,。..,端口n);
任務(wù)的調(diào)用只能在過(guò)程塊中進(jìn)行。當(dāng)被調(diào)用的任務(wù)具有輸入或輸出端口時(shí),任務(wù)調(diào)用語(yǔ)句必須包含端口列表。這個(gè)列表內(nèi)端口出現(xiàn)的順序和類型必須與任務(wù)定義的順序和類型一致。
2、函數(shù)(function)
函數(shù)的目的是通過(guò)返回一個(gè)值來(lái)響應(yīng)輸入信號(hào)的值。函數(shù)不能啟動(dòng)任務(wù),但任務(wù)可以啟動(dòng)函數(shù)。在Verilog HDL中函數(shù)被當(dāng)作操作符來(lái)使用,結(jié)果就是這個(gè)函數(shù)的返回值。
(1)函數(shù)的定義
function《返回值的類型和位寬》(函數(shù)名) 《端口與類型說(shuō)明》 《局部變量說(shuō)明》 begin 《語(yǔ)句》 endendfunction
其中,返回值的類型和位寬是可選項(xiàng),如果缺省會(huì)返回一位寄存器類型數(shù)據(jù)。Verilog HDL認(rèn)為函數(shù)的定義隱式地聲明了與函數(shù)同名的寄存器。函數(shù)的定義把函數(shù)被返回值所賦值寄存器的名稱初始化為與函數(shù)同名的內(nèi)部變量。
(2)函數(shù)的調(diào)用
《函數(shù)名》(《輸入表達(dá)式1》,《輸入表達(dá)式2》,。..,《輸入表達(dá)式n》);
其中,n個(gè)輸入表達(dá)式要與函數(shù)定義結(jié)構(gòu)中說(shuō)明的各個(gè)端口一一對(duì)應(yīng),他們代表各個(gè)輸入端口的輸入數(shù)據(jù),這些輸入表達(dá)式的排列順序及類型必須與各個(gè)輸入端口在函數(shù)定義結(jié)構(gòu)中的排列順序及類型嚴(yán)格保持一致。
函數(shù)的調(diào)用不能單獨(dú)作為一條語(yǔ)句出現(xiàn),他只能作為一個(gè)操作出現(xiàn)在賦值語(yǔ)句內(nèi),不僅能夠用于過(guò)程塊內(nèi)的賦值,還能夠出現(xiàn)在assign語(yǔ)句中。
3、任務(wù)與函數(shù)的比較
(1)函數(shù)至少必須有一個(gè)輸入端口,而任務(wù)可以有多個(gè)、一個(gè)或沒(méi)有輸入端口;
(2)函數(shù)不能有輸出端口,而任務(wù)可以有多個(gè)、一個(gè)或沒(méi)有輸出端口;
(3)函數(shù)調(diào)用通過(guò)函數(shù)名返回一個(gè)返回值,而任務(wù)調(diào)用通過(guò)端口傳遞返回值;
(4)函數(shù)中不能調(diào)用任務(wù),但任務(wù)中可以調(diào)用函數(shù);
(5)函數(shù)調(diào)用不能作為一條語(yǔ)句出現(xiàn),而任務(wù)調(diào)用可以;
(6)函數(shù)調(diào)用可以出現(xiàn)在過(guò)程塊或者連續(xù)賦值語(yǔ)句中,而任務(wù)調(diào)用只能出現(xiàn)在過(guò)程塊中。
文章出處:【微信公眾號(hào):FPGA之家】
責(zé)任編輯:gt
-
數(shù)據(jù)
+關(guān)注
關(guān)注
8文章
7250瀏覽量
91622 -
C語(yǔ)言
+關(guān)注
關(guān)注
180文章
7631瀏覽量
141117
原文標(biāo)題:Verilog HDL語(yǔ)言(3) : 任務(wù)和函數(shù)
文章出處:【微信號(hào):zhuyandz,微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
Windows環(huán)境下32位匯編語(yǔ)言中文資料
verilog模塊的調(diào)用、任務(wù)和函數(shù)

FPGA Verilog HDL語(yǔ)法之編譯預(yù)處理

一文詳解Verilog HDL

淺談Verilog和VHDL的區(qū)別

EE-128:C語(yǔ)言中的DSP:從C調(diào)用匯編類成員函數(shù)

Verilog 與 ASIC 設(shè)計(jì)的關(guān)系 Verilog 代碼優(yōu)化技巧
Verilog與VHDL的比較 Verilog HDL編程技巧
數(shù)字系統(tǒng)設(shè)計(jì)與Verilog HDL
Verilog硬件描述語(yǔ)言參考手冊(cè)
C語(yǔ)言中的socket編程基礎(chǔ)
system verilog語(yǔ)言簡(jiǎn)介
FPGA編程語(yǔ)言的入門教程
Verilog HDL的基礎(chǔ)知識(shí)

評(píng)論