精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

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

講解function任務(wù)的用法

e9Zb_gh_8734352 ? 來(lái)源:FPGA技術(shù)聯(lián)盟 ? 作者:FPGA技術(shù)聯(lián)盟 ? 2021-04-02 09:02 ? 次閱讀

本系列文章主要針對(duì)FPGA初學(xué)者編寫,包括FPGA的模塊書(shū)寫、基礎(chǔ)語(yǔ)法、狀態(tài)機(jī)、RAMUART、SPI、VGA、以及功能驗(yàn)證等。將每一個(gè)知識(shí)點(diǎn)作為一個(gè)章節(jié)進(jìn)行講解,旨在更快速的提升初學(xué)者在FPGA開(kāi)發(fā)方面的能力,每一個(gè)章節(jié)中都有針對(duì)性的代碼書(shū)寫以及代碼的講解,可作為讀者參考。

18

第十八章:function

function說(shuō)明語(yǔ)句

function說(shuō)明語(yǔ)句的用途就是要返回一個(gè)值,然后把這個(gè)值用在表達(dá)式中。本章講解function任務(wù)的用法。

不同點(diǎn)

任務(wù)和函數(shù)主要的不同點(diǎn)如下:

1、function中不能包含時(shí)序控制語(yǔ)句,而task任務(wù)可以包含時(shí)序控制語(yǔ)句;

2、function不能調(diào)用task任務(wù),而task任務(wù)能調(diào)用function語(yǔ)句;

3、function至少要有一個(gè)input類型的參數(shù),不能有output和inout類型的參數(shù)。而task任務(wù)可以沒(méi)有參數(shù),也可以有多個(gè)類型的參數(shù);

4、function返回一個(gè)值,而task任務(wù)則不返回值。

5、function只能對(duì)輸入值返回一個(gè)結(jié)果值,而task可以支持多種用途,可以計(jì)算并返回多個(gè)結(jié)果值。使用task時(shí),只能通過(guò)output和inout類型的參數(shù)把結(jié)果值傳遞回來(lái)。

function使用語(yǔ)法

定義任務(wù)的語(yǔ)法:

function<返回值的類型或范圍>(函數(shù)名);
<端口說(shuō)明語(yǔ)句>
<變量類型說(shuō)明語(yǔ)句>

begin
<語(yǔ)句1>

<語(yǔ)句2>

………
end
endfunction

函數(shù)通過(guò)關(guān)鍵詞 function 和 endfunction 定義。不允許輸出端口聲明(包括輸出和雙向端口),但可以有多個(gè)輸入端口。<返回值的類型或范圍>指定函數(shù)返回值的類型或位寬,是一個(gè)可選項(xiàng),若沒(méi)有指定,默認(rèn)缺省值為寬度 1 bit的寄存器數(shù)據(jù)。(函數(shù)名)為所定義函數(shù)的名稱,對(duì)函數(shù)的調(diào)用也是通過(guò)函數(shù)名完成的,并在函數(shù)結(jié)構(gòu)體內(nèi)部代表一個(gè)內(nèi)部變量,函數(shù)調(diào)用的返回值就是通過(guò)函數(shù)名變量傳遞給調(diào)用語(yǔ)句。函數(shù)定義在函數(shù)內(nèi)部會(huì)隱式定義一個(gè)寄存器變量,該寄存器變量和函數(shù)同名并且位寬也一致。函數(shù)通過(guò)在函數(shù)定義中對(duì)該寄存器的顯式賦值來(lái)返回函數(shù)計(jì)算結(jié)果。

函數(shù)定義示例

1af4ba5c-8dcd-11eb-8b86-12bb97331649.png

函數(shù)的定義聲明了與函數(shù)同名的,函數(shù)內(nèi)部的寄存器。如在函數(shù)的聲明語(yǔ)句中<返回值的類型或范圍>為默認(rèn),則這個(gè)寄存器是1位的。否則是與函數(shù)定義中<返回值的類型或范圍>一致的寄存器。函數(shù)的定義把函數(shù)返回值所賦值寄存器的名稱初始化與函數(shù)同名的內(nèi)部變量。上述代碼示例定義了一個(gè)名為“function_use”的函數(shù),把輸入a的值低3bit賦給了返回值function_use。需要注意的是在函數(shù)定義時(shí)不能包含任何時(shí)間控制語(yǔ)句,即不能包含#,@,wait等。

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

下面舉例說(shuō)明function 函數(shù)的定義與如何調(diào)用。

