上一篇文章有朋友在评论区指出了一些小错误,专门改正了重新发一下,感谢这位朋友。
我也只是刚刚入门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**