实验八全加器的设计分析实验报告
用原理图输入方法设计8位全加器

实验一 用原理图输入方法设计8位全加器1.实验目的和要求本实验为综合性实验,综合了简单组合电路逻辑,MAX+plus 10.2的原理图输入方法, 层次化设计的方法等内容。
其目的是通过一个8位全加器的设计熟悉EDA 软件进行电子线路设计的详细流程。
学会对实验板上的FPGA/CPLD 进行编程下载,硬件验证自己的设计项目。
2.实验原理1位全加器可以用两个半加器及一个或门连接而成,半加器原理图的设计方法很多,我们用一个与门、一个非门和同或门(xnor 为同或符合,相同为1,不同为0)来实现。
先设计底层文件:半加器,再设计顶层文件全加器。
(1) 半加器的设计:半加器表达式:进位:co=a and b 和:so=a xnor ( not b )半加器原理图如下:(2) 全加器的设计: 全加器原理图如下:3.主要仪器设备(实验用的软硬件环境)实验的硬件环境是:微机I113coa sob101010110001100co so b a notxnor2and2I113ain coutcout ain binsumcinbin sumcinf_adderor2af e du3u2u1b acco soB co soBh_adder A h_adderAEDA实验开发系统 ZY11EDA13BE并口延长线,JTAG延长线实验的软件环境是:MAX+plus 10.24.操作方法与实验步骤●按照4.1 节介绍的方法与流程,完成半加器和全加器的设计,包括原理图输入、编译、综合、适配、仿真、实验板上的硬件测试,并将此全加器电路设置成一个硬件符号入库。
●建立一个更高的原理图设计层次,利用以上获得的1位全加器构成8位全加器,并完成编译、综合、适配、仿真、硬件测试。
5.实验内容及实验数据记录1.设计半加器:用原理图输入的方法输入一个半加器的逻辑图,如图所示:然后在assign里头的device里头根据试验箱的芯片设置Decices,接着就设置输入输出荧脚的输入端和输出端,设置如表1所示:表1.半加器引脚端口设置引脚名称设置端口ain input Pin=45bin input Pin=46co output Pin=19so output Pin=24 然后Save,名称为h_add.gdf,再save & Compile。
8位串行全加器设计

8位串行全加器设计一.实验目的1.掌握ISE开发工具的使用,掌握FPGA开发的基本步骤;2.掌握8位串行全加器电路设计的一般办法;3.掌握程序下载的办法;4.初步了解开发板资源,掌握开发板的使用方法,重点掌握按键,开关,LCD,LED的使用方法。
二.实验内容1.用VHDL实现8位串行全加器8位串行全加器顶层模块电路如下图所示。
图 8位串行全加器顶层模块其中a_in,b_in:数据输入,使用板上开关(S0~S15);sum_out:运算结果输出,使用LED显示运算结果。
2.将程序下载到FPGA并进行检验资源使用要求用开关(S0~S15)输入加数,被加数。
用 LED(D8~D15)显示运算结果。
三.实验步骤1.启动ISE,新建工程文件;2.编写8位串行全加器模块Hadder,其原理图如上图所示。
3.编写完加法器模块之后,在顶层文件上实现映射;4.新建UCF文件,输入位置约束;5.完成综合,实现,生成下载文件;6.连接开发板USB下载线,开启开发板电源;7.下载FPGA;8.输入数据,验证结果。
四.关键代码entity add_one isPort ( a_in : in STD_LOGIC;b_in : in STD_LOGIC;cin : in STD_LOGIC;si : out STD_LOGIC;cout : out STD_LOGIC);end add_one;architecture Behavioral of add_one isbeginsi<=(a_in xor b_in)xor cin;cout<=(a_in and b_in)or(cin and a_in)or(cin and b_in); end Behavioral;-- 一位加entity add_eight isPort ( a : in STD_LOGIC_VECTOR (7 downto 0);b : in STD_LOGIC_VECTOR (7 downto 0);sum : out STD_LOGIC_VECTOR (7 downto 0);c_out :out STD_LOGIC);end add_eight;architecture Behavioral of add_eight is component add_oneport( a_in,b_in,cin:in STD_LOGIC;si,cout:out STD_LOGIC);end component;signal c: STD_LOGIC_VECTOR (7 downto 0);signal c_in:STD_LOGIC:='0';beginu0: add_one port map(a(0),b(0),c_in,sum(0),c(0)); u1: add_one port map(a(1),b(1),c(0),sum(1),c(1)); u2: add_one port map(a(2),b(2),c(1),sum(2),c(2)); u3: add_one port map(a(3),b(3),c(2),sum(3),c(3)); u4: add_one port map(a(4),b(4),c(3),sum(4),c(4)); u5: add_one port map(a(5),b(5),c(4),sum(5),c(5)); u6: add_one port map(a(6),b(6),c(5),sum(6),c(6)); u7: add_one port map(a(7),b(7),c(6),sum(7),c_out); end Behavioral;--八位加。
实验六 8位全加器的设计

实验六8位全加器的设计实验报告一、实验要求1、GW48实验箱;2、用原理图输入方式设计8位全加器,并进行编译、仿真、下载;3、总结实验步骤和实验结果。
二、实验内容1、本设计中的8位二进制并行加法器即是由两个4位二进制并行加法器级联而成的,其电路原理图如图所示2、完成4位全加器ADDER4B的设计,并将此全加器电路设置成一个硬件符号入库。
建立一个更高的原理图设计层次,可以取名为ADDER8B。
利用以上获得的4位全加器构成8位全加器,并完成编译,仿真和硬件测试。
3、硬件逻辑验证:选择实验电路结构图NO.1和上图确定引脚的锁定。
如可取实验电路结构图的PIO3~PIO0接A[3..0],PIO7~PIO4接A[7..4],PIO11~PIO8接B[3..0],PIO15~PIO12接B[7..4],PIO49接CIN。
此加法器的被加数A和加数B分别由键2与键1、键4与键3输入,加法器的最低位进位CIN由键8输入,计算和S将分别通过PIO23~PIO20,PIO19~PIO16输出并显示于数码管6(高四位)和数码管5(低四位),溢出进位COUT由PIO39输出,当有进位时,结果显示于发光管D8上。
参考源程序:4位二进制并行加法器的源程序ADDER4Bmodule ADDER4B(A,B,CIN,S,CONT);output [3:0]S;output CONT;input [3:0]A,B;input CIN;assign {CONT, S}=A+B+CIN;endmodule三、实验步骤1、创建文件Max-plus->text editor源代码2、创建缺省符号(Creat Default Symbol)然后添加到框图中:3、连线并标注接口4、编译5、仿真6、下载1)引脚锁定2)开始下载四、实验结果选择实验电路结构图NO.1,此加法器的被加数A和加数B分别由键2与键1、键4与键3输入,加法器的最低位进位CIN由键8输入,当有进位时,结果显示于发光管D8上。
8位全加器课程设计报告

