当前位置:文档之家› 实验八全加器的设计分析实验报告

实验八全加器的设计分析实验报告

实验八全加器的设计分析实验报告姓名:孙时佳学号:3110102935 专业:计算机科学与技术课程名称:逻辑与计算机设计基础实验同组学生姓名:无实验时间:2012-11-6 实验地点:紫金港东4-509 指导老师:蒋方炎一、实验目的和要求1.掌握一位全加器的工作原理和逻辑功能2.掌握串行进位加法器的工作原理和进位延迟3.掌握超前进位的工作原理4.掌握减法器的实现原理5.了解加法器在CPU中的地位6.掌握FPGA开发平台进行简单的I/O数据交互二、实验内容和原理实验内容:1.实现16位加减器的调试仿真2. 16位计算器设计实验原理:2.1 一位全加器(FA)全加器是一个能对一位二进制数及来自低位的进位进行相加,产生本位和及向高位进位的逻辑电路。

该电路有3个输入变量,分别是2个加数Ai 和Bi,低位进位输入Ci ,2个输出变量,分别是全加和Si,进位输出Ci+1。

一位全加器的逻辑表达式:Si = Ai⊕Bi⊕Ci 、Ci+1=Ai Bi+BiCi+CiAi图表1:一位全加器真值表由一位全加器的输入输出关系,得到电路图:2.2多位串行进位全加器多位全加器可由一位全加器将进位串接构成。

高位进位生成速度慢,每一位的相加结果都必须等到低一位的进位产生以后才能建立起来,所以位数越多时间越长。

module adder_8bits(A, B, Ci, S, Co);// port and variable declarationadder_1bit A1_1(A[1], B[1], Ci,A1_2(A[2], B[2], Ctemp[1],A1_3(A[3], B[3], Ctemp[2],A1_4(A[4], B[4], Ctemp[3],A1_5(A[5], B[5], Ctemp[4],A1_6(A[6], B[6], Ctemp[5],A1_7(A[7], B[7], Ctemp[6],A1_8(A[8], B[8], Ctemp[7],endmodulemodule adder_32bits(A, B, Ci, S, Co);// port and variable declarationadder_8bits A8_1(A[ 8: 1], B[ 8: 1], Ci,A8_2(A[16: 9], B[16: 9], Ctemp[1],A8_3(A[24:17], B[24:17], Ctemp[2],A8_4(A[32:25], B[32:25], Ctemp[3],endmodule图表3多位串行进位全加器示意图及代码2.3多位串行进位全减器原理:•用负数补码加法实现,减数当作负数求补码• 共用加法器• 用“异或”门控制求反,最低进位位加一图表4 多位串行进位全减器电路图Ctr为0时,S[7 : 0] = A[7 : 0] + B[7 : 0],做加法Ctr为1时,S[7 : 0] = A[7 : 0] - B[7 : 0]= A[7 : 0] + B[7 : 0] + 1 ,做减法图表5 全减器代码Ctr=0,做加法Ctr=1,做减法,同时C0=12.4 超前进位加法器•超前进位加法器用当前输入直接产生进位输出• 对于给定的第i 位全加器,其进位有如下规律:a)当Ai=Bi=1时,无论是否有进位输入,都有进位产生,即Ci+1=1。

定义进位生成函数:Gi = Ai ∧Bib)当半加器和为1,且进位Ci = 1时,进位被传递至输出,即Ci+1=1。

