文章目录
一、全加器的概念
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=A⨁B;C=A⋅B。
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=Ai⨁Bi⨁Ci−1;Ci=AiBi+Ci−1(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+Ci−1(Ai⨁Bi)
二、项目创建
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板子,很多东西都还不熟悉。