verilog之function

Posted on 2020-08-08 14:51  绿叶落秋风  阅读(1856)  评论(0编辑  收藏  举报

verilog之function

1、基本作用

function,就是声明一个函数。与task的区别就是有参数。function的返回值就是函数名(可以设置位宽),输入值任意,均作为输入参数。代码块需符合verilog的语法规则。如放在assign块中的函数需要使用wire变量,always语句中的函数需要使用reg型的变量。不可在function内部加入赋值类型的标志。

2、实际例子

module fun_user (
    input a,
    input b,
    input c,
    output [3:0] d,
    output [3:0] d2
);
    
function [3:0] dataout;
input a;
input b;
input c;
dataout={a,b,c};
endfunction

assign    d=dataout(a,b,c);


endmodule

 

3、反思小结

function函数在verilog中的作用显然不如高级语言。一方面可综合语句确实不适合做成函数,另外一方面verilog并不擅长高级逻辑。verilog在verilog中主要的应用是精简代码,减少相似度高的代码块。task则是减少相同的代码块。两者在verilog中都不是关键作用。