如何在Verilog中获得MAX或MIN?

时间:2015-12-29 17:33:02

标签: verilog

我想构建一个简单的模块来比较两个2位数字并获得输出中的最大数字。

我已使用此处发布的代码:How to find MAX or MIN in Verilog coding?

module max (input [1:0] a, 
            input [1:0] b, 
            output reg [1:0] out);
  always @* begin
    if (a>b)
      out = a;
    else
      out = b;
  end
endmodule

但我遇到的问题是输出" out"不会给我一个2位数字,而且代码也不能正常工作,如截图所示。

这是我使用的测试平台:

`timescale 1ns/10ps
module maxTB();
reg [1:0] a, b;

max dut (.a(a),.b(b),.out(out)); 

initial
begin
a = 2'b1; b= 2'b0;
#20 a = 2'b10;
#40 b = 2'b11;
#50 a = 2'b01;
end
endmodule

modelsim screenshot

1 个答案:

答案 0 :(得分:4)

您尚未在TB中声明out,因此默认为1位网络(wire)。这是一种相当重要的语言失败。要关闭此行为,请在任何模块外添加:

`default_nettype none