ImageVerifierCode 换一换
格式:DOC , 页数:19 ,大小:327.51KB ,
资源ID:4752172      下载积分:8 金币
验证码下载
登录下载
邮箱/手机:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/4752172.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  
声明  |  会员权益     获赠5币     写作写作

1、填表:    下载求助     留言反馈    退款申请
2、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
3、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
4、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
5、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【丰****】。
6、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
7、本文档遇到问题,请及时私信或留言给本站上传会员【丰****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。

注意事项

本文(简易计算器设计.doc)为本站上传会员【丰****】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4008-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

简易计算器设计.doc

1、 目 录1. 引言12. 设计技术指标12.1 计算器性能1 2.2 计算器人机接口13. 设计方案14. 设计实现2 4.1 加法2 4.2 减法3 4.3 乘法3 4.4 除法4 4.5 清零5 4.6 移位6 4.7 数据分配器6 4.8 ROM8 4.9 RAM9 4.10 CPU105. 设计结果14 5.1 加法14 5.2 减法14 5.3 乘法15 5.4 除法15 5.6 移位15 5.7 显示原理图156. 结论167. 参考文献16EDA设计 简易计算器设计1. 引言计算器是我们日常生活中经常接触到的计算工具之一,最早的计算工具诞生在中国。中国古代 最早采用的一种计算工具

2、叫筹策,又被叫做算筹。这种算筹多用竹子制成,也有用木头,兽骨 充当材料的约二百七十枚一束,放在布袋里可随身携带。直到今天仍在使用的珠算盘,是中 国古代计算工具领域中的另一项发明,明代时的珠算盘已经与现代的珠算盘几乎相同。 17 世纪初,西方国家的计算工具有了较大的发展,英国数学家纳皮尔发明的纳皮尔算筹, 英国牧师奥却德发明了圆柱型对数计算尺,这种计算尺不仅能做加减乘除、乘方、开方运算, 甚至可以计算三角函数,指数函数和对数函数,这些计算工具不仅带动了计算器的发展,也为 现代计算器发展奠定了良好的基础,成为现代社会应用广泛的计算工具。1642 年,年仅 19 岁的 法国伟大科学家帕斯卡引用算盘的

3、原理,发明了第一部机械式计算器,在他的计算器中有一些 互相联锁的齿轮,一个转过十位的齿轮会使另一个齿轮转过一位,人们可以像拨电话号码盘那 样,把数字拨进去,计算结果就会出现在另一个窗口中,但是只能做加减计算。1694 年,莱布 尼兹在德国将其改进成可以进行乘除的计算。此后,一直要到 20 世纪 50 年代末才有电子计算 器的出现。 本文介绍一种基于 VHDL 的通用计算器的设计方法,可以实现了加、减、乘、除、清零和移位的运算。2. 设计技术指标2.1 计算器性能 处理器处理字长:4位 处理器工作速度: 处理器指令数量:6种2.2 计算器人机接口 程序存储方式: 数据输入方式:NBI按键 结果显

4、示方式:NBI模拟显示3. 设计方案先用vhdl设计一个ALU包括加法器、减法器、乘法器、除法器、清零、移位,由于按键是4*4的,所以只能输入4位数,而且必须只能输入一个数,所以我把进位都删了。再设计两个分配器,分别把数据a,b送入运算模块,使操作码为000时数据给加法器,进行加法;输入操作码001时数据给减法器,进行减法;输入操作码010时数据给乘法器,进行乘法;输入操作码011时数据给除法器,进行除法;输入操作码100时,进行清零;输入操作码101地址时,把数据进行移位。然后设计一个ROM模块,输出操作码、a和b的地址,设置a的地址为110,b的地址为111。ROM后再连一个RAM,写入数

