使用Verilog可以方便地實現(xiàn)復(fù)雜的設(shè)計。現(xiàn)在,設(shè)計復(fù)雜性增加,設(shè)計需要針對低功率、高速和最小面積進(jìn)行優(yōu)化~
任務(wù)和函數(shù)在Verilog中用于描述常用的功能行為。與其在不同的地方復(fù)制相同的代碼,不如根據(jù)需求使用函數(shù)或任務(wù),這是一種良好且常見的做法。為了便于代碼維護(hù),最好使用子例程之類的函數(shù)或任務(wù)。
從給定字符串中計算1的個數(shù)
以下示例描述用于從給定字符串中計算1的個數(shù)任務(wù)。以下是使用任務(wù)時需要記住的要點:
任務(wù)可以由時間控制語句甚至延遲操作符組成。
任務(wù)可以有輸入和輸出聲明。
任務(wù)可以由函數(shù)調(diào)用組成,但函數(shù)不能由任務(wù)組成。
任務(wù)可以有輸出參數(shù),在調(diào)用時不用于返回值。
任務(wù)可用于調(diào)用其他任務(wù)。
在編寫可綜合RTL時,不建議使用任務(wù)。
任務(wù)用于編寫行為或可仿真模型。
示例7.6是從給定字符串中計算1的個數(shù)的說明。在本例中,任務(wù)與參數(shù)“data_in”、“out”一起使用,任務(wù)的名稱為“count_1s_in_byte”。在大多數(shù)協(xié)議描述中,需要對輸入字符串執(zhí)行一些操作。在此示例中,字符串為8位輸入“data_in”,輸出結(jié)果為4位“out”。不建議使用任務(wù)生成綜合邏輯。
示例7.6任務(wù)的Verilog RTL
使用函數(shù)計數(shù)1的個數(shù)的模塊
以下示例描述用于從給定字符串中計算1的個數(shù)函數(shù)。以下是使用該功能時需要記住的要點:
函數(shù)不能由時間控制語句甚至延遲運算符組成。
函數(shù)至少有一個輸入?yún)?shù)聲明。
函數(shù)可以由函數(shù)調(diào)用組成,但函數(shù)不能由任務(wù)組成。
函數(shù)在零模擬時間內(nèi)執(zhí)行,并在調(diào)用時返回單個值。
在編寫可綜合 RTL時,不建議使用函數(shù)。
函數(shù)用于編寫行為或可仿真模型。
函數(shù)不應(yīng)具有非阻塞賦值。
示例7.7是從給定字符串中計算1個數(shù)的說明。在本例中,函數(shù)與參數(shù)“data_in”一起使用。函數(shù)名為“count_1s_in_byte”。在大多數(shù)協(xié)議描述中,需要對輸入字符串執(zhí)行一些操作。在此示例中,字符串為8位輸入“data_in”,輸出結(jié)果為4位“out”。不建議使用該函數(shù)生成綜合邏輯。
審核編輯:郭婷
-
Verilog
+關(guān)注
關(guān)注
28文章
1351瀏覽量
110107
原文標(biāo)題:Verilog復(fù)雜邏輯設(shè)計指南-函數(shù)和任務(wù)
文章出處:【微信號:Open_FPGA,微信公眾號:OpenFPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論