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

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

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

3天內不再提示

講解function任務的用法

e9Zb_gh_8734352 ? 來源:FPGA技術聯盟 ? 作者:FPGA技術聯盟 ? 2021-04-02 09:02 ? 次閱讀

本系列文章主要針對FPGA初學者編寫,包括FPGA的模塊書寫、基礎語法、狀態機、RAMUART、SPI、VGA、以及功能驗證等。將每一個知識點作為一個章節進行講解,旨在更快速的提升初學者在FPGA開發方面的能力,每一個章節中都有針對性的代碼書寫以及代碼的講解,可作為讀者參考。

18

第十八章:function

function說明語句

function說明語句的用途就是要返回一個值,然后把這個值用在表達式中。本章講解function任務的用法。

不同點

任務和函數主要的不同點如下:

1、function中不能包含時序控制語句,而task任務可以包含時序控制語句;

2、function不能調用task任務,而task任務能調用function語句;

3、function至少要有一個input類型的參數,不能有output和inout類型的參數。而task任務可以沒有參數,也可以有多個類型的參數;

4、function返回一個值,而task任務則不返回值。

5、function只能對輸入值返回一個結果值,而task可以支持多種用途,可以計算并返回多個結果值。使用task時,只能通過output和inout類型的參數把結果值傳遞回來。

function使用語法

定義任務的語法:

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

begin
<語句1>

<語句2>

………
end
endfunction

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

函數定義示例

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

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

函數調用

下面舉例說明function 函數的定義與如何調用。

代碼示例

函數的調用時通過將函數作為表達式中的操作數來實現的。調用格式如下:

<函數名> (<表達式>,……<表達式>)

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

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

測試代碼如下:

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

仿真波形如圖所示:

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

由仿真圖可以看:

1、當 start 信號變成高電平的時候,state 狀態由 0 跳變到 1 時,此時調用 load_data 函數,把 data_in 的值通過調用函數的方式賦給shift_data ,同時狀態機狀態跳轉到 2。

2、當狀態跳轉到 2 的時候,此時調用shift 函數,把 shift_data 的值通過調用函數的方式往左移一位后賦給shift_data ,同時狀態機狀態跳轉到 3。

3、當狀態跳到 3 的時候,調用 load_data 函數,把 shift_data 的值通過調用函數的方式賦值給data_out ,同時狀態機狀態跳轉到 0。

4、最終結果:

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

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

責任編輯:lq

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

    關注

    1630

    文章

    21802

    瀏覽量

    606369
  • Function
    +關注

    關注

    0

    文章

    14

    瀏覽量

    9946
  • 變量
    +關注

    關注

    0

    文章

    613

    瀏覽量

    28475

原文標題:FPGA入門系列18--function

