基于FPGA的全加器的设计

基于FPGA的全加器的设计

ID:36665909

大小:5.36 MB

页数:18页

时间:2019-05-13

基于FPGA的全加器的设计_第1页
基于FPGA的全加器的设计_第2页
基于FPGA的全加器的设计_第3页
基于FPGA的全加器的设计_第4页
基于FPGA的全加器的设计_第5页
资源描述:

《基于FPGA的全加器的设计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、实验二全加器设计一、实验目的1、设计并实现一个一位全加器。2、编写testbench并仿真。二、实验原理计算机中的加法器一般就是全加器,它实现多位带进位加法。下面以一位全加器介绍。一位全加器有三个输入、两个输出,见图2-1。(被加数)Ai(全加和)Si(被加数)Bi全加器(进位入)Ci-1(进位出)Ci图2-1一位全加器示意图图中的“进位入”Ci-1指的是低位的进位输出,“进位出”Ci即是本位的进位输出。一位全加器的真值表见表2-1。表2-1:输入输出Ci-1BiAiSiCi0000000110010100110110010

2、101011100111111根据表2-1便可写出逻辑函数表达式:Si=Ai·Bi·C+Ai·Bi·C+Ai·Bi·C+Ai·Bi·Ci-1i-1i-1i-1Ci=Ai·Bi+Ai·C+Bi·Ci-1i-1全加功能的硬件实现方法有多种,例如:可以把全加和看作是Ai与Bi的半加和Hi与进位输入Ci-1的半加和来实现。多位全加器就是在一位的原理上扩展而成的。集成电路全加器有7480、7481、7483等。实验源程序文件名是fulladder.vhd。三、实验代码(含TESTBENCH)1、全加器代码LIBRARYIEEE;USE

3、IEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYfulladderISPORT(a,b,cin:INSTD_LOGIC;s,co:OUTSTD_LOGICM:outstd_logic_vector(3downto0));--4位功能选择位M[3:0],设置状态为0001,即16位拨码开关接到16位数据总线上。ENDfulladder;ARCHITECTUREhalf2offulladderISsignaltemp:STD_LOGIC_VECTOR(1D

4、OWNTO0);BEGINM<="0001";temp<=('0'&a)+b+cin;s<=temp(0);co<=temp(1);ENDhalf2;2、testbenchlibraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;useieee.std_logic_arith.all;entityADDER_TBis--entitydeclarationendADDER_TB;architectureTBofADDER_TBiscomponen

5、tfulladderisport(A:instd_logic;B:instd_logic;cin:INSTD_LOGIC;carry:outstd_logic;sum:outstd_logic);endcomponent;signalA,B,cin:std_logic;signalcarry:std_logic;signalsum:std_logic;beginU_ADDER:fulladderportmap(A,B,cin,carry,sum);processvariableerr_cnt:integer:=0;begin

6、--case1A<='0';B<='0';cin<='0';waitfor10ns;assert(sum='0')report"SumError!"severityerror;assert(carry='0')report"CarryError!"severityerror;if(sum/='0'orcarry/='0')thenerr_cnt:=err_cnt+1;endif;--case2A<='0';B<='0';cin<='1';waitfor10ns;assert(sum='1')report"SumError!"

7、severityerror;assert(carry='0')report"CarryError!"severityerror;if(sum/='1'orcarry/='0')thenerr_cnt:=err_cnt+1;endif;--case3A<='0';B<='1';cin<='0';waitfor10ns;assert(sum='1')report"SumError!"severityerror;assert(carry='0')report"CarryError!"severityerror;if(sum/='1

8、'orcarry/='0')thenerr_cnt:=err_cnt+1;endif;--case4A<='0';B<='1';cin<='1';waitfor10ns;assert(sum='0')report"SumError!"severityerror;assert(carry='

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。