Verilog实验报告

实验五:加法器

无符号加法器

  1. 把加法器的输出信号改成4比特位宽
  2. 代码
module TEST_5(

  IN1   ,

  IN2   ,

  OUT   );

input[3:0] IN1, IN2;

output[3:0] OUT;



reg[3:0] OUT;



always@(IN1 or IN2) begin

OUT = IN1 + IN2;

end

endmodule
  1. 波形仿真

  2. 结论:当正确结果大于15后只能输出正确结果的后4位。
  3. 把加法器的输入信号改成8比特位宽
  4. 代码
module TEST_5(

  IN1   ,

  IN2   ,

  OUT   );

input[7:0] IN1, IN2;

output[5:0] OUT;



reg[5:0] OUT;



always@(IN1 or IN2) begin

OUT = IN1 + IN2;

end

endmodule
  1. 波形仿真

  2. 结论:输出为8bit位宽的无符号加法器没有产生溢位,并且输出为8bit位宽的无符号加法器和输出为4bit位宽的无符号加法器输出延迟时间相差不大。猜测信号输出宽度的大小影响计算结果,但是不会影响信号的延迟时间的长短。

实验六:补码加法器

  1. 把加法器的输出信号改成4比特位宽
  1. 代码
    module TEST_6(
    
      IN1   ,
    
      IN2   ,
    
      OUT   );
    
    input signed [3:0] IN1, IN2;
    
    output signed [3:0] OUT;
    
    
    
    reg signed [3:0] OUT;
    
    
    
    always@(IN1 or IN2) begin
    
      OUT = IN1 + IN2;
    
    end
    
    endmodule

  2. 波形仿真

  3. 结论:只能输出结果的后四位

把加法器的输入信号改成8比特位宽

  1. 代码
    module TEST_6(
    
      IN1   ,
    
      IN2   ,
    
      OUT   );
    
    input signed [7:0] IN1, IN2;
    
    output signed [3:0] OUT;
    
    
    
    reg signed [3:0] OUT;
    
    
    
    always@(IN1 or IN2) begin
    
      OUT = IN1 + IN2;
    
    end
    
    endmodule

波形仿真

实验七:带流水线的加法器

不改变流水线的级数,把加法器的输入信号改成8比特位宽

  1. 代码
    module adder_pipe(
      IN1   ,
      IN2   ,
      CLK1  ,
      CLK2  ,
      OUT   );
    	input  [7:0] IN1, IN2;
    	input CLK1;
    	output  [4:0] OUT;
    	
    	reg [7:0] in1_d1R, in2_d1R;
    	reg  [4:0] adder_out, OUT;
    	
    	always@(posedge CLK1) begin // 生成D触发器的always块
    	  in1_d1R <= IN1;
    in2_d1R <= IN2;
    	  OUT     <= adder_out;
    	end
    	
    	always@(in1_d1R or in2_d1R) begin // 生成组合逻辑的always 块
    	  adder_out = in1_d1R + in2_d1R;
    	end
    endmodule 

  2. 波形仿真

  3. 结论:与不加流水线的加法器相比,带流水线的加法器即在加法器的输入与输出都连接了D触发器,有效的减少了组合逻辑的竞争与冒险,从而明显减少了“毛刺”的长度。

在8比特输入位宽的情况下,在输入上再添加一级流水线

  1. 代码
    module adder_pipe(
    
      IN1   ,
    
      IN2   ,
    
      CLK1  ,
    
      CLK2  ,
    
      OUT   );
    
    input  [7:0] IN1, IN2;
    
    input CLK1,CLK2;
    
    output  [4:0] OUT;
    
    
    
    reg [7:0] in1_d1R, in2_d1R;
    
    reg  [4:0] adder_out, OUT;
    
    
    
    always@(posedge CLK1) begin // 生成D触发器的always块
    
      in1_d1R <= IN1;
    
      OUT     <= adder_out;
    
    end
    
    
    
    always@(posedge CLK2) begin
    
    in2_d1R <= IN2;
    
    end
    
    
    
    always@(in1_d1R or in2_d1R) begin // 生成组合逻辑的always 块
    
      adder_out = in1_d1R + in2_d1R;
    
    end
    
    endmodule

  2. 波形仿真

  3. 结论:流水线的级数越高,毛刺也随之越短,但输出的时延也会相应的对一个时钟周期。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值