EDA课程设计之2位十进制四则运算器电路四则运算器Word格式文档下载.docx

上传人:b****5 文档编号:17770059 上传时间:2022-12-09 格式:DOCX 页数:20 大小:888.48KB
下载 相关 举报
EDA课程设计之2位十进制四则运算器电路四则运算器Word格式文档下载.docx_第1页
第1页 / 共20页
EDA课程设计之2位十进制四则运算器电路四则运算器Word格式文档下载.docx_第2页
第2页 / 共20页
EDA课程设计之2位十进制四则运算器电路四则运算器Word格式文档下载.docx_第3页
第3页 / 共20页
EDA课程设计之2位十进制四则运算器电路四则运算器Word格式文档下载.docx_第4页
第4页 / 共20页
EDA课程设计之2位十进制四则运算器电路四则运算器Word格式文档下载.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

EDA课程设计之2位十进制四则运算器电路四则运算器Word格式文档下载.docx

《EDA课程设计之2位十进制四则运算器电路四则运算器Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《EDA课程设计之2位十进制四则运算器电路四则运算器Word格式文档下载.docx(20页珍藏版)》请在冰豆网上搜索。

EDA课程设计之2位十进制四则运算器电路四则运算器Word格式文档下载.docx

根据功能和指标要求,计算器电路包括三个部分:

显示电路、输入电路和芯片控制电路。

用七段数码管作为显示电路,各作为输入电路,利用程序输入法将计算器所需的程序写入芯片。

模块图如下:

显示电路

芯片控制

输入电路

方案二:

根据计算器的功能要求,计算器电路可包括四个部分:

选用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='

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 辩护词

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1