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

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

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

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

FPGA設(shè)計(jì)論壇 ? 來源:未知 ? 2022-12-12 09:50 ? 次閱讀

Verilog例化說明

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

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

2.實(shí)例說明例化方法

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

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

output reg flag // 一個(gè)時(shí)鐘周期的脈沖信號
);

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

endmodule
  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

  • 11

  • 12

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

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

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

endmodule
  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

  • 11

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

module seg_led_static_top (
input sys_clk , // 系統(tǒng)時(shí)鐘
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ù)碼管變化的時(shí)間間隔0.5s

//wire define
wire add_flag; // 數(shù)碼管變化的通知信號

//例化計(jì)時(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
  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

  • 11

  • 12

  • 13

  • 14

  • 15

  • 16

  • 17

  • 18

  • 19

  • 20

  • 21

  • 22

  • 23

  • 24

  • 25

  • 26

  • 27

  • 28

  • 29

  • 30

  • 31

  • 32

  • 33

  • 34

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

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

下圖為模塊例化。

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

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

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

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

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







精彩推薦



至芯科技12年不忘初心、再度起航12月17日北京中心FPGA工程師就業(yè)班開課、線上線下多維教學(xué)、歡迎咨詢!
System Verilog中fork...join、join_none和join_none的用法和解析
移位寄存器(左移、右移、雙向)的Verilog實(shí)現(xiàn)
掃碼加微信邀請您加入FPGA學(xué)習(xí)交流群




歡迎加入至芯科技FPGA微信學(xué)習(xí)交流群,這里有一群優(yōu)秀的FPGA工程師、學(xué)生、老師、這里FPGA技術(shù)交流學(xué)習(xí)氛圍濃厚、相互分享、相互幫助、叫上小伙伴一起加入吧!


點(diǎn)個(gè)在看你最好看






原文標(biāo)題:FPGA學(xué)習(xí)-Verilog例化說明

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

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

    關(guān)注

    1630

    文章

    21766

    瀏覽量

    604598

原文標(biāo)題:FPGA學(xué)習(xí)-Verilog例化說明

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

