一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

Hack電子 ? 來源:Hack電子 ? 2023-05-08 16:59 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

與大多數編程語言一樣,我們應該嘗試使盡可能多的代碼可重用。這使我們能夠減少未來項目的開發(fā)時間,因為我們可以更輕松地將代碼從一個設計移植到另一個設計。 我們在verilog中有兩個可用的結構,可以幫助我們編寫可重用的代碼 - 參數化和generate語句。這兩種結構都允許我們創(chuàng)建更通用的代碼,當我們實例化組件時,我們可以輕松修改這些代碼以滿足我們的需求。

Verilog參數化

在verilog中,參數是常量的局部形式,可以在我們實例化模塊時為其賦值。由于參數的范圍有限,我們可以多次調用同一個verilog模塊,并為參數分配不同的值。這使我們能夠動態(tài)配置模塊的行為。

下面的verilog代碼片段顯示了在模塊中聲明參數的方法。當我們在這樣的verilog模塊中聲明一個參數時,我們稱之為參數化模塊。

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

上面verilog代碼中的 <parameter_name> 字段用于為我們的參數提供標識符。我們使用此標識符在代碼中調用參數值,就像使用普通變量一樣。我們還可以使用上面示例中的 字段為參數分配默認值。這很有用,因為它允許我們實例化組件,而無需專門為參數賦值。

當我們 verilog設計單元中實例化模塊時,我們可以使用命名關聯(lián)或位置關聯(lián)為參數分配一個值。這與將信號分配給模塊上的輸入或輸出完全相同。但是,當我們編寫使用 verilog 1995 標準的代碼時,我們只能使用位置關聯(lián)為參數賦值。

下面的 verilog 代碼片段顯示了我們在實例化模塊時用于為參數賦值的方法。

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 參數化模塊示例

為了更好地理解我們如何在verilog中使用參數,讓我們考慮一個基本的例子。對于此示例,讓我們考慮一個需要兩個同步計數器的設計。其中一個計數器寬 8 位,另一個寬 12 位。 為了實現(xiàn)這個電路,我們可以編寫兩個具有不同寬度的不同計數器模塊。

然而,這是一種對電路進行編碼的低效方法。相反,我們將編寫單個計數器電路并使用參數來更改輸出中的位數。 由于理解我們如何使用參數化模塊并不重要,因此我們將排除此示例中的功能代碼。相反,我們將只研究如何在 verilog中聲明和實例參數化模塊。

下面的 verilog 代碼片段顯示了我們如何為參數化計數器模塊編寫接口。

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

在這個例子中,我們看到了如何使用參數來調整verilog中信號的大小。我們不是使用固定數字來聲明端口寬度,而是將參數值替換為端口聲明。這是 verilog 中參數最常見的用例之一。 在上面的 verilog 代碼中,我們將 BITS 參數的默認值定義為 8。因此,當我們想要一個不是 8 位的輸出時,我們只需要為參數分配一個值。 下面的代碼片段顯示了當我們想要 12 位輸出時如何實例化這個模塊。在這種情況下,我們必須在實例化 verilog 模塊時覆蓋參數的默認值。

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

雖然我們在上面的示例中使用命名關聯(lián),但我們也可以使用位置關聯(lián)為 verilog 中的參數賦值。

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

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





審核編輯:劉清

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

    關注

    29

    文章

    1366

    瀏覽量

    112073
  • 計數器
    +關注

    關注

    32

    文章

    2290

    瀏覽量

    96244
  • 編程語言
    +關注

    關注

    10

    文章

    1955

    瀏覽量

    36407
  • BITS
    +關注

    關注

    0

    文章

    4

    瀏覽量

    8211

原文標題:使用參數化編寫可重用的Verilog代碼

文章出處:【微信號:Hack電子,微信公眾號:Hack電子】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

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

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

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

    1.Veriloggenerate if語句如何用systemc實現(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中的生成語句,當對矢量中的多個位進行重復操作時,或者當進行多個模塊的實例引用的重復操作時,或者根據參數的定義
    發(fā)表于 12-23 16:59

    Verilog代碼書寫規(guī)范

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

    Verilog generate語句的類型

    Generate 結構在創(chuàng)建可配置的RTL的時候很有用。Generate loop能夠讓語句實例化多次,通過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í)行次數,分別為:for,while,repeat,forever。其中,for,while,repeat是綜合的,但循環(huán)的次數需
    發(fā)表于 10-13 12:23 ?2w次閱讀

    Verilog教程之Verilog HDL程序設計語句和描述方式

    本文檔的主要內容詳細介紹的是Verilog教程之Verilog HDL程序設計語句和描述方式。
    發(fā)表于 12-09 11:24 ?47次下載
    <b class='flag-5'>Verilog</b>教程之<b class='flag-5'>Verilog</b> HDL程序設計<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個generate 語句可以用來很方便地實現(xiàn)重復賦值和例化(generate for)或根據條件選擇性地進行編譯(ge
    的頭像 發(fā)表于 12-28 15:21 ?3374次閱讀

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

    我們在上一篇文章中已經看到了如何使用程序塊(例如 always 塊編寫按順序執(zhí)行的 verilog 代碼。
    的頭像 發(fā)表于 04-18 09:45 ?6362次閱讀

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

    我們在上一篇文章中已經看到了如何使用程序塊(例如 always 塊編寫按順序執(zhí)行的 verilog 代碼。 我們還可以在程序塊中使用許多語句
    的頭像 發(fā)表于 05-11 15:37 ?5697次閱讀
    <b class='flag-5'>Verilog</b>中的If<b class='flag-5'>語句</b>和case<b class='flag-5'>語句</b>介紹

    如何使用參數編寫重用verilog代碼

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

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

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

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

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