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

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

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

3天內不再提示

verilog中的task用法介紹

冬至子 ? 來源:Andy的ICer之路 ? 作者:AndyICer ? 2023-06-05 16:21 ? 次閱讀

任務就是一段封裝在“task-endtask”之間的程序。任務是通過調用來執行的,而且只有在調用時才執行,如果定義了任務,但是在整個過程中都沒有調用它,那么這個任務是不會執行的。調用某個任務時可能需要它處理某些數據并返回操作結果,所以任務應當有接收數據的輸入端和返回數據的輸出端。另外,任務可以彼此調用,而且任務內還可以調用函數。

**1.任務定義 **

任務定義的形式如下:

task task_id; 
[declaration] 
procedural_statement 
endtask

其中,關鍵詞 task 和 endtask 將它們之間的內容標志成一個任務定義, task 標志著一個任務定義結構的開始;task_id 是任務名;可選項 declaration 是端口聲明語句和變量聲明語句,任務接收輸入值和返回輸出值就是通過此處聲明的端口進行的;procedural_statement是一段用來完成這個任務操作的過程語句,如果過程語句多于一條,應將其放在語句塊內;endtask 為任務定義結構體結束標志。下面給出一個任務定義的實例。

:定義一個任務。 
task task_demo;                //任務定義結構開頭,命名為 task_demo 
input  [7:0] x,y;           //輸入端口說明 
output [7:0] tmp;           //輸出端口說明 


if(x >y)                  //給出任務定義的描述語句 
tmp = x; 
else 
tmp = y;
endtask 
上述代碼

定義了一個名為“task_demo”的任務,求取兩個數的最大值。在定義任務時,有下列六點需要注意:

(1)在第一行“task”語句中不能列出端口名稱;

(2)任務的輸入、輸出端口和雙向端口數量不受限制,甚至可以沒有輸入、輸出以及雙向端口。

(3)在任務定義的描述語句中,可以使用出現不可綜合操作符合語句(使用最為頻繁的就是延遲控制語句) ,但這樣會造成該任務不可綜合。

(4)在任務中可以調用其他的任務或函數,也可以調用自身。

(5)在任務定義結構內不能出現 initial和 always過程塊。

(6)在任務定義中可以出現“disable 中止語句” ,將中斷正在執行的任務,但其是不可綜合的。當任務被中斷后,程序流程將返回到調用任務的地方繼續向下執行。

**2.任務調用 **

雖然任務中不能出現 initial 語句和 always 語句語句, 但任務調用語句可以在 initial 語句和 always 語句中使用,其語法形式如下:task_id[(端口1, 端口 2, ........, 端口 N)];

其中 task_id是要調用的任務名,端口 1、端口 2,…是參數列表。參數列表給出傳入任務的數據(進入任務的輸入端)和接收返回結果的變量(從任務的輸出端接收返回結果) 。任務調用語句中,參數列表的順序必須與任務定義中的端口聲明順序相同。任務調用語句是過程性語句,所以任務調用中接收返回數據的變量必須是寄存器類型。下面給出一個任務調用實例。

例:通過 Verilog HDL 的任務調用實現一個 4 bit全加器。

module EXAMPLE (A, B, CIN, S, COUT); 

input [3:0] A, B; 
input CIN; 
output [3:0] S; 
output COUT; 

reg [3:0] S; 
reg COUT; 
reg [1:0] S0, S1, S2, S3; 

task ADD; 

input A, B, CIN; 
output [1:0] C; 

reg [1:0] C; 
reg S, COUT; 

begin
S = A ^ B ^ CIN; 
COUT = (A&B) | (A&CIN) | (B&CIN); 
C = {COUT, S}; 
end 
endtask 

always @(A or B or CIN) begin 
ADD (A[0], B[0], CIN, S0); 
ADD (A[1], B[1], S0[1], S1); 
ADD (A[2], B[2], S1[1], S2); 
ADD (A[3], B[3], S2[1], S3); 
S = {S3[0], S2[0], S1[0], S0[0]}; 
COUT = S3[1]; 
end 
endmodule

在調用任務時,需要注意以下幾點:

(1)任務調用語句只能出現在過程塊內;

(2)任務調用語句和一條普通的行為描述語句的處理方法一致;

(3)當被調用輸入、輸出或雙向端口時,任務調用語句必須包含端口名列表,且信號端口順序和類型必須和任務定義結構中的順序和類型一致。需要說明的是,任務的輸出端口必須和寄存器類型的數據變量對應。

(4)可綜合任務只能實現組合邏輯,也就是說調用可綜合任務的時間為“0” 。而在面向仿真的任務中可以帶有時序控制,如時延,因此面向仿真的任務的調用時間不為“0” 。

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

    關注

    31

    文章

    5401

    瀏覽量

    122733
  • Verilog
    +關注

    關注

    28

    文章

    1364

    瀏覽量

    111425
  • 全加器
    +關注

    關注

    10

    文章

    62

    瀏覽量

    28704
  • VerilogHDL
    +關注

    關注

    2

    文章

    39

    瀏覽量

    19283
  • ADD
    ADD
    +關注

    關注

    1

    文章

    20

    瀏覽量

    9535
