版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数字逻辑设计实验报告ALU的设计与实现摘要:本实验基于vhdl语言设计一个基本的ALU,并使用FPGA完成两个四位二进制数的加、减、乘及左右移位功能,使用软件modelsim进行了仿真波形检验,补充部分为了避免使用PPGA会产生按键抖动,而使用chipscope和开发平台测量ALU的功能。实验目的:熟悉数字电路中流水的概念设计一个基本的ALU,使其具有要求的运算功能进一步熟悉VHDL语言的编程实验要求:用FPGA完成两个四位数的加、减、乘及移位功能;编写ALU的VHDL代码,并通过Modelsim仿真测试;用chipscope和开发平台测量ALU的功能实验方案及原理:实验方案:我们的总体思路就是分别设计出加法、减法、左右移位、乘法部分,最后设计选择器部分来进行运算形式的选择控制。实验设计难点在于:一是流水的设计,二是乘法器的设计。乘法器的设计比较简单,还是通过加法器来构造,只不过是连线要比以前的复杂一些。流水的设计是要求在输入输出端口分别设计出一个触发器,达到延时的效果,来实现流水的功能。实验原理及系统架构:加法器:加法器的设计要求:实现四位带符号运算。我们设计的思路是为了避免溢出问题,先把输入的4位数扩为五位来考虑。我们通过用五个全加器来实现。匚匚—S= (A+B)+缸C=C^C^AB仿真结果:
注:结果延时两拍输出减法器设计只需将被减数转换为其补码然后利用加法器即可。减法时注意-8的运算,a<=ain(3)&ain;b<=not(bin(3)&bin)+〃0001〃;由于带有符号位,所以我们在最后加上了0001。乘法器:乘法器的设计要求:实现无符号位的乘法运算。我们设计的思路是用全加器阵列实现一个用于四位无符号数的乘法器,将乘数和被乘数代入计算乘积。移位器:移位器的设计要求对四位输入数据进行左移,右移操作,并按8位输出,我们的设计思路就是对于系统的两个输入,对第一个输入进行移位处理,取第二
个输入的后两位来判断移几位,在预先输入的时候就判定了进行左移还是右移。具体处理,使用case语句对每一种移位进行处理。若是进行右移将是循环移位,将溢出的位数到左边补位。5).顶层以及控制器的设计:控制部分Instructions1.Fiveinstruetions?3bit5needed顶层的设计要求是设计一个控制器来决定对输入的数据进行哪种操作,并延时一拍后输出相应的结果。由输入的控制信号来决定进入下图中六个运算模块中的哪一个,并针对每一个模块设计一个状态机,使输入控制信号时打开相应的模块,并在两拍之后关闭现在以开启的模块(如果这两拍内没有收到打开这个模块控制信号)。我们使用的是触发器的延时来设计状态机。Iiisirction控制器结构图整体结构Iiisirction控制器结构图整体结构仿真结果:通卵、堰WMaII|ilF7|设计总结:这次ALU的设计,我们收获很大,在设计各个模块的时候,我们和其他同学进行了很多交流,互相交流意见;这次设计,使我们进一步了解了“流水”,“状态机”,“顶层”的概念,为我们以后设计综合数字电路打下了基础;附录:VHDL程序ALUentityALUisport(rst:instd_logic;clk:instd_logic;datin1:instd_logic_vector(3downto0);datin2:instd_logic_vector(3downto0);inst:instd_logic_vector(2downto0);ensure:instd_logic;datout:outstd_logic_vector(7downto0));endALU;architectureBehavioralofALUiscomponentMUXisport(inst:instd_logic_vector(2downto0);sum:instd_logic_vector(7downto0);sub:instd_logic_vector(7downto0);multi:instd_logic_vector(7downto0);ls:instd_logic_vector(7downto0);rs:instd_logic_vector(7downto0);datout:outstd_logic_vector(7downto0));endcomponent;componentADDERisport(ain:instd_logic_vector(3downto0);bin:instd_logic_vector(3downto0);sum:outstd_logic_vector(7downto0));endcomponent;componentsubtractorisport(ain:instd_logic_vector(3downto0);bin:instd_logic_vector(3downto0);sub:outstd_logic_vector(7downto0));endcomponent;componentmultiplierisport(a:instd_logic_vector(3downto0);b:instd_logic_vector(3downto0);multi:outstd_logic_vector(7downto0));endcomponent;componentLSisport(ain:instd_logic_vector(3downto0);bin:instd_logic_vector(3downto0);s:outstd_logic_vector(7downto0));endcomponent;componentRSisport(ain:instd_logic_vector(3downto0);bin:instd_logic_vector(3downto0);s:outstd_logic_vector(7downto0));endcomponent;signaldin1,din2:std_logic_vector(3downto0);signal datout0,datout1,datout2,datout3,datout4,dat :std_logic_vector(7downto0);beginU0:ADDERportmap(ain=>din1,bin=>din2,sum=>datout0);U1:subtractorportmap(ain=>din1,bin=>din2,sub=>datout1);U2:multiplierportmap(a=>din1,b=>din2,multi=>datout2);U3:LSportmap(ain=>din1,bin=>din2,s=>datout3);U4:RSportmap(ain=>din1,bin=>din2,s=>datout4);U5:MUXportmap(inst=>inst,sum=>datout0,sub=>datout1,multi=>datout2,ls=>datout3,rs=>datout4,datout=>dat);process(rst,clk)beginifrst='1'thendin1<=(others=>'0');din2<=(others=>'0');elsifclk'eventandclk='1'thendin1<=datin1;din2<=datin2;endif;endprocess;process(ensure,clk)beginifensure='0'thendatout<=(others=>'0');elsifclk'eventandclk='1'thendatout<=dat;endif;endprocess;endBehavioral;ADDERentityADDERisport(ain:instd_logic_vector(3downto0);bin:instd_logic_vector(3downto0);sum:outstd_logic_vector(7downto0));endADDER;architecturebehavioralofADDERiscomponentF_ADDisport(A:instd_logic;B:instd_logic;Cin:instd_logic;S:outstd_logic;Cout:outstd_logic);endcomponent;signalc1,c2,c3,c4,c5,s1,s2,s3,s4,s5:std_logic;signala,b:std_logic_vector(4downto0);begina<=ain(3)&ain;b<=bin(3)&bin;U1 : F_ADD port map(A=>a(0),B=>b(0),Cin=>'0',S=>s1,Cout=>c1);U2 : F_ADD port map(A=>a(1),B=>b(1),Cin=>c1,S=>s2,Cout=>c2);U3 : F_ADD port map(A=>a(2),B=>b(2),Cin=>c2,S=>s3,Cout=>c3);U4 : F_ADD port map(A=>a(3),B=>b(3),Cin=>c3,S=>s4,Cout=>c4);U5 : F_ADD port map(A=>a(4),B=>b(4),Cin=>c4,S=>s5,Cout=>c5);sum<=s5&s5&s5&s5&s4&s3&s2&s1;endbehavioral;Subtractorentitysubtractorisport(ain:instd_logic_vector(3downto0);bin:instd_logic_vector(3downto0);sub:outstd_logic_vector(7downto0));endsubtractor;architecturebehavioralofsubtractoriscomponentF_ADDisport(A:instd_logic;B:instd_logic;Cin:instd_logic;S:outstd_logic;Cout:outstd_logic);endcomponent;signalc1,c2,c3,c4,c5,s1,s2,s3,s4,s5:std_logic;signala,b:std_logic_vector(4downto0);begina<=ain(3)&ain;b<=not(bin(3)&bin)+〃0001〃;U1 : F_ADD port map(A=>a(0),B=>b(0),Cin=>'0',S=>s1,Cout=>c1);U2 : F_ADD port map(A=>a(1),B=>b(1),Cin=>c1,S=>s2,Cout=>c2);U3 : F_ADD port map(A=>a(2),B=>b(2),Cin=>c2,S=>s3,Cout=>c3);U4 : F_ADD port map(A=>a(3),B=>b(3),Cin=>c3,S=>s4,Cout=>c4);U5 : F_ADD port map(A=>a(4),B=>b(4),Cin=>c4,S=>s5,Cout=>c5);sub<=s5&s5&s5&s5&s4&s3&s2&s1;endbehavioral;Multiplierentitymultiplierisport(a:instd_logic_vector(3downto0);b:instd_logic_vector(3downto0);multi:outstd_logic_vector(7downto0));endmultiplier;architectureBehavioralofmultiplieriscomponentF_ADDisport(A:instd_logic;B:instd_logic;Cin:instd_logic;S:outstd_logic;Cout:outstd_logic);endcomponent;signalpp0,pp1,pp2,pp3:std_logic_vector(3downto0);signalC11,C12,C13,C21,C22,C23,C31,C32,C33,C41,C42,C43,S11,S12,S13,S21,S22,S23,S31,S32,S33,S41,S42,S43:std_logic;beginpp0<=(b(0)anda(3)) &(b(0) and a(2)) & (b(0) anda(1)) & (b(0) anda(0));pp1<=(b(1)anda(3)) &( b(1) and a(2)) & (b(1) anda(1)) & (b(1) anda(0));pp2<=(b(2)anda(3)) &( b(2) and a(2)) & (b(2) anda(1)) & (b(2) anda(0));pp3<=(b(3)anda(3)) &( b(3) and a(2)) & (b(3) anda(1)) & (b(3) anda(0));U11:F_ADDportmap(A=>pp1(0),B=>pp0(1),Cin=>'0',S=>S11,Cout=>C11);U12:F_ADDportmap(A=>pp1(1),B=>pp0(2),Cin=>'0',S=>S12,Cout=>C12);U13:F_ADDportmap(A=>pp1(2),B=>pp0(3),Cin=>'0',S=>S13,Cout=>C13);U21:F_ADDportmap(A=>pp2(0),B=> S12,Cin=>C11,S=>S21,Cout=>C21);U22:F_ADDportmap(A=>pp2(1),B=> S13,Cin=>C12,S=>S22,Cout=>C22);U23:F_ADDportmap(A=>pp2(2),B=>pp1(3),Cin=>C13,S=>S23,Cout=>C23);U31:F_ADDportmap(A=>pp3(0),B=> S22,Cin=>C21,S=>S31,Cout=>C31);U32:F_ADDportmap(A=>pp3(1),B=> S23,Cin=>C22,S=>S32,Cout=>C32);U33:F_ADDportmap(A=>pp3(2),B=>pp2(3),Cin=>C23,S=>S33,Cout=>C33);U41:F_ADDportmap(A=> C31,B=> S32,Cin=>'0',S=>S41,Cout=>C41);U42:F_ADDportmap(A=> C32,B=> S33,Cin=>C41,S=>S42,Cout=>C42);U43:F_ADDportmap(A=> C33,B=>pp3(3),Cin=>C42,S=>S43,Cout=>C43);multi<=C43&S43&S42&S41&S31&S21&S11&pp0(0);endBehavioral;MUXentityMUXisport(inst:instd_logic_vector(2downto0);sum:instd_logic_vector(7downto0);sub:instd_logic_vector(7downto0);multi:instd_logic_vector(7downto0);ls:instd_logic_vector(7downto0);rs:instd_logic_vector(7downto0);datout:outstd_logic_vector(7downto0));endMUX;architectureBehavioralofMUXisbeginprocess(inst)begincaseinstiswhen"001"=>datout<=sum;when"010"=>datout<=sub;when"011"=>datout<=multi;when"100"=>datout<=ls;when"101"=>datout<=rs;whenothers=>null;endcase;endprocess;endBehavioral;LSlibraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;entityLSisport(ain:instd_logic_vector(3downto0);
bin:instd_logic_vector(3downto0)s:outstd_logic_vector(7downto0))endLS;architectureBehavioralofLSissignalnum:std_logic_vector(2downto0);signala,b:std_logic_vector(7downto0);beginnum<=bin(2)&bin(1)&bin(0);a<="0000"&ain;process(num,a)begincasenumiswhen"000"=>b<=a;when"001"=>0) & a(7);0) & a(7 downto 6);0) & a(7);0) & a(7 downto 6);0) & a(7 downto 5);0) & a(7 downto 4);0) & a(7 downto 3);0) & a(7 downto 2);downto1);when"010"=>b<=a(5downtowh
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版煤炭资源开采权出让合同书4篇
- 二零二五年生态治理项目土石方调配合同3篇
- 2025年度二手房装修工期延误赔偿合同4篇
- 2025年新型大棚设施建设与租赁一体化服务协议4篇
- 2025年蓄水池施工与生态湿地建设合作协议3篇
- 2024物流中心经营场地租赁合同
- 个人购车担保合同(2024版)
- 个人二手物品交易平台服务协议2024年度3篇
- 2025年新型玻璃瓶盖研发与生产合作合同3篇
- 2025年新型草料加工技术研发与应用合同3篇
- 工程物资供应、运输、售后服务方案
- 中国成人暴发性心肌炎诊断和治疗指南(2023版)解读
- 新生儿低血糖课件
- 自动上下料机械手的设计研究
- 电化学储能电站安全规程
- 幼儿园学习使用人民币教案教案
- 2023年浙江省绍兴市中考科学真题(解析版)
- 语言学概论全套教学课件
- 大数据与人工智能概论
- 《史记》上册注音版
- 2018年湖北省武汉市中考数学试卷含解析
评论
0/150
提交评论