衡阳派盒市场营销有限公司

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

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

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

簡談FPGA verilog中的task用法

FPGA學(xué)習(xí)交流 ? 2018-08-09 18:59 ? 次閱讀

大家好,又到了每日學(xué)習(xí)的時間了,今天我們來聊一聊FPGA verilog中的task用法。
任務(wù)就是一段封裝在“task-endtask”之間的程序。任務(wù)是通過調(diào)用來執(zhí)行的,而且只有在調(diào)用時才執(zhí)行,如果定義了任務(wù),但是在整個過程中都沒有調(diào)用它,那么這個任務(wù)是不會執(zhí)行的。調(diào)用某個任務(wù)時可能需要它處理某些數(shù)據(jù)并返回操作結(jié)果,所以任務(wù)應(yīng)當(dāng)有接收數(shù)據(jù)的輸入端和返回數(shù)據(jù)的輸出端。另外,任務(wù)可以彼此調(diào)用,而且任務(wù)內(nèi)還可以調(diào)用函數(shù)。

1.任務(wù)定義
任務(wù)定義的形式如下:
task task_id;
[declaration]
procedural_statement
endtask

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

task task_demo; //任務(wù)定義結(jié)構(gòu)開頭,命名為 task_demo
input [7:0] x,y; //輸入端口說明
output [7:0] tmp; //輸出端口說明

if(x>y) //給出任務(wù)定義的描述語句
tmp = x;
else
tmp = y;

endtask

上述代碼定義了一個名為“task_demo”的任務(wù),求取兩個數(shù)的最大值。在定義任務(wù)時,

有下列六點需要注意:
(1)在第一行“task”語句中不能列出端口名稱;
(2)任務(wù)的輸入、輸出端口和雙向端口數(shù)量不受限制,甚至可以沒有輸入、輸出以及雙向端口。
(3)在任務(wù)定義的描述語句中,可以使用出現(xiàn)不可綜合操作符合語句(使用最為頻繁的就是延遲控制語句) ,但這樣會造成該任務(wù)不可綜合。
(4)在任務(wù)中可以調(diào)用其他的任務(wù)或函數(shù),也可以調(diào)用自身。
(5)在任務(wù)定義結(jié)構(gòu)內(nèi)不能出現(xiàn) initial和 always過程塊。
(6)在任務(wù)定義中可以出現(xiàn)“disable 中止語句” ,將中斷正在執(zhí)行的任務(wù),但其是不可綜合的。當(dāng)任務(wù)被中斷后,程序流程將返回到調(diào)用任務(wù)的地方繼續(xù)向下執(zhí)行。

2.任務(wù)調(diào)用
雖然任務(wù)中不能出現(xiàn) initial 語句和 always 語句語句, 但任務(wù)調(diào)用語句可以在 initial 語句和 always 語句中使用,其語法形式如下: task_id[(端口1, 端口 2, ........, 端口 N)]; 其中 task_id是要調(diào)用的任務(wù)名,端口 1、端口 2,…是參數(shù)列表。參數(shù)列表給出傳入任務(wù)的數(shù)據(jù)(進入任務(wù)的輸入端)和接收返回結(jié)果的變量(從任務(wù)的輸出端接收返回結(jié)果) 。
任務(wù)調(diào)用語句中,參數(shù)列表的順序必須與任務(wù)定義中的端口聲明順序相同。任務(wù)調(diào)用語句是過程性語句,所以任務(wù)調(diào)用中接收返回數(shù)據(jù)的變量必須是寄存器類型。下面給出一個任務(wù)調(diào)用實例。

例:通過 Verilog HDL 的任務(wù)調(diào)用實現(xiàn)一個 4 比特全加器。

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

在調(diào)用任務(wù)時,需要注意以下幾點:
(1)任務(wù)調(diào)用語句只能出現(xiàn)在過程塊內(nèi);
(2)任務(wù)調(diào)用語句和一條普通的行為描述語句的處理方法一致;
(3)當(dāng)被調(diào)用輸入、輸出或雙向端口時,任務(wù)調(diào)用語句必須包含端口名列表,且信號端口順序和類型必須和任務(wù)定義結(jié)構(gòu)中的順序和類型一致。需要說明的是,任務(wù)的輸出端口必須和寄存器類型的數(shù)據(jù)變量對應(yīng)。
(4)可綜合任務(wù)只能實現(xiàn)組合邏輯,也就是說調(diào)用可綜合任務(wù)的時間為“0” 。而在面向仿真的任務(wù)中可以帶有時序控制,如時延,因此面向仿真的任務(wù)的調(diào)用時間不為“0” 。

今天就聊到這里,各位,加油。

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

    關(guān)注

    1630

    文章

    21798

    瀏覽量

    606048
