首页 EDA课程设计手写

EDA课程设计手写

举报
开通vip

EDA课程设计手写《电子设计自动化》 课程设计 题目: 2位十进制四则运算器电路 院(系) 专 业 届 别 班 级 学 号 姓 名 任课老师 摘要 本次设计的目的是通过QuartusII软件实现输入两个2位十进制数(0~99),输出它们的四则运算(加减乘除)结果(发光二极管显示运算模式;调用LPM_MULT、LPM_CONSTANT及LPM_DIVIDE模块)。实现的方法是利用四则运算的规律进行初步设计,然后进行调整和修改。最终结果要求:随机的输入两个数,经过加法、减法、乘法和除法的运算,可以得到正确的运算结果。 主要分为4大部分:...

EDA课程设计手写
《电子设计自动化》 课程设计 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 目: 2位十进制四则运算器电路 院(系) 专 业 届 别 班 级 学 号 姓 名 任课老师 摘要 本次设计的目的是通过QuartusII软件实现输入两个2位十进制数(0~99),输出它们的四则运算(加减乘除)结果(发光二极管显示运算模式;调用LPM_MULT、LPM_CONSTANT及LPM_DIVIDE模块)。实现的方法是利用四则运算的规律进行初步设计,然后进行调整和修改。最终结果要求:随机的输入两个数,经过加法、减法、乘法和除法的运算,可以得到正确的运算结果。 主要分为4大部分:一、2位十进制数模块;二、加减乘除四则运算四个小模块;三、加减乘除四则运算的选择模块;四、处理输出结果的模块。 目 录 TOC \o "1-3" \h \z \u 4 5 4 6 4 1、系统设计 1、​ 设计要求: 输入两个2位十进制数(0~99),输出它们的四则运算(加减乘除)结果;发光二极管 显示运算模式;可调用LPM_MULT及LPM_DIVIDE模块。 2、​ 系统设计 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 : (1)​ 系统设计思路 要完成2位十进制四则运算器电路,首先,需要生成2个两位的十进制数,其次,需要加减乘除四个运算,然后,四种运算的选择,最后,对输出结果的处理。 2个2位十进制模块:法一,用两个100进制计数器构成;法二,用4个10进制计数器构成。因为add1模块(后面详细介绍)只有两个输入口,所以选择法一比较方便。 加减乘除四则运算:①加法:写一个加法程序,制成模块,再分别取出它的各位、十位、百位。②减法:写一个减法程序,用调用LPM的方法制成一个模块,在分别取出它的各位、十位和符号位。③乘法:直接调用内部LPM,制成乘法模块。④除法:直接调用内部LPM,制成除法模块。 加减乘除运算的选择:写一个4路选择器,分别选择加减乘除。 对输出结果的处理:写一个程序,对应不同选择下的不同输出,注意位数(加法:输出在0~198之间,需3个LED灯来显示;减法:输出在0~99之间,需3个LED灯(其中一个符号位);乘法:输出在0~9801之间,需4个LED灯;除法:输出在0~99之间,需2个LED灯。综上可知,输出一共需4个LED灯)。 (2)​ 总体方案的论证与比较 该方案能够较好的实现本设计的功能。一些小模块可以有不同做法。如: 2位十进制模块:法一,用两个100进制计数器构成;法二,用4个10进制计数器构成。因为add1模块(后面详细介绍)只有两个输入口,所以选择法一比较方便。 加减乘除输出结果的处理:要求出各个位的数。(假设输出结果3位)法一:每次除以10,依次求出个位、十位、百位;法二:除以100,得百位,除以10得个位和十位。因为法二需要较多的LPM_DIVIDE和LPM_CONSTANT,所以,法一比较好。 (3)各功能块的划分与组成 (4)系统的工作原理 对于随机输入的两个数,系统都会对其进行加减乘除四则运算,然后选择加法、减法、乘法或除法来作为输出,并验证其正确性。 2、单元电路设计 一、输入单元(2个2位十进制模块) 输入单元设计中, 用VHDL语言来实现该功能,然后制成模块。 二、加法单元 对两个输入的数进行加法运算,可用VHDL语言来实现该功能。其输出结果在0~198之间,将其结果显示在LED灯上,就需调用4个LPM_DIVIDE和4个LPM_CONSTANT来实现。 三、减法单元 对两个输入的数进行减法运算,可用VHDL语言来实现。结果有正、负之分,“F”来 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 示负号。输出范围在0~99之间,需2个LPM_DIVIDE 和2个LPM_CONSTANT来将其结果显示在LED灯上。 四、乘法单元 乘法单元可调用LPM_MULT模块来实现。其输出结果在0—9801之间,需4个LPM_DIVIDE和4个LPM_CONSTANT来将其结果显示在LED灯上。 五、除法单元 除法单元直接调用3个LPM_DIVIDE 和2个LPM_CONSTANT就可以实现其要求。 6、​ 选择模式单元 用VHDL语言写一个四路选择器程序,然后制成模块。 七、输出单元 用VHDL语言写一个程序可实现该功能,然后制成模块。 3、软件设计 一、软件设计平台和开发工具 在在Quartus II平台中用VHDL语言编程和调试。并调用其Quartus II的内部模块来实现设计要求。 二、程序原理图 ①总程序图及其仿真波形 ②一百进制模块 其程序为: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity t100 is 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 clk'event and clk='0' then if en ='1' then if cqi<99 then cqi:=cqi+1; else cqi:=(others=>'0'); end if ; end if; end 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; 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 downto 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_out<=a+b; end process; end behav; (2)add1模块 (3)有关说明 因为输入是两个2位十进制数(即输入宽度是7字节[6..0]),所以输出范围为0~198(即输出宽度为8字节[7..0]),之后除以100得百位,再除以10 的各位和十位。 ③减法 (1)sub程序 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; entity sub is port( 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 sub; architecture beh of sub is begin process(sub_in1, sub_in2) begin if sub_in1>sub_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模块 (3)有关说明 两个百进制数相减,最大为99,即输出最多需要7字节。flag是标示位,两数相减若为正数,flag输出为0;若为负数,flag输出为“F”。 ④乘法 (1)mul1模块 (2)有关说明 因为99*99=9801,所以输出需14个字节,即宽度为[13..0].共需4个lpm_divide。除以10得个位,再除以10的十位,然后除以10得百位,最后再除以10得千位。 ⑤除法 (1)div1模块 (2)有关说明 除法单元直接调用3个LPM_DIVIDE 和2个LPM_CONSTANT就可以实现其要求。 ⑥选择模块 library ieee; use ieee.std_logic_1164.all; use 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 CLK'event and CLK='1' THEN IF B<3 THEN B<=B+1; ELSE B<=(OTHERS=>'0');END IF ; END IF; END PROCESS; A<=B; END ARCHITECTURE; ⑦输出模块 (1)输出模块程序 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY cal4_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_LOGIC_vector(3 downto 0); mul_out4 : IN STD_LOGIC_vector(3 downto 0); div_out1 : IN STD_LOGIC_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 cal4_mod; ARCHITECTURE bhv OF cal4_mod IS BEGIN process(mod_sel) begin case mod_sel is when "00" => outmod<="1000"; outLED1<=(others=>'0'); outLED2<=add_out3; outLED3<=add_out2; outLED4<=add_out1; when "01" => outmod<="0100"; outLED1<=(others=>'0'); outLED2<=(others=>(not flag)) ; outLED3<=sub_out2; outLED4<=sub_out1; when "10" => outmod<="0010"; outLED1<=mul_out4; outLED2<=mul_out3;outLED3<=mul_out2; outLED4<=mul_out1; when others => outmod<="0001"; outLED1<=(others=>'0'); outLED2<=(others=>'0'); outLED3<=div_out2; outLED4<=div_out1; end case; end process; end bhv; (2)有关说明 若四选一输出为“00”时,选择加法运算;输出为“01”时,选择减法运算:输出为“10”时,选择乘法运算;输出为“11”时,选择除法运算。 4、系统测试 系统的功能测试及步骤: 1、将制作好的的程序先进行编译,看是否能编译通过,若未通过,则进行修改直至编译通过。 2、编译通过后,进行波形仿真来观察其结果是否正确。 3、进行分配管脚,然后再编译一次后。 4、将编译通过的程序下载到实验箱上进行结果验证。(选择模式5, 采用EP2CT144C8芯片) ①由模式5和管脚分配可知:键8—clk1(第一个输入数),键7--clk2(第二个输入数),键6—clk3(选择模式键),数码管8和7,分别对应第一个输入数的高低位,数码管6和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位十进制数(0~99),能够输出它们的四则运算(加减乘除)结果;但是于某些地方还有待改进。 (1)对输出结果各个位在LED灯的处理。如加法模块输出需3个led灯,本设计先除以100取出百位,再除以10取出十位和各位,共需4个LPM_DIVIDE和4个LPM_CONSTANT,如果每次都除以10,通过余数依次取出各位、十位、百位,就不用需要那么多的LPM_DIVIDE和LPM_CONSTANT。 (2)本设计的rst端直接接地,若要复位需重新把程序导入到实验箱,比较麻烦。 6、参考文献 EDA技术与VHDL语言.潘松,黄继业编著. 第三版.北京:清华大学出版社.2009
本文档为【EDA课程设计手写】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_059770
暂无简介~
格式:doc
大小:871KB
软件:Word
页数:14
分类:工学
上传时间:2014-01-16
浏览量:19