8位全加器课程设计报告一、课程目标知识目标:1. 学生理解8位全加器的基本概念,掌握全加器的逻辑结构和工作原理;2. 学生掌握8位全加器的电路图绘制方法,能分析并解释全加器中各个部分的作用;3. 学生了解8位全加器在计算机运算中的应用,理解其重要性。
技能目标:1. 学生能够运用所学知识,独立完成8位全加器的电路图设计;2. 学生能够运用逻辑门电路,搭建8位全加器电路,并进行功能验证;3. 学生能够通过实际操作,提高解决问题的能力和团队协作能力。
情感态度价值观目标:1. 学生培养对电子技术课程的兴趣,激发学习热情;2. 学生在学习过程中,树立正确的科学态度,注重实践,勇于创新;3. 学生通过团队合作,培养沟通与协作能力,增强集体荣誉感。
课程性质分析:本课程为电子技术课程的一部分,重点在于让学生掌握8位全加器的原理和应用,培养实际操作能力。
学生特点分析:八年级学生具有一定的电子技术基础,对电路有一定的了解,但可能对全加器的理解尚浅,需要通过具体实例和操作来加深理解。
教学要求分析:本课程要求教师以理论与实践相结合的方式进行教学,注重培养学生的实际操作能力和团队协作能力。
在教学过程中,关注学生的个体差异,给予个性化指导,确保课程目标的实现。
通过本课程的学习,学生能够达到上述具体的学习成果。
二、教学内容1. 引言:介绍全加器在数字电路中的重要性,回顾一位全加器的基本原理,引出8位全加器的研究意义。
2. 理论知识:a. 8位全加器的定义和功能;b. 8位全加器的逻辑结构,包括加法器、进位发生器和进位传递部分;c. 8位全加器的真值表和逻辑表达式。
3. 实践操作:a. 8位全加器电路图的绘制;b. 利用集成电路芯片搭建8位全加器电路;c. 电路功能测试及故障排查。
4. 应用拓展:a. 8位全加器在计算机运算中的应用案例;b. 探讨8位全加器与其他数字电路模块的组合应用。
教学大纲安排:第一课时:引言及理论知识(1、2a)第二课时:理论知识(2b、2c)第三课时:实践操作(3a、3b)第四课时:实践操作(3c)第五课时:应用拓展(4a、4b)教材章节关联:本教学内容与教材中“第十章 数字电路及其应用”相关,涉及全加器部分的内容,与教材中的理论知识和实践操作相结合,确保学生能够系统地学习和掌握8位全加器的相关知识。
八位全加器原理图设计实验报告

南通大学计算机科学与技术学院课程实验报告
课程名称:计算机组成原理年级:2012级上机日期:11月6日姓名:学号:班级:信管122
实验名称:八位全加器设计教师:陈越成绩:
上图为n个1位的全加器FA级联成的n位的行波进位加减器。
M为方式控制输入线,当M=0时,做加法运算;当M=1时,做减法运算。
图中左边还表示出单符号位法的溢出检测逻辑:当C n=C n-1时,运算无溢出;而当C n≠C n-1时,运算有溢出,经异或门产生溢出信号,0无溢出,1表示溢出。
四、内容及步骤(包括程序流程及说明)
1.建立add8项目
2.建立一位全加器原理图,输入如下
3.将一位全加器封装成芯片FA,如图
4.将FA级联成8位全加器如图,至此8位全加器原理图设计完毕
四、运行结果
建立波形文件,验证8位全加器。
8位二进制全加器设计实验报告

