中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 硬件描述語言Verilog HDL設(shè)計(jì)進(jìn)階之:Verilog HDL高級語法結(jié)構(gòu)--函數(shù)

        硬件描述語言Verilog HDL設(shè)計(jì)進(jìn)階之:Verilog HDL高級語法結(jié)構(gòu)--函數(shù)

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

        4.3 Verilog HDL高級語法結(jié)構(gòu)—

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


        的目的是返回一個(gè)用于表達(dá)式的值。


        1.定義語法

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

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

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


        2.函數(shù)返回值

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


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

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

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

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


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

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


        5.實(shí)例詳解


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

        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ù)結(jié)束
        //函數(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í)行結(jié)果
        result = n * factorial(n)/((n*2)+1); //調(diào)用函數(shù)
        end
        $display(Finalresult=%d,result); //打印結(jié)果
        end
        endmodule //模塊結(jié)束



        關(guān)鍵詞: VerilogHDL 函數(shù) function

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