题解 | #使用函数实现数据大小端转换#
使用函数实现数据大小端转换
http://www.nowcoder.com/practice/74c0c19ad0c444959c436a049647a93c
关于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