代碼示例

函數(shù)的調(diào)用時(shí)通過(guò)將函數(shù)作為表達(dá)式中的操作數(shù)來(lái)實(shí)現(xiàn)的。調(diào)用格式如下:

<函數(shù)名> (<表達(dá)式>,……<表達(dá)式>)

1b5d95e0-8dcd-11eb-8b86-12bb97331649.png

1f4e4398-8dcd-11eb-8b86-12bb97331649.png

測(cè)試代碼如下:

1f7e338c-8dcd-11eb-8b86-12bb97331649.png

仿真波形如圖所示:

22fd3c4c-8dcd-11eb-8b86-12bb97331649.png

由仿真圖可以看:

1、當(dāng) start 信號(hào)變成高電平的時(shí)候,state 狀態(tài)由 0 跳變到 1 時(shí),此時(shí)調(diào)用 load_data 函數(shù),把 data_in 的值通過(guò)調(diào)用函數(shù)的方式賦給shift_data ,同時(shí)狀態(tài)機(jī)狀態(tài)跳轉(zhuǎn)到 2。

2、當(dāng)狀態(tài)跳轉(zhuǎn)到 2 的時(shí)候,此時(shí)調(diào)用shift 函數(shù),把 shift_data 的值通過(guò)調(diào)用函數(shù)的方式往左移一位后賦給shift_data ,同時(shí)狀態(tài)機(jī)狀態(tài)跳轉(zhuǎn)到 3。

3、當(dāng)狀態(tài)跳到 3 的時(shí)候,調(diào)用 load_data 函數(shù),把 shift_data 的值通過(guò)調(diào)用函數(shù)的方式賦值給data_out ,同時(shí)狀態(tài)機(jī)狀態(tài)跳轉(zhuǎn)到 0。

4、最終結(jié)果:

8‘hF0左移1位,data_out=8‘hE0。

8‘hFF左移1位,data_out=8‘hFE。

責(zé)任編輯:lq

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

    關(guān)注

    1620

    文章

    21471

    瀏覽量

    597974
  • Function
    +關(guān)注

    關(guān)注

    0

    文章

    14

    瀏覽量

    9865
  • 變量
    +關(guān)注

    關(guān)注

    0

    文章

    604

    瀏覽量

    28237

原文標(biāo)題:FPGA入門系列18--function

