ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:19.67KB ,
资源ID:17356484      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

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

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(利用VHDL的实现通用计算器的源程序Word格式文档下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

利用VHDL的实现通用计算器的源程序Word格式文档下载.docx

1、END behave; 顶层模块:8位二进制并行进位加法器的部分程序ADDER8B.VHD如下:ENTITY ADDER8B ISIN STD_LOGIC_VECTOR(7 DOWNTO 0);OUT STD_LOGIC_VECTOR(7 DOWNTO 0);OUT STD_LOGICEND ADDER8B;ARCHITECTURE a OF ADDER8B ISComponent adder4B -引用4位二进制并行进位加法器END COMPONENT;SIGNAL CARRY_OUT:STD_LOGIC; -4位加法器的进位标志 U1:ADDER4B -安装一个4位二进制加法器U1 POR

2、T MAP(ci=ci,a=a(3 DOWNTO 0),b=b(3 DWONTO 0),s=(3 DOWNTO 0),co=CARRY_OUT); U2:ADDER4B -安装一个4位二进制加法器U2CARRY_OUT,a=a(7 DOWNTO 4),b=b(7 DWONTO 4),s=(7 DOWNTO 4),co=co);加法器VHDL程序如下USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY adder IS port(a:in std_logic; -被加数a -加数bci: -输入进位out std_logic; -结果输出out std_logic -输出进位e

3、nd adder;architecture behave of adder is signal tem: std_logic; -暂存signal stem:begintem=a xor b; -中间变量stem=tem xor ci; -结果co=(tem and ci) or (a and b); -进位输出s=stem; -输出end behave;4位二进制并行进位减法器的源程序suber.VHD如下:ENTITY sub4 IS PORT(a: -4位被减数 -4位减数 -结果输出OUT STD_LOGIC -输出进位end suber;architecture behave of

4、suber iscomponent adder is -引用加法器的模块out std_logic end component;signal btem:std_logic_vector(3 downto 0); -减数寄存signal ctem:std_logic_vector(4 downto 0); - 进位寄存 - 结果寄存btem(3 downto 0)=not b(3 downto 0); -先把减数求反ctem(0)=not ci; -输入的进位也求反,从而对减数求补码g1:for I in 0 to 3 generate -连用4位全加器add:adder port map (a

5、(i),btem(i),ctem(i),stem(i),ctem(i+1);end generate;s(3 downto 0)=stem(3 downto 0);=not ctem(4); -求反输出进位乘法器的源程序:Entity mul is Port( a:in std_logic_vector(3 downto 0); -4位被乘数 -4位乘数 y:out std_logic_vector(7 downto 0) -乘积);end mul;architecture arch of mul isy(7 downto 0) -开始状态if str=1 then -收到启动信号state=

6、one; -转到状态oneatem(3 downto 0)=a(7 downto 4); -把高4位放到减法器被减数端 =b(3 downto 0); -把除数放到减法器减数端ain(7 downto 0)=a(7 downto 0); -寄存被除数bin(3 downto 0) -第一次移位if cotem=0 then -被除数高4位小于除数,溢出!=eror; -转到出错状态else -不溢出ain(3 downto 1)=ain(2 downto 0); -被除数做移位ain(0) -再做3此移位if n=2 then -第四次移位=three; -是,则跳转到下一状态n:=0; -移

7、位计数器清零else -否则 state -还回到这个状态 n:=n+1; -移位计数器加1 end if; if cotem=0 then -不够减,有借位 atem(3 downto 1)=stem(2 downto 0); -减法器结果移位作为下一次的输入else -够减,没有借位=atem(2 downto 0); -结果输出移位作为下一次的输入 ain(3 downto 1) -结果寄存器左移一位 ain(0) -这次运算借位输出,输入到寄存器ain最后一位 atem(0) -正常运算结果输出 s(3 downto 1) -寄存器ain低3位作为输出结果高3位 s(0) -最后一次减

8、法运算的借位输出求反作为结果输出最低位if cotem=0 then -最后一次减法运算,够减(无借位) y(3 downto 0)=atem(3 downto 0); -则减法器输出结果为整个除法的余数else -否则,不够减 -则最后一次减法运算的被减数为整个除法的余数 atem(3 downto 0)= 0; -寄存器清零 btem(3 downto 0) -溢出状态end case;end process p2;citem=0; -4位减法器借位输入接地U1:suber port map(atem,btem,citem,stem,cotem);数字按键译码电路VHDL语言描述entit

9、y numdecoder isport(reset:inclk:innum:std_logic_vetctor(9 downto 0);outnum:buffer std_logic_vector(3 woento 0);outflag:out std_logic);end;architecture behave of numdecoer is if reser=1then outnumoutnumoutflag=”0001”; -按下第二个键表示输入1when”0000000100”=”0010”; -按下第三个键表示输入2when”0000001000”=”0011”; -按下第四个键表示

10、输入3when”0000010000”=”0100”; -按下第五个键表示输入4when”0000100000”=”0101”; -按下第六个键表示输入5when”0001000000”=”0110”; -按下第七个键表示输入6when”0010000000”=”0111”; -按下第八个键表示输入7when”010*”=”1000”; -按下第九个键表示输入8when”1000000000”=”1001”; -按下第十个键表示输入9when others=outnum; -不按键时保持end process;7段译码器的vhdl语言描述entity vdecode isport(indata

11、:outdata:out std_logic_vector(0 to 6)Atchitecture behave of vdecode isBeginWith indata selectOutdata=”1111110”when”0000”, ”0110000”when”0000”,”1111001”when”0000”,”0110011”when”0000”,”1011011”when”0000”,”1011111”when”0000”,”1110000”when”0000”,”1111111”when”0000”,”1111110”when”0000”, ”1111110”when”000

12、0”,”1111011”when”0000”,”0000000”when others;End behave;8位二进制数转换成个位、十位、百位的进程:Ctrview:process(c,clk)Begin If c=1then view1view2viewviewstepktempif ktemp=”11001000”then=ktemp-“11001000;elsif ktemp=”01100100”then=ktemp-“01100100”;elsif view1 viewstep=”01011010”then=ktemp-“01011010”;=”01010000”then view2

13、=ktemp-“01010000”;=”01000110”then=ktemp-“01000110”;=”00111100”then=ktemp-“00111100”;=”00110010”then=ktemp-“00110010”;=”00101000”then=ktemp-“00101000”;=”00011110”then=ktemp-“00011110”;=”00010100”then=ktemp-“00010100”;=”00001010”then=ktemp-“00001010”;elsif view2=oneview3=ktemp(3 downto 0);NULL;end pro

14、cess ctrview;计算器的VHDL语言Entity cal is Port(inclk: num:in std_logic_vector(9 downto 0); plus: in std_logic; subt: mult: mdiv: equal: c: onum1,onum2,onum3:out std_logic_vector(0 to0) );end cal;architecture behave of cal istype state is(takenum,hundred,ten,one);signal viewstep: state;signal ktemp:signal flag:signal fl:signal acc:signalreg:signal keep:signal ans:std_logic_vector(7 downto 0);signal dans:signal numbuff:signal vf:signal strdiv:

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1