1、精品eda课程设计之2位十进制四则运算器电路四则运算器x【关键字】精品电子设计自动化课程设计题目: 2位十进制四则运算器电路 院(系) 信息科学与工程学院 专 业 通信工程 届 别 2011级 班 级 学 号 姓 名 任课老师 彭盛亮 摘要本设计是利用EDA技术实现的2位十进制四则运算器,是基于QuartusII7.2软件,利用其强大、直观、便捷和操作灵活的原理图输入设计的功能来完成本次设计的。此设计利用QuartusII7.2中的EP2C5T144C8芯片来控制整个程序的运行,用七段数码管显示各个输入和输出,用LED灯的亮灭来显示运算模式,而软件部分则是由VHDL语言来编写的,是通过精心的设
2、计和合理的规划而完成的设计。设计完成后的运算器不仅能实现数据的加减乘除运算,而且还能使数据及其计算结果在数码管上显示出来,能够实现0-99的十进制数字四则运算。第一章 系统设计 11.1设计要求 11.2系统设计方案 1 第一章 系统设计1.1设计要求输入两个2位十进制数(099),输出它们的四则运算(加减乘除)结果;发光二极管显示运算模式;可调用LPM_MULT及LPM_DIVIDE模块。 1.2系统设计方案 通过分析可知,要完成本次课程设计可以分为三个模块来实现相应的功能,分别是输入模块、计算模块以及输出模块。其中各个模块的任务要求为: * 输入模块:输入两个2位十进制数以及运算模式的选择
3、 * 计算模块:根据输入模块的选择完成相应的运算过程 * 输出模块:输出各个输入及计算结果方案一:根据功能和指标要求,计算器电路包括三个部分:显示电 路、输入电路和芯片控制电路。用七段数码管作为显示电路,各作为输入电路,利用程序输入法将计算器所需的程 序写入芯片。模块图如下:方案二: 根据计算器的功能要求,计算器电路可包括四个部分:选用LED数码管作为显示部分,各按键作为输入部分,运算模块,芯片控制部分。模块图如下: 1.2.3 方案的对比选择 从电路清晰程度来说方案二要优于方案一,因为方案二显示结果清楚明了,比用方案一的准确度更高,而且电路分模块来做,更加清晰,连线相对也比较简单。所以为了得
4、到更好的结果,我所以选择方案二。 计算模块 1.2.5 系统的工作原理 (1)由于要设计的是四则计算器,可以进行四则运算, 则采用七段数码管显示数据和结果。 (2)另外键盘包括两个十进制数输入键、一个模式选择键,故只需要3个按键即可。 (3)执行过程:使能端打开后显为示零,等待键入数值,当键入两个数字,计算器在内部执行数值转换和存储,并等待键入模式,当再键入模式后将在数码管上显示运算结果。第二章 单元电路设计2.1 输入模块工作原理: 利用两个100进制的计数器作为数字的输入,通过外接的按键来控制计数器,从而人为的确定输入的数值。 参数计算:一百进制数输出最高是99,故需7个字节才可能将其包含
5、在内,因此cq的宽度6.0。 LED每一位的最高输出为9,故需4个字节才可能将其包含在内,故LED1和LED2的宽度为3.0。2.2加法模块 工作原理:利用VHDL语言来实现两个2位十进制数的加法,做出一个小加法模块。又由于其输出结果在0198之间,故要将此小减法模块将和2个lpm divide1和2个lpm constant0相连,从而使得当两个十进制数输入后可以在3个LED数码管上显示最终结果。 参数计算:输入最高值是99,需7个字节才可能将其包含在内,因此add_in1和add_in2的宽度6.0。输出结果最高值为3位数,且要将其显示在LED灯上,则设置3个输出,可利用LPM_CONST
6、ANT取10,将输出的结果2次模10得到百位数、十位数和个位数。 LED每一位的最高输出为9,故add_out1、add_out2和add_out3的宽度为3.0。2.3减法模块工作原理: 利用VHDL语言来实现两个2位十进制数的加法,做出一个小减法模块。又由于其输出结果在-9999之间,故将此小减法模块将和2个lpm divide1和2个lpm constant0相连,从而使得当两个十进制数输入后可以在3个LED数码管上显示最终结果,其中一个LED数码管显示结果的符号,若为负数则符号位出现“F”。 参数计算:输入最高值是99,需7个字节才可能将其包含在内,因此sub_in1和sub_in2的
7、宽度6.0。所得结果最高值为2位数,且要将其显示在LED灯上,则设置2个数值输出,又由于可能出现结果为负数的情况,故又设一个符号位输出。可利用LPM_CONSTANT取10,将输出的结果2次模10得到十位数和个位数。 LED每一位的最高输出为9,故sub_out1和sub_out2的宽度为3.0。2.4乘法模块工作原理: 乘法运算可以直接调用LPM_MULT的模块来实现乘法运算。又由于其输出结果在09801之间,故要将此模块和4个lpm divide1和4个lpm constant0相连,从而使得当两个十进制数输入后可以在4个LED数码管上显示最终结果。 参数计算:输入最高值是99,需7个字节
8、才可能将其包含在内,因此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的模块来实现除法运算。又由于其输出结果在099之间,故要将此模块和2个lpm divide1和2个lpm constant0相连,可利用LPM_CONSTANT取10,将输出的结果
9、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输出模块工作原理: 将加、减、乘、
10、除各个模块的输出和模式选择的输出作为输入,以模式选择的输入作为控制信号来控制结果的输出。 参数计算: 该模块的各项输入是由其他模块的输出来决定的,故此模块的参数要和之前的模块参数一一对应。第三章 软件设计 3.1 软件设计平台、开发工具和实现方法 在Quartus平台中用VHDL语言编写各个模块所需要的程序或者调用Quartus II中原有的模块并利用原理图设计方法完成整个设计,借助EDA实验箱进行实验程序的调试和检测。3.2程序的流程方框图EN=1,RST=0 3.3实现的功能及程序清单功能:作为两个2位的十进制数的输入程序:library ieee;use ieee.std_logic_1
11、164.all;use ieee.std_logic_unsigned.all;entity cnt99 is port(clk,rst,en:in std_logic; cq: buffer std_logic_vector(6 downto 0); LED1:out std_logic_vector(3 downto 0); LED2:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); cout:out std_logic);end cnt99;architecture behav of cnt99 isbeginprocess(clk,rst,en)variable cq
12、i:std_logic_vector(3 downto 0);variable cqii:std_logic_vector(6 downto 0);variable hi:std_logic_vector(3 downto 0);beginif rst =1 then cqi:=(others =0);hi:=(others =0);elsif clkevent and clk=1 then if en =1 then if hi9 then if cqi0); hi:=hi+1; end if ; else hi:=(others =0); end if; if cqii0);end if
13、; end if;end if;if(cqi=9 and hi=9) then cout=1;else cout=0; end if ;cq=cqii;LED1=hi;LED20) ; ELSIF CLKEVENT AND CLK=1 THEN IF EN = 1 THEN CQI := CQI + 1; END IF; END IF; IF CQI = 0 THEN COUT = 1; ELSE COUT = 0; END IF; CQ outmod=1000; outLED1 0);outLED2=add_out1(3 downto 0);outLED3=add_out2; outLED4
14、 outmod=0100; outLED1 0);outLED2(not flag);outLED3=sub_out1(3 downto 0); outLED4 outmod=0010; outLED1=mul_out1(3 downto 0);outLED2=mul_out2;outLED3=mul_out3; outLED4 outmod=0001; outLED1 0);outLED2 0);outLED3=div_out1(3 downto 0); outLED4=div_out2; end case; end process;end bhv; 第四章 系统测试4.1 功能的测试方法、
15、步骤 软件部分:1、将写好的的程序先进行编译 2、编译通过后,利用波形仿真来观察结果是否正确。 3、采用模式5进行分配管脚后,再进行编译4、将编译通过的程序下载到EDA实验箱上进行硬件验证。硬件部分1、选择模式5进行测试2、利用多邦线将en接vcc,rst接gnd3、根据管脚的分配(键1clk1、键2clk2,键3clk3),按 键1和键2来改变输入值,按键3改变运算模式。比如:当按 键1和键2输入38和47,则可在数码管上显示85,按键3 改变加法、减法、乘法、除法模式。当模式为减法时,其结果 为“F9”;当模式为乘法时,其结果为1786;当模式为除法模 式时,其结果为0. 4.2 仪器设备
16、EDA技术实验箱 PC机(带有quartus软件)第五章 结论 本次设计完成了设计的基本要求,即随机输入两个2位数,可进行该两个数的四则运算并且输出相应的结果。同时也掌握了用VHDL语言来设计四则运算的基本要求,加深了对软件的了解。参考文献潘松,黄继业EDA技术与VHDL语言.第三版.北京:清华大学出版社.2011.附录A 电路图图纸总系统电路图纸乘法模块电路图 除法模块电路图 附录B 软件程序小加法模块程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;entity cal4_add is p
17、ort( add_in1, add_in2 : in std_logic_vector(6 downto 0); add_out : out std_logic_vector(7 downto 0);end entity cal4_add;architecture beh of cal4_add issignal a1: std_logic_vector(7 downto 0);signal a2: std_logic_vector(7 downto 0);signal a3: std_logic_vector(7 downto 0);begin process(add_in1, add_in
18、2) begin a1=0&add_in1; a2=0&add_in2; a3 = a2+a1; add_outsub_in2 then flag = 1; sub_out = sub_in1-sub_in2; else flag = 0; sub_out 0);hi:=(others =0);elsif clkevent and clk=1 then if en =1 then if hi9 then if cqi0); hi:=hi+1; end if ; else hi:=(others =0); end if; if cqii0);end if ; end if;end if;if(c
19、qi=9 and hi=9) then cout=1;else cout=0; end if ;cq=cqii;LED1=hi;LED20) ; ELSIF CLKEVENT AND CLK=1 THEN IF EN = 1 THEN CQI := CQI + 1; END IF; END IF; IF CQI = 0 THEN COUT = 1; ELSE COUT = 0; END IF; CQ = CQI; END PROCESS;END behav;输出模块程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY size_mod IS PORT( mod_sel : IN STD_LOGIC_vector(1 downto 0); add_out1 : IN STD_LOGIC_vector(3 downto 0)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1