Verilog 函数结果与预期不同
Verilog function result different from expected
我正在使用这个函数片段来使我的 7 段显示更具可读性。为什么打印“00”而不是“0E”?
module main;
function disp;
input [6:0] a;
begin
case (a)
7'b0000001 : disp=4'h0;
7'b1001111 : disp=4'h1;
7'b0010010 : disp=4'h2;
7'b0000110 : disp=4'h3;
7'b1001100 : disp=4'h4;
7'b0100100 : disp=4'h5;
7'b0100000 : disp=4'h6;
7'b0001111 : disp=4'h7;
7'b0000000 : disp=4'h8;
7'b0001100 : disp=4'h9;
7'b0001000 : disp=4'hA;
7'b1100000 : disp=4'hB;
7'b0110001 : disp=4'hC;
7'b1000010 : disp=4'hD;
7'b0110000 : disp=4'hE;
7'b0111000 : disp=4'hF;
default : disp=4'bxxxx;
endcase
end
endfunction
initial
begin
$display("%h%h", disp(7'b0000001), disp(7'b0110000)); //expecting 0E
$finish;
end
endmodule
您缺少函数输出的大小。它默认为 1 位,因为 'hE
的第一位是 0
它 returns 零。
将函数声明更改为:
function [3:0] disp;
我正在使用这个函数片段来使我的 7 段显示更具可读性。为什么打印“00”而不是“0E”?
module main;
function disp;
input [6:0] a;
begin
case (a)
7'b0000001 : disp=4'h0;
7'b1001111 : disp=4'h1;
7'b0010010 : disp=4'h2;
7'b0000110 : disp=4'h3;
7'b1001100 : disp=4'h4;
7'b0100100 : disp=4'h5;
7'b0100000 : disp=4'h6;
7'b0001111 : disp=4'h7;
7'b0000000 : disp=4'h8;
7'b0001100 : disp=4'h9;
7'b0001000 : disp=4'hA;
7'b1100000 : disp=4'hB;
7'b0110001 : disp=4'hC;
7'b1000010 : disp=4'hD;
7'b0110000 : disp=4'hE;
7'b0111000 : disp=4'hF;
default : disp=4'bxxxx;
endcase
end
endfunction
initial
begin
$display("%h%h", disp(7'b0000001), disp(7'b0110000)); //expecting 0E
$finish;
end
endmodule
您缺少函数输出的大小。它默认为 1 位,因为 'hE
的第一位是 0
它 returns 零。
将函数声明更改为:
function [3:0] disp;