收藏 人收藏

    評論

    相關(guān)推薦

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

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

    Verilog vhdl fpga

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

    Verilog語法運算符的用法

    verilog語法中使用以下兩個運算符可以簡化我們的位選擇代碼。
    的頭像 發(fā)表于 10-25 15:17 ?1282次閱讀
    <b class='flag-5'>Verilog</b>語法<b class='flag-5'>中</b>運算符的<b class='flag-5'>用法</b>

    【招聘】verilog vhdl FPGA

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

    FPGA設(shè)計 Verilog HDL實現(xiàn)基本的圖像濾波處理仿真

    今天給大俠帶來FPGA設(shè)計中用Verilog HDL實現(xiàn)基本的圖像濾波處理仿真,話不多說,上貨。 1、用matlab代碼,準(zhǔn)備好把圖片轉(zhuǎn)化成Vivado Simulator識別的格式,即每行一
    發(fā)表于 05-20 16:44

    FPGA研發(fā)設(shè)計相關(guān)規(guī)范(很實用)

    ,trior,real,disable,forever,arrays,memories,repeat,task,while。 建立可綜合模型的原則 要保證Verilog HDL賦值語句的可綜合性,在建
    發(fā)表于 05-13 15:39

    Xilinx Zynq-7000嵌入式系統(tǒng)設(shè)計與實現(xiàn)

    今天給大俠帶來Xilinx Zynq-7000嵌入式系統(tǒng)設(shè)計與實現(xiàn),話不多說,上貨。 Xilinx的ZYNQ系列FPGA是二種看上去對立面的思想的融合,ARM處理器的串行執(zhí)行+FP
    發(fā)表于 05-08 16:23

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

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

    FPGA研發(fā)設(shè)計相關(guān)規(guī)范(很實用)

    組合邏輯,應(yīng)在敏感信號列表列出所有的輸入信號。(8)所有的內(nèi)部寄存器都應(yīng)該能夠被復(fù)位,在使用FPGA實現(xiàn)設(shè)計時,應(yīng)盡量使用器件的全局復(fù)位端作為系統(tǒng)總的復(fù)位。(9)對時序邏輯描述和建模,應(yīng)盡量使用非阻塞
    發(fā)表于 04-16 15:42

    Xilinx Zynq-7000嵌入式系統(tǒng)設(shè)計與實現(xiàn)

    今天給大俠帶來Xilinx Zynq-7000嵌入式系統(tǒng)設(shè)計與實現(xiàn),話不多說,上貨。 Xilinx的ZYNQ系列FPGA是二種看上去對立面的思想的融合,ARM處理器的串行執(zhí)行+FP
    發(fā)表于 04-10 16:00

    fpga是用c語言還是verilog

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

    verilog inout用法與仿真

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

    verilog task和function區(qū)別

    verilogtask和function都是用于實現(xiàn)模塊的可重復(fù)的功能,并且可以接收參數(shù)和返回結(jié)果。但是它們在編寫和使用上有一些區(qū)別。下面將詳細(xì)介紹
    的頭像 發(fā)表于 02-22 15:53 ?1185次閱讀

    verilog function函數(shù)的用法

    Verilog 中被廣泛用于對電路進行模塊化設(shè)計,以簡化和組織代碼。 本文將詳細(xì)介紹 Verilog 函數(shù)的用法,并探討函數(shù)在硬件設(shè)計的重要性和實際應(yīng)用場景。 一.
    的頭像 發(fā)表于 02-22 15:49 ?6054次閱讀

    verilogfunction和task的區(qū)別

    Verilog,F(xiàn)unction和Task是用于模塊化設(shè)計和重用代碼的兩種重要元素。它們允許開發(fā)人員將復(fù)雜的操作分解為更小的功能單元,并在需要時調(diào)用它們。雖然Function和Task
    的頭像 發(fā)表于 02-22 15:40 ?2039次閱讀
    百家乐群详解包杀| 线上百家乐赌法| 澳门百家乐娱乐城打不开| 澳门百家乐群策略| 百家乐双面数字筹码怎么出千| 澳门百家乐单注下注| 大发8888娱乐城| E世博线上娱乐城| 百家乐官网赌博是否违法| 梦幻城百家乐官网的玩法技巧和规则 | 长岛县| 噢门百家乐官网玩的技巧| 百家乐官网六手变化混合赢家打| 百家乐平注法攻略| 大发888投注明升网址| 扎鲁特旗| 百家乐官网画面| 上市百家乐.评论| 盛大娱乐城现金网| 百家乐官网翻天qvod粤语| 24向山九宫格图| 新乐园百家乐娱乐城| 安西县| 百家乐官网tie| 赌场百家乐玩法介绍| 德州扑克算法| 百家乐官网对付抽水| 百家乐看盘技巧| 大发888ios版| 信誉百家乐官网平台| 电脑版百家乐分析仪| 线上百家乐游戏| 百家乐官网游戏规范| 宝马百家乐的玩法技巧和规则| 365体育在线投注| 闲和庄百家乐官网娱乐| 高尔夫百家乐的玩法技巧和规则| 现金棋牌| 百家乐实战技术| bet365最新地址| 百家乐官网在线赌场娱乐网规则|