RM新时代网站-首页

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

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

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

Verilog例化說明

FPGA設(shè)計論壇 ? 來源:FPGA設(shè)計論壇 ? 2024-12-17 11:29 ? 次閱讀

Verilog例化說明

1.什么是模塊例化?為什么要例化?

模塊例化可以理解成模塊調(diào)用。對于一個FPGA工程,通常是由一個頂層模塊與多個功能子模塊組成,為了實現(xiàn)頂層模塊與子模塊的連接,需要進(jìn)行模塊間的例化(或說是調(diào)用)。在一個FPGA項目工程中,其輸入、輸出端口命名通常在設(shè)計前期就已確定下來,但會存在一些中間變量,一個工程可能會讓不同的工程師在不同的時間段內(nèi)共同完成,不同的人對于這些變量的命名會有所不同,故例化很有必要。

2.實例說明例化方法

實例:靜態(tài)數(shù)碼管顯示
根據(jù)功能將 FPGA 頂層例化了以下兩個功能子模塊:計時模(time_count)和數(shù)碼管靜態(tài)顯示模塊(seg_led_static),如下圖所示:

285ac5fa-b85e-11ef-93f3-92fbcf53809c.png


1.計時模塊(僅顯示端口及參數(shù)

module time_count(
inputclk ,                       // 時鐘信號
inputrst_n ,                     // 復(fù)位信號

output reg  flag                        // 一個時鐘周期的脈沖信號
);

//parameter define
parameter MAX_NUM = 25000_000;         // 計數(shù)器最大計數(shù)值
......(省略功能代碼)

endmodule

2.數(shù)碼管靜態(tài)顯示模塊(僅顯示端口及參數(shù))

module seg_led_static ( 
input  clk ,                // 時鐘信號
input  rst_n ,              // 復(fù)位信號(低有效)
input  add_flag,            // 數(shù)碼管變化的通知信號

output reg [5:0] sel ,                // 數(shù)碼管位選
output reg [7:0] seg_led              // 數(shù)碼管段選
 );
......(省略功能代碼)
 
 endmodule

3.頂層模塊(著重看下面“例化計時模塊”、“例化數(shù)碼管靜態(tài)顯示模塊”)

module seg_led_static_top (
input  sys_clk ,              // 系統(tǒng)時鐘
input  sys_rst_n,             // 系統(tǒng)復(fù)位信號(低有效)

output [5:0] sel ,                  // 數(shù)碼管位選
output [7:0] seg_led                // 數(shù)碼管段選
 );
 
 //parameter define
 parameter TIME_SHOW = 25'd25000_000;   // 數(shù)碼管變化的時間間隔0.5s
 
 //wire define
 wire add_flag;                         // 數(shù)碼管變化的通知信號

 //例化計時模塊
time_count #(                           //參數(shù)例化使用’#‘
.MAX_NUM (TIME_SHOW)
) u_time_count(
.clk (sys_clk ),
 .rst_n (sys_rst_n),
 .flag (add_flag )
 );

//例化數(shù)碼管靜態(tài)顯示模塊
seg_led_static u_seg_led_static (
.clk (sys_clk ),
 .rst_n (sys_rst_n),

 .add_flag (add_flag ),
 .sel (sel ),
.seg_led (seg_led )
 );

endmodule

上面給出了頂層模塊的完整代碼,子模塊只有模塊的端口和參數(shù)定義的代碼。這是因為頂層模塊對子模塊做例化時,只需要知道子模塊的端口信號名,而不用關(guān)心子模塊內(nèi)部具體是如何實現(xiàn)的。

如果子模塊內(nèi)部使用parameter 定義了一些參數(shù),Verilog 也支持對參數(shù)的例化(也叫參數(shù)的傳遞),即頂層模塊可以通過例化參數(shù)來修改子模塊內(nèi)定義的參數(shù)。

下圖為模塊例化。

289d8a84-b85e-11ef-93f3-92fbcf53809c.png


上圖右側(cè)是例化的數(shù)碼管靜態(tài)顯示模塊,子模塊名是指被例化模塊的模塊名,而例化模塊名相當(dāng)于標(biāo)識,當(dāng)例化多個相同模塊時,可以通過例化名來識別哪一個例化,我們一般命名為“u_”+“子模塊名”。信號列表中“.”之后的信號是數(shù)碼管靜態(tài)顯示模塊定義的端口信號,括號內(nèi)的信號則是頂層模塊聲明的信號,這樣就將頂層模塊的信號與子模塊的信號一一對應(yīng)起來,同時需要注意信號的位寬要保持一致。

接下來再來介紹一下參數(shù)的例化,參數(shù)的例化是在模塊例化的基礎(chǔ)上,增加了對參數(shù)的信號定義。

下圖為參數(shù)例化:

28c82c6c-b85e-11ef-93f3-92fbcf53809c.png

在對參數(shù)進(jìn)行例化時,在模塊名的后面加上“#”,表示后面跟著的是參數(shù)列表。計時模塊定義的MAX_NUM 和頂層模塊的 TIME_SHOW 都是等于25000_000,當(dāng)在頂層模塊定義 TIME_SHOW=12500_000時,那么子模塊的 MAX_NUM 的值實際上是也等于 12500_000。當(dāng)然即使子模塊包含參數(shù),在做模塊的例化時也可以不添加對參數(shù)的例化,這樣的話,子模塊的參數(shù)值等于該模塊內(nèi)部實際定義的值。