5、据a、b,输入a、b的地址,读出a、b的数据。并且在RAM里用clk产生了另一个clk_2,用clk控制a和b;用clk_2控制读和写。最后设计一个CPU把所有的模块用元件例化连接起来。连接顺序为ROM、RAM、分配器、ALU。另外在din中又设定了前三位为操作码,第四位为输入数据a,若第四位为1时输入为a,若第五位为1时输入为b。图1、基础结构图2、进阶结构4. 设计实现4.1 加法LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY plus ISPORT(a:IN STD_LOGIC

6、_VECTOR(3 DOWNTO 0);b:IN STD_LOGIC_VECTOR(3 DOWNTO 0);ALU_OUT:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);end plus;ARCHITECTURE behave OF plus ISbeginALU_OUT=a+b;end behave; 4.2 减法LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY jian ISPORT(a:IN STD_LOGIC_VECTOR(3 DOWNTO 0);b:IN

7、STD_LOGIC_VECTOR(3 DOWNTO 0);ALU_OUT:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);end jian;ARCHITECTURE behave OF jian ISbeginALU_OUT=a-b;end behave;4.3 乘法LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;use ieee.std_logic_arith.all;ENTITY cheng ISPORT( a:IN STD_LOGIC_VECTOR(3 DOWNTO 0);

8、 b:IN STD_LOGIC_VECTOR(3 DOWNTO 0);ALU_OUT:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END cheng;ARCHITECTURE behave OF cheng ISbeginprocess(a,b)variable t1 : integer range 0 to 15;variable t2 : integer range 0 to 15;variable t3 : integer range 0 to 15; begint1:=conv_integer(a);t2:=conv_integer(b);t3:=t1*t2;if

9、 t3=15then ALU_OUT(3 downto 0)=conv_STD_LOGIC_VECTOR(t3,4);else ALU_OUT=X8;end if;end process;end behave;44.4 除法 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; use ieee.std_logic_arith.all; ENTITY chu IS PORT( a:IN STD_LOGIC_VECTOR(3 DOWNTO 0); b:IN STD_LOGIC_VECTOR(3 DO

10、WNTO 0); ALU_OUT:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); co:OUT STD_LOGIC_vector(3 downto 0); END chu; ARCHITECTURE behave OF chu IS signal aa,bb:std_logic_vector(3 downto 0); signal fuhao,sign,d:std_logic; begin d=(a(3) xor b(3);aa=a;bb=b;process(aa,bb,fuhao,sign,d)variable temp_a,temp_b:std_logic_vector

11、(7 downto 0);variable n:integer; begintemp_a:=0000&aa;temp_b:=bb&0000;n:=0;while(n=bb thentemp_a:=temp_a-temp_b+1;end if;end loop;if d=1thentemp_a(3 downto 0):=(not temp_a(3 downto 0)+1;end if;if sign=1thentemp_a(7 downto 4):=(not temp_b(7 downto 4)+1;end if;ALU_OUT=temp_a(3 downto 0);co=temp_a(7 do

12、wnto 4);if(bb=0000)thenALU_OUT=0000;end if;end process;end behave;4.5 清零LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY clr ISPORT(ALU_OUT:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END clr;ARCHITECTURE behave OF clr ISbeginALU_OUT=0000;end behave;4.6 移位LIBRARY IEEE;USE IEEE.ST

13、D_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY shift ISPORT(a:IN STD_LOGIC_VECTOR(3 DOWNTO 0); ALU_OUT:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END shift;ARCHITECTURE behave OF shift ISsignal aa:std_logic_vector(4 downto 0);beginaa=a&a(3);ALU_OUT D0=dina;D1=0000;D2=0000;D3=0000;D4=0000;D5 D1=dina;D

14、0=0000;D2=0000;D3=0000;D4=0000;D5 D2=dina;D0=0000;D0=0000;D3=0000;D4=0000;D5 D3=dina;D0=0000;D1=0000;D2=0000;D4=0000;D5 D5=dina;D0=0000;D1=0000;D2=0000;D3=0000;D4 D4=dina; D0=0000;D1=0000;D2=0000;D3=0000;D5 D0=dinb;D1=0000;D2=0000;D3=0000;D4=0000;D5 D1=dinb;D0=0000;D2=0000;D3=0000;D4=0000;D5 D2=dinb

15、;D0=0000;D0=0000;D3=0000;D4=0000;D5 D3=dinb;D0=0000;D1=0000;D2=0000;D4=0000;D5 D5=dinb;D0=0000;D1=0000;D2=0000;D3=0000;D4 D4=dinb; D0=0000;D1=0000;D2=0000;D3=0000;D5nnnnnnnull;end case;end if;end process;addr=n;ma(2 downto 0)=n(8 downto 6);A(2 downto 0)=n(5 downto 3);B(2 downto 0)=n(2 downto 0);end

16、behave; 4.9 RAMLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ram ISPORT( clk:IN STD_LOGIC;dataa,datab:IN STD_LOGIC_VECTOR(3 DOWNTO 0); Aa:IN STD_LOGIC_VECTOR(2 DOWNTO 0);Bb:IN STD_LOGIC_VECTOR(2 DOWNTO 0);a:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);b:OUT STD_LOGIC_VECTOR(3 D

17、OWNTO 0);END ram;ARCHITECTURE behave OF ram IStype ramtype is array(3 downto 0) of std_logic_vector(3 downto 0);signal ram_name:ramtype;signal w,r,clk_2:std_logic;signal count:integer range 0 to 1; beginprocess(clk,clk_2,count)beginif (clkevent and clk=1) thenif count=1 thenclk_2=0; count=0;if(r=1)t

18、henram_name(conv_integer(Aa)=dataa;end if; if(w=1)thena=ram_name(conv_integer(Aa);end if; else count=count+1;clk_2=1;if(r=1)thenram_name(conv_integer(Bb)=datab;end if; if(w=1)thenb=ram_name(conv_integer(Bb);end if;end if;end if;end process;process(clk,r,w)beginif(clk=1)thenr=1;w=0;elsif(clk=0)thenw=

19、1;r=0;end if;end process;end behave;4.10 CPULIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;entity cpu isport(din:in std_logic_vector(4 downto 0);data:in std_logic_vector(3 downto 0);clk:in std_logic;alu_out:out std_logic_vector(3 downto 0);yushu

20、:out std_logic_vector(3 downto 0);end cpu;architecture behave of cpu iscomponent rom isPORT(clk:in std_logic; datain:IN STD_LOGIC_VECTOR(2 DOWNTO 0); addr:OUT STD_LOGIC_VECTOR(8 DOWNTO 0);ma,A,B:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);END component;component ram isPORT( clk:IN STD_LOGIC;dataa,datab:IN STD_

21、LOGIC_VECTOR(3 DOWNTO 0); Aa:IN STD_LOGIC_VECTOR(2 DOWNTO 0);Bb:IN STD_LOGIC_VECTOR(2 DOWNTO 0);a:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);b:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);end component;component fenpeia isPORT(clk:IN STD_LOGIC;dina:IN STD_LOGIC_VECTOR(3 DOWNTO 0);sel: IN STD_LOGIC_VECTOR(2 DOWNTO 0);D0,D

22、1,D2,D3,D4,D5:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);end component;component fenpeib isport(clk:IN STD_LOGIC;dinb:IN STD_LOGIC_VECTOR(3 DOWNTO 0);sel: IN STD_LOGIC_VECTOR(2 DOWNTO 0);D0,D1,D2,D3,D4,D5:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);end component;component plus isPORT(a:IN STD_LOGIC_VECTOR(3 DOWNTO 0);b:

23、IN STD_LOGIC_VECTOR(3 DOWNTO 0);ALU_OUT:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);end component;component jian isPORT(a:IN STD_LOGIC_VECTOR(3 DOWNTO 0);b:IN STD_LOGIC_VECTOR(3 DOWNTO 0);ALU_OUT:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);end component;component cheng isPORT( a:IN STD_LOGIC_VECTOR(3 DOWNTO 0); b:IN STD_

24、LOGIC_VECTOR(3 DOWNTO 0);ALU_OUT:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);end component;component chu isPORT( a:IN STD_LOGIC_VECTOR(3 DOWNTO 0); b:IN STD_LOGIC_VECTOR(3 DOWNTO 0);ALU_OUT:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);co:OUT STD_LOGIC_vector(3 downto 0);end component;component clr isPORT(ALU_OUT:OUT STD_L

25、OGIC_VECTOR(3 DOWNTO 0);end component;component shift isPORT(a:IN STD_LOGIC_VECTOR(3 DOWNTO 0); ALU_OUT:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);end component;signal addr:STD_LOGIC_VECTOR(8 DOWNTO 0);signal ma,Aa,Bb,dinma:STD_LOGIC_VECTOR(2 DOWNTO 0);signal a,b:STD_LOGIC_VECTOR(3 DOWNTO 0);signal D0a,D1a,D2

26、a,D3a,D4a,D5a,D0b,D1b,D2b,D3b,D4b,D5b:STD_LOGIC_VECTOR(3 DOWNTO 0);signal alu_out1,alu_out2,alu_out3,alu_out4,alu_out5,alu_out6:std_logic_vector(3 downto 0);signal aaa,bbb:std_logic;signal dataa,datab:std_logic_vector(3 downto 0);beginprocess(clk,din)begindinma=din(2 downto 0);if(din(3)=1)thendataa=

27、data;elsif(din(4)=1)thendatab=data;end if;end process;A1:rom port map(clk,dinma,addr,ma,Aa,Bb);A2:ram port map(clk,dataa,datab,Aa,Bb,a,b);A3:fenpeia port map(clk,a,dinma,D0a,D1a,D2a,D3a,D4a,D5a); A4:fenpeib port map(clk,b,dinma,D0b,D1b,D2b,D3b,D4b,D5b); A5:plus port map(D0a,D0b,alu_out1);A6:jian por

28、t map(D1a,D1b,alu_out2);A7:cheng port map(D2a,D2b,alu_out3);A8:chu port map(D3a,D3b,alu_out4,yushu); A9:clr port map(alu_out5); A10:shift port map(D5a,alu_out6);alu_out=alu_out1 or alu_out2 or alu_out3 or alu_out4 or alu_out5 or alu_out6;end behave;5. 设计结果5.1 加法5.2 减法5.3 乘法5.4 除法5.5 清零5.6 移位5.7 显示原理

29、图6. 结论经过对EDA以及相关软件的研究,完成了用VHDL语言实现通用计算器的设计。本设计实现了基本的加、减、乘、除、清零、移位的功能。通过本实验,我了解了VHDL 具有极强的描述能力,能支持系统行为级、寄存器传输级和逻辑门电路级三个不同层次的设计,能够完成从上层到下层(从抽象到具体)逐层描述的结构化设计思想。要注意在程序编写过程中出现的错误提示信息,对其进行正确改正,基本上掌握 EDA 工具QuartusII 软件和DXP的使用方法,并学会了用QuartusII 软件建立项目并编写程序和调试下载的方法,基本上熟悉了VHDL 程序的软件的仿真方法,也熟练掌握VHDL 程序的编写方法和注意事项。7. 参考文献1 秦鸿刚,刘京科,吴迪. 基于FPGA的双口RAM实现及应用2 曹听燕,周凤臣,聂春燕.EDA技术实验与课程设计. M北京:清华大学出版社,2006.8.3 李广第等. 单片机基础 第1版. 北京:北京航空航天大学出版社,1999.8.4 何立民等. 单片机高等教程 第1版. 北京:北京航空航天大学出版社,2006.6.5 朱家兴,付伟. 用VHDL实现计算机组成原理实验中的RAM存储器系统. 红河学院学报,2006.4.指导教师姓名:是否有专题调研专题题目厂矿方面意见:签字:_ _年 _月 _日指导教师意见:评定成绩_ 签字:_ _年 _月 _日备注:-18-

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服