Verilog比较器

Verilog比较器,verilog,comparator,Verilog,Comparator,我是verilog的新手 我做了很多研究,最后写了这段代码,但似乎不起作用 谁能帮我修一下吗 module comparator(); reg[3:0] a, b; wire[1:0] equal, lower, greater; if (a<b) begin equal = 0; lower = 1; greater = 0; end else if (a==b) begin

我是verilog的新手

我做了很多研究,最后写了这段代码,但似乎不起作用

谁能帮我修一下吗

module comparator();
    reg[3:0] a, b;
    wire[1:0] equal, lower, greater;    

    if (a<b) begin

        equal = 0;
        lower = 1;
        greater = 0;
    end

    else if (a==b) begin
        equal = 1;
        lower = 0;
        greater = 0;
    end

    else begin
        equal = 0;
        lower = 0;
        greater = 1;
    end;

    initial begin
                $monitor($time, 
                         "a=%b, b=%b, greater=%b, equals=%b, lower=%b",
                          a, b, greater, equal, lower);

                a=9; b=10;
                #100 $display ("\n", $time, "\n");
        end
endmodule 
模块比较器();
reg[3:0]a,b;
导线[1:0]相等、较低、较大;

如果(a行为程序必须包含在
始终
块中,如下所示:
此外,您的模块需要输入和输出。更正确的版本如下:

module comparator (
    input wire [3:0] a,
    input wire [3:0] b,
    output reg equal,
    output reg lower,
    output reg greater
    );

    always @* begin
      if (a<b) begin
        equal = 0;
        lower = 1;
        greater = 0;
      end
      else if (a==b) begin
        equal = 1;
        lower = 0;
        greater = 0;
      end
      else begin
        equal = 0;
        lower = 0;
        greater = 1;
      end
    end
endmodule
您可以使用以下链接在EDA操场上玩此示例:

不带始终块:

module comparator (
  input wire [3:0] a,
  input wire [3:0] b,
  output reg equal,
  output reg lower,
  output reg greater
);
assign equal = (a===b);
assign lower = (a<b)?1'b1:1'b0;
assign greater = (a>b)1'b1:1'b0;
end
模块比较器(
输入线[3:0]a,
输入线[3:0]b,
输出reg相等,
输出寄存器较低,
输出寄存器更大
);
分配相等=(a==b);
分配下限=(ab)1'b1:1'b0;
结束

请小心,你需要考虑“x”和“z”,使用“===”而不是“=”。

我不熟悉您的技术,但一般来说,关于SE的好问题会有以下信息:
什么具体不起作用?
您尝试过什么?
您能告诉我使用此代码比较9和10的方法吗?在测试台的初始块中,删除开始和结束之间的所有代码,并添加以下内容:I将a和b初始化为9和10,等待10个单位时间,并显示eq、lw和gr的值
module comparator (
  input wire [3:0] a,
  input wire [3:0] b,
  output reg equal,
  output reg lower,
  output reg greater
);
assign equal = (a===b);
assign lower = (a<b)?1'b1:1'b0;
assign greater = (a>b)1'b1:1'b0;
end