[verilog] 八位比較器

八位比較器

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類型,便於進行檢測

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章