欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2770|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

Verilog中函數(shù)與任務(wù)比較

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:105323 發(fā)表于 2016-2-23 03:15 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
任務(wù)和函數(shù)只能實(shí)現(xiàn)組合邏輯,而對(duì)時(shí)序邏輯無(wú)能為力。
  1  任務(wù)
      任務(wù)就是一段封裝在“task-endtask”之間的程序。任務(wù)是通過(guò)調(diào)用來(lái)執(zhí)行的,而且只有在調(diào)用時(shí)才執(zhí)行,如果定義了任務(wù),但是在整個(gè)過(guò)程中都沒(méi)有調(diào)用它,那么這個(gè)任務(wù)是不會(huì)執(zhí)行的。調(diào)用某個(gè)任務(wù)時(shí)可能需要它處理某些數(shù)據(jù)并返回操作結(jié)果,所以任務(wù)應(yīng)當(dāng)有接收數(shù)據(jù)的輸入端和返回?cái)?shù)據(jù)的輸出端。
      任務(wù)可以彼此調(diào)用,而且任務(wù)內(nèi)還可以調(diào)用函數(shù)。任務(wù)是不可綜合的,它只能用于仿真。
  (1)任務(wù)定義
      任務(wù)定義的形式如下:
      task task_id    // 任務(wù)名
           [declaration]   //端口定義
           procedural_statement  //任務(wù)的具體操作語(yǔ)句
      endtask
      其中,task_id是任務(wù)名;可選項(xiàng)declaration是端口聲明語(yǔ)句和變量聲明語(yǔ)句,任務(wù)接收輸入值和返回輸出值就是通過(guò)此處聲明的端口進(jìn)行的;procedural_statement是一段用來(lái)完成這個(gè)任務(wù)操作的過(guò)程語(yǔ)句,如果過(guò)程語(yǔ)句多于一條,應(yīng)將其放在語(yǔ)句塊內(nèi)。
      一些注意事項(xiàng):
  

a. 在任務(wù)定義結(jié)構(gòu)中不能出現(xiàn)initial和always過(guò)程塊。

  

b. 任務(wù)的輸入、輸出端口和雙向端口數(shù)量不受限制,甚至可以沒(méi)有輸入、輸出端口和雙向端口。

  (2)任務(wù)調(diào)用
      任務(wù)調(diào)用語(yǔ)句可以在initial語(yǔ)句和always語(yǔ)句中使用,其語(yǔ)法形式如下:
      task_id[(expr1, expr2, ........, exprN)];
      task_id是要調(diào)用的任務(wù)名,expr1, expr2, ........是參數(shù)列表。參數(shù)列表給出傳入任務(wù)的數(shù)據(jù)(進(jìn)入任務(wù)的輸入端)和接收返回結(jié)果的變量(從任務(wù)的輸出端接收返回結(jié)果),任務(wù)調(diào)用語(yǔ)句中參數(shù)列表的順序必須與任務(wù)定義中的端口聲明順序相同。任務(wù)調(diào)用語(yǔ)句是過(guò)程性語(yǔ)句,所以任務(wù)調(diào)用中接收返回?cái)?shù)據(jù)的變量必須是寄存器類型。      
      調(diào)用任務(wù)時(shí),可以引用任務(wù)聲明所在的模塊內(nèi)定義的任何變量。
      任務(wù)內(nèi)可以帶有時(shí)序控制,如時(shí)延。但任務(wù)的輸出值必須等到整個(gè)任務(wù)的全部語(yǔ)句都執(zhí)行完之后才能返回。
  2   函數(shù)
      和任務(wù)一樣,verilog的函數(shù)也是一段可以完成特定操作的程序,這段程序處于關(guān)鍵詞“function-endfunction”之間。
  (1)函數(shù)定義
      函數(shù)定義和任務(wù)定義一樣,可以出現(xiàn)在模塊內(nèi)的任何位置,其形式如下:
      function [range] function_id;
          input_declaration
          other_declarations
          procedural_statement
      endfunction
      其中[range]參數(shù)指定返回值的類型或位寬,默認(rèn)是1比特?cái)?shù)據(jù)。
      function_id為所定義函數(shù)的名稱,對(duì)函數(shù)的調(diào)用也是通過(guò)函數(shù)名來(lái)完成的,而且它在函數(shù)結(jié)構(gòu)體內(nèi)代表一個(gè)內(nèi)部變量,函數(shù)調(diào)用的返回值就是通過(guò)函數(shù)名變量傳遞給調(diào)用語(yǔ)句的。
  