收藏 人收藏

    評論

    相關(guān)推薦

    Verilog說明

    Verilog說明 1.什么是模塊?為什么要
    的頭像 發(fā)表于 12-17 11:29 ?342次閱讀
    <b class='flag-5'>Verilog</b><b class='flag-5'>例</b><b class='flag-5'>化</b><b class='flag-5'>說明</b>

    Verilog 測試平臺設(shè)計(jì)方法 Verilog FPGA開發(fā)指南

    Verilog測試平臺設(shè)計(jì)方法是Verilog FPGA開發(fā)中的重要環(huán)節(jié),它用于驗(yàn)證Verilog設(shè)計(jì)的正確性和性能。以下是一個(gè)詳細(xì)的Verilog
    的頭像 發(fā)表于 12-17 09:50 ?333次閱讀

    Verilog與VHDL的比較 Verilog HDL編程技巧

    Verilog 與 VHDL 比較 1. 語法和風(fēng)格 VerilogVerilog 的語法更接近于 C 語言,對于有 C 語言背景的工程師來說,學(xué)習(xí)曲線較平緩。它支持結(jié)構(gòu)
    的頭像 發(fā)表于 12-17 09:44 ?241次閱讀

    Verilog vhdl fpga

    相關(guān)專業(yè),具有良好的專業(yè)基礎(chǔ)知識。 感興趣可滴滴 JYHXDX534 2.工作年限不限,有工作經(jīng)驗(yàn)或優(yōu)秀應(yīng)屆畢業(yè)生亦可。 3.對FPGA芯片架構(gòu)和資源有深入的理解,精通Verilog HDL、VHDL
    發(fā)表于 11-12 16:40

    FPGA加速深度學(xué)習(xí)模型的案例

    FPGA(現(xiàn)場可編程門陣列)加速深度學(xué)習(xí)模型是當(dāng)前硬件加速領(lǐng)域的一個(gè)熱門研究方向。以下是一些FPGA加速深度學(xué)習(xí)模型的案例: 一、基于FPGA
    的頭像 發(fā)表于 10-25 09:22 ?283次閱讀

    FPGA編程語言的入門教程

    FPGA(現(xiàn)場可編程邏輯門陣列)的編程涉及特定的硬件描述語言(HDL),其中Verilog和VHDL是最常用的兩種。以下是一個(gè)FPGA編程語言(以Verilog
    的頭像 發(fā)表于 10-25 09:21 ?363次閱讀

    FPGA Verilog HDL代碼如何debug?

    ,共同進(jìn)步。 歡迎加入FPGA技術(shù)微信交流群14群! 交流問題(一) Q:Verilog代碼如何debug?最近學(xué)習(xí)fpga,寫了不少verilog
    發(fā)表于 09-24 19:16

    【招聘】verilog vhdl FPGA

    1.熟悉FPGA架構(gòu)及應(yīng)用,熟悉圖像算法的FPGA實(shí)現(xiàn)。 2.熟悉verilog vhdl,熟悉Xilinx或Intel等開發(fā)工具。 3.有AI算法 fpga實(shí)現(xiàn)經(jīng)驗(yàn)優(yōu)先。 4.本科及
    發(fā)表于 09-02 15:50

    求助各位關(guān)于Verilog當(dāng)中模塊、端口與引腳 的問題

    初學(xué)者。我在刷HDLbits的時(shí)候做到了這道題 答案: 答案給的是定義了wire型的信號,并借這個(gè)來進(jìn)行端口連接。而我的疑問在于: 1.模塊化時(shí),如果采用按名字的方式進(jìn)行,那么:點(diǎn)號后面寫
    發(fā)表于 07-15 20:38

    FPGA基礎(chǔ)知識學(xué)習(xí)

    語言(HDL)如VHDL或Verilog來描述。這些描述定義了電路的功能和信號流,然后通過各種電子設(shè)計(jì)自動(dòng)(EDA)工具進(jìn)行輔助設(shè)計(jì)、綜合、布局和布線等處理,最終將設(shè)計(jì)轉(zhuǎn)化為可以在FPGA
    發(fā)表于 04-29 23:26

    哪有FPGAverilog編程基礎(chǔ)知識?

    沒接觸過FPGA開發(fā),那個(gè)verilog編程有什么入門基礎(chǔ)知識學(xué)習(xí)的?
    發(fā)表于 04-29 23:09

    如何快速入門FPGA

    時(shí)鐘管理模塊、嵌入式塊RAM、布線資源等。 學(xué)習(xí)FPGA編程語言: 掌握Verilog HDL(硬件描述語言)。Verilog用于數(shù)字電路的系統(tǒng)設(shè)計(jì),具有簡潔的語法和清晰的仿真語義,非
    發(fā)表于 04-28 09:06

    FPGA學(xué)習(xí)資料分享

    學(xué)習(xí)資源Verilog 教程,數(shù)字邏輯設(shè)計(jì) (點(diǎn)擊文字進(jìn)入鏈接). 具備一定硬件描述語言基礎(chǔ)是發(fā)開FPGA通用的。此外就是根據(jù)廠家型號、環(huán)境和提供的資源,能有效使用組織起來,實(shí)現(xiàn)目標(biāo)功能,這更傾向于實(shí)踐應(yīng)用。 大家有關(guān)于實(shí)踐應(yīng)
    發(fā)表于 03-31 13:23

    fpga是用c語言還是verilog

    FPGA(現(xiàn)場可編程邏輯門陣列)開發(fā)主要使用的編程語言是硬件描述語言(HDL),其中Verilog是最常用的編程語言之一。而C語言通常用于傳統(tǒng)的軟件編程,與FPGA的硬件編程有所區(qū)別。
    的頭像 發(fā)表于 03-27 14:38 ?2079次閱讀

    fpga是什么專業(yè)學(xué)的

    FPGA(現(xiàn)場可編程門陣列)的學(xué)習(xí)涉及多個(gè)專業(yè)領(lǐng)域,但主要與電子信息類、自動(dòng)類、計(jì)算機(jī)類等相關(guān)專業(yè)最為緊密。這些專業(yè)通常涵蓋數(shù)字電路設(shè)計(jì)、硬件描述語言(如Verilog和VHDL)編
    的頭像 發(fā)表于 03-14 16:41 ?2523次閱讀