FPGA加法器实现与资源消耗-半加器

实验平台在vivado2019.1,选择的FPGA板卡为xc7k325Tffg900-1。

从最简单的加法器做起,

半加器( half addr): 是指对输入的两个一位二进制数相加(a与b),输出一个结果位(sum)和进位(c),没有进位的输入加法器电路,是一个实现一位二进制数的加法电路。  

真值表为:

输入输出
absumc
0000
0110
1010
1101

真值表达式为:

sum = a \bigoplus b, c = a & b

那么verilog实现代码为:

`timescale 1ns / 1ps

module half_adder(
    input a,
    input b,
    output sum,
    output c
    );
    assign c = a & b;
    assign sum = a ^ b;
endmodule

仿真测试代码为:

`timescale 1ns / 1ps

module half_adder_tb(
    );
    reg  a;
    reg  b;
    wire out;
    wire c;
    half_adder half_adder1(
        .a(a),
        .b(b),
        .out(out),
        .c(c)
    );
    initial begin
        a = 1;
        b = 1;
        # 10
        $display("a = %d, b = %d, sum = %d, c = %d",a,b,sum,c);
    end
endmodule

功能正确

查看RTL层的原理图

可以看到RTL实现方式:

        与运算直接由与门实现,

        异或由一个比较器+一个选择器实现。

接下来看看综合后的模块需要多少FPGA资源吧。

使用vivado将当前half_adder.v打包成IP。

创建block design

运行综合,查看原理图

可以看到半加器在FPGA上的实现为:由两个2输入1输出的查找表实现

运行实现,查看设备

可以看到最终由两个6输入2输出的LUT实现,这是由于XC7K系列的FPGA的LUT资源就是6输入2输出的,具体可以查看7K系列的数据手册。

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值