基础知识
什么是一位全加器,其原理是什么
加器是能够计算低位进位的二进制加法电路
一位全加器由2个半加器组成,其电路原理如图4-2所示
一位全加器(FA)的逻辑表达式为:
S=A⊕B⊕Cin
Co=AB+BCin+ACin
其中A,B为要相加的数,Cin为进位输入;S为和,Co是进位输出;
如果要实现多位加法可以进行级联,就是串起来使用;比如32位+32位,就需要32个全加器;这种级联就是串行结构速度慢,如果要并行快速相加可以用超前进位加法,
超前进位加法前查阅相关资料;
如果将全加器的输入置换成A和B的组合函数Xi和Y(S0…S3控制),然后再将X,Y和进位数通过全加器进行全加,就是ALU的逻辑结构结构。
即 X=f(A,B)
Y=f(A,B)
不同的控制参数可以得到不同的组合函数,因而能够实现多种算术运算和逻辑运算。
表2-1一位全加器的真值表
ADD1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 |
ADD2 |
0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 |
CARRY_OUT |
0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 |
SUM< | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 1 |
一、
1.
2.
3.
二、
由数字电路知识可知,一位全加器可由两个一位半加器与一个或门构成,其原理图如图1所示。该设计利用层次结构描述法,首先设计半加器电路,将其打包为半加器模块;然后在顶层调用半加器模块组成全加器电路;最后将全加器电路编译下载到实验箱,其中a,b,cin信号可采用实验箱上键1、键2和键3进行输入,s,co信号采用D1与D2发光二极管来显示。
图1.1 全加器原理图
三、
1.
在QUARTUSII软件下创建一工程,工程名为full_adder,芯片名为EP 1C3T144,选择FPGA目标器件,根据DE2的平台情况,选择cyclone II系列的EP2C35F672C6,注意工程路径不要放到安装路径;
2.
新建VHDL语言文件,输入如下半加器VHDL语言源程序,并存盘为half_adder.vhd;
library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity half_adder is
end half_adder;
architecture half_adder of half_adder is
signal c,d:std_logic;
begin
end half_adder;
3.
一般先进行功能仿真,再进行时序仿真。为了仿真,首先编辑测试文件。本次实验由于系统简单,采用对输入信号进行输入波形编辑的方法得到激励文件
4.
(1)设置仿真器进行功能仿真:
•
•
•
•
(2)设置仿真器进行时序仿真:
•
•
•
•
5.
6.
由file->new,打开原理图文件,并存盘为full_adder.bdf
在原理图中调用半加器与或门模块,按照图1.1所示连接电路,完成后另保存full_adder。
7.
•
•
8.
实验采用模式5,锁定引脚对照表如下
信号 |
键1 |
键2 |
键3 |
D1 |
D2 |
引脚号 |
1 |
2 |
3 |
11 |
32 |
执行ASSIGNMENT-PINS,设置完成后,执行下载。
下载:采用JATG方式进行下载,通过键1、键2与键3的输入,观察D1,D2的亮灭验证全加器的逻辑功能。(此时,电脑与下载线都要连接到实验箱上,且每次连线都必须先关掉电源)
四、
1.为什么在实验步骤3中,将半加器保存为half_adder,可否保存为full_adder?
答:不能保存为full_adder,因为VHDL语言中,要求程序名与实体名一致,否则会出现错误;而且这个程序是生成半加器模块的程序,统一命名对模块理解也容易得多。
2.对电路进行功能仿真与时序仿真时,发现二者有什么样的区别?
3.为什么要进行引脚锁定?
4.采用层次结构法描述电路有什么样的优点?
全部0条评论
快来发表一下你的评论吧 !