在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

verilog模塊的調用、任務和函數

FPGA設計論壇 ? 來源:FPGA設計論壇 ? 2025-05-03 10:29 ? 次閱讀

模塊的調用(上層模塊對底層模塊的調用)

在做模塊劃分時,通常會出現這種情形,某個大的模塊中包含了一個或多個功能子模塊,verilog是通過模塊調用或稱為模塊實例化的方式來實現這些子模塊與高層模塊的連接的

調用模塊實例化的一般形式為:

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

其中參數列表是傳遞到子模塊的參數值,參數傳遞的典型應用是定義門級時延。

信號端口可以通過位置或名稱關聯,但是關聯方式不能夠混合使用

名稱關聯&位置關聯

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

位置關聯:

引用時,嚴格按照模塊定義的端口順序來連接,不用標明元模型定義時規定的端口名。

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

名稱關聯:

引用時用“.”符號,標明原模型定義時規定的端口名:

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

eg:

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

模塊的調用---參數傳遞

//子模塊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實例時,可通過參數的傳遞來改變定義時已規定的參數值,即通過

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

傳遞參數的另一種方法

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

注意事項

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

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

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

懸空端口的處理:

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

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

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

任務和函數

task和function語句分別用來由用戶定義任務和函數;

任務和函數往往時大的程序模塊中在不同地點多次用到的相同的程序段

利用任務和函數可將一個很大的程序模塊分解為許多較小的任務和函數,便于理解和調試

任務定義

task<任務名>;   端口及數據類型聲明語句;   其他語句;endtask

任務調用

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

task語句

任務的定義與調用必須在一個module模塊內

任務被調用時,需列出端口名列表,且必須與任務定義中的I/0變量一一對應

一個任務可以調用其他任務和函數

//任務定義task my_task;   input a,b;  inoutc;//一個三態門,由一個開關控制這個門是輸入還是輸出  output d,e;   ......   <語句>//執行任務工作相應的語句  .....   c = foo1;   d = foo2;   e = foo3;//對任務變量進行賦值endtask//任務調用my_task(v,w,x,y,z)//為位置關聯,v對應a,w對應b,c對應x,y對應d,z對應e

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

函數function(可以綜合)

函數的目的是通過返回一個用于某表達式的值,來響應輸入信號(適于對不同變量采取同一運算的操作)

函數在模塊內部定義,通常在本模塊中調用,也能根據按模塊層次分級命名的函數名從其他模塊調用。而任務只能在同一模塊內定義與調用

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

函數的調用 <函數名>(<表達式><表達式>)

注:函數的調用是通過將函數作為調用函數的表達式中的操作數來實現的

函數規則

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

函數不能調用任務,因為任務可以包含時間控制語句,但是可以調用其他函數

函數應該至少有一個輸入

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

函數不能有任何觸發器

函數不能有output或inout

函數的聲明:

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———————————————— 版權聲明:本文為CSDN博主「李銳博恩」的原創文章,遵循CC4.0BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。 原文鏈接:https://blog.csdn.net/Reborn_Lee/article/details/107447734

函數的調用:

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

利用一個函數對一個8位二進制數中為0的位進行計數

//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;?//函數名就相當于輸出變量;? ? ? ? ? ? ? ??end; ? ??endfunctionassign?number = get_n_of_0(rega);endmodule

ps:函數名就相當于輸出變量

函數和任務

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

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

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

    關注

    7

    文章

    2785

    瀏覽量

    49842
  • Verilog
    +關注

    關注

    29

    文章

    1366

    瀏覽量

    111978
  • 函數
    +關注

    關注

    3

    文章

    4374

    瀏覽量

    64385

原文標題:verilog---模塊的調用,任務和函數

