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

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

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

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

verilog模塊的調(diào)用、任務(wù)和函數(shù)

FPGA設(shè)計(jì)論壇 ? 來源:FPGA設(shè)計(jì)論壇 ? 2025-05-03 10:29 ? 次閱讀

模塊的調(diào)用(上層模塊對(duì)底層模塊的調(diào)用)

在做模塊劃分時(shí),通常會(huì)出現(xiàn)這種情形,某個(gè)大的模塊中包含了一個(gè)或多個(gè)功能子模塊,verilog是通過模塊調(diào)用或稱為模塊實(shí)例化的方式來實(shí)現(xiàn)這些子模塊與高層模塊的連接的

調(diào)用模塊實(shí)例化的一般形式為:

<模塊名><參數(shù)列表><實(shí)例名>(<端口列表>);

其中參數(shù)列表是傳遞到子模塊的參數(shù)值,參數(shù)傳遞的典型應(yīng)用是定義門級(jí)時(shí)延。

信號(hào)端口可以通過位置或名稱關(guān)聯(lián),但是關(guān)聯(lián)方式不能夠混合使用

名稱關(guān)聯(lián)&位置關(guān)聯(lián)

定義模塊:module Design(端口1,端口2,端口3...)

位置關(guān)聯(lián):

引用時(shí),嚴(yán)格按照模塊定義的端口順序來連接,不用標(biāo)明元模型定義時(shí)規(guī)定的端口名。

Designu1(u1的端口1,u1的端口2,u1的端口3)

名稱關(guān)聯(lián):

引用時(shí)用“.”符號(hào),標(biāo)明原模型定義時(shí)規(guī)定的端口名:

Designu2(.端口1(u1的端口1), .端口2(u1的端口2), .端口3(u1的端口3) )

eg:

moduleand(C,A,B)input A,B;output C; 位置相關(guān)andA1(T3,A,B)名稱相關(guān)andA2(   .C(T3),   .A(A),   .B(B))

模塊的調(diào)用---參數(shù)傳遞

//子模塊moduleDecode(A,F);  parameterwidth =1,polarity=1;endmodule//頂層模塊moudle top;  wire[3:0] A4;  wire[4:0] A5;  wire[15:0] F16;  wire[31:0] F32;   Decode#(4,0) D1(A4,F16);endmodule

ps:在top模塊中引用Decode實(shí)例時(shí),可通過參數(shù)的傳遞來改變定義時(shí)已規(guī)定的參數(shù)值,即通過

#(4,0),實(shí)例D1實(shí)際引用的是參數(shù)width和polarity分別為4與0時(shí)的Decode模塊

傳遞參數(shù)的另一種方法

module_name#(.parametername(para_value),.parametername(para_value))inst_name(port_map) 實(shí)際就為: Decode#(.width(4),.polarity(0))D1(A4,F16)

注意事項(xiàng)

位選擇,如.C(D[0]),C端口接到了D信號(hào)的第0bit位;

部分選擇,如.Bus(Din[5:4])

上述類型的合并,如.Addr({A1,A2[1:0]})

懸空端口的處理:

在實(shí)例化中,可能有些管腳沒用到,可在映射中留白處理

