




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
大连理工大学 基于FPGA的8位加法器设计学 院(系): 软件学院 专 业: 软件工程 姓 名: 学 号: 姓 名: 学 号: 指 导 教 师: 评 阅 教 师: 完 成 日 期: 2014/6/12 大连理工大学Dalian University of Technology摘 要加法器是数字系统中的基本逻辑器件,可以直接实现加法操作,同时,也可通过组合构成实现减法器和硬件乘法器。加法器可随着是否有低位输入简单分为半加器和全加器。而多位加法器的构成有两种方式:并行进位和串行进位。并行进位加法器设有进位产生逻辑,运算速度较快;串行进位方式是将全加器级联构成多位加法器并行进位加法器通常比串行级联加法器占用更多的资源。随着位数的增加,相同位数的并行加法器与串行加法器的资源占用差距也越来越大。因此,在工程中使用加法器时,要在速度和容量之间寻找平衡点。而当今社会的FPGA也已经表现出了很大的性能潜力。它们支持深度可变的流水线结构,并且提供大量的并行计算资源,仅仅一个时钟周期内就可以完成非常复杂的功能,其中VHDL语言更是大放异彩,所以利用VHDL语言研究基于FPGA的加法器的实现对于电子硬件设计及其的理论发展的认识和理解具有重要意义,之后再利用ModelSim进行功能仿真波形截图与理论验证,在这些过程中让我们对FPGA有了更深刻的认识和全面的学习。关键词: FPGA;加法器;VHDL语言;ModelSim ;目录摘 要2设计原理4实现框图42.1四位加法器的实现框图42.2减小运算的延迟52.3八加法器的实现框图6设计过程63.1设计思路63.2四位二进制并行加法器的设计63.3四位并行加法器波形7转换显示模块的设计84.1二进制转换成十进制并显示84.2二进制转十进制显示模块波形10动态显示模块的设计105.1动态显示的模块的实现105.2动态显示模块波形11八位加法器的设计126.1四位加法器级联成8位加法器126.2八位加法器波形13附录14Ucf约束实现14synplify pro软件实现综合15参考文献:17设计原理近加法器是数字系统中的基本逻辑器件。为了节省系统资源,减法器和硬件乘法器一般都由加法器来构成。但宽位加法器的设计是很耗费资源的,因此在实际的设计和相关系统的开发中需要注意资源的利用率和进位速度两方面的问题。如摘要所言,多位加法器的构成有两种方式:并行进位和串行进位方式。并行进位加法器设有并行进位产生逻辑,运算速度快;串行进位方式是将全加器级联构成多位加法器。通常,并行加法器比串行级联加法器的资源占用更多的资源,并且随着位数的增加,相同位数的并行加法器比串行加法器的资源占用差距也会越来越大。而很多实验及事实向我们证明,4位二进制并行加法器和串行级联加法器占用几乎相同的资源。这样,多位数加法器由4位二进制并行加法器级联构成是较好的折中选择。因此,8位加法器采用两个4位二进制并行加法器级联而成。实现框图2.1四位加法器的实现框图如下图所示,四位加法器采用四个一位全加器级连成串行进位加法器。图1其中CSA为一位全加器,A和B为加法器的输入位串,对于四位加法器则位宽为4位,D为加法器输出位串,位宽和输入位串相同,C为进位输入(Ci)或输出(Co)。2.2减小运算的延迟显然,对于上图的这种方式,因高位运算必须要等低位进位来到后才能进行,因此它的延迟相当大,运算效率低。由于运算的延迟主要是由进位延迟引起的,所以减少进位的延迟对提高运算速度非常有效。采用下图所示方法,将进位中的迭代关系去掉,则各位彼此独立,进位传播不复存在。因此,总的延迟是两级门的延迟。这样便可大大减小运算的延迟,从而提高运算效率,实现高速运算。图2上图为四位加法器的超前进位的实现原理图,其中,G表示进位生成位串,与输入位宽相同,P表示进位传输位串,与输入位宽相同。其意义为:如G为1,则必定产生进位,若P为1,则向高位传输进位。当进行加法运算时,G = A and B,P = A or B;当进行减法运算时,G = A and (not B),P = A or (not B)。根据上图可得到四位加法器的各级进位输出为:C0 = G0 or P0 and CiC1 = G1 or P1 and Co = G1 or P1 and G0 or P1 and P0 and CiC2 = G2 or P2 and C1 = G2 or P2 and G1 or P2 and P1 and G0 or P2 and P1 and P0 and CiC3 = G3 or P3 and C2 = G3 or P3 and G2 or P2 and G1 or P2 and P1 and G0 or P2 and P1 and P0 and CiCo = C3D = A and B and C = (A and ) Xor (A or B) Xor C = G Xor P Xor C上式中 and 为与操作,or 为或操作,not 为非操作,Xor 异或操作。2.3八加法器的实现框图8位加法器采用两个4位二进制并行加法器级联而成。四位加法器采用四个一位全加器级连成串行进位加法器,实现框图如图3所示。图3用两个并行四位加法器实现一个八位加法器设计过程要实现8位加法器,需要三个子程序:1.四位加法器;2.二进制转十进制显示模块;3.动态显示模块。3.1设计思路利用VHDL语言,实现两个4并行进位加法器,然后将其级联成为一个8位加法器,再实现一个十进制动态显模块,以显示加数、被加数以及相加结果。十进制动态显示模块可以通过设计一个9位二进制转换成十进制的显示子程序,并采用分频来实现。3.2四位二进制并行加法器的设计运用四个全加器级连成串行进位加法器。程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ADD4 IS PORT(A,B:IN STD_LOGIC_VECTOR(3 DOWNTO 0); CI:IN STD_LOGIC; CO:OUT STD_LOGIC; SO:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END ENTITY ADD4;ARCHITECTURE H1 OF ADD4 ISBEGIN PROCESS(A,B) IS VARIABLE CQ,QQ,SQ:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN QQ(0):=NOT(A(0)XOR(NOT(B(0);SQ(0):=NOT(QQ(0) XOR (NOT(CI); IF (A(0) XOR B(0)=1) THEN CQ(0):=CI; -低位相加并产生进位。 ELSE CQ(0):=A(0); END IF; QQ(1):= NOT(A(1) XOR (NOT(B(1);SQ(1):=NOT(QQ(1) XOR (NOT(CQ(0); -第二位于前一进位相加,并产生进位。 IF(A(1) XOR B(1)=1) THEN CQ(1):=CQ(0); ELSE CQ(1):=A(1); END IF; QQ(2):= NOT(A(2) XOR (NOT(B(2);SQ(2):= NOT(QQ(2) XOR (NOT(CQ(1); IF (A(2) XOR B(2)=1) THEN CQ(2):= CQ(1); ELSE CQ(2):=A(2); END IF; QQ(3):= NOT(A(3) XOR (NOT B(3);SQ(3):= NOT(QQ(3) XOR (NOT(CQ(2);-前一位进位与高位相加并产生进位。 IF (A(3) XOR B(3)=1) THEN CQ(3):= CQ(2); ELSE CQ(3):=A(3); END IF; CO=CQ(3);SO=SQ; END PROCESS;END ARCHITECTURE H1;3.3四位并行加法器波形四位加法器的波形如形如图4所示,由图可知仿真结果与理论实际相符。图4四位并行加法器波形图转换显示模块的设计4.1二进制转换成十进制并显示加法器得到的和为二进制,设计以下二进制到十进制转换显示程序使它显示为十进制。程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY LOOK ISPORT(D:IN STD_LOGIC_VECTOR(8 DOWNTO 0); CLK3:IN STD_LOGIC; SMG:OUT STD_LOGIC_VECTOR(2 DOWNTO 0); LED7S: OUT STD_LOGIC_VECTOR(6 DOWNTO 0);END ENTITY LOOK;ARCHITECTURE ONE OF LOOK ISSIGNAL AI,BI,CI: INTEGER RANGE 0 TO 9;SIGNAL XI: STD_LOGIC_VECTOR(2 DOWNTO 0);SIGNAL LED7S1: STD_LOGIC_VECTOR(20 DOWNTO 0);SIGNAL DI: INTEGER RANGE 0 TO 512;BEGIN DI=CONV_INTEGER(D); PROCESS(DI) IS VARIABLE A,B,C: INTEGER RANGE 0 TO 9; BEGIN A:=DI REM 10; -把整型数的个位赋值给A B:=(DI-A) REM 100)/10; -把整型数的十位赋值给B C:=(DI-A-10*B)/100; -把整型数的百位赋值给C AI=A;BI=B;CILED7S1(6 DOWNTO 0)LED7S1(6 DOWNTO 0)LED7S1(6 DOWNTO 0)LED7S1(6 DOWNTO 0)LED7S1(6 DOWNTO 0)LED7S1(6 DOWNTO 0)LED7S1(6 DOWNTO 0)LED7S1(6 DOWNTO 0)LED7S1(6 DOWNTO 0)LED7S1(6 DOWNTO 0)LED7S1(6 DOWNTO 0)LED7S1(13 DOWNTO 7)LED7S1(13 DOWNTO 7)LED7S1(13 DOWNTO 7)LED7S1(13 DOWNTO 7)LED7S1(13 DOWNTO 7)LED7S1(13 DOWNTO 7)LED7S1(13 DOWNTO 7)LED7S1(13 DOWNTO 7)LED7S1(13 DOWNTO 7)LED7S1(13 DOWNTO 7)LED7S1(13 DOWNTO 7)LED7S1(20 DOWNTO 14)LED7S1(20 DOWNTO 14)LED7S1(20 DOWNTO 14)LED7S1(20 DOWNTO 14)LED7S1(20 DOWNTO 14)LED7S1(20 DOWNTO 14)LED7S1(20 DOWNTO 14)LED7S1(20 DOWNTO 14)LED7S1(20 DOWNTO 14)LED7S1(20 DOWNTO 14)LED7S1(20 DOWNTO 14)=XXXXXXX; END CASE; END PROCESS; PROCESS(CLK3) VARIABLE X: STD_LOGIC_VECTOR(2 DOWNTO 0); -定义一个常量,用来控制位选。 BEGIN IF CLK3EVENT AND CLK3=1 THEN IF X0); END IF; END IF; XILED7S1=LED7S1(6 DOWNTO 0);SMGLED7S1=LED7S1(13 DOWNTO 7);SMGLED7S1=LED7S1(20 DOWNTO 14);SMGLED7S1=XXXXXXX;SMG=XXX; END CASE; END PROCESS;END ARCHITECTURE ONE;4.2二进制转十进制显示模块波形输入8位二进制及进位位时,输出个位、十位、百位波形如图5所示,由图可知ModelSim仿真结果与理论实际相符。图5二进制转十进制显示模块波形图动态显示模块的设计5.1动态显示的模块的实现其程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY COUNTER IS PORT(E1,E2,CLK3:IN STD_LOGIC; Q1: OUT STD_LOGIC_VECTOR(2 DOWNTO 0);END ENTITY COUNTER;ARCHITECTURE BHV OF COUNTER ISBEGIN PROCESS(CLK3,E1,E2) IS VARIABLE COUT: INTEGER:=0; BEGIN IF CLK3EVENT AND CLK3=1 THEN COUT:=COUT+1; END IF; IF E1=1 THEN Q1=001; COUT:=0;-输入加数,数码管显示加数。 END IF; IF E2=1 THEN Q11050 THEN Q1AI(3 DOWNTO 0),B=BI(3 DOWNTO 0),CI=E, CO=E,SO=SUM(3 DOWNTO 0); U2:ADD4 PORT MAP(A=AI(7 DOWNTO 4),B=BI(7 DOWNTO 4),CI=E, SO=SUM(7 DOWNTO 4); U3:LOOK PORT MAP(D=PP,CLK3=CLK,LED7S=LED,SMG=WX); U4:COUNTER PORT MAP(CLK3=CLK,Q1=CLK2,E1=EN1,E2=EN2); PROCESS(EN1,EN2) BEGIN IF EN1EVENT AND EN1=1 THEN AI=A;END IF;-输入加数,赋值给AI; IF EN2EVENT AND EN2=1 THEN BI=A; END IF;-输入被加数,赋值给BI。 END PROCESS; PROCESS(CLK2) BEGIN IF CLK2=001 THEN PP=0&AI; END IF; -动态显示加数; IF CLK2=010 THEN PP=0&BI; END IF; -动态显示被加数; IF CLK2=100 THEN PP=COUT∑ END IF; -动态显示九位的和; END PROCESS;END ARCHITECTURE H2; 6.2八位加法器波形八位加法器波形(部分)如图7所示,由图可知ModelSim仿真结果与理论实际相符。图7八位加法器波形图附录Ucf约束实现代码如下所示:#PACE: Start of Constraints generated by PACENET CLK_IN LOC = AF12 ; NET nRST LOC = AE6 ;#PACE: Start of PACE I/O Pin AssignmentsNET CPLD_E LOC = AF19 ;#16 piNNET CPLD_E LOC = AF23 ;#17 piN# NIXIE control line 0-7NET DOT_CON LOC = AA19 ; #0NET DOT_CON LOC = Y19 ;#2NET DOT_CON LOC = AF20 ; #3NET DOT_CON LOC = AE20 ;#1NET DOT_CON LOC = AB23 ; #6NET DOT_CON LOC = AB22 ; #5NET DOT_CON LOC = Y25 ; #7NET DOT_CON LOC = W19 ; #4NET DOT_CON LOC = Y23 ; #8NET DOT_CON LOC = Y22 ;#9NET DOT_CON LOC = AA23 ; #11NET DOT_CON LOC = AB24 ; #10NET DOT_CON LOC = AA24 ;#12 NET DOT_CON LOC = Y21 ;#13 NET DOT_CON LOC = Y20 ;#Mu_IO14NET DOT_CON LOC = AD16 ;#Mu_IO15# NIXIE DATA line 0-7NET DOT_DATA LOC
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中国高导热硅胶片行业市场分析及投资价值评估前景预测报告
- 2025年中国高纯度亚磷酸三甲酯行业市场分析及投资价值评估前景预测报告
- 2025年新能源商用车辆在快递物流配送中的应用场景及市场前景报告001
- 2025年中国辐射屏蔽用铅板行业市场分析及投资价值评估前景预测报告
- 2025年中国肥皂果提取物行业市场分析及投资价值评估前景预测报告
- 5.2基本政治制度八年级道德与法治下册同步金牌说课稿(统编版)
- 14 迁徙与冬眠说课稿小学科学二年级下册青岛版(五四制2024)
- Unit 4 Perseverance and Success教学设计高中英语重庆大学版2019选择性必修第二册-重大版2019
- 口腔专业牙周科知识培训课件
- 7.1为什么要证明教学设计 北师大版数学八年级上册
- 2025年 山东中烟工业有限责任公司招聘考试笔试试卷附答案
- 中国外运笔试题及答案
- DB31/T 796-2014节能改造服务规范
- 文员劳动用工合同
- 高速公路收费系统施工技术指南
- 【核心素养目标】《燕歌行并序》公开课一等奖创新教学设计 统编版高中语文选择性必修中册
- 2025年防城港市公安局交通警察支队港口大队招考高频重点提升(共500题)附带答案详解
- 小学五年级语文阅读理解考场答题技巧方法公式步骤复习课件
- 浙江省绍兴市越城区绍兴市第一初级中学2024-2025学年九年级上学期10月月考科学试题
- 食材采购协议书
- 社区网格员笔试考试题库及答案
评论
0/150
提交评论