【问题标题】:How to get MAX or MIN in Verilog?如何在 Verilog 中获得 MAX 或 MIN?
【发布时间】:2023-04-10 03:13:01
【问题描述】:

我想构建一个简单的模块来比较两个 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

【问题讨论】:

    标签: verilog


    【解决方案1】:

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

    `default_nettype none
    

    【讨论】:

      猜你喜欢
      • 2017-06-10
      • 2018-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      • 2018-05-26
      相关资源
      最近更新 更多