日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

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

簡談FPGA verilog中的task用法

FPGA學習交流 ? 2018-08-09 18:59 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

大家好,又到了每日學習的時間了,今天我們來聊一聊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)當有接收數(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)容標志成一個任務(wù)定義,task 標志著一個任務(wù)定義結(jié)構(gòu)的開始;task_id 是任務(wù)名;可選項 declaration 是端口聲明語句和變量聲明語句,任務(wù)接收輸入值和返回輸出值就是通過此處聲明的端口進行的;procedural_statement是一段用來完成這個任務(wù)操作的過程語句,如果過程語句多于一條,應(yīng)將其放在語句塊內(nèi);endtask 為任務(wù)定義結(jié)構(gòu)體結(jié)束標志。下面給出一個任務(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ù),但其是不可綜合的。當任務(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)當被調(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)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1664

    文章

    22509

    瀏覽量

    639543
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    基于Vivado的AD9680 FPGA芯片測試

    FPGA開發(fā)領(lǐng)域,與高速ADC芯片如AD9680協(xié)同工作是一項充滿挑戰(zhàn)但又極具樂趣的任務(wù)。今天咱們就聊聊基于Vivado平臺,針對AD9680芯片,實現(xiàn)1G采樣率且4通道(lane4)的FPGA測試程序,并且是用Verilog
    的頭像 發(fā)表于 03-18 11:26 ?3119次閱讀

    變頻器的特殊用法

    變頻器作為電力電子技術(shù)的重要應(yīng)用設(shè)備,其核心功能是通過改變電源頻率實現(xiàn)對電機轉(zhuǎn)速的精確控制。然而在實際工業(yè)場景和創(chuàng)意應(yīng)用,工程師們早已突破傳統(tǒng)認知,開發(fā)出一系列令人驚嘆的特殊用法。這些創(chuàng)新實踐不僅拓展了變頻器的應(yīng)用邊界,更展現(xiàn)了電力電子技術(shù)的無限可能。
    的頭像 發(fā)表于 03-03 17:08 ?623次閱讀

    高層次綜合在FPGA設(shè)計的價值與局限

    一條是“硬核派”,直接用 Verilog/VHDL 寫 RTL,控制信號級細節(jié),精打細算每個資源。
    的頭像 發(fā)表于 02-27 15:32 ?639次閱讀

    FPGA 入門必看:Verilog 與 VHDL 編程基礎(chǔ)解析!

    很多開發(fā)者第一次接觸FPGA,都會有同樣的疑問:FPGA是硬件,不是軟件,怎么寫程序?答案就是用硬件描述語言(HDL),最常用的就是Verilog和VHDL。今天,我們就帶你入門,搞清楚FPG
    的頭像 發(fā)表于 01-19 09:05 ?747次閱讀
    <b class='flag-5'>FPGA</b> 入門必看:<b class='flag-5'>Verilog</b> 與 VHDL 編程基礎(chǔ)解析!

    【ALINX 教程】FPGA Multiboot 功能實現(xiàn)——基于 ALINX Artix US+ AXAU25 開發(fā)板

    至安全鏡像(Golden Image)。 適用對象 已掌握 FPGA 基礎(chǔ)開發(fā)(會寫Verilog、會生成bitstream) 熟悉 Vivado 工程流程 對 FPGA 配置機制尚不深入,希望進入
    的頭像 發(fā)表于 01-05 15:41 ?1708次閱讀
    【ALINX 教程】<b class='flag-5'>FPGA</b> Multiboot 功能實現(xiàn)——基于 ALINX Artix US+ AXAU25 開發(fā)板

    高頻電路設(shè)計的“隱形衛(wèi)士”:吸波材料的選型與應(yīng)用

    高頻電路設(shè)計的“隱形衛(wèi)士”:吸波材料的選型與應(yīng)用
    的頭像 發(fā)表于 12-03 16:53 ?693次閱讀
    高頻電路設(shè)計的“隱形衛(wèi)士”:<b class='flag-5'>談</b>吸波材料的選型與應(yīng)用

    如何使用FPGA實現(xiàn)SRIO通信協(xié)議

    泛應(yīng)用。文章重點解釋了回環(huán)測試的基本概念,這種方法可驗證FPGA的SRIO接口功能的正確性,并提供了系統(tǒng)級測試驗證的相關(guān)知識。同時,本例程還涵蓋了Verilog語法、FPGA架構(gòu)、S
    的頭像 發(fā)表于 11-12 14:38 ?6109次閱讀
    如何使用<b class='flag-5'>FPGA</b>實現(xiàn)SRIO通信協(xié)議

    如果將蜂鳥的risc-v移植到其他的fpga想實現(xiàn)一些外設(shè)功能有什么辦法?可以不用操作系統(tǒng)直接添加verilog代碼嗎?

    請問如果將蜂鳥的risc-v移植到其他的fpga想實現(xiàn)一些外設(shè)功能有什么辦法?可以不用操作系統(tǒng)直接添加verilog代碼嗎?
    發(fā)表于 11-10 06:35

    如何利用Verilog HDL在FPGA上實現(xiàn)SRAM的讀寫測試

    本篇將詳細介紹如何利用Verilog HDL在FPGA上實現(xiàn)SRAM的讀寫測試。SRAM是一種非易失性存儲器,具有高速讀取和寫入的特點。在FPGA實現(xiàn)SRAM讀寫測試,包括設(shè)計SRA
    的頭像 發(fā)表于 10-22 17:21 ?4593次閱讀
    如何利用<b class='flag-5'>Verilog</b> HDL在<b class='flag-5'>FPGA</b>上實現(xiàn)SRAM的讀寫測試

    基于FPGA開發(fā)板TSP的串口通信設(shè)計

    本文詳細介紹基于Terasic FPGA開發(fā)板TSP(又名C5P和OSK)和其板載CP2102N USB-UART橋接芯片的串口通信系統(tǒng)設(shè)計與實現(xiàn)。系統(tǒng)采用Verilog HDL編寫UART收發(fā)控制器,通過CP2102N實現(xiàn)FPGA
    的頭像 發(fā)表于 10-15 11:05 ?4882次閱讀
    基于<b class='flag-5'>FPGA</b>開發(fā)板TSP的串口通信設(shè)計

    聊聊FPGA的TDC原理

    今天我們不談高大上的物理學,只聊聊如何在 FPGA ,用一串加法器和 D 觸發(fā)器,“數(shù)清楚時間”——這就是時間數(shù)字轉(zhuǎn)換器(TDC)的魅力。
    的頭像 發(fā)表于 09-02 15:15 ?2668次閱讀
    聊聊<b class='flag-5'>FPGA</b><b class='flag-5'>中</b>的TDC原理

    Task任務(wù):LuatOS實現(xiàn)“任務(wù)級并發(fā)”的核心引擎

    Task任務(wù)通過其強大的并發(fā)處理能力,使LuatOS能夠在單線程環(huán)境模擬多線程執(zhí)行,通過協(xié)程的掛起與恢復機制,實現(xiàn)任務(wù)級的并行操作,顯著提升系統(tǒng)效能。 sys核心庫是LuatOS運行框架庫,也是
    的頭像 發(fā)表于 08-28 13:49 ?654次閱讀
    <b class='flag-5'>Task</b>任務(wù):LuatOS實現(xiàn)“任務(wù)級并發(fā)”的核心引擎

    揭秘LuatOS Task:多任務(wù)管理的“智能中樞”

    Task任務(wù)作為LuatOS的核心組成部分,通過智能化的任務(wù)管理機制,實現(xiàn)任務(wù)的創(chuàng)建、調(diào)度與協(xié)同運行,讓復雜應(yīng)用得以高效并行處理,滿足實時場景下的嚴苛需求。 sys核心庫是LuatOS運行框架庫
    的頭像 發(fā)表于 08-28 13:48 ?800次閱讀
    揭秘LuatOS <b class='flag-5'>Task</b>:多任務(wù)管理的“智能中樞”

    RTL級機器人電機控制器的FPGA設(shè)計

    借助Verilog,在FPGA實現(xiàn)了帶編碼器的兩臺電機的電機控制系統(tǒng)的RTL級設(shè)計。
    的頭像 發(fā)表于 07-07 14:01 ?3124次閱讀
    RTL級機器人電機控制器的<b class='flag-5'>FPGA</b>設(shè)計

    SVA斷言的用法教程

    SVA是System Verilog Assertion的縮寫,即用SV語言來描述斷言。斷言是對設(shè)計的屬性的描述,用以檢查設(shè)計是否按照預期執(zhí)行。
    的頭像 發(fā)表于 05-15 11:39 ?3814次閱讀
    SVA斷言的<b class='flag-5'>用法</b>教程
    喀喇沁旗| 临夏县| 丹东市| 保靖县| 九龙县| 杂多县| 米脂县| 涪陵区| 石门县| 巫溪县| 五河县| 页游| 利津县| 丹棱县| 息烽县| 基隆市| 靖宇县| 姜堰市| 凌海市| 枣阳市| 镇雄县| 新营市| 南投市| 玛纳斯县| 江都市| 巴彦县| 永平县| 丰城市| 武平县| 五家渠市| 小金县| 邵武市| 繁峙县| 宜都市| 丰原市| 吴川市| 枝江市| 竹溪县| 方城县| 合肥市| 仙居县|