八位比較器
module code:
module compare_8bit(equal, a, b);
input [7:0]a, b;
output equal;
reg equal;
always @(a or b)
if(a > b)
equal = 1;
else
equal = 0;
endmodule
always塊中必須要用reg型變量,所以equal申請爲reg型,如果不使用always塊,也可以申請爲wire型,一般來說,模塊的輸出數據的類型設計爲reg類型比較好
wire equal;
assign equal = (a > b);
測試代碼
`timescale 1 ns/ 1 ns
module compare_8bit_vlg_tst();
reg eachvec;
reg [7:0] a;
reg [7:0] b;
wire equal;
compare_8bit i1(
signals/registers
.a(a),
.b(b),
.equal(equal)
);
initial
begin
$display("Running testbench");
a = 8'b0000_0000;
b = 8'b0000_0000;
#100 a = 8'b0011_1100;
#100 b = 8'b0101_1010;
#100 a = 8'b1011_1100;
#100 b = 8'b0101_1010;
#100 $stop;
end
always
begin
@eachvec;
end
endmodule
測試代碼中,equal設計爲wire類型的主要原因是爲了方便測試,一般來講,在數據類型聲明時,和被測模塊的輸入端口相連的信號定義爲reg類型,這樣便於在initial語句和always語句中對其進行賦值,和被測模塊輸出端口相連的信號定義爲wire類型,便於進行檢測