实验三加法器的设计与仿真
一、实验目的
熟悉quartus ⅱ仿真软件的基本操作,用逻辑图和vhdl语言设计加法器并验证。
二、实验内容
1、熟悉quartus ⅱ软件的基本操作,了解各种设计输入
(原理图设计、文本设计、
波形设计)
2、用逻辑图和vhdl语言设计全加器并进行仿真验证;
3、用设计好的全加器组成串行加法器并进行仿真验证;
4、用逻辑图设计4位先行进位全加器并进行仿真验证;
三、实验原理
1. 全加器
全加器英文名称为full-adder,是用门电路实现两个二进制数相加并求出和的组合线路,称为一位全加器。一位全加器可以处理低位进位,并输出本位加法进位。多个一位全加器进行级联可以得到多位全加器。
用途:实现一位全加操作逻辑图
真值表
第 1 页共 7 页
利用与或门设计的全加器,它只能做一位的加法,先预想好它的功能,写出真值表,就可以根据这些来设计电路了。
2.四位串行加法器
逻辑图
利用全加器的组合实现4位串行加法器,全加器只能对一位进行操作,将每一位的结果传给下一位,就可以实现4位的加法器。
3.74283:4位先行进位全加器(4-bit full adder)
利用74283芯片实现的4位先行进位全加器比前两者功能更完善,它可以实现进位功能,这个自己设计难度比较大,可以参照74283的功能表加深对它的理解,
第 2 页共 7 页
按照如下的逻辑图实现进位全加器。
逻辑框图
逻辑功能表
注:1、输入信号和输出信号采用两位对折列表,节省表格占用的空间,如:[a1/a3]对应的列取值相同,结果和值[σ1/σ3]对应的运算是σ1=a1+b1和σ3=a3+b3。请自行验证一下。
2、c2是低两位相加产生的半进位,c4是高两位相加后产生的进位输出,c0是低位级加法器向本级加法器的进位输入。
四、实验方法与步骤
实验方法:
第 3 页共 7 页
采用基于fpga进行数字逻辑电路设计的方法。
采用的软件工具是quartusii软件仿真平台,采用的硬件平台是altera epf10k20ti144_4的fpga试验箱。
实验步骤: ? 全加器
1、编写源代码。打开quartusⅱ软件平台,点击file中得new建立一个文件。编写的文件
名与实体名一致,点击file/save as以“.vhd”为扩展名存盘文件。vhdl设计源代码
如下:
数据流描述:
2、按照实验箱上fpga的芯片名更改编程芯片的设置。点击assign/device,选取芯片的类型,选择“altera的epf10k20ti144_4”
4、波形仿真及验证。在编译成功后,点击waveform开始设计波形。点击“insert the node”,按照程序所述插入节点,设置输入信号的波形,给予适当的信号激励,点击保存按钮保存。然后进行功能仿真,选择菜单processing->generate functional netlist命令产生功能仿真网表,选择菜单assignments-->setting下拉列表中选择simulator input ,在右侧的simulation mode下拉列表中选择functional,完成设置;选择菜单中的processing->start simulation启动功能仿真,然后查看波形
中的结果第 4 页共 7 页
(2)编程下载及硬件测试:将实验板连接都电脑上,选择tools-->programmer命令进入下载窗口,单击start进行下载当process栏中出现100%则下载成功。 ? 4位串行加法器
1、新建一个工程,工程名与文件名相同,将全加器的vhd文件复制到该工程下,在工程中
打开,并产生bsf,以将全加器作为一个子模块在该工程中调用。
2、绘制逻辑图。打开quartusⅱ软件平台,点击file中得new建立一个文件,按照原理中
所述的逻辑图进行连接,点击file/save as以“.bdf”为扩展名存盘文件。 3、进行全编译。
【注】:后面的步骤与全加器相同,这里不再赘述。 ? 4位先行进位全加器
1、绘制逻辑图。打开quartusⅱ软件平台,点击file中得new建立一个文件,按照原理
中所述的逻辑图进行连接,点击file/save as以“.bdf”为扩展名存盘文件。 2、进行全编译。
【注】:后面的步骤与全加器相同,这里不再赘述
五、实验结果与分析
? 全加器 1、编译过程 a)编译过程、调试结果
首先是选择processing-->analyze current file命令进行语法检查
然后选择processing-->start-->start analysis&synthesis命令进行综合分析
b)结果分析及结论:代码的书写、结构及逻辑都是正确的,编译成功。 2、功能仿真 a)功能仿真过程及仿真结果
功能仿真过程:点击processing→generate functional simulation netlist产生仿真网表,点击assignments→settings→simulator settings,在simulation mode下拉选项中选择functional,点击ok。点击processing→start simulation进行功能仿真。
第 5 页共 7 页篇二:加法器数电实验报告三
实验三加法器
一、实验目的
1、掌握用ssi器件实现全加器的方法。
2、掌握用msi组合逻辑器件实现全加器的方法。
3、掌握集成加法器的应用。
二、实验设备及器件
1、数字逻辑电路实验板1块
2、74hc(ls)00(四二输入与非门) 1片
3、74hc(ls)86(四二输入异或门) 1片
4、74hc(ls)153(双四选一数据选择器) 1片
5、74hc(ls)283(4位二进制全加器) 1
片
三、实验原理
组合逻辑电路是数字电路中最常见的逻辑电路之一。组合逻辑电路的特点,就是在任意
时刻电路的输出仅取决于该时刻的输入信号,而与信号作用前电路所处的状态无关。本实验
是根据给定的逻辑功能,设计出实现这些功能的组合逻辑电路。不考虑低位进位,只本位相
加,称半加。实现半加的电路,为半加器。考虑低位进位的加法称为全加。实现全加的电路,
为全加器。实现三个输入变量(一位二进制数)全加运算功能的电路称为1位全加器。实现
多位二进制数相加有串行多位加法和并行多位加法两种形式,其中比较简单的一种电路是采
用多个1位全加器并行相加,逐位进位的方式。实验用器件管脚介绍:
1、74hc(ls)00(四二输入与非门)管脚如下图所示。
2、74hc(ls)86(四二输入异或门)管脚如下图所示。
3、74hc(ls)153(双四选一数据选择器)管脚如下图所示
。
4、74hc(ls)283(4位二进制全加器)管脚如下图所示
。
四、实验内容与步骤
1、用门电路实现全加器(基本命
)
参照表达式si=a i ? bi ?ci ci+1 = ( a i ?bi )ci+a i bi其中为本位和,si 为
低位向本位的进位, ci+1为本位向高位进位,设计用与非门74hc(ls)00及异或门74hc(ls)86
实现1位全加器的实验电路图,搭接电路,用led显示其输出,并记录结果在下表:
1
2、依次由abc输入信号,观察led的工作情况并记录
注意:由于led是低电平有效,当输出0是灯亮,输出1时灯灭.
2、用数选器实现全加器(基本命题)
是否与设计功能一致。
注意:由于led是低电平有效,当输出0是灯亮,输出1时灯灭
3、用全加器实现代码转换电路(扩展命题)
设计用全加器74hc(ls)283实现8421码到余三码转换的实验电路图,搭接电路,用led
显示其输出,并记录结果在下表中。
b.依次由abc输入信号,观察led的工作情况并记录并与实验一中对比看逻辑功能是
否与设计功能一致。
注意:由于led是低电平有效,当输出0是灯亮,输出1时灯灭
五、实验总结
通过本次试验已经掌握门电路器件实现全加器的方法,并对集成加法器的应用有初步了
解,在实验过程中由于需要连接的线比较多,所以要格外小心。在实验一中需要经过反演规
则将异或逻辑表达式反演为或非式。实验二主要是用另一个方法实现全加器,注意数选器的
数据选择规律,输入的被选择项中最小项确定输出项
实验三注意到输入信号的顺序问题和输出信号接入led的顺序,否则信号灯的显示会与
理论不符。这时候不能急,重新确认一下输入和输出的信号是否对应
tips:这次试验学会了很多,首先万用表很万能,要习惯用万用表检测线路其次
做实验的正确方法是先画好电路图,按图接线,最后检测,所以元件问题根本不是问题,就
把他当个开关好了
最后做实验需要小心谨慎,思维敏捷。这个对万事都是准则。篇三:八位加法器的设计
实验报告
八位加法器的设计实验报告
学号: u200915272
班级:信息安全 0901
姓名:方浏洋
日期: 2011-5-2 目录
一、实验概
述 ............................................................................. .......................................... - 2 -
二、设计思
路 ............................................................................. .......................................... - 3 - 2.1 quartusⅱ中74181的功能分
析 ....................................................................... - 3 - 2.2 8位先行加法器的设
计 ............................................................................. ......... - 3 -
2.3 8位行波进位加法器的设
计 ..............................................................................
- 4 -
三、实验内
容 ............................................................................. .......................................... - 5 - 3.1 8位先行加法
器 ............................................................................. ..................... - 5 -
3.2 8位行波加法
器 ............................................................................. ..................... - 7 -
3.3 对先行进位和行波进位的时序分
析 ................................................................. - 9 -
四、
体
会 ............................................................................. ........................................ - 11 - - 1 -
一、实验概述
利用eda软件分别设计一个先行进位和行波进位的8位加法器,分别对它们进行时序分
析,比较先行进位和行波进位在时间上的差异。
eda是电子设计自动化(electronic design automation)的缩写。在eda平台上,设
计者可以用硬件描述语言完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、
综合、优化、布局、布线和仿真,直至对特定目标芯片的适配编译、逻辑映射和编程下载等
工作。利用eda工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作
可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出ic版图或pcb版图
的整个过程的计算机上自动处理完成。
本次实验将利用目前在国内比较流行的eda软件工具quartusⅱ。quartusⅱ是altera
公司提供的fpga/cpld开发集成环境,界面友好,使用便捷,是最易用、易学的eda软件。
在quartusⅱ上可以完成设计输入、元件适配、时序仿真和功能仿真、编程下载整个流程,
它提供了一种与结构无关的设计环境。借助它,设计者能方便地进行设计输入、快速处理和
器件编程。
实验中,我通过原理图输入的方法来设计输入,然后对其进行仿真,验证器件的正确性,
最后对其进行时序分析,比较两种进位加法器在时间上的差异。
- 2 -
二、设计思路
2.1 quartusⅱ中74181的功能分析
要求设计一个8位的加法器,为了方便,我采用了两个74181进行组合来实现8位加法
器的功能。在quartusⅱ中,74181元件的输入输出引脚与书上的略有不同。
图1示出了quartusⅱ的元件库中的74181方框图。
与书上的相比,它的a、b、f、p、g和a=b都是工作于负
操作数,那么,要进行算术加法运算,则s3s2s1s0=hllh,
m=l,cn=h。输入a3n、a2n、a1n、a0n、b3n、b2n、b1n、
b0n得到gn、pn、f0n、f1n、f2n、f3n、cn4。类似于正
操作数的74181,fn=an+bn,cn4的非为进位,gn为进位
产生函数,pn为进位传递函数。 2.2 8位先行加法器的设计
先行进位即高位进位和低位进位同时产生的进位。由于74181内部就是采取的先行进位,
因此,只需考虑两片74181之间的进位关系。
将操作数分成低4位和高4位,利用一片74181提供的低4位的进位传输输出pn和进位
发生输出gn来产生另一片的进位。则进位关系为:
c’=gn+c·pn 式中,c’对应高4位74181的初始进位,c对应低4位74181的初始进位,gn和pn对
应低4位74181的相应引脚。结构框图如下:
- 3 - 图 2 8位先行进位加法器
2.3 8位行波进位加法器的设计
行波进位也就是串行进位,每一位的进位都是由相邻的低位送来。实验中,采取用8个
一位全加器来实现。结构如图3所示:
图 3 8位行波进位加法器
可是,在元件库中没有一位全加器。那就需要先设计一个一位全加器。根据fa的本位和
及进位表达式:
si = ai?bi?ci-1
ci+1=aibi+(bi+ai)ci-1 做出一位全加器的逻辑电路图,通过quartusⅱ来生成元件,方便调用。最后,将
8个fa串行连接起来就成了8位行波进位加法器。
- 4 - 篇四:四位加法器实验报告
四位加法器实验报告
1.实验目的:
掌握组合逻辑电路的基本分析与设计方法;
理解半加器和全加器的工作原理并掌握利用全加器构成不同字长加法器的各种方法;学
习元件例化的方式进行硬件电路设计;
学会利用软件仿真实现对数字电路的逻辑功能进行验证和分析。
2.实验仪器:
数字逻辑实验箱
3.实验内容:
a. 设计实现逐次进位加法器,进行软件仿真并在实验平台上测试。
b. 设计实现超前进位加法器,进行软件仿真并在实验平台上测试。
c.使用vhdl自带加法运算实现一个4位全加器。
4.实验代码:
a. 逐次进位加法器:
library ieee;
use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity fdfa is
port(
a,b:in std_logic_vector(3 downto 0); ci:in std_logic;
s:out std_logic_vector(3 downto 0); co:out std_logic);
end entity; architecture struct of fdfa is port(
a,b,ci:in std_logic;
s,co:out std_logic);
signal c0,c1,c2:std_logic; begin
u0:fadder port map(a(0),b(0),ci,s(0),c0); u1:fadder port map(a(1),b(1),c0,s(1),c1); u2:fadder port map(a(2),b(2),c1,s(2),c2); u3:fadder port map(a(3),b(3),c2,s(3),co); end architecture struct; #定义串行加法器总体接口 #基于一位全加器
library ieee;
use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity fadder is
port(
a,b,ci:in std_logic;
s,co:out std_logic);
end entity; architecture func of fadder is begin
co<=(a and b) or (ci and ( a xor b));
s<=a xor b xor ci;
end architecture func;
b. 超前进位加法器:
library ieee;
use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity lac is
port(
a,b:in std_logic_vector(3 downto 0); ci:in std_logic;
co:out std_logic;
s:out std_logic_vector(3 downto 0) );
end entity;
#定义一位全加器 #定义超前进位加法器总体接口
architecture struct of lac is signal wirep, wireg:std_logic_vector(3 downto 0); signal wirec:std_logic_vector(2 downto 0); port( ); ai,bi:in std_logic; c:in std_logic; si:out std_logic; pi:out
std_logic; gi:out std_logic #基于一位全加器
port( ); ci:in std_logic; p:in std_logic_vector(3 downto 0); g:in
std_logic_vector(3 downto 0); c:out std_logic_vector(3 downto 0) #ker总理进
位传递信号p与进位产生信号g,以及进位信号c begin u0:fadder port
map(ai=>a(0),bi=>b(0),c=>ci,si=>s(0),pi=>wirep(0),gi=>wireg(0)
); u1:fadder port
map(ai=>a(1),bi=>b(1),c=>wirec(0),si=>s(1),pi=>wirep(1),gi=>wi
reg(1)); u2:fadder port
map(ai=>a(2),bi=>b(2),c=>wirec(1),si=>s(2),pi=>wirep(2),gi=>wi
reg(2)); u3:fadder port
map(ai=>a(3),bi=>b(3),c=>wirec(2),si=>s(3),pi=>wirep(3),gi=>wi
reg(3)); l:ker port
map(ci=>ci,p(0)=>wirep(0),p(1)=>wirep(1),p(2)=>wirep(2),p(3)=>wir
ep(3),g(0)=>wireg(0),g(1)=>wireg(1),g(2)=>wireg(2),g(3)=>wireg(3),c(
0)=>wirec(0),c(1)=>wirec(1),c(2)=>wirec(2),c(3)=>co); end architecture struct; library ieee;
use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity fadder is port( ai,bi:in std_logic;
c:in std_logic;
si:out std_logic;
gi:out std_logic
);
end entity; architecture func of fadder is begin
pi<=ai xor bi;
gi<=ai and bi;
si<=ai xor bi xor c;
end architecture func; library ieee;
use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity ker is port( ci:in std_logic;
p:in std_logic_vector(3 downto 0); g:in std_logic_vector(3 downto 0); c:out
std_logic_vector(3 downto 0) ); #定义一位全加器 #定义ker篇五:加法器的基本原理
实验报告
一、实验目的
1、了解加法器的基本原理。掌握组合逻辑电路在quartus ⅱ中的图形输入方法及文本
输入方法。
2、学习和掌握半加器、全加器的工作和设计原理
3、熟悉eda工具quartus ii和modelsim的使用,能够熟练运用vrilog hdl语言在
quartus ii下进行工程开发、调试和仿真。
4、掌握半加器设计方法
5、掌握全加器的工作原理和使用方法
二、实验内容
1、建立一个project。
2、图形输入设计:要求用vhdl结构描述的方法设计一个半加器
3、进行编译,修改错误。
4、建立一个波形文件。(根据真值表)
5、对该vhdl程序进行功能仿真和时序仿真simulation
三、实验步骤
1、启动quartusⅱ
2、建立新工程 new project
3、设定项目保存路径\项目名称\顶层实体名称
4、建立新文件 blok diagram/schematic file
5、保存文件 file /save
6、原理图设计输入
元件符号放置通过edit_>symbol 插入元件或点击图标
元件复制
元件移动
元件转动
元件删除
元件之间连线(直接连接,引线连接)
7、保存原理图
8 、编译:顶层文件设置,project_>set as top_level
编译有两种:全编译包括分析与综合(analysis&synthesis)、适配(fitter)、编程
(assembler)时序分析(classical timing analysis)4个环节,而这4个环节各自对应
相应菜单命令,可单独发布执行也可以分步执行
9 、逻辑符号生成 file\creat/_update_>create symbol file forcurrent file
10 、仿真
建立仿真wenjian
添加需要的输入输出管脚
设置仿真时间
设置栅格的大小
设置输入信号的波形
保存文件,仿真
功能仿真:主要检查逻辑功能是否正确,功能仿真方法如下:
1tool/simulator tool,在simulator mode下选择 functional,在simulation input
栏中指定波形激励文件,单击gencrator functional simulator netist,生成功能仿真网表
文件。
四、实验现象
任务1 : 逻辑符号生成
任务2:采用基本逻辑门电路设计,异或设计半加器
任务3、全加器设计
逻辑符号:
原理图:
结果:
任务4、用半加器,设计全加器
五、实验体会
通过这次实验,初步熟悉了vhdl语言的原理图设计输入。