EDA技术8位二进制全加器设计实验报告班级:学号:姓名:时间:2013-12-06目录方法一:自己写程序 (2)一、设计原理 (2)二、实验程序 (3)程序1:半加器描述 (3)程序2:一位二进制全加器设计顶层描述 (3)程序3:D触发器描述 (4)程序4:8位二进制加法器顶层描述 (4)三、编译及仿真结果 (9)方法二:使用LPM创立元件 (10)一、打开MegaWizard Plug-In Manager (10)二、按照提示,一步步完成全加器/全减器的创建 (10)三、创建成功,生成CMP文件 (10)四、调用CMP文件,例化元件,生成可以使用的元件。
(10)实验总结: (12)摘要我在本实验中用顶层设计思想,用半加器、全加器、D触发器例化出八位全加器,完成了八路加法器、寄存器/锁存器的设计,上升沿触发,使用了6个数码管,分别用于显示输入A,输入B和输出,输出结果也用红灯进行了显示,溢出用绿灯表示。
输入A用0~7号开关完成,输入B用10~17号开关完成,进位C 用8号开关完成。
实验要求完成八路全加器的设计,十六进制输出,上升沿触发,低电平复位,输入输出用数码管显示,用红灯显示输出,绿灯显示溢出。
方法一:自己写程序一、设计原理先写一个半加器,然后用两个半加器例化出一个全加器,再用八个全加器例化出一个八位全加器。
原理如图。
关于上升沿触发,使用D触发器和八位全加器进行例化,D触发器接同一个时钟。
最终完成上升沿触发的八位全加器的设计。
二、实验程序程序1:半加器描述LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY h_adder ISPORT (A, B : IN STD_LOGIC;CO, SO : OUT STD_LOGIC );END ENTITY h_adder;ARCHITECTURE FH1 OF h_adder ISBEGINSO <= NOT (A XOR (NOT B));CO <= A AND B;END ARCHITECTURE FH1;程序2:一位二进制全加器设计顶层描述LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY f_adder ISPORT (AIN, BIN, CIN : IN STD_LOGIC;COUT, SUM : OUT STD_LOGIC );END ENTITY f_adder;ARCHITECTURE FD1 OF f_adder ISCOMPONENT h_adder ISPORT (A, B : IN STD_LOGIC;CO, SO : OUT STD_LOGIC );END COMPONENT;SIGNAL D, E, F : STD_LOGIC;3BEGINU1 : h_adder PORT MAP(A => AIN, B => BIN, CO => D, SO => E);U2 : h_adder PORT MAP(A => E, B => CIN, CO => F, SO => SUM);COUT <= D OR F;END ARCHITECTURE FD1;程序3:D触发器描述LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DEF1 ISPORT (CLK : IN STD_LOGIC;D : IN STD_LOGIC;Q : OUT STD_LOGIC);END;ARCHITECTURE bhv OF DEF1 ISSIGNAL Q1 :STD_LOGIC;BEGINPROCESS (CLK)BEGINIF CLK'EVENT AND CLK = '1'THEN Q1<=D;END IF;Q<=Q1;END PROCESS;END bhv;程序4:8位二进制加法器顶层描述LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY f_adder8 ISPORT ( AIN, BIN : IN STD_LOGIC_VECTOR(7 DOWNTO 0);ASEGIN1,ASEGIN2, BSEGIN1,BSEGIN2 : BUFFER STD_LOGIC_VECTOR(6 DOWNTO 0);CIN : IN STD_LOGIC;CLK : IN STD_LOGIC;SUM : BUFFER STD_LOGIC_VECTOR(7 DOWNTO 0);SEG1 : BUFFER STD_LOGIC_VECTOR(6 DOWNTO 0);SEG2 : BUFFER STD_LOGIC_VECTOR(6 DOWNTO 0);COUT : OUT STD_LOGIC );END f_adder8;ARCHITECTURE ONE OF f_adder8 ISCOMPONENT f_adder ISPORT (AIN, BIN, CIN : IN STD_LOGIC;COUT, SUM : OUT STD_LOGIC );END COMPONENT;COMPONENT DEF1 ISPORT (CLK : IN STD_LOGIC;D : IN STD_LOGIC;Q : OUT STD_LOGIC);END COMPONENT;SIGNAL C,C1, C2, C3,C4,C5,C6,C7: STD_LOGIC;SIGNAL a : STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL b : STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL s : STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL ss : STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL sss : STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINU1 : f_adder PORT MAP(AIN => a(0), BIN => b(0), CIN => CIN, SUM => s(0),COUT => C1);U2 : f_adder PORT MAP(AIN => a(1), BIN => b(1), CIN => C1, SUM => s(1),COUT => C2);U3 : f_adder PORT MAP(AIN => a(2), BIN => b(2), CIN => C2, SUM => s(2),COUT => C3);U4 : f_adder PORT MAP(AIN => a(3), BIN => b(3), CIN => C3, SUM => s(3),COUT => C4);U5 : f_adder PORT MAP(AIN => a(4), BIN => b(4), CIN => C4, SUM => s(4),COUT => C5);U6 : f_adder PORT MAP(AIN => a(5), BIN => b(5), CIN => C5, SUM => s(5),COUT => C6);U7 : f_adder PORT MAP(AIN => a(6), BIN => b(6), CIN => C6, SUM => s(6),COUT => C7);U8 : f_adder PORT MAP(AIN => a(7), BIN => b(7), CIN => C7, SUM => s(7),COUT => C);U9 : DEF1 PORT MAP(Q=>a(0),D=>AIN(0),CLK=>CLK);U10 : DEF1 PORT MAP(Q=>a(1),D=>AIN(1),CLK=>CLK);U11 : DEF1 PORT MAP(Q=>a(2),D=>AIN(2),CLK=>CLK);U12 : DEF1 PORT MAP(Q=>a(3),D=>AIN(3),CLK=>CLK);U13 : DEF1 PORT MAP(Q=>a(4),D=>AIN(4),CLK=>CLK);U14 : DEF1 PORT MAP(Q=>a(5),D=>AIN(5),CLK=>CLK);U15 : DEF1 PORT MAP(Q=>a(6),D=>AIN(6),CLK=>CLK);U16 : DEF1 PORT MAP(Q=>a(7),D=>AIN(7),CLK=>CLK);5U17 : DEF1 PORT MAP(Q=>b(0),D=>BIN(0),CLK=>CLK); U18 : DEF1 PORT MAP(Q=>b(1),D=>BIN(1),CLK=>CLK); U19 : DEF1 PORT MAP(Q=>b(2),D=>BIN(2),CLK=>CLK); U20 : DEF1 PORT MAP(Q=>b(3),D=>BIN(3),CLK=>CLK); U21 : DEF1 PORT MAP(Q=>b(4),D=>BIN(4),CLK=>CLK); U22 : DEF1 PORT MAP(Q=>b(5),D=>BIN(5),CLK=>CLK); U23 : DEF1 PORT MAP(Q=>b(6),D=>BIN(6),CLK=>CLK); U24 : DEF1 PORT MAP(Q=>b(7),D=>BIN(7),CLK=>CLK);U25 : DEF1 PORT MAP(Q=>SUM(0),D=>s(0),CLK=>CLK); U26 : DEF1 PORT MAP(Q=>SUM(1),D=>s(1),CLK=>CLK); U27 : DEF1 PORT MAP(Q=>SUM(2),D=>s(2),CLK=>CLK); U28 : DEF1 PORT MAP(Q=>SUM(3),D=>s(3),CLK=>CLK); U29 : DEF1 PORT MAP(Q=>SUM(4),D=>s(4),CLK=>CLK); U30 : DEF1 PORT MAP(Q=>SUM(5),D=>s(5),CLK=>CLK); U31 : DEF1 PORT MAP(Q=>SUM(6),D=>s(6),CLK=>CLK); U32 : DEF1 PORT MAP(Q=>SUM(7),D=>s(7),CLK=>CLK);U33 : DEF1 PORT MAP(Q=>COUT,D=>C,CLK=>CLK);PROCESS(CLK,AIN,BIN)VARIABLE sSeg1 : STD_LOGIC_VECTOR(7 DOWNTO 0);VARIABLE sSeg2 : STD_LOGIC_VECTOR(7 DOWNTO 0);BEGINss(3 DOWNTO 0)<=SUM(3 DOWNTO 0);sss(3 DOWNTO 0)<=SUM(7 DOWNTO 4);sSeg1(7 DOWNTO 0):= AIN(7 DOWNTO 0);sSeg2(7 DOWNTO 0):= BIN(7 DOWNTO 0);CASE ss ISWHEN "0000" => SEG1 <= "";--0WHEN "0001" => SEG1 <= "";WHEN "0010" => SEG1 <="";WHEN "0011" => SEG1 <="";WHEN "0100" => SEG1 <="";WHEN "0101" => SEG1 <="";WHEN "0110" => SEG1 <="";WHEN "0111" => SEG1 <="";WHEN "1000" => SEG1 <="";WHEN "1001" => SEG1 <=""; --9WHEN "1010" => SEG1 <="";WHEN "1011" => SEG1 <="";WHEN "1100" => SEG1 <="";WHEN "1101" => SEG1 <="";WHEN "1110" => SEG1 <="";WHEN "1111" => SEG1 <="";WHEN OTHERS =>NULL;END CASE;CASE sss ISWHEN "0000" => SEG2 <= "";--0WHEN "0001" => SEG2 <= "";WHEN "0010" => SEG2 <="";WHEN "0011" => SEG2 <="";WHEN "0100" => SEG2 <="";WHEN "0101" => SEG2 <="";WHEN "0110" => SEG2 <="";WHEN "0111" => SEG2 <="";WHEN "1000" => SEG2 <="";WHEN "1001" => SEG2 <=""; --9WHEN "1010" => SEG2 <="";WHEN "1011" => SEG2 <="";WHEN "1100" => SEG2 <="";WHEN "1101" => SEG2 <="";WHEN "1110" => SEG2 <="";WHEN "1111" => SEG2 <="";WHEN OTHERS =>NULL;END CASE;CASE sSeg1(3 DOWNTO 0) ISWHEN "0000" => ASEGIN1 <= "";--0WHEN "0001" => ASEGIN1 <= "";WHEN "0010" => ASEGIN1 <="";WHEN "0011" => ASEGIN1 <="";WHEN "0100" => ASEGIN1 <="";WHEN "0101" => ASEGIN1 <="";WHEN "0110" => ASEGIN1 <="";WHEN "0111" => ASEGIN1<="";WHEN "1000" => ASEGIN1 <="";WHEN "1001" => ASEGIN1 <=""; --9WHEN "1010" => ASEGIN1 <="";WHEN "1011" => ASEGIN1 <="";WHEN "1100" => ASEGIN1 <="";WHEN "1101" => ASEGIN1 <="";WHEN "1110" => ASEGIN1 <="";WHEN "1111" => ASEGIN1 <="";WHEN OTHERS =>NULL;END CASE;7CASE sSeg1(7 DOWNTO 4) ISWHEN "0000" => ASEGIN2 <= "";--0 WHEN "0001" => ASEGIN2 <= "";WHEN "0010" => ASEGIN2 <="";WHEN "0011" => ASEGIN2 <="";WHEN "0100" => ASEGIN2 <="";WHEN "0101" => ASEGIN2 <="";WHEN "0110" => ASEGIN2 <="";WHEN "0111" => ASEGIN2<="";WHEN "1000" => ASEGIN2 <="";WHEN "1001" => ASEGIN2 <=""; --9 WHEN "1010" => ASEGIN2 <="";WHEN "1011" => ASEGIN2 <="";WHEN "1100" => ASEGIN2 <="";WHEN "1101" => ASEGIN2 <="";WHEN "1110" => ASEGIN2 <="";WHEN "1111" => ASEGIN2 <="";WHEN OTHERS =>NULL;END CASE;CASE sSeg2(3 DOWNTO 0) ISWHEN "0000" => BSEGIN1 <= "";--0 WHEN "0001" => BSEGIN1 <= "";WHEN "0010" => BSEGIN1 <="";WHEN "0011" => BSEGIN1 <="";WHEN "0100" => BSEGIN1 <="";WHEN "0101" => BSEGIN1 <="";WHEN "0110" => BSEGIN1 <="";WHEN "0111" => BSEGIN1<="";WHEN "1000" => BSEGIN1 <="";WHEN "1001" => BSEGIN1 <=""; --9 WHEN "1010" => BSEGIN1 <="";WHEN "1011" => BSEGIN1 <="";WHEN "1100" => BSEGIN1 <="";WHEN "1101" => BSEGIN1 <="";WHEN "1110" => BSEGIN1 <="";WHEN "1111" => BSEGIN1 <="";WHEN OTHERS =>NULL;END CASE;CASE sSeg2(7 DOWNTO 4) ISWHEN "0000" => BSEGIN2 <= "";--0 WHEN "0001" => BSEGIN2 <= "";WHEN "0010" => BSEGIN2 <="";WHEN "0011" => BSEGIN2 <="";WHEN "0100" => BSEGIN2 <="";WHEN "0101" => BSEGIN2 <="";WHEN "0110" => BSEGIN2 <="";WHEN "0111" => BSEGIN2<="";WHEN "1000" => BSEGIN2 <="";WHEN "1001" => BSEGIN2 <=""; --9WHEN "1010" => BSEGIN2 <="";WHEN "1011" => BSEGIN2 <="";WHEN "1100" => BSEGIN2 <="";WHEN "1101" => BSEGIN2 <="";WHEN "1110" => BSEGIN2 <="";WHEN "1111" => BSEGIN2 <="";WHEN OTHERS =>NULL;END CASE;END PROCESS;--U1 : f_adder PORT MAP(AIN => AIN(0), BIN => BIN(0), CIN => CIN, SUM => SUM(0), COUT => C1);--U2 : f_adder PORT MAP(AIN => AI N(1), BIN => BIN(1), CIN => C1, SUM => SUM(1), COUT => C2);--U3 : f_adder PORT MAP(AIN => AIN(2), BIN => BIN(2), CIN => C2, SUM => SUM(2), COUT => C3);--U4 : f_adder PORT MAP(AIN => AIN(3), BIN => BIN(3), CIN => C3, SUM => SUM(3), COUT => C4);--U5 : f_adder PORT MAP(AIN => AIN(4), BIN => BIN(4), CIN => C4, SUM => SUM(4), COUT => C5);--U6 : f_adder PORT MAP(AIN => AIN(5), BIN => BIN(5), CIN => C5, SUM => SUM(5), COUT => C6);--U7 : f_adder PORT MAP(AIN => AIN(6), BIN => BIN(6), CIN => C6, SUM => SUM(6), COUT => C7);--U8 : f_adder PORT MAP(AIN => AIN(7), BIN => BIN(7), CIN => C7, SUM => SUM(7), COUT => COUT);END ONE;三、编译及仿真结果程序波形仿真图9时间分析方法二:使用LPM创立元件一、打开MegaWizard Plug-In Manager二、按照提示,一步步完成全加器/全减器的创建三、创建成功,生成CMP文件四、调用CMP文件,例化元件,生成可以使用的元件。
实验一 八位全加器的设计