文章出處:【微信號(hào):gh_873435264fd4,微信公眾號(hào):FPGA技術(shù)聯(lián)盟】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    linux定時(shí)任務(wù)用法總結(jié)

    習(xí)慣了使用 windows 的計(jì)劃任務(wù),使用 linux 中的 crontab 管理定時(shí)任務(wù)時(shí)很不適應(yīng)。
    的頭像 發(fā)表于 08-14 18:16 ?503次閱讀
    linux定時(shí)<b class='flag-5'>任務(wù)</b>的<b class='flag-5'>用法</b>總結(jié)

    Allegro X 23.11 版本更新 I 原理圖設(shè)計(jì):變體及 function 的創(chuàng)建與管理

    的新功能及用法,助力您提升設(shè)計(jì)質(zhì)量和設(shè)計(jì)效率。AllegroXSystemCapture系統(tǒng)級(jí)原理圖設(shè)計(jì)變體及function的創(chuàng)建與管理在2
    的頭像 發(fā)表于 06-22 08:12 ?467次閱讀
    Allegro X 23.11 版本更新 I 原理圖設(shè)計(jì):變體及 <b class='flag-5'>function</b> 的創(chuàng)建與管理

    verilog task和function區(qū)別

    : task的語(yǔ)法格式為:task [automatic|static] 數(shù)據(jù)類型 任務(wù)名稱 (輸入?yún)?shù)列表); function的語(yǔ)法格式為:函數(shù)數(shù)據(jù)類型 函數(shù)名稱 (輸入?yún)?shù)列表) task
    的頭像 發(fā)表于 02-22 15:53 ?587次閱讀

    verilog function函數(shù)的用法

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

    verilog中function和task的區(qū)別

    非常相似,但它們?cè)诠δ芎褪褂梅绞缴嫌幸恍┲匾膮^(qū)別。 定義和聲明方式不同: Function:使用關(guān)鍵字"function"來(lái)定義和聲明。函數(shù)可以有一個(gè)或多個(gè)輸入?yún)?shù),可以有一個(gè)返回值。函數(shù)必須在聲明之后直接定義,不能在其他函數(shù)或任務(wù)
    的頭像 發(fā)表于 02-22 15:40 ?1145次閱讀

    split在python中的用法

    split在python中的用法 split()是Python中一個(gè)非常常用的字符串函數(shù),它能夠根據(jù)指定的分隔符將一個(gè)字符串分割成多個(gè)子字符串,并返回一個(gè)包含這些子字符串的列表。本文將詳細(xì)介紹
    的頭像 發(fā)表于 12-25 15:12 ?1755次閱讀

    pcb插針的用法

    pcb插針的用法
    的頭像 發(fā)表于 12-13 16:58 ?1352次閱讀

    Pipeline中throwIt的用法

    字如其名,來(lái)看下Pipeline中throwIt的用法,是怎么個(gè)丟棄方式。
    的頭像 發(fā)表于 10-21 16:24 ?389次閱讀
    Pipeline中throwIt的<b class='flag-5'>用法</b>

    Java多線程的用法

    本文將介紹一下Java多線程的用法。 基礎(chǔ)介紹 什么是多線程 指的是在一個(gè)進(jìn)程中同時(shí)運(yùn)行多個(gè)線程,每個(gè)線程都可以獨(dú)立執(zhí)行不同的任務(wù)或操作。 與單線程相比,多線程可以提高程序的并發(fā)性和響應(yīng)
    的頭像 發(fā)表于 09-30 17:07 ?800次閱讀

    元組的基礎(chǔ)用法和進(jìn)階用法

    元組是 Rust 語(yǔ)言中一種非常有用的數(shù)據(jù)結(jié)構(gòu),它可以將多個(gè)不同類型的值組合在一起。本教程將介紹元組的基礎(chǔ)用法和進(jìn)階用法,并結(jié)合示例代碼進(jìn)行講解。 元組是一種有序的數(shù)據(jù)集合,其中每個(gè)元素可以
    的頭像 發(fā)表于 09-30 16:49 ?740次閱讀

    基于Rust語(yǔ)言Hash特征的基礎(chǔ)用法和進(jìn)階用法

    ,包括Hash trait、HashMap、HashSet等,本教程將詳細(xì)介紹Rust語(yǔ)言Hash特征的基礎(chǔ)用法和進(jìn)階用法。 基礎(chǔ)用法 使用Hash trait 在Rust語(yǔ)言中,Hash trait
    的頭像 發(fā)表于 09-19 16:02 ?1141次閱讀

    基于select!宏的進(jìn)階用法

    宏,它可以讓我們同時(shí)監(jiān)聽(tīng)多個(gè)異步事件,一旦其中一個(gè)事件觸發(fā),就可以立即執(zhí)行相應(yīng)的代碼。在本教程中,我們將詳細(xì)介紹 select!宏的進(jìn)階用法,并提供多個(gè)示例來(lái)幫助您更好地理解和掌握這個(gè)宏的使用方法。 進(jìn)階用法 除了基礎(chǔ)用法之外,
    的頭像 發(fā)表于 09-19 15:35 ?450次閱讀

    Stream模塊的基礎(chǔ)用法和進(jìn)階用法

    有用。在本教程中,我們將介紹 Stream 模塊的基礎(chǔ)用法和進(jìn)階用法,并提供示例。 基礎(chǔ)用法 在本節(jié)中,我們將介紹 Stream 模塊的基礎(chǔ)用法,并提供基礎(chǔ)示例。 從 Vec 中創(chuàng)建
    的頭像 發(fā)表于 09-19 15:33 ?946次閱讀

    SeaORM的基礎(chǔ)用法

    可讀性。 在本教程中,我們將介紹SeaORM的基本用法和進(jìn)階用法。我們將使用SQLite數(shù)據(jù)庫(kù)來(lái)演示這些用法。 基礎(chǔ)用法 在使用SeaORM之前,我們需要將其添加到我們的Rust項(xiàng)目
    的頭像 發(fā)表于 09-19 14:37 ?1932次閱讀

    SQLx的基礎(chǔ)用法和進(jìn)階用法

    SQLx是一個(gè)Rust語(yǔ)言的異步SQL數(shù)據(jù)庫(kù)訪問(wèn)庫(kù),支持多種數(shù)據(jù)庫(kù),包括PostgreSQL、MySQL、SQLite等。本教程將以SQLite為例,介紹SQLx的基礎(chǔ)用法和進(jìn)階用法。 基礎(chǔ)用法
    的頭像 發(fā)表于 09-19 14:29 ?1852次閱讀