收藏 人收藏

    評論

    相關推薦

    verilog關于task的調用問題

    在夏宇聞老師的教程里,關于EEPROM仿真的代碼,EEPROM_WR有調用shift8_out,shift8_in等任務, 這些任務都是以狀態機來實現的。請問這些任務在調用時開始執行,那么什么時候
    發表于 03-03 11:22

    轉載---verilogtask和function的區別

    ,能計算多個結果值,結 函數通過一個返回一個值來響應輸入信號的值。果值只能通過被調用的任務的輸出端口輸出或函數不能有wire型變量。總線端口送出;任務定義語法:task ;……endtask函數定義
    發表于 03-13 21:53

    veriloggenerate語句的用法分享

    generate為verilog的生成語句,當對矢量的多個位進行重復操作時,或者當進行多個模塊的實例引用的重復操作時,或者根據參數的定義來確定程序是否應該包含某段
    發表于 12-23 16:59

    常用燈頭規格及用法介紹

    常用燈頭規格及用法介紹 簡述常用燈頭規格及用法介紹
    發表于 04-19 15:40 ?56次下載

    MSF及Unicorn的介紹用法

    MSF及Unicorn的介紹用法
    發表于 09-07 15:09 ?3次下載
    MSF及Unicorn的<b class='flag-5'>介紹</b>及<b class='flag-5'>用法</b>

    簡談FPGA verilogtask用法

    ????????大家好,又到了每日學習的時間了,今天我們來聊一聊FPGA verilogtask用法。 ? ? ? ?任務就是一段封裝在“tas
    的頭像 發表于 08-09 18:59 ?4.1w次閱讀

    簡談FPGA verilog的function用法與例子

    大家好,又到了每日學習的時間了,今天我們來聊一聊FPGA verilog的function用法與例子。 函數的功能和任務的功能類似,但二者還存在很大的不同。在 Verilog HDL
    的頭像 發表于 08-10 13:42 ?2w次閱讀
    簡談FPGA <b class='flag-5'>verilog</b><b class='flag-5'>中</b>的function<b class='flag-5'>用法</b>與例子

    verilog的initial語句說明

    解釋verilog HDL的initial語句的用法。
    發表于 05-31 09:11 ?0次下載

    RTA OS系列介紹01-Task

    AUTOSAR OS主要包含Task, ISRs, Events, Resources, Application, Counter, Alarms, Schedule Table等OS對象。后續將對如上提到的八個對象進行分別介紹,本篇
    的頭像 發表于 12-21 14:13 ?2542次閱讀

    verilogtask用法

    任務就是一段封裝在“task-endtask”之間的程序。任務是通過調用來執行的,而且只有在調用時才執行,如果定義了任務,但是在整個過程中都沒有調用它,那么這個任務是不會執行的。調用某個任務時可能
    的頭像 發表于 03-23 15:13 ?1470次閱讀

    verilogfunction和task的區別

    Verilog,Function和Task是用于模塊化設計和重用代碼的兩種重要元素。它們允許開發人員將復雜的操作分解為更小的功能單元,并在需要時調用它們。雖然Function和Task
    的頭像 發表于 02-22 15:40 ?2304次閱讀

    verilog function函數的用法

    Verilog 中被廣泛用于對電路進行模塊化設計,以簡化和組織代碼。 本文將詳細介紹 Verilog 函數的用法,并探討函數在硬件設計
    的頭像 發表于 02-22 15:49 ?6700次閱讀

    verilog task和function區別

    verilogtask和function都是用于實現模塊的可重復的功能,并且可以接收參數和返回結果。但是它們在編寫和使用上有一些區別。下面將詳細
    的頭像 發表于 02-22 15:53 ?1422次閱讀

    verilog inout用法與仿真

    Verilog語言是一種硬件描述語言(HDL),用于描述數字邏輯電路和系統。它是一種非常強大且廣泛使用的語言,在數字電路設計扮演著重要的角色。其中, inout 是Verilog
    的頭像 發表于 02-23 10:15 ?3832次閱讀

    Verilogsigned和$signed()的用法

    嗎?其實不是的,因為有符號數和無符號數據的加法強結果和乘法器結構是一樣的,signed的真正作用是決定如何對操作數擴位的問題。 2、verilog的加法和乘法操作前,會先對操作數據擴位成結果相同的位寬,然后進行加法或者乘法處理。比如a/b都為4位數據,c為5位數據,c
    的頭像 發表于 02-17 17:47 ?392次閱讀
    <b class='flag-5'>Verilog</b><b class='flag-5'>中</b>signed和$signed()的<b class='flag-5'>用法</b>
    主站蜘蛛池模板: 黄色特级毛片 | 日韩精品视频免费观看 | 国产亚洲欧美成人久久片 | 午夜免费福利在线观看 | 天堂中文在线观看 | 色黄污在线看黄污免费看黄污 | 色 在线播放 | 一级特级毛片免费 | 国产精品资源网 | 中日韩毛片 | 日日摸夜夜爽夜夜爽出水 | 亚欧乱色束缚一区二区三区 | 亚洲香蕉毛片久久网站老妇人 | 色噜噜狠狠狠色综合久 | 久久久久久夜精品精品免费啦 | 国产精品夜色一区二区三区 | 在线看欧美成人中文字幕视频 | 精品国产综合区久久久久99 | 6080伦理久久亚洲精品 | 伊人草 | 午夜视频在线 | 黄色午夜视频 | 国产亚洲视频在线播放大全 | 伦理片日本韩国电影三级在线观看 | 97人人在线视频 | 深爱婷婷网 | 久久老色鬼天天综合网观看 | 色婷婷久久 | 加勒比精品久久一区二区三区 | 啪啪网站色大全免费 | 国产全部理论片线观看 | 国产免费一区二区三区在线 | 天堂在线观看免费视频 | 成人a毛片手机免费播放 | 亚洲男人的天堂在线观看 | 在线观看a网站 | 手机看片1024免费视频 | 丁香视频在线观看播放 | 全亚洲最大的777io影院 | 伊人久久影院大香线蕉 | 欧美巨大xxxx做受中文字幕 |