DFF d1(.Q(QS),.Qbar(),.Data(D),.Preset(),//該管腳懸空.clock(CK); )

PS:輸入管腳懸空,該管腳輸入為高阻Z,輸出管腳懸空,該管腳廢棄不用

任務(wù)和函數(shù)

task和function語句分別用來由用戶定義任務(wù)和函數(shù);

任務(wù)和函數(shù)往往時(shí)大的程序模塊中在不同地點(diǎn)多次用到的相同的程序段

利用任務(wù)和函數(shù)可將一個(gè)很大的程序模塊分解為許多較小的任務(wù)和函數(shù),便于理解和調(diào)試

任務(wù)定義

task<任務(wù)名>;   端口及數(shù)據(jù)類型聲明語句;   其他語句;endtask

任務(wù)調(diào)用

<任務(wù)名>(端口1,端口2,......);

task語句

任務(wù)的定義與調(diào)用必須在一個(gè)module模塊內(nèi)

任務(wù)被調(diào)用時(shí),需列出端口名列表,且必須與任務(wù)定義中的I/0變量一一對(duì)應(yīng)

一個(gè)任務(wù)可以調(diào)用其他任務(wù)和函數(shù)

//任務(wù)定義task my_task;   input a,b;  inoutc;//一個(gè)三態(tài)門,由一個(gè)開關(guān)控制這個(gè)門是輸入還是輸出  output d,e;   ......   <語句>//執(zhí)行任務(wù)工作相應(yīng)的語句  .....   c = foo1;   d = foo2;   e = foo3;//對(duì)任務(wù)變量進(jìn)行賦值endtask//任務(wù)調(diào)用my_task(v,w,x,y,z)//為位置關(guān)聯(lián),v對(duì)應(yīng)a,w對(duì)應(yīng)b,c對(duì)應(yīng)x,y對(duì)應(yīng)d,z對(duì)應(yīng)e

0f532724-218a-11f0-9310-92fbcf53809c.png

函數(shù)function(可以綜合)

函數(shù)的目的是通過返回一個(gè)用于某表達(dá)式的值,來響應(yīng)輸入信號(hào)(適于對(duì)不同變量采取同一運(yùn)算的操作)

函數(shù)在模塊內(nèi)部定義,通常在本模塊中調(diào)用,也能根據(jù)按模塊層次分級(jí)命名的函數(shù)名從其他模塊調(diào)用。而任務(wù)只能在同一模塊內(nèi)定義與調(diào)用

function<返回值位寬或類型說明>函數(shù)名;//如缺少位寬定義,則默認(rèn)為一 端口聲明; 局部變量定義; 其他語句;endfunction

函數(shù)的調(diào)用 <函數(shù)名>(<表達(dá)式><表達(dá)式>)

注:函數(shù)的調(diào)用是通過將函數(shù)作為調(diào)用函數(shù)的表達(dá)式中的操作數(shù)來實(shí)現(xiàn)的

函數(shù)規(guī)則

函數(shù)不能包含任何時(shí)間控制的語句,如#,@,wait,poesdge,negedege

函數(shù)不能調(diào)用任務(wù),因?yàn)槿蝿?wù)可以包含時(shí)間控制語句,但是可以調(diào)用其他函數(shù)

函數(shù)應(yīng)該至少有一個(gè)輸入

函數(shù)不能有非阻塞性的賦值或force....release或assign...deassign

函數(shù)不能有任何觸發(fā)器

函數(shù)不能有output或inout

函數(shù)的聲明:

function[7:0] sum;  input[7:0] a, b;  begin    sum = a + b;  endendfunctionfunction[7:0] sum (input[7:0] a, b);  begin    sum = a + b;  endendfunction———————————————— 版權(quán)聲明:本文為CSDN博主「李銳博恩」的原創(chuàng)文章,遵循CC4.0BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。 原文鏈接:https://blog.csdn.net/Reborn_Lee/article/details/107447734

函數(shù)的調(diào)用:

reg [7:0]result; reg [7:0] a, b;initialbegin  a=4;   b=5;   #10result=sum(a, b);end

利用一個(gè)函數(shù)對(duì)一個(gè)8位二進(jìn)制數(shù)中為0的位進(jìn)行計(jì)數(shù)

//count the numbers of 0 in rega[7:0]modulecount_0 (numbers,rega);  output[7:0] numbers;  input[7:0] rega;  function[7:0] get_n_of_0;//define a function   input[7:0] x;    reg[7:0] count;    integeri;      begin        count =0;        for(i=0;i<=7;i++) ? ? ? ? ? ? ? ? ? ??if(x[i] ==?1'b0) ? ? ? ? ? ? ? ? ? ? ? ? ?count = count +1; ? ? ? ? ? ? ? ? ? ? get_n_of_0 = count;?//函數(shù)名就相當(dāng)于輸出變量;? ? ? ? ? ? ? ??end; ? ??endfunctionassign?number = get_n_of_0(rega);endmodule

