用 SystemVerilog 语言实现十六位比较器

上一篇文章有朋友在评论区指出了一些小错误,专门改正了重新发一下,感谢这位朋友。
我也只是刚刚入门verilog正在学习,有什么错误请各位指出并多多包含。

//比较器代码
module comp(equ, dir, a, b);
    input logic [15:0] a, b;    //a 和 b, 分别为 16 位;
output logic equ, dir;   //equ =1表示ab相等,0表示ab不相等
// dir=0表示a大于b
    always_comb
    begin
    equ = ~|(a ^ b);
    if (a <= b) begin
        dir = 1;
    end
    else
        dir = 0;
    end
endmodule
//测试代码
`timescale 1ns/100ps
module testbench;
    logic [15:0] a, b;
    logic equ, dir;
    comp cp (equ, dir, a, b);
    initial begin
        a = 0; b = 0;
        #1 a = 4'b 0010; b = 4'b 0010; // a = 2, b = 4
        #1 a = 4'b 0010;b = 4'b 0100; // a = 4, b = 4
	#1 a = 16'b 1111111111111111; b = 16'b1000000000000000;
        // a = -1, b = -(2^16)
        #1 a = 4'b 0011; b = 4'b 1111;
    end
endmodule**

猜你喜欢

转载自blog.csdn.net/weixin_45039972/article/details/106952376