电子科技大学电子工程学院标准实验报告(实验)课程名称EDA技术与应用**:**学号:*****************:**电子科技大学教务处制表实验一八位全加器的设计一、预习内容1.结合教材中的介绍熟悉QuartusⅡ软件的使用及设计流程;2.八位全加器设计原理。
二、实验目的1.掌握图形设计方法;2.熟悉QuartusⅡ软件的使用及设计流程;3.掌握全加器原理,能进行多位加法器的设计。
三、实验器材PC机一台、EDA教学实验系统一台、下载电缆一根(已接好)、导线若干四、实验要求1、用VHDL设计一个四位并行全加器;2、用图形方式构成一个八位全加器的顶层文件;3、完成八位全加器的时序仿真。
五、实验原理与内容1、原理:加法器是数字系统中的基本逻辑器件。
例如:为了节省资源,减法器和硬件乘法器都可由加法器来构成。
但宽位加法器的设计是很耗费资源的,因此在实际的设计和相关系统的开发中需要注意资源的利用率和进位速度等两方面的问题。
多位加法器的构成有两种方式:并行进位和串行进位方式。
并行进位加法器设有并行进位产生逻辑,运算速度快;串行进位方式是将全加器级联构成多位加法器。
通常,并行加法器比串行级联加法器占用更多的资源,并且随着位数的增加,相同位数的并行加法器比串行加法器的资源占用差距也会越来越大。
实验表明,4 位二进制并行加法器和串行级联加法器占用几乎相同的资源。
这样,多位数加法器由4 位二进制并行加法器级联构成是较好的折中选择。
因此本实验中的8 位加法器采用两个4位二进制并行加法器级联而成。
2、实现框图:1)四位加法器四位加法器可以采用四个一位全加器级连成串行进位加法器,实现框图如下图所示,其中CSA为一位全加器。
显然,对于这种方式,因高位运算必须要等低位进位来到后才能进行,因此它的延迟非常可观,高速运算肯定无法胜任。
通过对串行进位加法器研究可得:运算的延迟是由于进位的延迟。
因此,减小进位的延迟对提高运算速度非常有效。
8位全加器实验报告