值得一提的是,Verilog 語法中的localparam 代表的意思同樣是參數(shù)定義,用法和 parameter 基本一致,區(qū)別在于 parameter 定義的參數(shù)可以做例化,而 localparam 定義的參數(shù)是指本地參數(shù),上層模塊不可以對localparam 定義的參數(shù)做例化。

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

    關(guān)注

    28

    文章

    1351

    瀏覽量

    110074
  • 數(shù)碼管顯示
    +關(guān)注

    關(guān)注

    0

    文章

    63

    瀏覽量

    13815
  • 顯示模塊
    +關(guān)注

    關(guān)注

    1

    文章

    50

    瀏覽量

    23567

原文標(biāo)題:Verilog例化說明

文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設(shè)計論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    Verilog HDL和VHDL區(qū)別

    Verilog和VHDL之間的區(qū)別將在本文中通過示例進(jìn)行詳細(xì)說明。對優(yōu)點和缺點的Verilog和VHDL進(jìn)行了討論。
    的頭像 發(fā)表于 12-20 09:03 ?3686次閱讀
    <b class='flag-5'>例</b>說<b class='flag-5'>Verilog</b> HDL和VHDL區(qū)別

    模塊

    能不能分享個Verilog模塊的教程?
    發(fā)表于 01-02 00:43

    Verilog HDL語言100詳解

    Verilog HDL語言100詳解希望對大家有所幫助
    發(fā)表于 09-01 15:58

    說FPGA連載62:電子點菜單之FIFO說明

    `說FPGA連載62:電子點菜單之FIFO說明特權(quán)同學(xué),版權(quán)所有配套例程和更多資料下載鏈接:http://pan.baidu.com/s/1c0nf6Qc ddr_avl_br
    發(fā)表于 12-26 17:22

    verilog中調(diào)用VHDL模塊

    模塊的化形式就可以了。下面舉個簡單的例子來說明如何在verilog模塊中VHDL模塊。 2選1多路復(fù)用器的VHDL描述:entity
    發(fā)表于 07-03 12:58

    verilog中調(diào)用VHDL模塊

    模塊的化形式就可以了。下面舉個簡單的例子來說明如何在verilog模塊中VHDL模塊。 2選1多路復(fù)用器的VHDL描述:entity
    發(fā)表于 07-09 01:14

    如何利用python自動生成verilog模塊模板?

    如何利用python自動生成verilog模塊模板?
    發(fā)表于 06-21 06:06

    Verilog HDL程序設(shè)計-135

    verilog HDL基礎(chǔ)程序135,適合初學(xué)者。
    發(fā)表于 11-06 09:49 ?23次下載

    Verilog教程之Verilog的命令格式資料說明

    本文檔的主要內(nèi)容詳細(xì)介紹的是Verilog HDL教程之Verilog HDL的命令格式資料說明
    發(fā)表于 01-09 08:00 ?31次下載
    <b class='flag-5'>Verilog</b>教程之<b class='flag-5'>Verilog</b>的命令格式資料<b class='flag-5'>說明</b>

    FPGA視頻教程之Verilog基礎(chǔ)的詳細(xì)資料說明

    本文檔的主要內(nèi)容詳細(xì)介紹的是FPGA視頻教程之Verilog基礎(chǔ)的詳細(xì)資料說明包括了:1.Verilog HDL簡介,2.Verilog HDL模型的基本結(jié)構(gòu),3.
    發(fā)表于 03-21 15:02 ?37次下載
    FPGA視頻教程之<b class='flag-5'>Verilog</b>基礎(chǔ)的詳細(xì)資料<b class='flag-5'>說明</b>

    實現(xiàn)Verilog HDL模塊程序設(shè)計的詳細(xì)資料說明

    HDL和VHDL的使用比率大概是80%和20%,在中國,大多數(shù)電子行業(yè)企業(yè)都采用Verilog。而模塊的設(shè)計讓Verilog HDL語言具有思路清晰、邏輯關(guān)系明確、可讀性強(qiáng)等特點,模塊
    發(fā)表于 03-25 08:00 ?4次下載
    實現(xiàn)<b class='flag-5'>Verilog</b> HDL模塊<b class='flag-5'>化</b>程序設(shè)計的詳細(xì)資料<b class='flag-5'>說明</b>

    Verilog HDL教程135免費下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是Verilog HDL教程135免費下載。
    發(fā)表于 01-21 16:30 ?72次下載
    <b class='flag-5'>Verilog</b> HDL教程135<b class='flag-5'>例</b>免費下載

    Verilog快速掌握之模塊資源下載

    FPGA邏輯設(shè)計中通常是一個大的模塊中包含了一個或多個功能子模塊,verilog通過模塊調(diào)用或稱為模塊實例的方式來實現(xiàn)這些子模塊與高層模塊的連接,有利于簡化每一個模塊的代碼,易于維護(hù)和修改。
    發(fā)表于 04-30 09:30 ?25次下載

    在SpinalHDL中如何優(yōu)雅地端口?

    在編寫Verilog代碼時最痛苦的事情便是模塊時端口的連接,這時候的你我便成了連線工程師,本節(jié)就在SpinalHDL中如何像軟件調(diào)用方法那樣優(yōu)雅地
    的頭像 發(fā)表于 06-16 17:19 ?1945次閱讀

    FPGA學(xué)習(xí)-Verilog說明

    Verilog 說明 1.什么是模塊?為什么要
    的頭像 發(fā)表于 12-12 09:50 ?4132次閱讀
    RM新时代网站-首页