0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何使用verilog參數(shù)和generate語句來編寫可重用的verilog代碼?

Hack電子 ? 來源:Hack電子 ? 2023-05-08 16:59 ? 次閱讀

與大多數(shù)編程語言一樣,我們應(yīng)該嘗試使盡可能多的代碼可重用。這使我們能夠減少未來項(xiàng)目的開發(fā)時(shí)間,因?yàn)槲覀兛梢愿p松地將代碼從一個(gè)設(shè)計(jì)移植到另一個(gè)設(shè)計(jì)。 我們?cè)?a href="http://wenjunhu.com/tags/verilog/" target="_blank">verilog中有兩個(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ù)化模塊。

1 module #(
2 parameter =
3 )
4 (
5 // Port declarations
6 );

上面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ù)賦值的方法。

1 // Example of named association
2 # (
3 // If the module uses parameters they are connected here
4 . ()
5 )
6 (
7 // port connections
8 );
9
10 // Example of positional association
11 # ()
12 (
13 // port connections
14 );

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ù)器模塊編寫接口。

1 modulecounter #(
2 parameterBITS =8;
3 )
4 (
5 inputwireclock,
6 inputwirereset,
7 outputreg[BITS-1:0] count
8 );

在這個(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)值。

1 counter # (
2 .BITS (12)
3 ) count_12 (
4 .clock (clock),
5 .reset (reset),
6 .count (count_out)
7 );

雖然我們?cè)谏厦娴氖纠惺褂?strong>命名關(guān)聯(lián),但我們也可以使用位置關(guān)聯(lián)為 verilog 中的參數(shù)賦值。

下面的代碼片段顯示了我們將如何使用位置關(guān)聯(lián)將值 12 分配給 BITS 參數(shù)。

1 counter # (12) count_12 (clock, reset, count_out);





審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Verilog
    +關(guān)注

    關(guān)注

    28

    文章

    1351

    瀏覽量

    110146
  • 計(jì)數(shù)器
    +關(guān)注

    關(guān)注

    32

    文章

    2256

    瀏覽量

    94691
  • 編程語言
    +關(guān)注

    關(guān)注

    10

    文章

    1947

    瀏覽量

    34804
  • BITS
    +關(guān)注

    關(guān)注

    0

    文章

    4

    瀏覽量

    8098

原文標(biāo)題:使用參數(shù)化編寫可重用的Verilog代碼

文章出處:【微信號(hào):Hack電子,微信公眾號(hào):Hack電子】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Veriloggenerate if 語句如何用systemc實(shí)現(xiàn)?

    Veriloggenerate if語句如何用systemc實(shí)現(xiàn)?例如:generateif (SIZE < 8)assign y = a & b & c;else
    發(fā)表于 08-28 12:06

    Veriloggenerate if語句如何用systemc實(shí)現(xiàn)?

    1.Veriloggenerate if語句如何用systemc實(shí)現(xiàn)?例如:generateif (SIZE < 8)assign y = a & b & c;else
    發(fā)表于 08-29 16:11

    新手求解verilog 中的生成塊語句 的意思

    verilog 中的 generate for 語句好理解,但是 generate if 和 generate case
    發(fā)表于 12-21 12:44

    veriloggenerate語句的用法分享

    generateverilog中的生成語句,當(dāng)對(duì)矢量中的多個(gè)位進(jìn)行重復(fù)操作時(shí),或者當(dāng)進(jìn)行多個(gè)模塊的實(shí)例引用的重復(fù)操作時(shí),或者根據(jù)參數(shù)的定義
    發(fā)表于 12-23 16:59

    Verilog代碼書寫規(guī)范

    Verilog代碼書寫規(guī)范 本規(guī)范的目的是提高書寫代碼的可讀性、可修改性、重用性,優(yōu)化代碼
    發(fā)表于 04-15 09:47 ?106次下載

    Verilog generate語句的類型

    Generate 結(jié)構(gòu)在創(chuàng)建可配置的RTL的時(shí)候很有用。Generate loop能夠讓語句實(shí)例化多次,通過index控制。而conditional
    的頭像 發(fā)表于 03-16 14:34 ?2.2w次閱讀
    <b class='flag-5'>Verilog</b> <b class='flag-5'>generate</b><b class='flag-5'>語句</b>的類型

    Verilog綜合的循環(huán)語句

    Verilog中提供了四種循環(huán)語句,可用于控制語句的執(zhí)行次數(shù),分別為:for,while,repeat,forever。其中,for,while,repeat是綜合的,但循環(huán)的次數(shù)需
    發(fā)表于 10-13 12:23 ?2w次閱讀

    Verilog教程之Verilog HDL程序設(shè)計(jì)語句和描述方式

    本文檔的主要內(nèi)容詳細(xì)介紹的是Verilog教程之Verilog HDL程序設(shè)計(jì)語句和描述方式。
    發(fā)表于 12-09 11:24 ?47次下載
    <b class='flag-5'>Verilog</b>教程之<b class='flag-5'>Verilog</b> HDL程序設(shè)計(jì)<b class='flag-5'>語句</b>和描述方式

    verilog中的initial語句說明

    解釋verilog HDL中的initial語句的用法。
    發(fā)表于 05-31 09:11 ?0次下載

    Verilog語法之generate for、generate if、generate case

    Verilog-2005中有3個(gè)generate 語句可以用來很方便地實(shí)現(xiàn)重復(fù)賦值和例化(generate for)或根據(jù)條件選擇性地進(jìn)行編譯(ge
    的頭像 發(fā)表于 12-28 15:21 ?2777次閱讀

    如何在verilog中使用If語句和case語句

    我們?cè)谏弦黄恼轮幸呀?jīng)看到了如何使用程序塊(例如 always 塊編寫按順序執(zhí)行的 verilog 代碼。
    的頭像 發(fā)表于 04-18 09:45 ?5613次閱讀

    Verilog中的If語句和case語句介紹

    我們?cè)谏弦黄恼轮幸呀?jīng)看到了如何使用程序塊(例如 always 塊編寫按順序執(zhí)行的 verilog 代碼。 我們還可以在程序塊中使用許多語句
    的頭像 發(fā)表于 05-11 15:37 ?4637次閱讀
    <b class='flag-5'>Verilog</b>中的If<b class='flag-5'>語句</b>和case<b class='flag-5'>語句</b>介紹

    如何使用參數(shù)編寫重用verilog代碼

    我們將介紹如何使用verilog參數(shù)generate語句編寫
    的頭像 發(fā)表于 05-11 15:59 ?1140次閱讀

    Verilog常用的循環(huán)語句及用途

    本文主要介紹verilog常用的循環(huán)語句,循環(huán)語句的用途,主要是可以多次執(zhí)行相同的代碼或邏輯。
    的頭像 發(fā)表于 05-12 18:26 ?2552次閱讀

    FPGA的Verilog代碼編寫規(guī)范

      注:以R起頭的是對(duì)編寫Verilog代碼的IP設(shè)計(jì)者所做的強(qiáng)制性規(guī)定,以G起頭的條款是建議采用的規(guī)范。每個(gè)設(shè)計(jì)者遵守本規(guī)范鍛煉命名規(guī)范性。
    的頭像 發(fā)表于 08-15 16:23 ?2246次閱讀