一些注意事項(xiàng):

  

a. 函數(shù)定義只能在模塊中完成,不能出現(xiàn)在過(guò)程塊中;

  

b. 函數(shù)至少要有一個(gè)輸入端口,但不能包含輸出和雙向端口;

  

c. 在函數(shù)結(jié)構(gòu)中,不能使用任何形式的時(shí)間控制語(yǔ)句(#、wait等),也不能使用disable中止語(yǔ)句;

  

d. 函數(shù)定義結(jié)構(gòu)體總不能出現(xiàn)過(guò)程塊語(yǔ)句;

  

e. 函數(shù)內(nèi)部可以調(diào)用函數(shù),但不能調(diào)用過(guò)程。

      函數(shù)的定義中并沒(méi)有聲明輸出,函數(shù)定義時(shí),在函數(shù)內(nèi)部已經(jīng)隱性的聲明了一個(gè)寄存器變量,該寄存器變量與函數(shù)名同名并且取值范圍也相同。
  (2)函數(shù)調(diào)用
      函數(shù)也是在被調(diào)用時(shí)才被執(zhí)行的,調(diào)用函數(shù)的語(yǔ)句:func_id(expr1, expr2, ........., exprN),其中,func_id是要調(diào)用的函數(shù)名,expr1, expr2, ......exprN是傳遞給函數(shù)的輸入?yún)?shù)列表,該輸入?yún)?shù)列表的順序必須與函數(shù)定義時(shí)聲明其輸入的順序相同。
      在函數(shù)內(nèi)部聲明的所有寄存器都是靜態(tài)的,當(dāng)函數(shù)被調(diào)用時(shí),這些寄存器的值不能被改變。
  

一些注意事項(xiàng):

  

a. 函數(shù)調(diào)用可以在過(guò)程塊中完成,也可以在assign這樣的連續(xù)賦值語(yǔ)句中出現(xiàn);

  

b. 函數(shù)調(diào)用語(yǔ)句不能單獨(dú)作為一條語(yǔ)句出現(xiàn),只能作為賦值語(yǔ)句的右端操作數(shù)。

  3  任務(wù)與函數(shù)比較
  比較點(diǎn)          任務(wù)                函數(shù)
  輸入輸出      可以有任意多個(gè)輸入輸出        至少一輸入,不能有輸出和雙向端口
  調(diào)用         任務(wù)只能在過(guò)程語(yǔ)句中調(diào)用,     函數(shù)可作為賦值操作的表達(dá)式,
                         而不能在連續(xù)賦值語(yǔ)句中調(diào)用          用于過(guò)程賦值和連續(xù)賦值語(yǔ)句
  觸發(fā)事件控制    任務(wù)不能出現(xiàn)always語(yǔ)句;             函數(shù)中不能出現(xiàn)always、#,
                           可以包含延時(shí)控制語(yǔ)句(#),         這樣的語(yǔ)句,要保證函數(shù)執(zhí)行
                           但只能面向仿真,不能綜合              在零時(shí)間內(nèi)完成
  調(diào)用其他           可以調(diào)用其他任務(wù)和函數(shù)                  只能調(diào)用函數(shù),不能調(diào)用任務(wù)
  返回值              通過(guò)輸出端口傳遞返回值                  通過(guò)函數(shù)名返回,只有一個(gè)返回值
  其他說(shuō)明          任務(wù)調(diào)用語(yǔ)句可以作為一條               函數(shù)調(diào)用語(yǔ)句不能單獨(dú)作為
  完整的語(yǔ)句出現(xiàn)                                一條語(yǔ)句,出現(xiàn)只能作為賦
值語(yǔ)句的右端操作數(shù)
中斷                可以由disable中斷                           不允許由disable中斷
  


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表