EDA课程设计之2位十进制四则运算器电路四则运算器Word格式文档下载.docx
- 文档编号:17770059
- 上传时间:2022-12-09
- 格式:DOCX
- 页数:20
- 大小:888.48KB
EDA课程设计之2位十进制四则运算器电路四则运算器Word格式文档下载.docx
《EDA课程设计之2位十进制四则运算器电路四则运算器Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《EDA课程设计之2位十进制四则运算器电路四则运算器Word格式文档下载.docx(20页珍藏版)》请在冰豆网上搜索。
根据功能和指标要求,计算器电路包括三个部分:
显示电路、输入电路和芯片控制电路。
用七段数码管作为显示电路,各作为输入电路,利用程序输入法将计算器所需的程序写入芯片。
模块图如下:
显示电路
芯片控制
输入电路
方案二:
根据计算器的功能要求,计算器电路可包括四个部分:
选用LED数码管作为显示部分,各按键作为输入部分,运算模块,芯片控制部分。
运算模块
显示模块
输入部分
1.2.3方案的对比选择
从电路清晰程度来说方案二要优于方案一,因为方案二显示结果清楚明了,比用方案一的准确度更高,而且电路分模块来做,更加清晰,连线相对也比较简单。
所以为了得到更好的结果,我所以选择方案二。
1.2.4各功能块的划分和组成
选择模块
计算模块
LED输出
除法
乘法
减法
加法
输入2
输入1
1.2.5系统的工作原理
(1)由于要设计的是四则计算器,可以进行四则运算,
则采用七段数码管显示数据和结果。
(2)另外键盘包括两个十进制数输入键、一个模式选择
键,故只需要3个按键即可。
(3)执行过程:
使能端打开后显为示零,等待键入数值,
当键入两个数字,计算器在内部执行数值转换和存储,并等
待键入模式,当再键入模式后将在数码管上显示运算结果。
第二章单元电路设计
2.1输入模块
工作原理:
利用两个100进制的计数器作为数字的输入,通过外接的按键来控制计数器,从而人为的确定输入的数值。
参数计算:
①一百进制数输出最高是99,故需7个字节才可能将其包含在内,因此cq的宽度[6..0]。
②LED每一位的最高输出为9,故需4个字节才可能将其包含在内,故LED1和LED2的宽度为[3..0]。
2.2加法模块
利用VHDL语言来实现两个2位十进制数的加法,做出一个小加法模块。
又由于其输出结果在0—198之间,故要将此小减法模块将和2个lpmdivide1和2个lpmconstant0相连,从而使得当两个十进制数输入后可以在3个LED数码管上显示最终结果。
①输入最高值是99,需7个字节才可能将其包含在内,因此add_in1和add_in2的宽度[6..0]。
②输出结果最高值为3位数,且要将其显示在LED灯上,则设置3个输出,可利用LPM_CONSTANT取10,将输出的结果2次模10得到百位数、十位数和个位数。
③LED每一位的最高输出为9,故add_out1、add_out2和add_out3的宽度为[3..0]。
2.3减法模块
利用VHDL语言来实现两个2位十进制数的加法,做出一个小减法模块。
又由于其输出结果在-99—99之间,故将此小减法模块将和2个lpmdivide1和2个lpmconstant0相连,从而使得当两个十进制数输入后可以在3个LED数码管上显示最终结果,其中一个LED数码管显示结果的符号,若为负数则符号位出现“F”。
①输入最高值是99,需7个字节才可能将其包含在内,因此sub_in1和sub_in2的宽度[6..0]。
②所得结果最高值为2位数,且要将其显示在LED灯上,则设置2个数值输出,又由于可能出现结果为负数的情况,故又设一个符号位输出。
可利用LPM_CONSTANT取10,将输出的结果2次模10得到十位数和个位数。
③LED每一位的最高输出为9,故sub_out1和sub_out2的宽度为[3..0]。
2.4乘法模块
乘法运算可以直接调用LPM_MULT的模块来实现乘法运算。
又由于其输出结果在0—9801之间,故要将此模块和4个lpmdivide1和4个lpmconstant0相连,从而使得当两个十进制数输入后可以在4个LED数码管上显示最终结果。
①输入最高值是99,需7个字节才可能将其包含在内,因此dataa和datab的宽度[6..0]。
②所得结果最高值为4位数,且要将其显示在LED灯上,则设置4个数值输出,可利用LPM_CONSTANT取10,将输出的结果4次模10得到千位数、百位数、十位数和个位数。
③LED每一位的最高输出为9,故out_mult1、out_mult2、out_mult3和out_mult4的宽度为[3..0]。
2.5除法模块
除法运算可以直接调用LPM_DIVIDE的模块来实现除法运算。
又由于其输出结果在0—99之间,故要将此模块和2个lpmdivide1和2个lpmconstant0相连,可利用LPM_CONSTANT取10,将输出的结果2次模10得到十位数和个位数。
①输入最高值是99,需7个字节才可能将其包含在内,因此div_in1和div_in1的宽度[6..0]。
②所得结果最高值为2位数,且要将其显示在LED灯上,则设置2个数值输出,可利用LPM_CONSTANT取10,将输出的结果2次模10得到商的十位数和个位数。
③LED每一位的最高输出为9,故div_out1和div_out2的宽度为[3..0]。
2.6模式选择模块
由于要在加、减、乘、除四个模式中选择一个进行计算,所以可利用一个四选一的数据选择器来作为模式选择器,通过一个时钟信号来改变改变数据选择器从而控制模式选择。
2.7输出模块
将加、减、乘、除各个模块的输出和模式选择的输出作为输入,以模式选择的输入作为控制信号来控制结果的输出。
该模块的各项输入是由其他模块的输出来决定的,故此模块的参数要和之前的模块参数一一对应。
第三章软件设计
3.1软件设计平台、开发工具和实现方法
在QuartusII平台中用VHDL语言编写各个模块所需要的程序或者调用QuartusII中原有的模块并利用原理图设计方法完成整个设计,借助EDA实验箱进行实验程序的调试和检测。
开始
3.2程序的流程方框图
EN=1,RST=0
输入数1及数2
输入模式
Y
加法运算
加法运算?
N
减法运算
减法运算?
乘法运算
乘法运算?
除法运算?
除法运算
输出
3.3实现的功能及程序清单
3.3.1百进制计数器
功能:
作为两个2位的十进制数的输入
程序:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitycnt99is
port(clk,rst,en:
instd_logic;
cq:
bufferstd_logic_vector(6downto0);
LED1:
outstd_logic_vector(3downto0);
LED2:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
cout:
outstd_logic);
endcnt99;
architecturebehavofcnt99is
begin
process(clk,rst,en)
variablecqi:
std_logic_vector(3downto0);
variablecqii:
std_logic_vector(6downto0);
variablehi:
ifrst='
1'
thencqi:
=(others=>
'
0'
);
hi:
elsifclk'
eventandclk='
then
ifen='
ifhi<
9then
ifcqi<
9thencqi:
=cqi+1;
elsecqi:
=(others=>
hi:
=hi+1;
endif;
elsehi:
endif;
ifcqii<
99thencqii:
=cqii+1;
elsecqii:
endif;
endif;
endif;
if(cqi=9andhi=9)thencout<
='
;
elsecout<
cq<
=cqii;
LED1<
=hi;
LED2<
=cqi;
endprocess;
endbehav;
3.3.2四选一数据选择器
功能:
选择运算模式
程序:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYjinzhi4IS
PORT(CLK,RST,EN:
INSTD_LOGIC;
CQ:
OUTSTD_LOGIC_VECTOR(1DOWNTO0);
COUT:
OUTSTD_LOGIC);
ENDjinzhi4;
ARCHITECTUREbehavOFjinzhi4IS
BEGIN
PROCESS(CLK,RST,EN)
VARIABLECQI:
STD_LOGIC_VECTOR(1DOWNTO0);
BEGIN
IFRST='
THENCQI:
=(OTHERS=>
);
ELSIFCLK'
EVENTANDCLK='
THEN
IFEN='
CQI:
=CQI+1;
ENDIF;
IFCQI=0THENCOUT<
='
ELSECOUT<
CQ<
=CQI;
ENDPROCESS;
ENDbehav;
3.3.3加法模块:
功能:
进行加运算
原理图:
3.3.4减法模块
进行减法运算
原理图:
3.3.5乘法模块
进行乘法运算
3.3.6除法模块
进行除法运算
3.3.7输出模块
控制输出结果
LIBRARYIEEE;
ENTITYsize_modIS
PORT(mod_sel:
INSTD_LOGIC_vector(1downto0);
add_out1:
INSTD_LOGIC_vector(3downto0);
add_out2:
add_out3:
flag:
sub_out1:
sub_out2:
mul_out1:
mul_out2:
mul_out3:
mul_out4:
div_out1:
div_out2:
outmod:
outstd_logic_vector(3downto0);
outLED1:
outSTD_LOGIC_vector(3downto0);
outLED2:
outLED3:
outLED4:
outSTD_LOGIC_vector(3downto0));
ENDsize_mod;
ARCHITECTUREbhvOFsize_modIS
process(mod_sel)
begin
casemod_selis
when"
00"
=>
outmod<
="
1000"
outLED1<
'
outLED2<
=add_out1(3downto0);
outLED3<
=add_out2;
outLED4<
=add_out3;
01"
0100"
(notflag));
=sub_out1(3downto0);
=sub_out2;
10"
0010"
=mul_out1(3downto0);
=mul_out2;
=mul_out3;
=mul_out4;
whenothers=>
0001"
=div_out1(3downto0);
=div_out2;
endcase;
endprocess;
endbhv;
第四章系统测试
4.1功能的测试方法、步骤
软件部分:
1、将写好的的程序先进行编译
2、编译通过后,利用波形仿真来观察结果是否正确。
3、采用模式5进行分配管脚后,再进行编译
4、将编译通过的程序下载到EDA实验箱上进行硬件验证。
硬件部分
1、选择模式5进行测试
2、利用多邦线将en接vcc,rst接gnd
3、根据管脚的分配(键1—clk1、键2—clk2,键3—clk3),按键1和键2来改变输入值,按键3改变运算模式。
比如:
当按键1和键2输入38和47,则可在数码管上显示85,按键3改变加法、减法、乘法、除法模式。
当模式为减法时,其结果为“F9”;
当模式为乘法时,其结果为1786;
当模式为除法模式时,其结果为0.
4.2仪器设备
EDA技术实验箱
PC机(带有quartus软件)
第五章结论
本次设计完成了设计的基本要求,即随机输入两个2位数,可进行该两个数的四则运算并且输出相应的结果。
同时也掌握了用VHDL语言来设计四则运算的基本要求,加深了对软件的了解。
参考文献
潘松,黄继业.EDA技术与VHDL语言.第三版.北京:
清华大学出版社.2011.
附录A电路图图纸
总系统电路图纸
乘法模块电路图除法模块电路图
加法模块电路图
减法模块电路图
附录B软件程序
小加法模块程序:
entitycal4_addis
port(add_in1,add_in2:
instd_logic_vector(6downto0);
add_out:
outstd_logic_vector(7downto0));
endentitycal4_add;
architecturebehofcal4_addis
signala1:
std_logic_vector(7downto0);
signala2:
signala3:
process(add_in1,add_in2)
a1<
&
add_in1;
a2<
add_in2;
a3<
=a2+a1;
add_out<
=a3;
endarchitecturebeh;
小减法模块程序:
entitysize_subis
port(sub_in1,sub_in2:
flag:
outstd_logic;
sub_out:
outstd_logic_vector(6downto0));
endentitysize_sub;
architecturebehofsize_subis
process(sub_in1,sub_in2)
begin
ifsub_in1>
sub_in2then
flag<
sub_out<
=sub_in1-sub_in2;
else
=sub_in2-sub_in1;
百进制计数器程序:
四选一选择器程序:
THENIFEN='
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 课程设计 十进制 四则 运算器 电路