定义进位传递函数:Pi = Ai⊕Bi• 输出进位通过二个门(与门、或门)即可得到C1=G0 + P0C0C2=G1 + P1C1 = G1 + P1G0 + P1P0C0C3=G2 + P2C2 = G2 + P2G1 + P2P1G0 + P2P1P0C0C4=G3 + P3C3 = G3 + P3G2 + P3P2G1 + P3P2P1G0+P3P2P1P0C0当加法器位数较多时,进位输出函数式很长,电路很复杂• 为了在速度和复杂性之间权衡,可采用分组超前进位方式• 16位超前进位加法器可分4 组4位加法器,每4位加法有一个向上的进位输出–每组加法部件产生组进位函数–C16表达式形式上与C4相同,可以使用4位超前进位电路图表6 16位超前进位加法器示意图C 8 = G 7 + P7G 6 + P7 P6G 5 + P7 P6 P5G 4 + P7 P6 P5 P4C 4 = G 4~ 7 + P4~ 7 C 4C12 = G11 + P11G10 + P11 P10 G 9 + P11 P10 P9G 8 + P11 P10 P9 P8C 8 = G 8~11 + P8~11C 8C16 = G15 + P15G14 + P15P14G13 + P15P14P13G12+ P15P14P13P12C12 = G12~15 + P12~15 C12 = G12~15 + P12~15 (G 8~1 1 + P8~11 (G 4~ 7 + P 4~ 7 (G 0~ 3 + P0~ 3C 0 )))G 0~ 3 = G 3 + P3G 2 + P3 P2 G1 +P3 P2 P1G 0 P0~ 3= P3 P2 P1P0G 4~ 7 = G 7 + P7G 6 + P7 P6G 5 +P7P6P5G 4 P4~ 7= P7P6P5P4G 8~11 = G11 + P11G10 + P11 P10 G 9+ P11 P10 P9 G8 P8~11 = P11 P10 P9P8G12~15 = G15 + P15 G14+ P15 P14 G13 + P15 P14 P13G12 P12~15 = P15 P14 P13 P12 三、主要仪器设备1.装有ISE的计算机系统1台2.Spartan III实验板1套四、操作方法与实验步骤4.1实现16位加减器的调试仿真1.用Verilog结构化描述语言实现16位加减器。

首先创建新的工程,建立新的源文件,输入代码如下。

然后检验代码的语法规则,如有错误在下方ERROR处提示下改正。

16位全加器的代码:一位全加器的代码:扩展的32位显示程序代码:module display32bits(clk,disp_num,digit_anode,segment);input clk;input [31:0] disp_num;output [7:0] digit_anode;output [7:0] segment;reg [7:0] digit_anode;reg [7:0] segment;reg [12:0] cnt=0;wire [31:0] disp_num;reg [3:0] num;always@(posedge clk)begincase(cnt[12:10])3'b000:begindigit_anode <= 8'b11111110;num <= disp_num[3:0];end3'b001:begindigit_anode <= 8'b11111101;num <= disp_num[7:4];end3'b010:begindigit_anode <= 8'b11111011;num <= disp_num[11:8];end3'b011:begindigit_anode <= 8'b11110111;num <= disp_num[15:12];end3'b100:begindigit_anode <= 8'b11101111;num <= disp_num[19:16];end3'b101:begindigit_anode <= 8'b11011111;num <= disp_num[23:20];end3'b110:begindigit_anode <= 8'b10111111;num <= disp_num[27:24];end3'b111:begindigit_anode <= 8'b01111111;num <= disp_num[31:28];endendcasecase(num)4'b0000:segment<=8'b11000000;4'b0001:segment<=8'b11111001;4'b0010:segment<=8'b10100100;4'b0011:segment<=8'b10110000;4'b0100:segment<=8'b10011001;4'b0101:segment<=8'b10010010;4'b0110:segment<=8'b10000010;4'b0111:segment<=8'b11111000;4'b1000:segment<=8'b10000000;4'b1001:segment<=8'b10010000;4'b1010:segment<=8'b10001000;4'b1011:segment<=8'b10000011;4'b1100:segment<=8'b11000110;4'b1101:segment<=8'b10100001;4'b1110:segment<=8'b10000110;2. 仿真建立新的基准测试波形文件,令A[15:0] = AAAA,B[15:0] = BBBB,对add_sub_16bits模块进行仿真。

3. 记录并分析仿真结果,若有错误应返回修改代码4.2 1位计算器设计1.功能两个16位操作数支持按键修改进入计算状态后,可进行加/减/与/或操作,并显示结果2.步骤1.编写Top模块2.调用前面16为全加器和显示模块3.增加创建操作数模块/计算结果模块4.编写UCF文件。

5.下载到板子上验证。

五、实验结果与分析六、讨论、心得。

相关主题