verilog中也有函数,使用它就可以不用重复制造轮子。
举个栗子你就知道了:选择器
版本一:
module function_mux(a0,a1,s,y);
input s,a0,a1;
output y;
wire s,a0,a1;
wire y;
assign y = sel (a0,a1,s);
function sel;
input a,b,c;
case (c)
1'b0: sel = a;
1'b1: sel = b; //这里改成default就更好了
endcase
endfunction
endmodule
版本二:
module function_mux2( s,a0,a1,y );
input s,a0,a1;
output y;
wire s,a0,a1;
wire y;
assign y = sel (a0,a1,s);
function sel;
input a,b,c;
begin
if(c) sel = b;
else sel = a;
end
endfunction
endmodule
综合结果: