版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、电子设计自动化课程设计题目: 2位十进制四则运算器电路 院(系) 信息科学与工程学院 专 业 通信工程 届 别 2011级 班 级 学 号 姓 名 任课老师 彭盛亮 摘要本设计是利用EDA技术实现的2位十进制四则运算器,是基于QuartusII7.2软件,利用其强大、直观、便捷和操作灵活的原理图输入设计的功能来完成本次设计的。此设计利用QuartusII7.2中的EP2C5T144C8芯片来控制整个程序的运行,用七段数码管显示各个输入和输出,用LED灯的亮灭来显示运算模式,而软件部分则是由VHDL语言来编写的,是通过精心的设计和合理的规划而完成的设计。设计完成后的运算器不仅能实现数据的加减乘除
2、运算,而且还能使数据及其计算结果在数码管上显示出来,能够实现0-99的十进制数字四则运算。目 录第一章 系统设计11.1设计要求11.2系统设计方案11.2.2总体方案的论证21.2.4各功能块的划分和组成3第二章 单元电路设计42.1 输入模块52.2加法模块52.3减法模块62.4乘法模块72.5 除法模块72.6 模式选择模块82.7输出模块8第三章 软件设计93.1 软件设计平台、开发工具和实现方法93.2程序的流程方框图93.3实现的功能及程序清单103.3.1百进制计数器103.3.2四选一数据选择器113.3.3加法模块:123.3.4减法模块123.3.5乘法模块133.3.6
3、除法模块133.3.7输出模块14第四章 系统测试154.1 功能的测试方法、步骤154.2 仪器设备16第五章 结论16参考文献17附录A 电路图图纸17附录B 软件程序21 第一章 系统设计1.1设计要求输入两个2位十进制数(099),输出它们的四则运算(加减乘除)结果;发光二极管显示运算模式;可调用LPM_MULT及LPM_DIVIDE模块。 1.2系统设计方案1.2.1系统设计思路 通过分析可知,要完成本次课程设计可以分为三个模块来实现相应的功能,分别是输入模块、计算模块以及输出模块。输出模块计算模块输入模块其中各个模块的任务要求为: * 输入模块:输入两个2位十进制数以及运算模式的选
4、择 * 计算模块:根据输入模块的选择完成相应的运算过程 * 输出模块:输出各个输入及计算结果1.2.2总体方案的论证·方案一:根据功能和指标要求,计算器电路包括三个部分:显示电 路、输入电路和芯片控制电路。用七段数码管作为显示电路,各作为输入电路,利用程序输入法将计算器所需的程序写入芯片。模块图如下:显示电路芯片控制输入电路·方案二: 根据计算器的功能要求,计算器电路可包括四个部分:选用LED数码管作为显示部分,各按键作为输入部分,运算模块,芯片控制部分。模块图如下:芯片控制运算模块显示模块输入部分1.2.3 方案的对比选择 从电路清晰程度来说方案二要优于方案一,因为方案二
5、显示结果清楚明了,比用方案一的准确度更高,而且电路分模块来做,更加清晰,连线相对也比较简单。所以为了得到更好的结果,我所以选择方案二。1.2.4各功能块的划分和组成选择模块 计算模块LED输出芯片控制除法乘法减法加法输入2输入1 1.2.5 系统的工作原理(1)由于要设计的是四则计算器,可以进行四则运算, 则采用七段数码管显示数据和结果。(2)另外键盘包括两个十进制数输入键、一个模式选择键,故只需要3个按键即可。(3)执行过程:使能端打开后显为示零,等待键入数值,当键入两个数字,计算器在内部执行数值转换和存储,并等待键入模式,当再键入模式后将在数码管上显示运算结果。第2章 单元电路设计2.1
6、输入模块 工作原理: 利用两个100进制的计数器作为数字的输入,通过外接的按键来控制计数器,从而人为的确定输入的数值。 参数计算: 一百进制数输出最高是99,故需7个字节才可能将其包含在内,因此cq的宽度6.0。 LED每一位的最高输出为9,故需4个字节才可能将其包含在内,故LED1和LED2的宽度为3.0。2.2加法模块 工作原理: 利用VHDL语言来实现两个2位十进制数的加法,做出一个小加法模块。又由于其输出结果在0198之间,故要将此小减法模块将和2个lpm divide1和2个lpm constant0相连,从而使得当两个十进制数输入后可以在3个LED数码管上显示最终结果。 参数计算:
7、 输入最高值是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位十进制数的加法,做出一个小减法模块。又由于其输出结果在-9999之间,故将此小减法模块将和2个lpm divide1和2个lpm constant0相连,从而使得当两个十进制数输入后可以在
8、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
9、9801之间,故要将此模块和4个lpm divide1和4个lpm constant0相连,从而使得当两个十进制数输入后可以在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 除法模块 工作原理: 除法运算可以直接
10、调用LPM_DIVIDE的模块来实现除法运算。又由于其输出结果在099之间,故要将此模块和2个lpm divide1和2个lpm constant0相连,可利用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 模式选择模
11、块 工作原理: 由于要在加、减、乘、除四个模式中选择一个进行计算,所以可利用一个四选一的数据选择器来作为模式选择器,通过一个时钟信号来改变改变数据选择器从而控制模式选择。2.7输出模块 工作原理: 将加、减、乘、除各个模块的输出和模式选择的输出作为输入,以模式选择的输入作为控制信号来控制结果的输出。 参数计算: 该模块的各项输入是由其他模块的输出来决定的,故此模块的参数要和之前的模块参数一一对应。第3章 软件设计3.1 软件设计平台、开发工具和实现方法 在Quartus II平台中用VHDL语言编写各个模块所需要的程序或者调用Quartus II中原有的模块并利用原理图设计方法完成整个设计,借
12、助EDA实验箱进行实验程序的调试和检测。开始3.2程序的流程方框图EN=1,RST=0输入数1及数2输入模式Y加法运算加法运算?NY减法运算减法运算?NY乘法运算乘法运算?NY除法运算?除法运算输出3.3实现的功能及程序清单3.3.1百进制计数器功能:作为两个2位的十进制数的输入程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT99 ISPORT(CLK,RST,EN:IN STD_LOGIC;CQ: BUFFER STD_LOGIC_VECTOR(6 DOWNTO 0);
13、 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 CQI:STD_LOGIC_VECTOR(3 DOWNTO 0);VARIABLE CQII:STD_LOGIC_VECTOR(6 DOWNTO 0);VARIABLE HI:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINIF RST
14、='1' THEN CQI:=(OTHERS =>'0');HI:=(OTHERS =>'0');ELSIF CLK'EVENT AND CLK='1' THEN IF EN ='1' THEN IF HI<9 THEN IF CQI<9 THEN CQI:=CQI+1;ELSE CQI:=(OTHERS=>'0'); HI:=HI+1;END IF ;ELSE HI:=(OTHERS =>'0');END IF;IF CQII<99
15、 THEN CQII:=CQII+1;ELSE CQII:=(OTHERS=>'0');END IF ; END IF;END IF;IF(CQI=9 AND HI=9) THEN COUT<='1'ELSE COUT<='0' END IF ;CQ<=CQII;LED1<=HI;LED2<=CQI;END PROCESS;END BEHAV;3.3.2四选一数据选择器 功能:选择运算模式 程序: LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOG
16、IC_UNSIGNED.ALL;ENTITY JINZHI4 IS PORT (CLK,RST,EN : IN STD_LOGIC; CQ : OUT STD_LOGIC_VECTOR(1 DOWNTO 0); COUT : OUT STD_LOGIC ); END JINZHI4;ARCHITECTURE BEHAV OF JINZHI4 ISBEGIN PROCESS(CLK, RST, EN) VARIABLE CQI : STD_LOGIC_VECTOR(1 DOWNTO 0); BEGIN IF RST = '1' THEN CQI := (OTHERS =>&
17、#39;0') ; ELSIF CLK'EVENT 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;3.3.3加法模块: 功能:进行加运算原理图:3.3.4减法模块 功能:进行减法运算 原理图:3.3.5乘法模块 功能:进行乘法运算 原理图:3.
18、3.6除法模块 功能:进行除法运算 原理图:3.3.7输出模块功能:控制输出结果程序: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);ADD_OUT2: IN STD_LOGIC_VECTOR(3 DOWNTO 0);ADD_OUT3: IN STD_LOGIC_VECTOR(3 DO
19、WNTO 0);FLAG: IN STD_LOGIC;SUB_OUT1: IN STD_LOGIC_VECTOR(3 DOWNTO 0);SUB_OUT2: IN STD_LOGIC_VECTOR(3 DOWNTO 0);MUL_OUT1: IN STD_LOGIC_VECTOR(3 DOWNTO 0);MUL_OUT2: IN STD_LOGIC_VECTOR(3 DOWNTO 0);MUL_OUT3: IN STD_LOGIC_VECTOR(3 DOWNTO 0);MUL_OUT4: IN STD_LOGIC_VECTOR(3 DOWNTO 0);DIV_OUT1: IN STD_LOGI
20、C_VECTOR(3 DOWNTO 0);DIV_OUT2: IN STD_LOGIC_VECTOR(3 DOWNTO 0);OUTMOD: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);OUTLED1: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);OUTLED2: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); OUTLED3: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);OUTLED4: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); END SIZE_MOD;ARCHITECTURE
21、BHV OF SIZE_MOD ISBEGINPROCESS(MOD_SEL)BEGINCASE MOD_SEL ISWHEN "00" => OUTMOD<="1000" OUTLED1<=(OTHERS=> '0');OUTLED2<=ADD_OUT1(3 DOWNTO 0);OUTLED3<=ADD_OUT2; OUTLED4<=ADD_OUT3;WHEN "01" => OUTMOD<="0100" OUTLED1<=(OTHERS
22、=> '0');OUTLED2<=(OTHERS=>(NOT FLAG);OUTLED3<=SUB_OUT1(3 DOWNTO 0); OUTLED4<=SUB_OUT2;WHEN "10" => OUTMOD<="0010" OUTLED1<=MUL_OUT1(3 DOWNTO 0);OUTLED2<=MUL_OUT2;OUTLED3<=MUL_OUT3; OUTLED4<=MUL_OUT4;WHEN OTHERS => OUTMOD<="0001&
23、quot; OUTLED1<=(OTHERS=> '0');OUTLED2<=(OTHERS=> '0');OUTLED3<=DIV_OUT1(3 DOWNTO 0); OUTLED4<=DIV_OUT2;END CASE;END PROCESS;END BHV;第四章 系统测试4.1 功能的测试方法、步骤 软件部分:1、将写好的的程序先进行编译 2、编译通过后,利用波形仿真来观察结果是否正确。 3、采用模式5进行分配管脚后,再进行编译4、将编译通过的程序下载到EDA实验箱上进行硬件验证。硬件部分1、 选择模式5进行测试2、
24、利用多邦线将en接vcc,rst接gnd3、 根据管脚的分配(键1clk1、键2clk2,键3clk3),按键1和键2来改变输入值,按键3改变运算模式。比如:当按键1和键2输入38和47,则可在数码管上显示85,按键3改变加法、减法、乘法、除法模式。当模式为减法时,其结果为“F9”;当模式为乘法时,其结果为1786;当模式为除法模式时,其结果为0. 4.2 仪器设备EDA技术实验箱 PC机(带有quartus软件)第五章 结论 本次设计完成了设计的基本要求,即随机输入两个2位数,可进行该两个数的四则运算并且输出相应的结果。同时也掌握了用VHDL语言来设计四则运算的基本要求,加深了对软件的了解。
25、参考文献潘松,黄继业EDA技术与VHDL语言.第三版.北京:清华大学出版社.2011.附录A 电路图图纸总系统电路图纸乘法模块电路图除法模块电路图 加法模块电路图减法模块电路图 附录B 软件程序小加法模块程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;entity cal4_add isport(add_in1, add_in2: in std_logic_vector(6 downto 0);add_out: out std_logic_vector(7 downto 0);end ent
26、ity 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);beginprocess(add_in1, add_in2)begina1<='0'&add_in1;a2<='0'&add_in2;a3 <= a2+a1;add_out<=a3;end proce
27、ss;end architecture beh;小减法模块程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;entity size_sub isport(sub_in1, sub_in2: in std_logic_vector(6 downto 0);flag: out std_logic;sub_out: out std_logic_vector(6 downto 0);end entity size_sub;architecture beh of size_sub isbeginproc
28、ess(sub_in1, sub_in2)beginif sub_in1>sub_in2 thenflag <= '1'sub_out <= sub_in1-sub_in2;elseflag <= '0'sub_out <= sub_in2-sub_in1;end if;end process;end architecture beh;百进制计数器程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt99 ispor
29、t(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 cqi:std_logic_vector(3 downto 0);variable cqii:std_logic_vector
30、(6 downto 0);variable hi:std_logic_vector(3 downto 0);beginif rst ='1' then cqi:=(others =>'0');hi:=(others =>'0');elsif clk'event and clk='1' then if en ='1' then if hi<9 then if cqi<9 then cqi:=cqi+1;else cqi:=(others=>'0'); hi:=hi
31、+1;end if ;else hi:=(others =>'0');end if;if cqii<99 then cqii:=cqii+1;else cqii:=(others=>'0');end if ; end if;end if;if(cqi=9 and hi=9) then cout<='1'else cout<='0' end if ;cq<=cqii;LED1<=hi;LED2<=cqi;end process;end behav;四选一选择器程序:LIBRARY IE
32、EE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY jinzhi4 IS PORT (CLK,RST,EN : IN STD_LOGIC; CQ : OUT STD_LOGIC_VECTOR(1 DOWNTO 0); COUT : OUT STD_LOGIC ); END jinzhi4;ARCHITECTURE behav OF jinzhi4 ISBEGIN PROCESS(CLK, RST, EN) VARIABLE CQI : STD_LOGIC_VECTOR(1 DOWNTO 0); BEGIN
33、IF RST = '1' THEN CQI := (OTHERS =>'0') ; ELSIF CLK'EVENT 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 IE
34、EE.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);add_out2: IN STD_LOGIC_vector(3 downto 0);add_out3: IN STD_LOGIC_vector(3 downto 0);flag: IN STD_LOGIC;sub_out1: IN STD_LOGIC_vector(3 downto 0);sub_out2: IN STD_LOGIC_vector(3 downto 0);mul_out1: IN STD_LOGIC_vector(3 downto 0);mul_out2: IN STD_LOGIC_vector(3 downto 0);mul_out3: IN STD_LOGI
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 家具买卖合同模板
- 2024年青岛二手房购房合同
- 2024-2025学年统编版语文九年级上册第四单元测试题(含答案)
- 道路占用挖掘协议
- 抵押借款合同格式模板
- 合作经营终止协议
- 货物运输购销合同范本2024年
- 家电产品配送协议书新版本
- 2024全新信息服务合同
- 2024年车位购买协议样本
- Unit-1--College-Life
- 医院车辆加油卡管理制度
- 数独题目高级50题(后附答案)【最新】
- 平面四杆机构急回特性说课课件
- 安徽职业技术学院实验实训室建设管理办法(试行)
- 岗位价值评估表(共4页)
- 问题线索办理呈批表
- 娃哈哈晶钻水营销策划方案
- 绝世武林秘籍峨眉十二桩之八.附
- 磁悬浮列车(课堂PPT)
- 高考英语3500词汇表(附音标无中文释译
评论
0/150
提交评论