数字电路与逻辑设计——加法器实现
数字电路与逻辑设计——加法器的实现
- 一、实验目的
- 二、实验内容
- 三、实验方法
- 1、 实验方法
- 2、 实验步骤
- 四、实验过程
- (一)4位并行加法器
- 1、 编译过程
- 2、 波形仿真
- 3、 时序仿真
- (二) 四位串行加法器
- 1、 编译过程
- 2、 波形仿真
- 3、 时序仿真
- (三)模型机运算器ALU
- 1、 编译过程
- 2、 波形仿真
- 3、 时序仿真
- (四) 移位逻辑
- 1、 编译过程
- 2、 波形仿真
- 3、 时序仿真
- 五、实验结论
代码仅供参考:
链接:pan.baidu.com/s/1VekND1K50yclOKdkSI-otw
up1k
一、实验目的
- 了解运算器的内部结构。
- 熟悉并行加法器和串行加法器的工作原理。
- 分析模型机的功能,设计 ALU 和移位逻
二、实验内容
- 用 VHDL 语言设计4 位并行加法器;
- 用 VHDL 语言设计 4 位串行加法器;
- 用 VHDL 语言设计模型机运算器 ALU;
- 用 VHDL 语言设计移位逻辑。
三、实验方法
1、 实验方法
采用基于FPGA进行数字逻辑电路设计的方法。
采用的软件工具是Quartus II。
2、 实验步骤
(四个文件过程相似,以4位并行加法器为例)
① 新建三个工程,编写源代码。
(1).选择保存项和芯片类型:【File】-【new project wizard】-【next】(设置文件路径+设置project name为Parallel_adder)-【next】(设置文件名Parallel_adder.vhd—在【add】)-【properties】(type=AHDL)-【next】(family=FLEX10K;name=EPF10K10TI144-4)-【next】-【finish】
(2).新建:【file】-【new】(第二个AHDL File)-【OK】
② 写好源代码,保存文件(Parallel_adder.vhd)。
③ 编译与调试。确定源代码文件为当前工程文件,点击【processing】-【start compilation】进行文件编译,编译成功。
④ 波形仿真及验证。新建一个vector waveform file。按照程序所述插入a,b,c三个节点(a、b为输入节点,c为输出节点)。(操作为:右击 -【insert】-【insert node or bus】-【node finder】(pins=all;【list】)-【>>】-【ok】-【ok】)。任意设置a,b的输入波形…点击保存按钮保存。(操作为:点击name(如:a))-右击-【value】-【Random】(如设置Every grid interval),同理设置name b(Every grid interval),保存)。然后【start simulation】,出name sum和name Cout的输出图。
⑤ 时序仿真或功能仿真。
⑥ 查看RTL Viewer:【Tools】-【netlist viewer】-【RTL viewer】。
四、实验过程
(一)4位并行加法器
1、 编译过程
a. 源代码如图(VHDL设计)
b. 编译、调试过程
无错误信息,编译通过。
c. RTL视图
d. 结果分析及结论
实现4位并行加法器需要四个全加器来同步进行,设计较为简单,速度也较快,但是门输入成本较高。只需定义一个加法器后在四次调用,将前一位的进位输出当作下一位的进位输入,第一位的进位输入为0,最后整个电路的进位输出是最后一位全加器的进位输出。
2、 波形仿真
a. 波形仿真过程(详见实验步骤)
b. 波形仿真波形图
c. 结果分析及结论
0-10ns:a=0110,b=1001,Cin=0,a+b=sum=1111,Cout=0,结果正确;
10-20ns:a=0111,b=1010,Cin=1,a+b=sum=0010,Cout=1,结果正确;
20-30ns:a=1000,b=1011,Cin=0,a+b=sum=0011,Cout=1,结果正确;
30-40ns:a=1001,b=1100,Cin=1,a+b=sum=0110,Cout=1,结果正确;
3、 时序仿真
a. 时序仿真过程
做好上述步骤后,编译【classic timing analysis】-在compilation report中选择【timing analysis】-【tpd】(引脚到引脚的延时)
b. 时序仿真图
c. 结果分析及结论
由a(1)引脚到sum(3)引脚所需时间最长为10.409ns,由于总体时间由最长时间决定,因此总体时间为10.409ns。
tpd (引脚到引脚的延时)
(二) 四位串行加法器
1、 编译过程
a. 源代码如图(VHDL设计)
b. 编译、调试过程
无编译错误。
c. RTL视图
d. 结果分析及结论
串行加法器的实现较为困难,只用两个寄存器与一个触发器和一个全加器可完成任意位的加法计算,其中A寄存器用来存放全加器计算得到的结果,但其没有外部输入,因此要在A中存放加数需要先将A寄存器复位,再输入加数与被加数(共8位)到B中,在输入后四位时前四位会经过全加器到达寄存器A,这样在第8个时钟上延完成加数与被加数的存放工作,接着第9到第12个时钟上延将A中与B中的四位二进制数从低向高位依次进入全加器进行运算,最后都回到寄存器A,此时将A中的二进制数作为输出即为运算结果。
2、 波形仿真
a. 波形仿真过程(详见实验步骤)
b. 波形仿真波形图
c. 结果分析及结论
前四个CLK上延为存储第一个加数(在A寄存器中),其值为:1111
后四个CLK上延为存储第二个加数(在B寄存器中),其值为:0011
两个值运算结果应为:10010
第9-12个CLK上延为运算过程,第12个时钟上延结果out1为:0010,进位C为1,结果正确。
3、 时序仿真
a. 时序仿真过程
做好上述步骤后,编译【classic timing analysis】-在compilation report中选择【timing analysis】
b. 时序仿真图
c. 结果分析及结论
由于电路中有时序电路部分,因此没有tpd,全局时钟的建立时间Tsu为1.592ns,在时钟上跳沿后,信号必须保持的最小时间Th为-1.312ns,时钟上升沿与输出端(Q端)数据稳定输出的时间差Tco为8.481ns。
(三)模型机运算器ALU
1、 编译过程
a. 源代码如图(VHDL设计)
b. 编译、调试过程
无错误信息。
c. RTL视图
逻辑符号:
d. 结果分析及结论
由 R2 的编码通过 RAA1、RAA0 从通用寄存器组 A 口读出 R2 的内容,由R1 的编码通过 RWBA1、RWBA0 从通用寄存器组 B 口读出 R1 的内容,在 S3~S0 和 M 的控制下,实现运算,经移位逻辑送入总线 BUS;由/WE 控制和 R1编码选择 RWBA1、RWBA0,将 BUS 上的数据写入通用寄存器 R1。其中 ADD和 SUB 指令影响状态位 Cf和 Zf。
ALU 根据 S3-S1 和 M 控制信号需要实现 ADD、SUB、OR、NOT 运算,并产生状态位 Cf和 Zf。另外,ALU 在 MOVA、MOVB、RSR 和 RSL 四条指令执行时,提供将数据传输至 BUS 总线的通
2、 波形仿真
a. 波形仿真过程(详见实验步骤)
b. 波形仿真波形图
c. 结果分析及结论
50-60ns:选择信号S=0101,进行NOT运算,B=00100011,输出T=11011100,结果正确;
60-70ns:选择信号S=0110,进行SUB运算,B=01000010,A=00011111,输出T=00100011,结果正确;
90-100ns:选择信号S=1001,进行ADD运算,B=01000000,A=10110111,输出T=11110111,结果正确;
110-120ns:选择信号S=1011,进行OR运算,B=01011101,A=10111000,输出T=11111101,结果正确;
3、 时序仿真
a. 时序仿真过程
做好上述步骤后,编译【classic timing analysis】-在compilation report中选择【timing analysis】-【tpd】(引脚到引脚的延时)
b. 时序仿真图
c. 结果分析及结论
S(3)引脚到T(1)引脚的实际p2p时间最长且为12.333ns,故整体为12.333ns。
tpd (引脚到引脚的延时)
(四) 移位逻辑
1、 编译过程
a. 源代码如图(VHDL设计)
b. 编译、调试过程
无错误信息。
c. RTL视图
逻辑符号:
d. 结果分析及结论
由 R1 的编码通过 RWBA1、RWBA0 从通用寄存器组 B 口读出 R1 的内容,在 S3~S0 和 M 的控制下通过 ALU,经移位逻辑循环右移或循环左移后送入总线 BUS;再由/WE 控制和 R1 的编码选择 RWBA1、RWBA0,将 BUS 上的数据写入通用寄存器 R1。
移位逻辑需要实现 RSR、RSL 操作,还需提供 MOVA、MOVB、ADD、SUB、OR、NOT 指令执行时,将数据传输至 BUS 总线的通路。
2、 波形仿真
a. 波形仿真过程(详见实验步骤)
b. 波形仿真波形图
c. 结果分析及结论
15-20ns:F_BUS=1、FL_BUS=0、FR_BUS=0,不进行移位操作,输入a=00111110,输出w=00111110,C=0,结果正确;
20-25ns:F_BUS=0、FL_BUS=1、FR_BUS=0,进行左移操作,输入a=00111111,输出w=01111110,C=0,结果正确;
50-55ns:F_BUS=0、FL_BUS=0、FR_BUS=1,进行右移操作,输入a=01000010,输出w=00100001,C=0,结果正确;
3、 时序仿真
a. 时序仿真过程
做好上述步骤后,编译【classic timing analysis】-在compilation report中选择【timing analysis】-【tpd】(引脚到引脚的延时)
b. 时序仿真图
c. 结果分析及结论
FL_BUS引脚到w(5)引脚的实际p2p时间最长且为10.591ns,故整体为10.591ns。
tpd (引脚到引脚的延时)
五、实验结论
做第二个实验的时候遇到了许多困难,包括加数与被加入如何加入到两个寄存器中、如何输出、如何将各个部件连接起来等等,经过两天的学习和与同学们的交流终于还是弄懂了一整个过程并完整的将书上的串行加法器转化为了VHDL程序。第一次接触到这种时序电路真的有一些懵懂,但我相信有了这次实验的基础下次再做时序电路的时候能够更加熟练。第一个并行加法器比较简单,仅需要用四个全加器简单的连接即可完成,运行速度也较快,但是碍于其庞大的门输入成本,这种加法器似乎并不常用于工业生产。第三个跟第四个实验还是CPU设计的一部分,需要考虑各种控制信号的情况,但总体还是比较简单的,只要搞清楚控制指令与它们对应的功能即可。
数字电路与逻辑设计——加法器实现相关推荐
- 数字电路与逻辑设计笔记
数字电路与逻辑设计笔记 变量和常量的关系式 根据真值表写表达式 以真值表内输出端"1"为准 第一步:从真值表内找输出端为"1"的各行,把每行的输入变量写成乘积形 ...
- 数字电路与逻辑设计(重邮集成电路考研专业课)
第一章 1. 考纲要求 掌握二进制.八进制.十进制.十六进制及其转换方法,掌握常用编码及其表示十进制数的方法,掌握逻辑代数的逻辑运算.公式和规则,掌握逻辑函数及其表示方法,掌握逻辑函数的化简方法. 2 ...
- 数字电路与逻辑设计笔记1
第一章 基础知识 1.1 数字信号与系统 1.11数字信号与系统 模拟信号:信号的变化在时间和数值上都是***连续的*** 离散信号:信号的变化在时间和数值上都是***离散的*** 数字信号:离散信号 ...
- 数字电路与逻辑设计 学习笔记【进制转换】
0.1近代开关理论:Relay-contact Network Theory: 继电-触点网络理论. 0.2,脉冲信号与数字信号, 模拟量->模拟信号:正弦信号.脉冲信号->脉冲电路 数字 ...
- 实验二 多路复用器的实现-数字电路与逻辑设计-湖南大学课程实验
因为CSDN传文档内的大量图片排版太麻烦了,所以直接上整个文档导出图,随便吧,反正只是备份存个档,也没什么人看. 下面是没有图片的文字部分,只是方便索引,没有排版 实验二 多路复用器的实现 班级 姓名 ...
- 数字电路与逻辑设计——模型机时序部件的实现
模型机时序部件的实现 一.实验目的 二.实验内容 三.实验方法 (一)实验方法 (二)实验步骤 四.实验过程 A. SM B. 指令计数器PC C. 通用寄存器组 D. RAM 五.实验结论 代码仅供 ...
- 湖南大学数字电路与逻辑设计实验(含CPU设计)
数电的大作业CPU设计或许是我做的最认真的一次实验了,历经三个鏖战到凌晨三点的深夜才最终完成,我应该是最早做完的. 导致的就是被无数人问问题,最后被问到发烧(捂脸). 写得不是很好,但至少是在没有人可 ...
- 模型机综合设计-数字电路与逻辑设计-湖南大学课程实验
- 西电数字电路与逻辑设计手写笔记
- 《数字逻辑设计与计算机组成》一3.3 加法器
3.3 加法器 n位整数加法器输入两个n位数值和一个可选的输入进位(cin)来产生一个n位的和及最后进位输出(cout).如图3-3所示,从右(例如最低有效位)开始,两位和先前的进位相加产生一个和及一 ...
最新文章
- [布局] bootstrap基本标签总结
- 发布【规模化产品开发方法-产品线工程.pdf】
- .sync 修饰符的理解
- java中手动装入新类到类装饰器_关于java:抽象装饰器类中的功能而不是装饰器...
- [W3C][CSS]选择器(Selectors Level 3)[未完成]
- [UE4]编辑器偏好设置,在同一个窗口以标签打开蓝图
- [Ubuntu] fg、bg让你的进程在前后台之间切换
- Linux下如何使用搜狗词库
- csdn笔记怎么用看这里
- 入门Struts1第一讲——Struts1入门就这么简单
- ios textView输入框光标问题
- 计算机专业网页设计周志,毕业论文(设计)周志范文.doc
- 字符串匹配算法之Aho-Corasick
- 为什么要通过w3c验证.
- html空格语言,HTML中如何键入空格
- 实战小项目——基于STM32的蓝牙小车
- 小米电视看普通电视台,只需几步就能轻松解锁
- .NET ASP.NET 页生命周期概述
- 人脸识别之人脸关键点(仅供本人参考)
- 下班前几分钟,我彻底弄懂了并查集
热门文章
- 社团管理系统数据流图_实例6:社团管理系统数据库设计
- 基于python酒店管理系统设计与实现.zip(论文+项目源码)
- 红帽linux系统解压,linux redhat 红帽 centos 压缩 解压缩
- 计算机主板的电路,电脑主板电路图全).pdf
- python 图标字体_使用nerd-font/font-patcher为字体添加字体图标
- 电力线载波 Prime PLC 通讯技术简介
- java运行方法_java程序怎么运行?java程序运行方法
- 《单片机原理与接口技术》期中测评
- 《数字电子技术基础》6.3 时序逻辑电路——寄存器、计数器及脉冲发生器功能介绍
- 笔记本 续航测试软件,PCMark 10新增续航、办公测试:考验笔记本电池