实验1 原理图输入设计8位全加器一、实验目的:熟悉利用QuartusⅡ的原理图输入方法设计简单组合电路,掌握层次化设计的方法,并通过一个8位全加器的设计把握利用EDA软件进行电子线路设计的详细流程。
二、原理说明:一个8位全加器可以由8个1位全加器构成,加法器间的进位可以串行方式实现。
即将低位加法器的进位输出cout与其相邻的高位加法器的最低进位输入信号cin相接。
而一个1位全加器可以按照本章第一节介绍的方法来完成。
三、实验内容:1:完全按照本章第1节介绍的方法与流程,完成半加器和全加器的设计,包括原理图输入、编译、综合、适配、仿真。
2:建立一个更高的原理图设计层次,利用以上获得的1位全加器构成8位全加器,并完成编译、综合、适配、仿真和硬件测试。
四、实验环境:计算机、QuartusII软件。
五、实验流程:实验流程:↓↓六、实验步骤:1.根据半加器工作原理建立电路并仿真,并将元件打包。
(1)半加器原理图:图1.2 半加器原理图(2)综合报告:图1.3 综合报告:(3)功能仿真波形图4:图1.4 功能仿真波形图时序仿真波形图:图1.5 时序仿真波形图仿真结果分析:sout为和信号,当a=1,b=0或a=0,b=1时,和信号sout为1,否则为0.当a=b=1时,产生进位信号,及cout=1。
(4)时序仿真的延时情况:图1.6 时序仿真的延时情况(5)封装元件:图1.7 元件封装图2. 利用半加器构成一位全加器,建立电路并仿真,并将元件封装。
(1)全加器原理图如图:图2.1 全加器原理图(2)综合报告:图2.2 综合报告(3)功能仿真波形图:图2.3功能仿真波形图时序仿真波形图:图2.4时序仿真波形图仿真结果分析:cin为来自低位的进位,sum=a or b or cin,即:当a,b,cin中有一位为高电平‘1’或者三位同时高电平为‘1’,则sum=1,否则sum=0;当a,b,cin有两位或者三位同为高电平‘1’时,产生进位信号cout=‘1’。
八位全加器

