基于Verilog与器件图的1位全加器实现

您所在的位置:网站首页 蓝鲸鱼 基于Verilog与器件图的1位全加器实现

基于Verilog与器件图的1位全加器实现

2023-03-22 09:36| 来源: 网络整理| 查看: 265

目录 1位二进制数全加器Verilog HDL实现原理图实现仿真上板验证扩展:4位全加器实验总结

1位二进制数全加器

1位二进制数全加器是一个具有三个输入端和两个输出端的,能对被加数、加数以及来自低位的进位相加得到“全加和”与“全加进位”。

它的真值表如下:

AiBiCi-1CiSi0000000101010010111010001101101101011111

它的逻辑表达式如下:

Ci = AiBi + Ci-1 ( Ai ^ Bi ) Si = Ai ^ Bi ^ Ci Verilog HDL实现 module exp1_fulladder ( input d1, input d0, input q1, output out, output q ); //按照逻辑表达式输出即可 assign out = d1 ^ d0 ^ q1; assign q = (d1&d0)||(q1&&(d1^d0)); endmodule 原理图实现

在这里插入图片描述

仿真

在这里插入图片描述

从仿真的结果来看,Ci与Si的结果与真值表相符合。

上板验证

我使用的板子是实验室的DE2-115开发板,开发板上面有拨动开关与LED,可以使用三个拨动开关来表示1位全加器的输入,两个LED表示两个输出的高低电平。

以下是板子的拨动开关与LED的引脚:

在这里插入图片描述

在这里插入图片描述

在Quartus里面,配置引脚,将三个输入口与三个Switch开关相连,两个输出口与LED引脚相连:

在这里插入图片描述

将板子接上电源,打开开关,将USB线连接板子与电脑,点击烧录,得到以下现象:

在这里插入图片描述

上板的现象也是与真值表相符合的。

扩展:4位全加器

前面制作了1位全加器,接下来可以使用四个1位全加器,做一个4位全加器。

在这里插入图片描述

将1位全加器的q与q1首尾相连,开头的输入进位接地,最后一个全加器的输出的进位表示是否溢出。按照上图连接,将实现4位全加器,并判断是否溢出。

在这里插入图片描述

使用VerilogHDL语言实现4位全加器的话,原理与上面一样。

代码如下:

module exp1_fulladder_4bits( input [3:0] d1, input [3:0] d0, output [3:0] out, output q ); wire q1; assign q1 = 1'b0; wire [2:0] _q; exp1_fulladder u_exp1_fulladder( .d1 (d1[0]), .d0 (d0[0]), .q1 (q1), .out (out[0]), .q (_q[0]) ); exp1_fulladder u_exp1_fulladder_2( .d1 (d1[1]), .d0 (d0[1]), .q1 (_q[0]), .out (out[1]), .q (_q[1]) ); exp1_fulladder u_exp1_fulladder_3( .d1 (d1[2]), .d0 (d0[2]), .q1 (_q[1]), .out (out[2]), .q (_q[2]) ); exp1_fulladder u_exp1_fulladder_4( .d1 (d1[3]), .d0 (d0[3]), .q1 (_q[2]), .out (out[3]), .q (q) ); endmodule

在这里插入图片描述

这一部分笔者使用的是小脚丫Max10-02SCM系列的芯片做的,引脚分布与上面的板子不一样。但都是控制8位输入(两个4位二进制数)高低电平,然后使用LED表示全加器输出。

四位全加器的实验现象如下:

当输入的数分别为0001与0010,结果为0011,没有溢出,只有最低为两个灯亮:

在这里插入图片描述

当输入的数分别为1001与1100,结果为0101,有溢出,溢出灯亮,第一位与第三位亮:

在这里插入图片描述

实验总结

本次实验使用FPGA制作了全加器,并从1位全加器扩展到了4位。复习了前面学习的数电知识,以及更进一步地练习了verilog语法与fpga的使用。

另外发现,蓝色LED与白色LED的工作功率似乎比红,绿,黄三色的LED大。在接上限流电阻的时候白灯与蓝灯会不亮。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3