关于function中嵌套for的语法问题
`timescale 1ns/1ns
module function_mod(
input [3:0]a,
input [3:0]b,
output [3:0]c,
output [3:0]d
);
function [3 : 0] invert;
input [3 : 0] in;
reg [3 : 0] invert;
integer i;
for (i = 0; i < 4; i = i + 1)begin
invert[i] = in[3 - i];
end
endfunction
assign c = invert(a);
assign d = invert(b);
endmodule
第二个因为多加一组begin end 而编译不通过,猜测function中只能有一组beginend,
`timescale 1ns/1ns
module function_mod(
input [3:0]a,
input [3:0]b,
output [3:0]c,
output [3:0]d
);
function [3 : 0] invert;
input [3 : 0] in;
reg [3 : 0] invert;
begin
integer i;
for (i = 0; i < 4; i = i + 1)begin
invert[i] = in[3 - i];
end
end
endfunction
assign c = invert(a);
assign d = invert(b);
endmodule
而且function中也不能写成这个形式,不能直接索引位数
`timescale 1ns/1ns
module function_mod(
input [3:0]a,
input [3:0]b,
output [3:0]c,
output [3:0]d
);
function [3 : 0] invert;
input [3 : 0] in;
reg [3 : 0] invert;
begin
invert = in[0 : 3];
end
endfunction
assign c = invert(a);
assign d = invert(b);
endmodule