信息科学与工程学院《EDA技术及应用》实验报告
专业班级姓名学号
实验时间指导老师成绩
实验一(八位全加器)
调试过程及结果:
【调试过程】
1)对输入程序进行编译
错误及改正:
①将的四位全加器存放在另一个工程后未将其添加至主程序
中,导致元件例化出错。
应将ADDER4.VHDL文件加入主工程。
②打印出错。
2)选择对应元件并设计管脚
3)进行下载,仿真
【结果】
1)先对4位全加器进行调试
输入:A K1-K4;B K5-K8 进位:DI_8
初始化:K1-K8拨档开关全部臵底,LED灯全灭
2)对8位全加器进行调制
输入:A K1-K8; B S1-S8 进位:D2_1
初始化:K1-K8拨档开关全部臵底,S1-S8全部按下。
LED灯全灭
错误及改正:
由于实验设备的状态问题,出现的结果和预计的结果存在差异同,可以对设备进行多次的下载和重新运行可以看到预测结果。
EDA综合实验——八位全加器

一个8位全加器可以由2个4位全加器构成,加法器间的进位可以用串行方式实现,即将低位加法器的进位输出cout与相邻的高位加法器的最低进位输入信号cin相接。
3、设计代码(或原理图)、仿真波形及分析
在Quartus II集成环境下,选择“Bock Diagram/Schematic File”,进入Quartus II图形编辑方式。双击编辑窗口,在元件选择窗口的符号库“Library”栏中,选择”Primitives”文件夹中的”Logic”后,调出元件。根据8位加法器设计的原理图,将2个4位加法器74283及输入、输出元件符号调入,完成电路内部的连接及输入、输出元件的连接,并将相应的输入、输出元件符号名分别更改为A[7..0]、B[7..0]、SUM[7...0]和OUT2。再将当前设计设定为工程,目标芯片类型为ACEX1K;型号为EP1K30TC144-3。编译设计文件,选择“Start Compilation”对文件进行编译。然后进行逻辑仿真设计,先建立波形文件,然后输入信号节点,设置波形参量,编辑输入信号,保存文件。
时序仿真图
功能仿真图
由图片可以看出,当8位全加器的输入端口A输入为60时,B端口输入为160时,输出SUM为220,进位OUT2为0;当输入端口A输入为60时,B输入为200时,SUM为4,进位OUT2为1.当8位全加器的输入端口A输入为80时,B端口输入为200时,输出SUM为24,进位OUT2为1;当输入端口A输入为80时,B输入为160时,SUM为240,进位OUT2为0.证明设计是正确的。
学生实验报告
系别
电子信息学院
课程名称
《EDA综合实验》
班级
实验名称
8位全加器的设计
姓名
实验时王红航
八位全加器和模100计数器实验报告2

CPLD/FPGA 设计实验报告实验名称: 时序电路设计基础 实验目的: 掌握Quartus II 软件的基本使用方法,完成基本时序电路设计 实验内容:实验一 八位全加器一、 创建工程 工程名称:add_8顶层实体文件名: add_8器件:EP1C3T100C7(要求:Cyclone 系列任意器件)二、 创建文件创建Verilog HDL 文件,实现八位全加器。
module add_8(cout,sum,ina,inb,cin); input cin; input[7:0] ina,inb; output[7:0] sum; output cout;assign{cout,sum}=ina+inb+cin; endmodule 三、编译工程报告中下列数据是多少四、仿真电路 1、创建VWF 文件2、设定“End Time ”为20us3、在VWF 文件中添加Node OR Bus4、编辑波形5、仿真6、画出仿真结果装订线实验二模100计数器一、创建工程工程名称:m_100 顶层实体文件名:m_100器件:EP1C3T100C7 (要求:Cyclone系列任意器件)二、创建文件创建Verilog HDL文件,实现模100计数器。
module m_100(cin,clk,clr,out);input clk,clr;output reg[7:0] out;output cin;always @(posedge clk)beginif(!clr) out<=8'b0000_0000;else if(out<99) out<=out+1;else out<=8'b0000_0000;endassign cin=(out==99)?1:0;endmodule三、编译工程报告中下列数据是多少四、仿真电路1、创建VWF文件2、设定“End Time”为20us3、在VWF文件中添加Node OR Bus4、编辑波形5、仿真6、画出仿真结果。
EDA实验报告1_8位全加器

EDA技术与应用实验报告姓名学号专业年级电子信息工程实验题目八位全加器设计实验目的1.熟悉QuartuaⅡ的文本和原理图输入方法设计简单组合电路2.通过8位全加器的设计掌握层次化设计的方法3.学会对实验板上的FPGA/CPLD开发系统硬件电路的编程下载及测试实验原理1.由文本输入利用元件例化语句或者原理图输入封装元件的方式,层次化设计1位全加器2.用原理图输入方法,由1位全加器通过低位进位输出cout与高位进位输入cin以串行方式相连接,构成8位全加器实验内容实验一:用原理图输入法设计8位全加器1.原理图输入完成半加器和1位全加器的设计,并封装入库2.层次化设计,建立顶层文件,由1位全加器构成8位全加器3.每一层次均需进行编译、综合、适配、仿真及实验板上硬件测试实验二:用文本输入法设计8位全加器1. VHDL文本输入完成半加器和一位全加器的设计2. 用元件例化语句由1位全加器设计一个8位全加器3.每一层次均需进行编译、综合、适配、仿真及实验板上硬件测试实验步骤实验一1.设计1位全加器<1>完成对半加器的设计(详见P117),编译、仿真、生成可调用元件h_adder.bsf;<2>完成对1位全加器的设计(详见P118),编译、仿真与下载,生成可调用原件f_adder.bsf;2.利用1位全加器进行8位全加器的设计<1>新建文件夹adder_8bit,作为顶层文件的目录,将底层文件h_adder.bdf、f_adder.bdf拷贝到此目录下。
新建一个初始原理图adder_8bit.bdf,并为其创建project,将三个设计文件加入工程。
<2>在原理图编辑窗口,调入元件f_adder.bsf,连接线路,对引脚命名,完成对8位全加器的设计。
<3>选择芯片EP1K100QC208-3,引脚锁定并再次编译,编程下载,分析实验结果。
实验二1.设计1位全加器<1>分别新建子文件夹,用来保存底层文件或门or2a.VHDL、半加器h_adder.VHDL的设计,并分别建立相应的project,进行编译、综合、适配、仿真,确保无error(详见P72)。
verilog8位全加器实验报告

