1. 程式人生 > >考慮溢位和進位的4位全加器_Verilog程式碼及測試檔案

考慮溢位和進位的4位全加器_Verilog程式碼及測試檔案

考慮溢位的4位全加器的Verilog程式碼:

程式碼檔案:

//4位全加器_行為描述語言
module adder4(
         input wire [3:0] a,
		 input wire [3:0] b,
		 output reg [3:0] s,
		 output reg cf,
		 output reg ovf
		 );
	     reg [4:0] temp;
	always @(*)
	  begin
	     temp={1'b0,a}+{1'b0,b};
		 s=temp[3:0];
		 cf=temp[4];
		 ovf=a[3]^b[3]^s[3]^cf;
	  end
endmodule

測試檔案程式碼:

//全加器測試平臺
module adder4_tb;
         reg [3:0] a;
		 reg [3:0] b;
		 wire [3:0] s;
		 wire cf;
		 wire ovf;
	
	adder4 uut(
	          .a(a),
			  .b(b),
			  .s(s),
			  .cf(cf),
			  .ovf(ovf)
			  );
	initial 
        begin 
	    a=4'b0000;
		b=4'b0001;
		end   
        always #2    
          begin  
          a[0]=~a[0];  
          end  
        always #4   
          begin  
          a[1]=~a[1];  
		  b[0]=~b[0];
          end  
        always #6    
          begin  
          a[2]=~a[2];
		  b[1]=~b[1];
          end  
        always #8   
          begin  
          a[3]=~a[3];
          b[2]=~b[2];
          end  
		always #10
		 begin 
		 b[3]=~b[3];
		 end
endmodule 

激勵是隨便加的,沒有經過評估,不一定能出現全部情況,只是為了說明問題。

modelsim模擬結果: