我們將介紹如何使用verilog參數(shù)和generate語句來編寫可重用的verilog 代碼。
與大多數(shù)編程語言一樣,我們應(yīng)該嘗試使盡可能多的代碼可重用。這使我們能夠減少未來項(xiàng)目的開發(fā)時(shí)間,因?yàn)槲覀兛梢愿p松地將代碼從一個(gè)設(shè)計(jì)移植到另一個(gè)設(shè)計(jì)。
我們?cè)趘erilog中有兩個(gè)可用的結(jié)構(gòu),可以幫助我們編寫可重用的代碼 - 參數(shù)化和generate語句。這兩種結(jié)構(gòu)都允許我們創(chuàng)建更通用的代碼,當(dāng)我們實(shí)例化組件時(shí),我們可以輕松修改這些代碼以滿足我們的需求。
Verilog參數(shù)化
在verilog中,參數(shù)是常量的局部形式,可以在我們實(shí)例化模塊時(shí)為其賦值。由于參數(shù)的范圍有限,我們可以多次調(diào)用同一個(gè)verilog模塊,并為參數(shù)分配不同的值。這使我們能夠動(dòng)態(tài)配置模塊的行為。
下面的verilog代碼片段顯示了在模塊中聲明參數(shù)的方法。當(dāng)我們?cè)谶@樣的verilog模塊中聲明一個(gè)參數(shù)時(shí),我們稱之為參數(shù)化模塊。
上面verilog代碼中的 < parameter_name > 字段用于為我們的參數(shù)提供標(biāo)識(shí)符。我們使用此標(biāo)識(shí)符在代碼中調(diào)用參數(shù)值,就像使用普通變量一樣。我們還可以使用上面示例中的 字段為參數(shù)分配默認(rèn)值。這很有用,因?yàn)樗试S我們實(shí)例化組件,而無需專門為參數(shù)賦值。當(dāng)我們 verilog設(shè)計(jì)單元中實(shí)例化模塊時(shí),我們可以使用命名關(guān)聯(lián)或位置關(guān)聯(lián)為參數(shù)分配一個(gè)值。這與將信號(hào)分配給模塊上的輸入或輸出完全相同。但是,當(dāng)我們編寫使用 verilog 1995 標(biāo)準(zhǔn)的代碼時(shí),我們只能使用位置關(guān)聯(lián)為參數(shù)賦值。
下面的 verilog 代碼片段顯示了我們?cè)趯?shí)例化模塊時(shí)用于為參數(shù)賦值的方法。
Verilog 參數(shù)化模塊示例
為了更好地理解我們?nèi)绾卧趘erilog中使用參數(shù),讓我們考慮一個(gè)基本的例子。對(duì)于此示例,讓我們考慮一個(gè)需要兩個(gè)同步計(jì)數(shù)器的設(shè)計(jì)。其中一個(gè)計(jì)數(shù)器寬 8 位,另一個(gè)寬 12 位。
為了實(shí)現(xiàn)這個(gè)電路,我們可以編寫兩個(gè)具有不同寬度的不同計(jì)數(shù)器模塊。然而,這是一種對(duì)電路進(jìn)行編碼的低效方法。相反,我們將編寫單個(gè)計(jì)數(shù)器電路并使用參數(shù)來更改輸出中的位數(shù)。
由于理解我們?nèi)绾问褂脜?shù)化模塊并不重要,因此我們將排除此示例中的功能代碼。相反,我們將只研究如何在 verilog中聲明和實(shí)例參數(shù)化模塊。
下面的 verilog 代碼片段顯示了我們?nèi)绾螢閰?shù)化計(jì)數(shù)器模塊編寫接口。
在這個(gè)例子中,我們看到了如何使用參數(shù)來調(diào)整verilog中信號(hào)的大小。 我們不是使用固定數(shù)字來聲明端口寬度,而是將參數(shù)值替換為端口聲明 。這是 verilog 中參數(shù)最常見的用例之一。
在上面的 verilog 代碼中,我們將 BITS 參數(shù)的默認(rèn)值定義為 8。因此,當(dāng)我們想要一個(gè)不是 8 位的輸出時(shí),我們只需要為參數(shù)分配一個(gè)值。
下面的代碼片段顯示了當(dāng)我們想要 12 位輸出時(shí)如何實(shí)例化這個(gè)模塊。在這種情況下,我們必須在實(shí)例化 verilog 模塊時(shí)覆蓋參數(shù)的默認(rèn)值。
雖然我們?cè)谏厦娴氖纠惺褂?命名關(guān)聯(lián) ,但我們也可以使用位置關(guān)聯(lián)為 verilog 中的參數(shù)賦值。
下面的代碼片段顯示了我們將如何使用位置關(guān)聯(lián)將值 12 分配給 BITS 參數(shù)。
-
Verilog
+關(guān)注
關(guān)注
28文章
1355瀏覽量
110838 -
編程語言
+關(guān)注
關(guān)注
10文章
1952瀏覽量
35265 -
代碼
+關(guān)注
關(guān)注
30文章
4857瀏覽量
69526
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
Verilog HDL代碼書寫規(guī)范
如何用參數(shù)化加法器樹編寫Verilog
Verilog代碼書寫規(guī)范
通過編寫verilog代碼實(shí)現(xiàn)OLED驅(qū)動(dòng)和內(nèi)容顯示的解決方案
基于System Verilog的可重用驗(yàn)證平臺(tái)設(shè)計(jì)及驗(yàn)證結(jié)果分析

如何使用Verilog HDL描述可綜合電路?

代碼重用攻擊的通用模型及描述語言
代碼的可重用性是代碼開發(fā)和確保可維護(hù)性的關(guān)鍵

代碼重用的架構(gòu)可視化關(guān)鍵
verilog語言編寫規(guī)范
FPGA設(shè)計(jì)硬件語言Verilog中的參數(shù)化
如何使用verilog參數(shù)和generate語句來編寫可重用的verilog代碼?
可重用的驗(yàn)證組件中構(gòu)建測(cè)試平臺(tái)的步驟

評(píng)論