• 加法器


    使用环境:Quartus II 8.0 + DE2(Cyclone II EP2C35F627C6)

    1、半加器:

    代码:

     

    half_adder
    1 module half_adder(ina,inb,sum_out,carry_out,clk,rst);
    2
    3  input ina;
    4  input inb;
    5  input clk;
    6  input rst;
    7
    8  output sum_out;
    9  output carry_out;
    10
    11  reg sum_out;
    12  reg carry_out;
    13
    14  always @(posedge clk or negedge rst)
    15  begin
    16 if(!rst)
    17 begin
    18 sum_out <= 1'b0;
    19   carry_out <= 1'b0;
    20   end
    21 else
    22 begin
    23 sum_out <= ina^inb;
    24 carry_out <= ina&inb;
    25 end
    26 end
    27 endmodule

    综合后的RTL视图:


    仿真波形图:

      

    小结:半加器最后输出经过了一级D触发器。注意:组合电路要考虑门电路的传输延迟时间,以及由此引起的竞争。

    我们把门电路两个输入信号同时向相反的逻辑电平跳变(一个从1变为0,另一个从0变为1)的现象叫做竞争。消除竞争—冒险现象的方法有

    a、接入滤波电容。b、引入选通脉冲。 c、修改逻辑设计

    2、全加器

    全加器和半加器的区别在于全家器多了一个进位输入端。

    组合逻辑代码:

    full_adder
    1 module full_adder(ina,inb,carry_in,sum_out,carry_out);
    2
    3 input ina;
    4 input inb;
    5 input carry_in;
    6
    7 output sum_out;
    8 output carry_out;
    9
    10 //combinational logic
    11
    12 assign sum_out = (ina^inb)^carry_in;
    13 assign carry_out = (ina&inb)|((ina^inb)&carry_in);
    14
    15 endmodule

    综合后的RTL视图:

    时序逻辑实现代码:

    full_adder_seq
    module half_adder(ina,inb,carry_in,sum_out,carry_out,clk,rst);

    input ina;
    input inb;
    input carry_in;
    input clk;
    input rst;

    output sum_out;
    output carry_out;

    reg sum_out;
    reg carry_out;

    //second method: sequential logic
    always @(posedge clk or negedge rst)
    begin
    if(!rst)
    begin
    sum_out
    <= 1'b0;
    carry_out <= 1'b0;
    end
    else
    begin
    sum_out
    <= (ina^inb)^carry_in;
    carry_out
    <= (ina&inb)|((ina^inb)&carry_in);
    end
    end

    endmodule

    综合后的RTL视图:

    




      


      

  • 相关阅读:
    Android两级嵌套ListView滑动问题的解决
    关于Android适配华为等带有底部虚拟按键的解决方案
    更加成熟的领导力素质和学习敏感度
    完美解决ScollView内嵌ListView的问题
    Gson序列化问题导致的内存溢出,tip:Background sticky concurrent mark sweep GC freed
    从功能实现到实现设计
    iOS面试题汇总
    2017计算机专业大学排名
    Buffer.from()
    Buffer.isBuffer()详解
  • 原文地址:https://www.cnblogs.com/dpc525/p/2049217.html
Copyright © 2020-2023  润新知