基于EDA的计算器的设计
摘要:EDA是指利用计算机完成电子系统的设计。在基于EDA的计算器的设计中,主要研究了的是8位二进制数的加减法运算、两个4位二进制数的乘法运算、8位二进制数除以4位二进制数的除法运算以及连续的加减运算的实现方法。本系统选用Altera公司的MAX+PluseⅡ作为硬件开发平台,并采用VHDL语言进行电路设计。在设计的过程中采用的是分模块的设计方法,将计算器分为四个部分:计算部分、存储部分、显示部分和输入部分。计算部分主要有加法器、减法器、乘法器和除法器组成。存储部分需要3个存储器来实现:内部累加器(acc)、输入寄存器(reg)以及结果暂存器(ans)。显示部分由三个7段译码器组成,分别来显示输入数字。输入部分是由0——9十个数字按键、加减乘除四则运算的运算符按键、一个等号按键和一个清零按键组成的,设计所要做的是对按键信息进行译码(将十进制数转换成为二进制数),使其在计算器内部可以使用。
关键词:EDA;计算器;VHDL
摘要 Ⅰ
目次…………………………………………………………………………………………..Ⅲ
术语表 Ⅳ
1 引言 1
1.1 EDA技术 1
1.1.1 EDA技术的涵义 1
1.1.2 EDA技术的发展历程 1
1.1.3 EDA的技术的基本特征和基本工具 1
1.2 VHDL语言 2
1.2.1 VHDL语言的特点 2
1.2.2 VHDL语言设计实体的基本结构 3
1.2.3 VHDL语言的实体 3
1.2.4 VHDL语言的结构体 3
1.2.5 VHDL程序设计约定 4
2 设计规划 5
2.1 基于EDA的计算器的功能 5
2.2 计算器的设计思路 5
2.2.1 计算器的计算部分 5
2.2.2 计算器的存储部分 5
2.2.3 计算器的显示部分 6
2.2.4 计算器的输入部分 6
2.3 系统组成框图 6
3 计算器各模块的设计和实现 7
3.1 基于EDA的计算器计算部分的设计和实现 7
3.1.1 加法器的设计 7
3.1.2 减法器的设计 10
3.1.3 乘法器的设计 12
3.1.4 除法器的设计 13
3.2 计算器计算器输入部分的设计和实现.................17
3.3 计算器显示部分的设计和实现 20
3.4 8位二进制数转换成个位、十位、百位的模块 21
4 计算器的综合设计 25
4.1 整体的程序设计 25
4.2 计算器的仿真波形 26
5 结论 32
参考文献 33
致谢 34
附录 35
术 语 表
说明:术语表是符号、标志、缩略词、首字母缩写、计量单位、术语等的注释说明。
EDA:Electronic Design Automation
FPGA:Field Programmable Gate Array 可编程逻辑器件
VHDL:Very High Speed Intergated Circuit Hardwre Description Lnguage 超高速集成电路硬件描述语言
inclk:时钟信号
acc:内部累加器
reg:输入寄存器
ci:进位输入
co:进位输出
start:开始状态
one:第一次移位状态
two:第二次移位状态
three:正常运算结果的输出状态
error:溢出出错状态
ain:寄存被除数
bin:寄存除数
atem:减法器的被减数输入
stem:寄存运算结果
citem:减法器的借位输入
cotem:减法器的借位输出
reset:异步复位信号
innum:输入的按键向量
outnum:按键动作对应的输出数字
outflag:输出是否有按键动作
indata:7段译码器的输入
outdata:7段译码器的输出
num:数字按键的输入
plus:加法按键的输入
subt:减法按键的输入
mult:乘法按键的输入
mdiv:除法按键的输入
equal:等号按键的输入
c:清零按键的输入
onum1、onum2、onum3:3个7段译码器(其中onum1显示百位,onum2显示十位,onum3显示个位)
viewstep:有限状态机的信号
state:有限状态机的类型的信号
ktemp:暂存显示时的不同的位数
flag:标志是否第一次输入数字
f1:标志是否开始输入第二个数字
keep:存放要显示的数字的暂存器
ans:存放各步计算结果的寄存器
dans:存放除法结果的寄存器
numbuffer:数字输入的缓存
vf:标志是否是最终结果
strdiv:除法计算开始的信号
numclk:将数字从缓存numbuffer放入累加器acc或寄存器reg中
clear:清零信号
inplus:同步的加信号
insubt:同步减信号
inmult:同步乘信号
inmdiv:同步除信号
inequal:同步等于信号
view1、view2、view3:存放各位数字(其中view1用来存放百位,view2用来存放十位,view3用来存放个位)
cou:用来记忆第几次计算的信号
clk_gg:产生分频时钟的信号
clk:分频以后的时钟信号。