Verilog函数结果与预期

时间:2016-11-18 09:53:16

标签: function verilog

我正在使用此功能片段使我的7段显示更具可读性。为什么打印'00'而不是'0E'?

http://www.iverilog.com/index.php?public_code=v6o1rG

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 个答案:

答案 0 :(得分:5)

您缺少函数输出的大小。它默认为1位,因为'hE的第一位是0,它返回零。

将函数声明更改为:

function [3:0] disp;