vhdl计算器模块设计.doc
《vhdl计算器模块设计.doc》由会员分享,可在线阅读,更多相关《vhdl计算器模块设计.doc(21页珍藏版)》请在咨信网上搜索。
1、 计算器模块设计 姓名:王文杰 班级:1421202 学号: 201420120201 专业:测控技术与仪器计算器模块设计摘要计算器一般由运算器、控制器、存储器、键盘、显示器、电源和一些可选外围设备组成。低档计算器的运算器、控制器由数字逻辑电路实现简单的串行运算,其随机存储器只有一、二个单元,供累加存储用。使用简单计算器可进行加(+)、减(-)、乘(*)、除(/)、开方(sqrt)、百分数(%)、倒数(1/x)等简单算术计算。本次设计只完成加(+)、减(-)、乘(*)、除(/)运算。实验设计一 设计内容与设计要求1设计内容:设计一个简易计算器2设计要求:实现最大输入两位十进制数字的四则运算(加
2、减乘除) 能够实现多次连算(无优先级,从左到右计算结果) 最大长度以数码管最大个数为限,溢出报警 有正负数区分; 除法不能除尽时小数保留2位有效数字 能够区分运算优先级(先乘除,后加减) 二 系统具体设计、1总体框架数据(包括正负)除乘 若出现加减符号或第一次计算,结果反馈的都是输入的数据结果反馈输出选择乘或除的结果输出乘法运算包括一个乘法器乘法运算 包括一个乘法器结果输出或数据选择输出进行加减法运算根据加减法选择数据正负,a-b即a+(-b)注:各主要模块都加reset复位进制转换输出2各个模块设计数据输入模块(VHDL附录9) 受限于输入按键有限,输入的两位二进制数有计数器实现,每按下cl
3、k加1,到99后恢复零元件例化:VHDL编程:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity leijia is port( reset:in std_logic; clk: in std_logic; dataout: out std_logic_vector(7 downto 0) );end entity leijia;architecture behave of leijia is signal temp:std_lo
4、gic_vector(7 downto 0);begindataout=temp;process(clk,reset)beginif(reset=0)then if(clkevent and clk=1)then if(temp=01100100)then temp=00000000; else temp=temp+1; end if; end if;else temp=00000000;end if;end process;end behave;加减选择模块 减法是加法的逆运算,A-B等同于A+(-B),即减法运算只需在进行加法运算前把数据的正负取反,所以当减法的下降沿时输出的正负为输入的取
5、反,加法的下降沿时输出的正负为输入的,实现方法与乘除选择模块一致。元件例化:VHDL编程:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity tt2 is port( reset:in std_logic; pn:in std_logic; clk1: in std_logic; clk2: in std_logic; pnout:out std_logic; dout:out std_logic );end entity tt2
6、;architecture behave of tt2 is signal temp:std_logic;begin dout=temp; process(clk1,clk2)beginif(reset=0)thenif(clk1=1)then temp=0;elsif(clk2event and clk2=0)then temp=1;end if;if(temp=1)then pnout=not(pn);else pnout=pn;end if;else temp0,B0 输出数据A+B,正负号为正 2、A0,B|B| 输出数据|A|-|B| 正负号为正 |A|B| 输出数据|B|-|A|
7、正负号为负 3、A0 |A|B| 输出数据|A|-|B| 正负号为负 |A|B| 输出数据|B|-|A| 正负号为正4、 A0,B0 输出数据A+B,正负号为负 其中clk为加or减,上升沿时读新数据并计算。元件例化:VHDL编程:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity add is port(clk :in std_logic; reset:in std_logic; data:in std_logic_vector
8、(27 downto 0); data_pn:in std_logic; dout :out std_logic_vector(27 downto 0); dout_pn:out std_logic );end entity add;architecture behave of add is signal temp: std_logic_vector(27 downto 0):=0000000000000000000000000000;signal temp_pn:std_logic:=0;begindout=temp;dout_pn=temp_pn;process(clk,reset)beg
9、inif(reset=1)then temp=0000000000000000000000000000;temp_pn=0;elsif(clkevent and clk=1)then if(temp_pn=0)then if(data_pn=0)then temp=temp+data;temp_pndata or temp=data)then temp=temp-data;temp_pn=0; else temp=data-temp;temp_pn=1; end if; end if; else if(data_pn=1)then temp=temp+data;temp_pn=1; else
10、if(tempdata or temp=data)then temp=data-temp;temp_pn=0; else temp=temp-data;temp_pn=1; end if; end if; end if;end if;end process;end behave;乘法模块当乘法符号的上升沿的时候读入反馈的结果(包括数据及正负号)并输出到data1、data1_pn; 当乘法符号的下降沿的时候读入数据(包括数据及正负号)并输出到data2、data2_pn。并进行计算,结果的数据由乘法器计算得到;结果的正负号即为两个相乘数据的正负号取异或。数据为保留两位小数,输出的当成被乘数的数
11、乘上100。元件例化: VHDL编程:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity mul is port( clk : in std_logic; reset: in std_logic; data : in std_logic_vector(7 downto 0); data_pn : in std_logic; res : in std_logic_vector(27 downto 0); res_pn: in std
12、_logic; data1: out std_logic_vector(27 downto 0); data2: out std_logic_vector(7 downto 0); data1_pn:out std_logic; data2_pn:out std_logic );end entity mul;architecture behave of mul is signal temp1:std_logic;signal temp2:std_logic;beginprocess(reset,clk)beginif(reset=0)then if(clkevent and clk=1)the
13、n data1=res; data1_pn=res_pn; end if; if(clkevent and clk=0)then data2=data; data2_pn=data_pn; end if;else data1=0000000000000000000000000000;data2=00000000;end if;end process;end behave;除法模块当除法符号的上升沿的时候读入反馈的结果(包括数据及正负号)并输出到data1、data1_pn; 当除法符号的下降沿的时候读入数据(包括数据及正负号)并输出到data2、data2_pn。并进行计算,结果的数据由除法器
14、计算得到;结果的正负号即为两个相除数据的正负号取异或。数据为保留两位小数,输出的当成被除数的数乘上100。元件例化:VHDL编程:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity div is port( clk : in std_logic; reset: in std_logic; data : in std_logic_vector(7 downto 0); data_pn : in std_logic; res : in
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- vhdl 计算器 模块 设计
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【w****g】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【w****g】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。