《EDA课程设计--2位十进制四则运算器电路507.pdf》由会员分享,可在线阅读,更多相关《EDA课程设计--2位十进制四则运算器电路507.pdf(28页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 EDA 课程设计-2 位十进制四则运算器电路 电子设计自动化 课程设计 题目:2 位十进制四则运算器电路 院(系)专 业 届 别 班 级 学 号 姓 名 任课老师 3 摘要 本次设计的目的是通过 QuartusII 软件实现输入两个 2 位十进制数(099),输出它们的四则运算(加减乘除)结果(发光二极管显示运算模式;调用 LPM_MULT、LPM_CONSTANT 及LPM_DIVIDE 模块)。实现的方法是利用四则运算的规律进行初步设计,然后进行调整和修改。最终结果要求:随机的输入两个数,经过加法、减法、乘法和除法的运算,可以得到正确的运算结果。主要分为 4 大部分:一、2 位十进制数模
2、块;二、加减乘除四则运算四个小模块;三、加减乘除四则运算的选择模块;四、处理输出结果的模块。4 目 录 1 系统设计.4 2 单元电路设计 .5 3 软件设计 .5 4 系统测试.14 5 结 论.14 6 参考文献.14 5 6 1、系统设计 一、设计要求:输入两个 2 位十进制数(099),输出它们的四则运算(加减乘除)结果;发光二极管 显示运算模式;可调用 LPM_MULT 及 LPM_DIVIDE模块。二、系统设计方案:(1)系统设计思路 要完成 2 位十进制四则运算器电路,首先,需要生成 2 个两位的十进制数,其次,需要加减乘除四个运算,然后,四种运算的选择,最后,对输出结果的处理。
3、2 个 2 位十进制模块:法一,用两个 100进制计数器构成;法二,用 4 个 10 进制计数器构成。因为 add1 模块(后面详细介绍)只有两个输入口,所以选择法一比较方便。加减乘除四则运算:加法:写一个加 7 法程序,制成模块,再分别取出它的各位、十位、百位。减法:写一个减法程序,用调用 LPM 的方法制成一个模块,在分别取出它的各位、十位和符号位。乘法:直接调用内部 LPM,制成乘法模块。除法:直接调用内部 LPM,制成除法模块。加减乘除运算的选择:写一个 4 路选择器,分别选择加减乘除。对输出结果的处理:写一个程序,对应不同选择下的不同输出,注意位数(加法:输出在 0198 之间,需
4、3 个 LED 灯来显示;减法:输出在 099 之间,需 3 个 LED 灯(其中一个符号位);乘法:输出在 09801 之间,需 4 个 LED 灯;除法:输出在 099 之间,需 2 个 LED 灯。综上可知,输出一共需 4 个LED 灯)。(2)总体方案的论证与比较 该方案能够较好的实现本设计的功能。一些小模块可以有不同做法。如:2 位十进制模块:法一,用两个 100 进制计数器构成;法二,用 4 个 10 进制计数器构成。因为 add1 模块(后面详细介绍)只有两 8 个输入口,所以选择法一比较方便。加减乘除输出结果的处理:要求出各个位的数。(假设输出结果 3 位)法一:每次除以 10
5、,依次求出个位、十位、百位;法二:除以 100,得百位,除以 10 得个位和十位。因 为 法 二 需 要 较 多 的LPM_DIVIDE和LPM_CONSTANT,所以,法一比较好。(3)各功能块的划分与组成 (4)系统的工作原理 对于随机输入的两个数,系统都会对其进行加减乘除四则运算,然后选择加法、减法、乘法或除法来作为输出,并验证其正确性。9 2、单元电路设计 一、输入单元(2 个 2 位十进制模块)输入单元设计中,用 VHDL 语言来实现该功能,然后制成模块。二、加法单元 对两个输入的数进行加法运算,可用VHDL 语言来实现该功能。其输出结果在 0198 之间,将其结果显示在 LED 灯
6、上,就需调用 4 个 LPM_DIVIDE 和 4 个 LPM_CONSTANT 来实现。三、减法单元 对两个输入的数进行减法运算,可用 VHDL语言来实现。结果有正、负之分,“F”来 表示负号。输出范围在 099 之间,需 2 个LPM_DIVIDE 和 2 个 LPM_CONSTANT 来将其结果显示在 LED 灯上。四、乘法单元 乘法单元可调用 LPM_MULT 模块来实现。其输出结果在 09801 之间,需 4 个LPM_DIVIDE和4个LPM_CONSTANT来将其结果显示在 LED 灯上。五、除法单元 10 除法单元直接调用 3 个 LPM_DIVIDE 和 2 个LPM_CON
7、STANT 就可以实现其要求。六、选择模式单元 用 VHDL 语言写一个四路选择器程序,然后制成模块。七、输出单元 用 VHDL 语言写一个程序可实现该功能,然后制成模块。3、软件设计 一、软件设计平台和开发工具 在在 Quartus II 平台中用 VHDL 语言编程和调试。并调用其 Quartus II 的内部模块来实现设计要求。二、程序原理图 总程序图及其仿真波形 11 12 13 14 15 一百进制模块 其程序为:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity t100 i
8、s port(clk,rst,en:in std_logic;cq:out std_logic_vector(6 downto 0);cout:out std_logic);end t100;architecture behav of t100 is begin process(clk,rst,en)variable cqi:std_logic_vector(6 downto 0);begin if rst=1 then cqi:=(others=0);elsif clkevent and clk=0 then if en=1 then if cqi0);16 end if;end if;en
9、d if;if cqi=99 then cout=1;else cout=0;END IF;cq=cqi;end process;end behav;仿真波形为:加法模块(1)、add 程序 library ieee;use ieee.std_logic_1164.all;17 use ieee.std_logic_unsigned.all;entity add is port(shu1:in std_logic_vector(6 downto 0);shu2:in std_logic_vector(6 downto 0);shu_out:out std_logic_vector(7 down
10、to 0);end add;architecture behav of add is signal a,b:std_logic_vector(7 downto 0);begin process(shu1,shu2)begin a=0&shu1;b=0&shu2;shu_outsub_in2 then flag=1;sub_out=sub_in1-sub_in2;else flag=0;sub_out=sub_in2-sub_in1;end if;end process;end architecture beh;(2)sub1 模块 20 (3)有关说明 两个百进制数相减,最大为 99,即输出最
11、多需要 7 字节。flag 是标示位,两数相减若为正数,flag 输出为 0;若为负数,flag 输出为“F”。乘法(1)mul1 模块 21(2)有关说明 因为 99*99=9801,所以输出需 14 个字节,即宽度为13.0.共需 4 个 lpm_divide。除以10 得个位,再除以 10 的十位,然后除以 10 得百位,最后再除以 10 得千位。除法(1)div1 模块 (2)有关说明 除法单元直接调用 3 个 LPM_DIVIDE 和 2 个LPM_CONSTANT 就可以实现其要求。22 选择模块 library ieee;use ieee.std_logic_1164.all;u
12、se ieee.std_logic_unsigned.all;entity ct4 is port(CLK:IN STD_LOGIC;A:OUT STD_LOGIC_VECTOR(1 DOWNTO 0);END ct4;architecture one of ct4 is SIGNAL B:STD_LOGIC_VECTOR(1 DOWNTO 0);begin process(CLK)begin if CLKevent and CLK=1 THEN IF B3 THEN B=B+1;ELSE B0);END IF;END IF;END PROCESS;A outmod=1000;outLED10
13、);outLED2=add_out3;outLED3=add_out2;outLED4 outmod=0100;outLED10);outLED2(not flag);outLED3=sub_out2;outLED4 outmod=0010;outLED1=mul_out4;outLED2=mul_out3;outLED3=mul_out2;outLED4 outmod=0001;outLED10);outLED20);outLED3=div_out2;outLED4=div_out1;26 end case;end process;end bhv;(2)有关说明 若四选一输出为“00”时,选
14、择加法运算;输出为“01”时,选择减法运算:输出为“10”时,选择乘法运算;输出为“11”时,选择除法运算。4、系统测试 系统的功能测试及步骤:1、将制作好的的程序先进行编译,看是否能编译通过,若未通过,则进行修改直至编译通过。2、编译通过后,进行波形仿真来观察其结果是否正确。3、进行分配管脚,然后再编译一次后。4、将编译通过的程序下载到实验箱上进行结果验证。(选择模式 5,采用 EP2CT144C8 芯片)由模式 5 和管脚分配可知:键 8clk1(第一个输入数),键 7-clk2(第二个输入数),键 6clk3(选择模式键),数码管 8 和 27 7,分别对应第一个输入数的高低位,数码管6
15、 和 5 分别对应第二个输入数的高低位,数码管 4、3、2、1 依次为输出的高低位,发光二极管 D8、D7、D6、D5 分别为加减乘除模式。随即地按键 8 和键 7(随即输入两个 2位十进制数),然后,按键 6 选择加法、减法、乘法、除法运算模式,最后,验证结果。例如:当输入为 24 和 50 时,选择加法时,LED 灯显示 74,选择减法时,LED 灯显示 F26,选择乘法时,LED 灯显示 1200,选择除法时,LED 灯显示 0.5、结论 本次设计能够较好的完成设计的基本要求,即输入两个 2 位十进制数(099),能够输出它们的四则运算(加减乘除)结果;但是于某些地方还有待改进。(1)对输出结果各个位在 LED 灯的处理。如加法模块输出需 3 个 led 灯,本设计先除以100 取出百位,再除以 10 取出十位和各位,共需 4 个 LPM_DIVIDE 和 4 个 LPM_CONSTANT,如果每次都除以 10,通过余数依次取出各位、十位、百位,就不用需要那么多的 LPM_DIVIDE 28 和 LPM_CONSTANT。(2)本设计的 rst 端直接接地,若要复位需重新把程序导入到实验箱,比较麻烦。6、参考文献 EDA 技术与 VHDL 语言.潘松,黄继业编著.第三版.北京:清华大学出版社.2009