2015-12-29 301 views
1

我想建立一个简单的模块来比较两个2位数字并获得输出中的最大数量。如何在Verilog中获得MAX或MIN?

我使用的代码张贴在这里: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 

但我有问题,是输出“出”不给我一个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

回答

4

您还没有宣布在结核病out,所以它默认为1比特网(一wire)。这是该语言的一个主要失误。要关闭此行为,请将其添加到任何模块的外部:

`default_nettype none