基于Quartus-II软件实现一个1位全加器的设计

一、全加器的概念

1.1 半加器

1.1.1何为半加器

半加器电路是指对两个输入数据位相加,输出一个结果位和进位,没有进位输入的加法器电路。 是实现两个一位二进制数的加法运算电路。

1.1.2 原理图
在这里插入图片描述
在这里插入图片描述
1.1.3 实现

半加器不考虑低位向本位的进位,因此它不属于时序逻辑电路,有两个输入端和两个输出。

设加数(输入端)为A、B ;和为S;向高位的进位为Ci+1

逻辑表达式:
S = A ⨁ B ; C = A ⋅ B 。 S=A\bigoplus B;C =A\cdot B。 S=AB;C=AB
1.1.4 输入和输出:

半加器有两个输入和两个输出,输入可以标识为A、B,输出通常标识为求和(Sum)和进位(Carry)。输入经异或(XOR)运算后即为S,经和(AND)运算后即为C。
半加器有两个二进制的输入,其将输入的值相加,并输出结果到和(Sum)和进位(Carry)。半加器虽能产生进位值,但半加器本身并不能处理进位值。

1.1.5 与全加器的区别

半加器没有接收进位的输入端,全加器有进位输入端,在将两个多位二进制数相加时,除了最低位外,每一位都要考虑来自低位的进位,半加器则不用考虑,只需要考虑两个输入端相加即可。

1.2 全加器

1.2.1 概念

全加器英语名称为full-adder,是用门电路实现两个二进制数相加并求出和的组合线路,称为一位全加器。一位全加器可以处理低位进位,并输出本位加法进位。多个一位全加器进行级联可以得到多位全加器。常用二进制四位全加器74LS283。

1.2.2 真值表
一位全加器的真值表如下图,其中Ai为被加数,Bi为加数,相邻低位来的进位数为Ci-1,输出本位和为Si。向相邻高位进位数为Ci 。
在这里插入图片描述
1.2.3 描述
一个全加器的表达式如下:
S i = A i ⨁ B i ⨁ C i − 1 ; C i = A i B i + C i − 1 ( A i + B i ) S_i = A_i \bigoplus B_i \bigoplus C_{i-1}; C_i = A_iB_i +C_{i-1}(A_i+B_i) Si=AiBiCi1;Ci=AiBi+Ci1(Ai+Bi)
第二个表达式也可以用一个异或门来代替或门对其中两个输入信号进行求和:
C i = A i B i + C i − 1 ( A i ⨁ B i ) C_i = A_iB_i + C_{i-1}(A_i \bigoplus B_i) Ci=AiBi+Ci1(AiBi)

二、项目创建

2.1 实验准备

实验软件:Quartus

软件的安装就不多做介绍了,直接开始进行实验。

2.2 工程创建

2.2.1 元件实现1位全加器
2.2.1.1 半加器的创建

2.2.1.1.1 实验半加器元件的创建
在这里插入图片描述
在这里插入图片描述
点击next;
在这里插入图片描述
一直next到Finish就好了。
2.2.1.1.2 创建元件图原理编辑文件,也就是下面这个。
在这里插入图片描述
2.2.1.1.3 开始编辑元件
点击如图所示插头图像,搜索你想要的元件,这里准备编辑半加器,需要的元件分别为and2,xor。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
成品图:
在这里插入图片描述
点击开始编译,当然也可以是这个。
在这里插入图片描述
在这里插入图片描述
2.2.1.1.4 把自己编辑的元件生成后面要用的元件
查看生成元件的模型
在这里插入图片描述
在这里插入图片描述

先把模型图置于最上层
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
重中之重,生成实物元件
如图操作,方可完成
在这里插入图片描述

2.2.1.1.5 创建vmf波形文件进行仿真调试
在这里插入图片描述
在这里插入图片描述
半加器基本就这个造型了。

2.2.1.2 全加器的创建

上面已经讲过创建步骤了,这里直接放图。

在这里插入图片描述
在这里插入图片描述
同理,这个也要进行仿真调试
在这里插入图片描述

2.2.2 使用Verilog生成元件原理图

2.2.2.1 在上述工程中新建一个verilog文件。
在这里插入图片描述
2.2.2.2 输入代码:

module full_adder(
	//输入信号:sin表示被加数,bin表示加数,cin表示低位向高位的进位
	input sin,bin,cin,
	//输出信号:cout表示向高位的进位,sum表示本位的相加和
	output reg cout,sum

);
reg a1,a2,a3;
always @(sin or bin or cin) begin
	sum=(sin^bin)^cin;//本位和输出表达式
	a1=sin&cin;
	a2=bin&cin;
	a3=sin&bin;
	cout=(a1|a2)|a3;//高位进位输出表达式
end
endmodule

在这里插入图片描述
2.2.2.3 创建vmff进行仿真
在这里插入图片描述

三、下载调试

3.1 芯片引脚
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3.2 设置引脚
在这里插入图片描述
3.3 原理图
在这里插入图片描述
调试过程出了点问题。
补充:实际上是由于没有注册软件,仿真下载那一部分无法进行造成无法下载的问题。后来我成功搞定软件之后就可以正常下载了。
下面是下载界面:
在这里插入图片描述

四、小结

第一次使用FPGA板子,很多东西都还不熟悉。

五、资料引用

FPGA——1位全加器的实现

  • 10
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
好的,我会尽力回答你的问题。 首先,我们需要了解的原理。有三个输入和两个输出,它们分别是两个数和一个进位位,输出是一个和值和一个进位位。也有三个输入和两个输出,它们分别是被减数、减数和一个借位位,输出是一个差值和一个借位位。 下面是一个1位的电路图: ![1-bit-full-adder-subtractor](https://i.imgur.com/wlG2QvK.png) 在Quartus-II软件中,我们可以使用VHDL语言来实现这个电路。下面是一个1位的VHDL代码: ```vhdl library ieee; use ieee.std_logic_1164.all; entity full_add_sub is port( a, b : in std_logic; cin, sub : in std_logic; s : out std_logic; cout, bout : out std_logic ); end full_add_sub; architecture Behavioral of full_add_sub is begin process(a, b, cin, sub) begin if sub = '1' then s <= a xor b xor cin; bout <= (not a) and b or ((not a) or b) and cin; cout <= (not s) xor cin; else s <= a xor b xor cin; cout <= a and b or a and cin or b and cin; bout <= (not s) and cin or (a and not b and not cin) or (not a and b and not cin); end if; end process; end Behavioral; ``` 在这个代码中,我们定义了一个名为`full_add_sub`的实体,它有五个输入和两个输出。输入分别是两个数`a`和`b`,一个进位位`cin`,一个减法标志`sub`,输出分别是一个和值`s`和一个进位/借位位`cout`/`bout`。 在实体的体系结构中,我们使用了一个进程来描述电路的行为。进程中的`if`语句根据减法标志`sub`的值来选择进行法还是减法运算。在法运算中,我们按照的原理计算出和值`s`和进位位`cout`;在减法运算中,我们按照的原理计算出差值`s`和借位位`bout`。 最后,我们需要在Quartus-II软件中创建一个新的项目,将这个VHDL代码添到项目中,并进行编译和仿真。在仿真过程中,我们可以输入不同的数、减数和进位/借位位,观察输出结果是否符合预期。如果一切正常,我们可以将这个电路下载到FPGA芯片中,实现一个真实的1位

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值