在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 硬件描述語言Verilog HDL設計進階之:Verilog HDL高級語法結構--函數(shù)

            硬件描述語言Verilog HDL設計進階之:Verilog HDL高級語法結構--函數(shù)

            作者: 時間:2017-06-05 來源:網(wǎng)絡 收藏

            4.3 Verilog HDL高級語法結構—

            本文引用地址:http://www.biyoush.com/article/201706/348832.htm


            的目的是返回一個用于表達式的值。


            1.定義語法

            返回值的類型或范圍> (函數(shù)名);
            端口說明語句>
            變量類型說明語句> begin
            語句>
            ...
            end
            end

            請注意返回值的類型或范圍>這一項是可選項,如缺省則返回值為一位寄存器類型數(shù)據(jù)。下面用例子說明:

            function [7:0] getbyte;
            input [15:0] address;
            begin
            說明語句> //從地址字中提取低字節(jié)的程序
            getbyte = result_expression; //把結果賦予函數(shù)的返回字節(jié)
            end
            endfunction


            2.函數(shù)返回值

            函數(shù)的定義蘊含聲明了與函數(shù)同名的、函數(shù)內(nèi)部的寄存器。如在函數(shù)的聲明語句中返回值的類型或范圍>為缺省,則這個寄存器是一位的;否則是與函數(shù)定義中返回值的類型或范圍>一致的寄存器。
            函數(shù)的定義把函數(shù)返回值所賦值寄存器的名稱初始化為與函數(shù)同名的內(nèi)部變量。上面的例子說明了這個概念:getbyte被賦予的值就是函數(shù)的返回值。


            3.函數(shù)調(diào)用
            函數(shù)的調(diào)用是通過將函數(shù)作為表達式中的操作數(shù)來實現(xiàn)的,其調(diào)用格式如下:

            函數(shù)名> (表達式>,表達式>>*)

            其中函數(shù)名作為確認符。下面的例子中通過對兩次調(diào)用函數(shù)getbyte的結果值進行位拼接運算來生成一個字。

            word = control? {getbyte(msbyte),getbyte(lsbyte)} : 0;


            4.函數(shù)使用規(guī)則

            與任務相比函數(shù)的使用有較多的約束,下面給出的是函數(shù)的使用規(guī)則。
            • 函數(shù)的定義不能包含有任何的時間控制語句,即任何用#、@、或wait來標識的語句。
            • 函數(shù)不能啟動任務。
            • 定義函數(shù)時至少要有一個輸入?yún)⒘俊?br />• 在函數(shù)的定義中必須有一條賦值語句給函數(shù)中的一個內(nèi)部變量賦以函數(shù)的結果值,該內(nèi)部變量具有和函數(shù)名相同的名字。


            5.實例詳解


            下面的例子中定義了一個可進行階乘運算的名為factorial的函數(shù),該函數(shù)返回一個32位的寄存器類型的值,該函數(shù)可后向調(diào)用自身,并且打印出部分結果值。

            module tryfact; //模塊開始
            //函數(shù)的定義-------------------------------
            function[31:0]factorial; //函數(shù)開始
            input[3:0]operand; //函數(shù)的入口
            reg[3:0]index; //函數(shù)的寄存器
            begin
            factorial = operand? 1 : 0; //若operand全為0,則為0
            for(index=2;index=operand;index=index+1) //循環(huán)語句
            factorial = index * factorial; //乘法器
            end
            endfunction //函數(shù)結束
            //函數(shù)的測試-------------------------------------
            reg[31:0]result;
            reg[3:0]n;
            initial begin
            result=1;
            for(n=2;n=9;n=n+1) begin //循環(huán)語句(調(diào)用函數(shù))
            $display(Partial result n= %d result= %d, n, result); //每次函數(shù)的執(zhí)行結果
            result = n * factorial(n)/((n*2)+1); //調(diào)用函數(shù)
            end
            $display(Finalresult=%d,result); //打印結果
            end
            endmodule //模塊結束



            評論


            相關推薦

            技術專區(qū)

            關閉