ps:函數(shù)名就相當(dāng)于輸出變量

函數(shù)和任務(wù)

0f6a2af0-218a-11f0-9310-92fbcf53809c.png

0f83d504-218a-11f0-9310-92fbcf53809c.png

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

    關(guān)注

    7

    文章

    2771

    瀏覽量

    49076
  • Verilog
    +關(guān)注

    關(guān)注

    28

    文章

    1365

    瀏覽量

    111506
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4365

    瀏覽量

    63872

原文標(biāo)題:verilog---模塊的調(diào)用,任務(wù)和函數(shù)

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    如何查看及更改函數(shù)/函數(shù)塊的調(diào)用環(huán)境

    模塊化設(shè)計(jì)的思想是把一些相似的功能(比如電機(jī)控制、閥控制)設(shè)計(jì)成函數(shù)函數(shù)塊,這樣就可以反復(fù)調(diào)用。其優(yōu)點(diǎn)是:使程序架構(gòu)更加清晰,避免重復(fù)編寫相似功能的代碼。不過可能會(huì)產(chǎn)生一個(gè)疑惑:既然
    的頭像 發(fā)表于 11-17 09:08 ?1233次閱讀
    如何查看及更改<b class='flag-5'>函數(shù)</b>/<b class='flag-5'>函數(shù)</b>塊的<b class='flag-5'>調(diào)用</b>環(huán)境

    如何從任務(wù)內(nèi)部調(diào)用函數(shù)調(diào)用osDelay?

    調(diào)用函數(shù),延遲是 osDelay(),它會(huì)工作嗎,就像從任務(wù)本身調(diào)用 osDelay 的正常行為(允許其他任務(wù)在延遲期間運(yùn)行)。
    發(fā)表于 02-09 08:49

    verilog實(shí)現(xiàn)定時(shí)器函數(shù)

    使用Verilog描述硬件的基本設(shè)計(jì)單元是模塊(module)。構(gòu)建復(fù)雜的電子電路,主要是通過模塊的相互連接調(diào)用來實(shí)現(xiàn)的。模塊被包含在關(guān)鍵字
    發(fā)表于 12-08 17:20 ?1w次閱讀

    Linux內(nèi)核模塊函數(shù)調(diào)用正確方法

    模塊之間發(fā)生調(diào)用關(guān)系是常有的事情,下面以兩個(gè)模塊A、B,B使用A模塊提供的函數(shù)為例,講解正確使用的方法。
    發(fā)表于 04-28 17:00 ?2458次閱讀

    探討VHDL和Verilog模塊互相調(diào)用的問題

    1、 關(guān)于如何在VHDL模塊調(diào)用一個(gè)Verilog模塊 在VHDL模塊聲明一個(gè)要與調(diào)用
    的頭像 發(fā)表于 04-30 14:06 ?1.1w次閱讀
    探討VHDL和<b class='flag-5'>Verilog</b><b class='flag-5'>模塊</b>互相<b class='flag-5'>調(diào)用</b>的問題

    Verilog HDL語言中任務(wù)函數(shù)的比較

    其中,返回值的類型和位寬是可選項(xiàng),如果缺省會(huì)返回一位寄存器類型數(shù)據(jù)。Verilog HDL認(rèn)為函數(shù)的定義隱式地聲明了與函數(shù)同名的寄存器。函數(shù)的定義把
    的頭像 發(fā)表于 07-02 10:24 ?2513次閱讀

    Verilog數(shù)字系統(tǒng)設(shè)計(jì)——任務(wù)函數(shù)二(系統(tǒng)任務(wù)readmemb或readmemh)

    Verilog數(shù)字系統(tǒng)設(shè)計(jì)十任務(wù)函數(shù)實(shí)驗(yàn)2文章目錄Verilog數(shù)字系統(tǒng)設(shè)計(jì)十前言一、Verilog系統(tǒng)
    發(fā)表于 12-05 19:06 ?7次下載
    <b class='flag-5'>Verilog</b>數(shù)字系統(tǒng)設(shè)計(jì)——<b class='flag-5'>任務(wù)</b>和<b class='flag-5'>函數(shù)</b>二(系統(tǒng)<b class='flag-5'>任務(wù)</b>readmemb或readmemh)

    Verilog設(shè)計(jì)中函數(shù)任務(wù)的作用分析

    任務(wù)函數(shù)Verilog中用于描述常用的功能行為。與其在不同的地方復(fù)制相同的代碼,不如根據(jù)需求使用函數(shù)任務(wù),這是一種良好且常見的做法。為
    的頭像 發(fā)表于 03-15 11:01 ?1929次閱讀

    RTL建模中的函數(shù)任務(wù)討論

    函數(shù)任務(wù)可以在使用它們的模塊或接口中定義。定義可以出現(xiàn)在調(diào)用函數(shù)任務(wù)的語句之前或之后完成,
    的頭像 發(fā)表于 11-09 09:26 ?1336次閱讀

    Verilog任務(wù)函數(shù)的區(qū)別

    函數(shù)一樣,任務(wù)(task)可以用來描述共同的代碼段,并在模塊內(nèi)任意位置被調(diào)用,讓代碼更加的直觀易讀。
    的頭像 發(fā)表于 06-01 16:38 ?1796次閱讀
    <b class='flag-5'>Verilog</b><b class='flag-5'>任務(wù)</b>與<b class='flag-5'>函數(shù)</b>的區(qū)別

    FreeRTOS任務(wù)通知通用發(fā)送函數(shù)

    發(fā)送任務(wù)通知 任務(wù)通知通用發(fā)送函數(shù) 任務(wù)級(jí)任務(wù)通知發(fā)送函數(shù):xTaskNotify()、xTas
    的頭像 發(fā)表于 07-30 11:43 ?994次閱讀
    FreeRTOS<b class='flag-5'>任務(wù)</b>通知通用發(fā)送<b class='flag-5'>函數(shù)</b>

    verilog函數(shù)任務(wù)對(duì)比

    verilog中,函數(shù)任務(wù)均用來描述共同的代碼段,并且在模式內(nèi)任意位置被調(diào)用,提高代碼效率,讓代碼更加的直觀,提高代碼可讀性。但是在實(shí)際使用的過程中,
    的頭像 發(fā)表于 02-12 18:43 ?1068次閱讀

    verilog function函數(shù)的用法

    Verilog 是一種硬件描述語言 (HDL),主要用于描述數(shù)字電子電路的行為和結(jié)構(gòu)。在 Verilog 中,函數(shù) (Function) 是一種用于執(zhí)行特定任務(wù)并返回一個(gè)值的可重用代碼
    的頭像 發(fā)表于 02-22 15:49 ?6731次閱讀

    verilog如何調(diào)用其他module

    第一部分:簡(jiǎn)介 1.1 什么是Verilog模塊? 在Verilog中,模塊是其設(shè)計(jì)層次結(jié)構(gòu)的基本單元。模塊是一個(gè)用于實(shí)現(xiàn)特定功能的單獨(dú)的硬
    的頭像 發(fā)表于 02-22 15:56 ?7050次閱讀

    verilog調(diào)用模塊端口對(duì)應(yīng)方式

    Verilog中的模塊端口對(duì)應(yīng)方式,并提供示例代碼和詳細(xì)解釋,以幫助讀者更好地理解和應(yīng)用。 首先,我們來了解一下Verilog中的模塊模塊
    的頭像 發(fā)表于 02-23 10:20 ?2214次閱讀