文章出處:【微信號:gh_873435264fd4,微信公眾號:FPGA技術聯盟】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Linux lsof命令的基本用法

    在 linux 系統中,一切皆文件。通過文件不僅僅可以訪問常規數據,還可以訪問網絡連接和硬件。所以 lsof 命令不僅可以查看進程打開的文件、目錄,還可以查看進程監聽的端口等 socket 相關的信息。本文將介紹 lsof 命令的基本用法,本文中 demo 的演示環境為 ubuntu 18.04。
    的頭像 發表于 10-23 11:52 ?447次閱讀
    Linux lsof命令的基本<b class='flag-5'>用法</b>

    電感技術的講解

    詳細講解電感的原理及計算
    的頭像 發表于 09-06 02:07 ?2368次閱讀
    電感技術的<b class='flag-5'>講解</b>

    linux定時任務用法總結

    習慣了使用 windows 的計劃任務,使用 linux 中的 crontab 管理定時任務時很不適應。
    的頭像 發表于 08-14 18:16 ?911次閱讀
    linux定時<b class='flag-5'>任務</b>的<b class='flag-5'>用法</b>總結

    Allegro X 23.11 版本更新 I 原理圖設計:變體及 function 的創建與管理

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

    ESP32 IDF 4.3創建任務使用外部PSRAM分配內存,在任務里操作FLASH死機的原因?

    ESP32 IDF 4.3 創建任務使用外部PSRAM分配內存,在任務里操作FLASH一定會死機,請問是什么原因或者有這種限制嗎 static StaticTask_t xTaskBuffer
    發表于 06-19 06:10

    三菱PLC傳送指令的用法

    三菱PLC(可編程邏輯控制器)在工業自動化領域中扮演著至關重要的角色。其中,傳送指令(MOV)作為PLC編程中的基礎指令之一,其正確使用對于實現數據的準確、高效傳輸至關重要。本文將詳細講解三菱PLC傳送指令(MOV)的用法,包括指令的功能、格式、應用示例及注意事項等,以幫
    的頭像 發表于 06-18 09:41 ?4677次閱讀

    鴻蒙Ability Kit(程序框架服務)【UIAbility組件基本用法

    UIAbility組件的基本用法包括:指定UIAbility的啟動頁面以及獲取UIAbility的上下文[UIAbilityContext]。
    的頭像 發表于 06-06 11:02 ?570次閱讀
    鴻蒙Ability Kit(程序框架服務)【UIAbility組件基本<b class='flag-5'>用法</b>】

    鴻蒙原生應用開發-ArkTS語言基礎類庫多線程I/O密集型任務開發

    使用異步并發可以解決單次I/O任務阻塞的問題,但是如果遇到I/O密集型任務,同樣會阻塞線程中其它任務的執行,這時需要使用多線程并發能力來進行解決。 I/O密集型任務的性能重點通常不在于
    發表于 03-21 14:57

    PHP用戶定義函數詳細講解

    還可以根據需要定義函數。這些稱為“用戶定義函數”。 ? 句法: function function-name() ?{ ? ? statement 1 : ? ? statement 2
    的頭像 發表于 03-20 14:27 ?454次閱讀

    鴻蒙原生應用開發-ArkTS語言基礎類庫多線程CPU密集型任務TaskPool

    CPU密集型任務是指需要占用系統資源處理大量計算能力的任務,需要長時間運行,這段時間會阻塞線程其它事件的處理,不適宜放在主線程進行。例如圖像處理、視頻編碼、數據分析等。 基于多線程并發機制處理CPU
    發表于 03-19 14:14

    鴻蒙原生應用開發-ArkTS語言基礎類庫單次I/O任務開發

    Promise和async/await提供異步并發能力,適用于單次I/O任務的場景開發,本文以使用異步進行單次文件寫入為例來提供指導。 實現單次I/O任務邏輯。 import fs from
    發表于 03-04 14:07

    AWTK 開源串口屏開發(10) - 告警信息的高級用法

    告警信息是串口屏常用的功能,之前我們介紹了告警信息的基本用法,實現了告警信息的顯示和管理。本文介紹一下實現查詢告警信息和查看告警信息詳情的方法。1.功能之前我們介紹了告警信息的基本用法,實現了告警
    的頭像 發表于 02-24 08:23 ?372次閱讀
    AWTK 開源串口屏開發(10) - 告警信息的高級<b class='flag-5'>用法</b>

    verilog task和function區別

    : task的語法格式為:task [automatic|static] 數據類型 任務名稱 (輸入參數列表); function的語法格式為:函數數據類型 函數名稱 (輸入參數列表) task
    的頭像 發表于 02-22 15:53 ?1201次閱讀

    verilog function函數的用法

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

    verilog中function和task的區別

    非常相似,但它們在功能和使用方式上有一些重要的區別。 定義和聲明方式不同: Function:使用關鍵字"function"來定義和聲明。函數可以有一個或多個輸入參數,可以有一個返回值。函數必須在聲明之后直接定義,不能在其他函數或任務
    的頭像 發表于 02-22 15:40 ?2055次閱讀
    主站蜘蛛池模板: 手机看片国产免费现在观看 | 在线亚洲国产精品区 | 亚洲成片在线观看12345ba | 福利午夜在线 | 天天干天天干天天色 | 青青青久97在线观看香蕉 | 日韩毛片在线看 | 网址色| va在线| xxxx性欧美高清 | 四虎国产精品免费观看 | 特一级黄色毛片 | 美女被免网站在线视频 | bt在线搜索 | 午夜毛片视频 | 手机看片神马午夜片 | aaa一级| 一区卡二区卡三区卡视频 | 久久精品美女久久 | 亚洲人成网站在线在线 | 欧美性猛交xxxx免费看久久 | 日本成本人三级在线观看2018 | 四虎.com| 午夜亚洲国产精品福利 | 国产毛片毛片精品天天看 | 亚洲精品卡1卡二卡3卡四卡 | 夜夜操天天射 | 精品四虎免费观看国产高清午夜 | 成人三级电影在线观看 | 久久成人国产 | 五月天婷婷在线免费观看 | 8844aa在线毛片| 日本精品一卡二卡≡卡四卡 | 午夜神马影院 | 苦瓜se影院在线视频网站 | 澳门久久 | 天天舔天天操天天干 | 32pao强力打造免费高速高清 | 久久国产精品99久久久久久牛牛 | 天天夜夜操 | 动漫精品成人免费网站 |