Verilog实验报告基于封装设计思想实现8位全加器小组成员:实验时间:2010年5月 16日实验报告---基于封装设计思想实现8位全加器实验时间:2010年5月16日小组成员:一、实验目的1)在掌握QuartusII软件环境和全加器原理的基础上,重点学习Verilog封装的设计方法。
2)进一步巩固文本和图形法结合的设计方法。
二.实验仪器1.PC机2. 数字系统设计实验开发板三.实验学时:3学时四.实验原理:全加器的原理设计.五.实验步骤1)熟悉quartusII的使用a)打开开发环境,如错误!未找到引用源。
2)原理图输入法:八个一位加法器连接成的一个八位加法器原理图图表:3)仿真波形:4)封装后的八位加法器:5)程序代码:module yy1(x,y,sum,c1,c2);input x;input y;input c1;output sum;output c2;assign{c2,sum}=x+y+c1;endmodule六.问题回答:assign 用于描述组合逻辑,always(敏感事件列表) 用于描述时序逻辑。
所有的assign 和 always 块都是并行发生的。
并行块、顺序块,将要并行执行的语句写在fork//语句并行执行join将要顺序执行的语句写在begin//语句顺序执行end并行块和顺序块都可以写在initial 或 always@ 之后,也就是说写在块中的语句是时序逻辑的对assign之后不能加块,实现组合逻辑只能用逐句的使用assign 组合逻辑如果不考虑门的延时的话当然可以理解为瞬时执行的,因此没有并行和顺序之分,并行和顺序是针对时序逻辑来说的。
值得注意的是所有的时序块都是并行执行的。
initial块只在信号进入模块后执行1次而always块是由敏感事件作为中断来触发执行的。
七.实验总结:经过这次实验,我们复习了一些Verilog的基本知识,并且熟习了一些封装等的操作,为以后的实验打下基础。
八位全加器

西安邮电大学Verilog HDL实验报告(一)——八位全加器学院名称:电子工程学院班级:学生姓名:学号:实验题目八位全加器一、实验目的:设计的一个八位全加器。
二、实验步骤:1、在ModelSim软件中对激励模块和设计模块进行书写和编译;2、对编译好的模块进行仿真。
三、源代码:1、主程序module fulladder8(c_out,sum,a,b,c_in);output[7:0] sum;output c_out;input [7:0] a,b;input c_in;assign {c_out,sum}=a+b+c_in;endmodule2、激励程序module fulladder8_tb;reg [7:0] A,B;reg C_IN;wire[7:0] SUM;wire C_OUT;fulladder8 fulladder_8(C_OUT,SUM,A,B,C_IN);initialbeginA=8'd10;B=8'd20;C_IN=1;#100;A=8'd30;B=8'd60;C_IN=0;#100;A=8'd88;B=8'd70;C_IN=1;#100;A=8'd29;B=8'd12;C_IN=0;endEndmodule四、仿真结果及分析:输出结果:结果分析:当A=00001010,B=00010100,C_IN=1时,SUM=0001111;当A=00011110,B=0011100,C_IN=0时,SUM=01011010;当A=01011000,B=01000110,C_IN=1时,SUM=10011111;当A=00011101,B=00001100,C_IN=0时,SUM=00101001;由波形可知,SUM=A+B+C_IN;进位则C_OUT = 1六、实验总结:通过这次试验,我学会了八位全加器的实验原理,并将其用软件仿真实现。
全加器的设计实验报告

全加器的设计实验报告《全加器的设计实验报告》摘要:本实验旨在设计并实现一个全加器电路,用于对两个二进制数进行加法运算。
通过实验,我们成功地设计了一个全加器电路,并进行了验证和测试。
实验结果表明,该全加器能够正确地对两个二进制数进行加法运算,并输出正确的结果。
引言:全加器是数字电路中常用的逻辑电路之一,用于对两个二进制数进行加法运算。
它由两个半加器和一个或门组成,能够实现对两个二进制数的加法运算,并输出相应的结果。
在本次实验中,我们将设计并实现一个全加器电路,并对其进行验证和测试。
设计与实现:首先,我们根据全加器的逻辑功能和真值表,设计了相应的电路图。
然后,我们选择适当的逻辑门和触发器进行电路的实现。
在实验中,我们采用了集成电路来实现全加器电路,并通过连接适当的引脚,将其组成一个完整的电路。
最后,我们对电路进行了验证和测试,确保其能够正确地进行加法运算。
实验结果:经过验证和测试,我们成功地实现了一个全加器电路,并对其进行了测试。
实验结果表明,该全加器能够正确地对两个二进制数进行加法运算,并输出正确的结果。
在不同的输入条件下,我们都得到了正确的输出结果,证明了该全加器的正确性和可靠性。
结论:通过本次实验,我们成功地设计并实现了一个全加器电路,并对其进行了验证和测试。
实验结果表明,该全加器能够正确地对两个二进制数进行加法运算,并输出正确的结果。
这为我们进一步深入理解数字电路和逻辑电路提供了重要的实践基础。
同时,我们也发现了一些问题和改进的空间,为今后的研究和实践提供了有益的启示。
希望通过本次实验,能够对数字电路的设计与实现有更深入的理解。
EDA综合实验——八位全加器