文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設計論壇】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    如何查看及更改函數/函數塊的調用環境

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

    如何從任務內部調用函數調用osDelay?

    調用函數,延遲是 osDelay(),它會工作嗎,就像從任務本身調用 osDelay 的正常行為(允許其他任務在延遲期間運行)。
    發表于 02-09 08:49

    verilog實現定時器函數

    使用Verilog描述硬件的基本設計單元是模塊(module)。構建復雜的電子電路,主要是通過模塊的相互連接調用來實現的。模塊被包含在關鍵字
    發表于 12-08 17:20 ?1w次閱讀

    Linux內核模塊函數調用正確方法

    模塊之間發生調用關系是常有的事情,下面以兩個模塊A、B,B使用A模塊提供的函數為例,講解正確使用的方法。
    發表于 04-28 17:00 ?2509次閱讀

    探討VHDL和Verilog模塊互相調用的問題

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

    Verilog HDL語言中任務函數的比較

    其中,返回值的類型和位寬是可選項,如果缺省會返回一位寄存器類型數據。Verilog HDL認為函數的定義隱式地聲明了與函數同名的寄存器。函數的定義把
    的頭像 發表于 07-02 10:24 ?2605次閱讀

    Verilog數字系統設計——任務函數二(系統任務readmemb或readmemh)

    Verilog數字系統設計十任務函數實驗2文章目錄Verilog數字系統設計十前言一、Verilog系統
    發表于 12-05 19:06 ?7次下載
    <b class='flag-5'>Verilog</b>數字系統設計——<b class='flag-5'>任務</b>和<b class='flag-5'>函數</b>二(系統<b class='flag-5'>任務</b>readmemb或readmemh)

    Verilog設計中函數任務的作用分析

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

    RTL建模中的函數任務討論

    函數任務可以在使用它們的模塊或接口中定義。定義可以出現在調用函數任務的語句之前或之后完成,
    的頭像 發表于 11-09 09:26 ?1412次閱讀

    Verilog任務函數的區別

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

    FreeRTOS任務通知通用發送函數

    發送任務通知 任務通知通用發送函數 任務任務通知發送函數:xTaskNotify()、xTas
    的頭像 發表于 07-30 11:43 ?1123次閱讀
    FreeRTOS<b class='flag-5'>任務</b>通知通用發送<b class='flag-5'>函數</b>

    verilog函數任務對比

    verilog中,函數任務均用來描述共同的代碼段,并且在模式內任意位置被調用,提高代碼效率,讓代碼更加的直觀,提高代碼可讀性。但是在實際使用的過程中,
    的頭像 發表于 02-12 18:43 ?1141次閱讀

    verilog function函數的用法

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

    verilog如何調用其他module

    第一部分:簡介 1.1 什么是Verilog模塊? 在Verilog中,模塊是其設計層次結構的基本單元。模塊是一個用于實現特定功能的單獨的硬
    的頭像 發表于 02-22 15:56 ?7465次閱讀

    verilog調用模塊端口對應方式

    Verilog中的模塊端口對應方式,并提供示例代碼和詳細解釋,以幫助讀者更好地理解和應用。 首先,我們來了解一下Verilog中的模塊模塊
    的頭像 發表于 02-23 10:20 ?2404次閱讀
    主站蜘蛛池模板: 小雪被老外黑人撑破了 | 午夜韩国理论片在线播放 | 人人干人人干人人干 | 久久综合色88 | 久热九九| 亚洲怡红院在线观看 | 色中色综合网 | 爱情岛网站亚洲禁18进入 | 午夜手机看片 | 色综合久久98天天综合 | 嫩草影院久久国产精品 | 天天操夜夜欢 | 国产免费一区二区三区 | 国产91丝袜在线播放九色 | 在线免费观看h视频 | 亚洲青草视频 | 大尺度视频在线 | 欧美色图首页 | 欧美亚洲综合图区在线 | 福利色视频 | 国产美女亚洲精品久久久久久 | 在线免费视频网站 | 久久精品99无色码中文字幕 | 久久大伊人 | 操的好爽 | brazzers在线播放| 狂野欧美性色xo影院 | 狠狠色噜噜狠狠狠狠米奇777 | 国产精品福利午夜在线观看 | 午夜美女写真福利写视频 | 免费色网址 | 国产午夜人做人视频羞羞 | 精品福利在线观看 | 亚洲色五月 | 91x视频| 天天干在线免费视频 | 男人性天堂| 四虎影院在线免费观看视频 | 亚洲成人自拍 | 丁香五香天堂网 | 很黄很色的网站 |