学生实验报告系别电子信息学院课程名称《EDA综合实验》班级实验名称8位全加器的设计姓名实验时间2014年月日学号指导教师王红航成绩批改时间2014年月日报告内容一、实验目的和任务利用Quartus II 原理图输入方法设计简单组合电路, 通过一个8位全加器的设计掌握利用EDA软件进行原理图输入方式的电子线路设计的详细流程。
二、实验原理介绍三、一个8位全加器可以由2个4位全加器构成, 加法器间的进位可以用串行方式实现, 即将低位加法器的进位输出cout 与相邻的高位加法器的最低进位输入信号cin相接。
四、设计代码(或原理图)、仿真波形及分析在Quartus II 集成环境下, 选择“Bock Diagram/Schematic File”, 进入Quartus II图形编辑方式。
双击编辑窗口, 在元件选择窗口的符号库“Library”栏中, 选择”Primitives”文件夹中的”Logic”后, 调出元件。
根据8位加法器设计的原理图, 将2个4位加法器74283及输入、输出元件符号调入, 完成电路内部的连接及输入、输出元件的连接, 并将相应的输入、输出元件符号名分别更改为A[7..0]、B[7..0]、SUM[7...0]和OUT2。
再将当前设计设定为工程, 目标芯片类型为ACEX1K;型号为EP1K30TC144-3。
编译设计文件, 选择“Start Compilation”对文件进行编译。
然后进行逻辑仿真设计, 先建立波形文件, 然后输入信号节点, 设置波形参量, 编辑输入信号, 保存文件。
时序仿真图功能仿真图由图片可以看出, 当8位全加器的输入端口A输入为60时, B端口输入为160时, 输出SUM 为220, 进位OUT2为0;当输入端口A输入为60时, B输入为200时, SUM为4, 进位OUT2为1.当8位全加器的输入端口A输入为80时, B端口输入为200时, 输出SUM为24, 进位OUT2为1;当输入端口A输入为80时, B输入为160时, SUM为240, 进位OUT2为0.证明设计是正确的。
实验一 八位全加器的设计 报告

实验一八位全加器的设计一、实验目的1.熟悉使用QuartusⅡ的原理图输入方法设计简单组合电路。
2.掌握层次化设计的方法,通过一个8位全加器的设计,掌握利用EDA软件进行原理图输入方式的电子线路设计的详细流程。
3.自行验证所设计电路的正确性。
二、实验内容及要求设计一个八位全加器,并进行验证。
三、实验器材1.软件:Altera公司的Quartus II软件。
2.芯片:Altera公司的EP2C8T144C8。
3.开发平台:KH-31001智能型可编程数字开发系统。
四、实验电路图原理:先由一个半加器构成一个全加器, 8位全加器可以由8个1位全加器构成,加法器间的进位可以串行方式实现,即将低位加法器的进位输出cout与相临的高位加法器的最低进位输入信号cin相接。
图1 半加器图2 一位全加器图3八位全加器五、实验步骤本设计的思路是先设计1个1位半加器,因此建立新建文件夹D:/ ADD/ADD-H;要利用1位的半加器构造1位的全加器,因此建立新建文件夹D:/ADD/ADD-F;要利用1位的全加器构造8位的全加器,因此建立新建文件夹D:/ADD/ADD8。
1.建立名为ADD-H的工程文件,并在Quartus II原理图编辑环境中绘制如图1所示的电路图;2.保存文件、检查及编译;3.建立波形文件,并进行功能仿真,仿真结果如下图4所示;图44.单击“File”菜单里的“Create/Update”选项,选择“Create Symbol Files for Current File”选项后,生成“ADD-H.bsf”格式的图元文件,使其作为顶层器件,方便后面电路编辑时使用;5.建立建立名为ADD-F的工程文件,并在Quartus II原理图编辑环境中绘制电路图,如图2所示,然后依次执行步骤2、3,得到一位全加器的仿真结果如下图5所示;图56.单击“File”菜单里的“Create/Update”选项,选择“Create Symbol Files for Current File”选项后,生成“ADD-F.bsf”格式的图元文件,方便后面电路编辑时使用;7. .建立建立名为ADD8的工程文件,并在Quartus II原理图编辑环境中绘制电路图,由一个半加器和七个全加器构成的八位全加器如图3所示,然后依次执行步骤2、3,得到八位全加器的仿真结果为下图。
全加器的设计实验报告

一、实验目的1. 掌握全加器的基本原理和设计方法。
2. 熟悉Quartus II软件的使用,包括原理图输入、编译、仿真和编程下载等操作。
3. 培养动手实践能力和团队合作精神。
二、实验原理全加器是一种能够处理两个二进制数相加,并考虑来自低位进位信号的组合逻辑电路。
一个n位全加器可以由n个1位全加器级联而成。
本实验设计一个1位全加器,其原理如下:1. 半加器:半加器是全加器的基础,它只考虑两个一位二进制数的相加,不考虑来自低位进位数的运算电路。
半加器的输出包括一个和位S和一个进位位C。
2. 全加器:全加器由两个半加器和一个或门组成。
当输入两个一位二进制数A和B以及一个来自低位的进位信号Cin时,全加器的输出包括一个和位S和一个进位位Cout。
全加器的逻辑表达式如下:S = A ⊕ B ⊕ CinCout = (A ∧ B) ∨ (B ∧ Cin) ∨ (A ∧ Cin)三、实验内容和步骤1. 创建工程:在Quartus II中创建一个新工程,命名为“全加器设计”。
2. 设计原理图:在原理图编辑窗口中,从元件库中分别选取两个半加器(HAdder)和一个或门(Or),并按照全加器的逻辑表达式连接起来。
3. 编译工程:完成原理图设计后,进行编译操作。
Quartus II将对原理图进行综合、实现和编程下载等步骤。
4. 仿真:在仿真环境中,通过输入不同的A、B和Cin值,观察全加器的输出S和Cout是否符合预期。
5. 下载编程:将编译好的程序下载到FPGA开发板上,通过硬件测试验证全加器的功能。
四、实验结果与分析1. 仿真结果:在仿真环境中,我们分别输入以下值进行测试:A B Cin0 0 00 0 10 1 00 1 11 0 01 0 11 1 01 1 1仿真结果显示,全加器的输出S和Cout与预期逻辑表达式相符。
2. 硬件测试结果:将编译好的程序下载到FPGA开发板上,通过硬件测试验证全加器的功能。
测试结果与仿真结果一致,说明全加器设计正确。
实验八全加器的设计分析实验报告

实验八全加器的设计分析实验报告姓名:孙时佳学号: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。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验八全加器的设计分析实验报告姓名:孙时佳学号: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.下载到板子上验证。
五、实验结果与分析六、讨论、心得。