8位加法器和减法器设计实习报告

合集下载

八位加法器设计实验报告

八位加法器设计实验报告

实验四:8位加法器设计实验1.实验目的:熟悉利用quartus原理图输入方法设计简单组合电路,掌握层次化设计方法。

2.实验原理:一个八位加法器可以由八个全加器构成,加法器间的进位可以串行方式实现,即将低位加法器的进位输出cout与相邻的高位加法器的最低进位输入信号cin相接。

3.实验任务:完成半加器,全加器,八位加法器设计,使用例化语句,并将其设计成一个原件符号入库,做好程序设计,编译,程序仿真。

1)编译成功的半加器程序:module h_adder(a,b,so,co);input a,b;output so,co;assign so=a^b;assign co=a&b;endmodule2)编译成功的全加器程序:module f_adder(ain,bin,cin,cout,sum);output cout,sum;input ain,bin,cin;wire net1,net2,net3;h_adder u1(ain,bin,net1,net2);h_adder u2(.a(net1),.so(sum),.b(cin),.co(net3));or u3(cout,net2,net3);endmodule3)编译成功的八位加法器程序:module f_adder8(ain,bin,cin,cout,sum);output [7:0]sum; output cout;input [7:0]ain,bin;input cin;wire cout0, cout1, cout2 ,cout3, cout4,cout5,cout6;f_adderu0(.ain(ain[0]),.bin(bin[0]),.cin(cin),.sum(sum[0]),.cout(cout0));f_adderu1(.ain(ain[1]),.bin(bin[1]),.cin(cout0),.sum(sum[1]),.cout(cout1)); f_adderu2(.ain(ain[2]),.bin(bin[2]),.cin(cout1),.sum(sum[2]),.cout(cout2)); f_adderu3(.ain(ain[3]),.bin(bin[3]),.cin(cout2),.sum(sum[3]),.cout(cout3)); f_adderu4(.ain(ain[4]),.bin(bin[4]),.cin(cout3),.sum(sum[4]),.cout(cout4)); f_adderu5(.ain(ain[5]),.bin(bin[5]),.cin(cout4),.sum(sum[5]),.cout(cout5)); f_adderu6(.ain(ain[6]),.bin(bin[6]),.cin(cout5),.sum(sum[6]),.cout(cout6));f_adderu7(.ain(ain[7]),.bin(bin[7]),.cin(cout6),.sum(sum[7]),.cout(cout)); endmodule4)八位加法器仿真程序:module f_adder8_vlg_tst();// constants// general purpose registers//reg eachvec;// test vector input registersreg [7:0] ain;reg [7:0] bin;reg cin;// wireswire cout;wire [7:0] sum;// assign statements (if any)f_adder8 i1 (// port map - connection between master ports and signals/registers.ain(ain),.bin(bin),.cin(cin),.cout(cout),.sum(sum));initialbeginain=10;bin=11;cin=0;#100 ain=10;bin=10;cin=0;#100 ain=10;bin=10;cin=1;#100 ain=12;bin=18;cin=0;#100 ain=12;bin=18;cin=1;#100 $stop;endendmodule5)八位加法器仿真图:6)元件原理图及元件入库:半加器原理图:文件入库bsf:全加器原理图:全加器元件入库:八位全加器rtl图:八位全加器仿真图:如有侵权请联系告知删除,感谢你们的配合!。

八位全加器原理图设计实验报告

八位全加器原理图设计实验报告

南通大学计算机科学与技术学院课程实验报告
课程名称:计算机组成原理年级: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位加法器和减法器设计实习报告

8位加法器和减法器设计实习报告

综合电子系统实习报告设计题目:8位加法器和减法器的设计一、实习目的:综合电子系统实习是电子信息类专业学生了解电子系统设计实现过程,培养实践动手能力的实践性教学环节,是电子信息工程等理工科专业学生一门必修的实践性课程。

通过学习和实践,可以让学生进一步接触电子元器件,电子材料及电子产品的生产实际,了解电子工艺的一般知识和掌握基本电路板的制作,元件的焊接,产品的组装等技能,了解电子工艺生产线的流程和基本管理知识,使学生通过设计一个课题,巩固和加深在“模拟电子技术基础”和“数字电子技术基础”等课程中所学到的理论知识和实验技能,掌握常用电子电路中的一般分析和设计方法,熟悉protel和其他开发软件的使用方法,提高电子电路的分析、设计和实验能力,为以后从事生产和科研工作打下一定的基础,为今后专业实验,毕业设计准备必要的工艺知识和操作技能。

同时培养学生严谨的工作作风,养成良好的工作习惯,它是基本技能和工艺知识的入门向导,又是创新实践和创新精神的启蒙。

综合电子系统实习对训练我们基本操作技能,提高我们实际动手能力是难得的一次好机会。

二、实习基本内容和要求:(1)掌握常用电子元器件的种类,性能,选用原则及质量辨别;(2)掌握电子产品装配及材料;(3)学会印制电路板的制作,掌握锡焊原理及手工焊接工艺技术;(4)学会器件的装配,焊接,调试;(5)学会使用常用电子测试仪器设备,初步具有借助说明书或资料掌握常用工具,仪器的使用能力;(6)掌握常用电子电路的设计方法,学会系统实物制作和调试。

三、实习工具:(1)电烙铁:由于焊接的元件多,所以使用的是外热式电烙铁,功率为30w,烙铁头是铜制。

(2)螺丝刀、钻孔机、斜口钳、尖嘴钳等必备工具。

(3)焊锡,由于锡它的熔点低,焊接时,焊锡能迅速散步在金属表面焊接牢固,焊点光亮美观。

(4)数字万用表,5V直流稳压电源。

要求:1、利用逻辑门电路设计8位加法器和减法器,实现两个8位二进制数的加法运算和减法运算;2、具有进位信号输入和输出能力;3、通过功能选择控制信号F选择运算功能,F=0,加法运算,F=1,进行减法运算;4、用发光二极管显示两个输入数据和运算结构。

加法器、减法器的设计 VHDL

加法器、减法器的设计 VHDL

实验报告课程名称电子设计自动化实验(基于FPGA)实验项目加法器、减法器的设计实验仪器计算机+ Quartus Ⅱ9.1系别信息与通信工程学院专业通信工程班级/学号学生姓名实验日期2012、5成绩_______________________ 指导教师_______________________加法器、减法器的设计完成一个8位二进制带符号数的加减电路设计。

设计要求如下:通过拨码开关输入两组8位二进制数,最高位为符号位,0表示正数,1表示负数,其余位表示二进制数值。

用一按键对加、减方式进行控制,0表示加,1表示减。

输出用四位LED数码管显示BCD码。

其中LED显示器最高位为符号位。

VHDL代码LIBRARY IEEE;USE IEEE.std_logic_1164.all;USE IEEE.std_logic_arith.all;USE IEEE.std_logic_unsigned.all;ENTITY add ISPORT(a:in std_logic_vector(7 downto 0);b:in std_logic_vector(7 downto 0);ctrl:in std_logic;bcd:out std_logic_vector(15 downto 0));END ENTITY;ARCHITECTURE func OF add ISSIGNAL x:std_logic_vector(9 downto 0);SIGNAL y:std_logic_vector(9 downto 0);SIGNAL z:std_logic_vector(9 downto 0);SIGNAL c:std_logic_vector(8 downto 0);SIGNAL dec:integer;BEGINyunsuan:BLOCK --运算模块BEGINPROCESS(a)BEGINIF (a(7) = '0') THEN --判断正负x <= '0'&'0'&a;ELSEx(9 downto 8) <= '1'&'1';x(7 downto 0) <= NOT('0'&a(6 downto 0)) + 1;END IF;END PROCESS;PROCESS(a,ctrl)BEGINIF(ctrl = '0') THEN --控制键为0,则做加法IF(b(7) = '0') THENy <= '0'&'0'&b;ELSEy <= '1'&'1'&(NOT('0'&b(6 downto 0))+1);END IF;ELSEIF(b(7) = '1') THENy <= '0'&'0'&'0'&b(6 downto 0);ELSEy <= '1'&'1'&(NOT('0'&b(6 downto 0))+1);END IF;END IF;END PROCESS;PROCESS(a,b)BEGINIF(a(6 downto 0) = 0) THENz <= y;ELSE IF(b(6 downto 0) = 0) THENz <= x;ELSEz <= x + y;END IF;END IF;END PROCESS;PROCESS(z)BEGINIF(z(9) = '1') THEN --判断结果的正负c(7 downto 0) <= NOT z(7 downto 0) + 1;c(8) <= '1';ELSEc(8 downto 0) <= '0'&z(7 downto 0);END IF;END PROCESS;END BLOCK;bcdout:BLOCKBEGINdec <= CONV_INTEGER(c); --二进制转十进制PROCESS(c)BEGINCASE c(8) IS --判断最高位正负WHEN '0' => bcd(15 downto 12) <= "0000";WHEN '1' => bcd(15 downto 12) <= "0001";WHEN OTHERS => bcd(15 downto 12) <= NULL;END CASE;CASE dec/100 IS --判断百位数字WHEN 0 => bcd(11 downto 8) <= "0000";WHEN 1 => bcd(11 downto 8) <= "0001";WHEN OTHERS => bcd(11 downto 8) <= NULL;END CASE;CASE (dec REM 100)/10 ISWHEN 0 => bcd(7 downto 4) <= "0000";WHEN 1 => bcd(7 downto 4) <= "0001";WHEN 2 => bcd(7 downto 4) <= "0010";WHEN 3 => bcd(7 downto 4) <= "0011";WHEN 4 => bcd(7 downto 4) <= "0100";WHEN 5 => bcd(7 downto 4) <= "0101";WHEN 6 => bcd(7 downto 4) <= "0110";WHEN 7 => bcd(7 downto 4) <= "0111";WHEN 8 => bcd(7 downto 4) <= "1000";WHEN 9 => bcd(7 downto 4) <= "1001";WHEN OTHERS => bcd(7 downto 4) <= NULL;END CASE;CASE dec REM 10 ISWHEN 0 => bcd(3 downto 0) <= "0000";WHEN 1 => bcd(3 downto 0) <= "0001";WHEN 2 => bcd(3 downto 0) <= "0010";WHEN 3 => bcd(3 downto 0) <= "0011";WHEN 4 => bcd(3 downto 0) <= "0100";WHEN 5 => bcd(3 downto 0) <= "0101";WHEN 6 => bcd(3 downto 0) <= "0110";WHEN 7 => bcd(3 downto 0) <= "0111";WHEN 8 => bcd(3 downto 0) <= "1000";WHEN 9 => bcd(3 downto 0) <= "1001";WHEN OTHERS => bcd(3 downto 0) <= NULL;END CASE;END PROCESS;END BLOCK;END ARCHITECTURE;未下载验证、调试,如发现错误,见谅!——Higashi Q83831295。

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文件,例化元件,生成可以使用的元件。

8位可控加减法电路设计实验报告

8位可控加减法电路设计实验报告

8位可控加减法电路设计实验报告本文针对8位可控加减法电路设计实验,利用TM1638底板,结合TTL集成电路实现了一个可以实现8位加减法计算的电路系统,并分析设计主要原理及关键技术点,如TTL集成电路的基本原理、TM1638底板的工作原理、LED显示灯的控制原理等。

最后,结合实验结果得出结论,使实验通过率达100%,并对其作出展望,认为者该电路设计具有较强的灵活性及实用性,可以应用在其他计算机系统中,用于计算出大量的结果。

【Keywords】:TM1638底板减法电路 TTL成电路 LED【1.言】近年来,在电子工程领域,加减法电路应用越来越普遍。

它可以实现简单的运算操作,不仅可以提高计算机系统的效率,也可以减少复杂的运算步骤,从而更有效地实现加减法的计算,极大提高了计算能力。

因此,加减法电路的设计变得越来越重要。

本文旨在为8位可控加减法电路设计实验提供实验研究报告,使用TM1638底板和TTL集成电路实现8位加减法计算。

在本实验中,采用测试方法和实验技术进行实验,并分析了设计的主要原理及关键技术点。

【2.文】(1)TM1638底板.TM1638底板用来连接TTL集成电路和LED显示灯,以实现加减法电路设计。

该底板的工作原理是:将微处理器的控制信号由串行输入口输入,然后由控制电路将控制信号转变为8路控制,并将其分配到各个LED显示灯,实现控制功能。

(2)TTL集成电路.TTL集成电路是一种由TTL(Transistor-Transistor Logic)集成电路组成的封装式模块,是用于实现加减法运算的关键环节。

集成电路的基本原理是:利用集成电路中的电路元件实现复杂的加减法运算。

(3)LED显示灯.LED示灯用于显示加减法运算的结果,实现电路设计核心功能。

LED显示灯的控制原理是:利用TTL集成电路产生的控制信号,根据不同的信号类型控制LED显示灯亮灭,从而实现加减法运算的计算结果的显示。

(4)实验结果.本实验中,采用测试方法和实验技术,实现了一个8位加减法电路设计。

八位全加器

八位全加器

信息科学与工程学院《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灯全灭
错误及改正:
由于实验设备的状态问题,出现的结果和预计的结果存在差异同,可以对设备进行多次的下载和重新运行可以看到预测结果。

实验06八位硬件加法器

实验06八位硬件加法器

实验六8位硬件加法器一. 实验目的1. 掌握QuartusII的硬件描述语言设计方法2. 了解同步计数器的原理及应用3. 设计一个带使能输入、进位输出及同步清零的增1四位N (N<16)进制同步计数器二. 准备知识1. 串行进位加法器若有多位数相加,则可采用并行相加串行进位的方式来完成。

例如,有两个4位二进制数A3A2A1A0和B3B2B1B0相加,可以采用两片内含两个全加器或1片内含4个全加器的集成电路组成,其原理图如图6.1所示:图6.1 串行进位加法器由图6.1可以看出,每1位的进位信号送给下1位作为输入信号,因此,任1位的加法运算必须在低1位的运算完成之后才能进行,这种进位方式称为串行进位。

这种加法器的逻辑电路比较简单,但它的运算速度不高。

为克服这一缺点,可以采用超前进位等方式。

2. 超前进位加法器对于一个加法器来说,它是一个纯组合电路。

也就是它的输出在输入出现的时刻就已经确定了,包括它的和和进位值,是输入的组合逻辑。

换而言之,只要知道输入,在不算出和的情况下也可以得到进位值,该值仅为输入的组合逻辑,以这样的一种思路设计的叫超前进位加法器。

而所谓串行进位加法器,就是必须算得低位加法的值后才可以继续计算高位值,如图6.1所示的电路,引用了一位全加器构成了四位全加器。

在硬件实现上,在4倍的单个全加器延时时间内它的输出都是不准确的,必须经过4倍的单个全加器延时时间才能得到准确值。

如果是16位或32位的加法器,延时是不可容忍的。

因此一般来说是直接利用输入组合逻辑方式同时决定结果的每一位和输出进位来实现的加法器,为超前进位加法器,相比与串行加法大大减低了多位加法所需要的延迟。

由于串行进位加法器的速度受到进位信号的限制,人们又设计了一种多位数超前进位加法逻辑电路,使每位的进位只由加数和被加数决定,而与低位的进位无关。

现在介绍超前进位的概念。

根据全加器的功能,可列出它的真值表:表6.1 全加器真值表由全加器的真值表可得Si 和Ci 的逻辑表达式:1111111i i i i i i i i i i i i i i i i i i i i i i S A B C A B C A B C A B C A B C A B C A B C -------=+++=⊕+⊕=⊕⊕ (6.1)11111i i i i i i i i i i i i i i i i i i C A B C A B C A B C A B C A B A B C -----=+++=+⊕ (6.2)定义两个中间变量Gi 和Pi :i i i i i iG A B P A B ==⊕ (6.3)当Ai =Bi =1时,Gi =1,由Ci 的表达式可得Ci =1,即产生进位,所以Gi 称为产生量变 。

用原理图方法设计8位全加器

用原理图方法设计8位全加器

实验报告一一、实验目的熟悉利用QuartusII的原理图输入方法设计简单电路,掌握层次化设计的方法,并通过一个8位全加器的设计把握利用EDA软件进行电子线路设计的详细流程。

二、实验内容1.根据工作原理,完成1位半加器和全加器的设计;2.建立一个更高的原理图设计层次,利用以上获得的1位全加器构成8位全加器,并完成编译、综合、适配、仿真。

三、实验环境计算机、QuartusII软件四、实验步骤1.根据半加器工作原理,建立电路并仿真,并将元件打包。

(1)电路(2)仿真:仿真结果分析:S为和信号,当A=1,B=0或A=0,B=1时,和信号S为1,否则为0.当A=B=1时,产生进位信号,及CO=1。

(3)打包后的文件:2.利用半加器构成一位全加器,并打包。

(1)电路(2)仿真仿真结果分析:CI为来自低位的进位,S=A xor B xor CI,即:当A,B,CI中有一位为高电平‘1’或者三位同时高电平为‘1’,则S=1,否则S=0;当A,B,CI有两位或者三位同为高电平‘1’时,产生进位信号CO=‘1’。

(3)打包后的文件3.利用全加器构成8位全加器,并完成编译、综合、适配、仿真。

(1)电路(2)仿真仿真结果分析:八位全加器,和S分别与A,B 对应。

当来自第七位的进位信号为‘1’、A 的最高位和B的最高位三者有两个位高电平‘1’时,则产生进位信号CO=‘1’。

五、实验结果与讨论实验的仿真结果与预计的结果一致,所以所设计的电路是正确的。

不足的地方有:1、对软件还不够熟悉,所以操作的有点慢;2、设计电路时,由于数字电路的知识有些开始淡忘了,所以应当及时去补缺补弱。

六、总结思考题:为了提高加法器工作速度,如何改进以设计的进位方式?答:采用超前进位。

串行加法器的第i位进位是由0~(i-1)决定的,而超前进位是事先得出每一位全加器的进位输出信号,而无需再从低位开始向高位逐位传递进位信号了,这就有效地提高了工作速度了。

计算机组成原理实验报告-八位补码加减法器的设计与实现

计算机组成原理实验报告-八位补码加减法器的设计与实现

计算机科学与技术学院计算机组成原理实验报告书实验名称八位补码加/减法器的设计与实现班级学号姓名指导教师日期成绩实验1八位补码加/减法器的设计与实现一、实验目的1.掌握算术逻辑运算单元(ALU)的工作原理。

2.熟悉简单运算器的数据传送通路。

3.掌握8位补码加/减法运算器的设计方法。

4.掌握运算器电路的仿真测试方法二、实验任务1.设计一个8位补码加/减法运算器(1)参考图1,在QUARTUS II里输入原理图,设计一个8位补码加/减法运算器。

(2)创建波形文件,对该8位补码加/减法运算器进行功能仿真测试。

(3)测试通过后,封装成一个芯片。

2.设计8位运算器通路电路参考下图,利用实验任务1设计的8位补码加/减法运算器芯片建立运算器通路。

3.利用仿真波形,测试数据通路的正确性。

设定各控制信号的状态,完成下列操作,要求记录各控制信号的值及时序关系。

(1)在输入数据IN7~IN0上输入数据后,开启输入缓冲三态门,检查总线BUS7~BUS0上的值与IN0~IN7端输入的数据是否一致。

(2)给DR1存入55H,检查数据是否存入,请说明检查方法。

(3)给DR2存入AAH,检查数据是否存入,请说明检查方法。

(4)完成加法运算,求55H+AAH,检查运算结果是否正确,请说明检查方法。

(5)完成减法运算,分别求55H-AAH和AAH-55H,检查运算结果是否正确,请说明检查方法。

(6)求12H+34H-56H,将结果存入寄存器R0,检查运算结果是否正确,同时检查数据是否存入,请说明检查方法。

三、实验要求(1)做好实验预习,掌握运算器的数据传送通路和ALU的功能特性。

(2)实验完毕,写出实验报告,内容如下:①实验目的。

②实验电路图。

③按实验任务3的要求,填写下表,以记录各控制信号的值及时序关系。

表中的序号表示各控制信号之间的时序关系。

要求一个控制任务填一张表,并可用文字对有关内容进行说明。

⑤实验体会与小结。

四、实验预习内容1.实验电路设计原理及思路说明本实验利用基本逻辑门电路设计一位全加器(FA),如表1:加法又可以实现减法,所以使用了一个M输入来进行方式控制加减。

1.8位可控加减法电路设计 2.4位先行进位电路设计 实验报告

1.8位可控加减法电路设计 2.4位先行进位电路设计 实验报告

1.8位可控加减法电路设计2.4位先行进位电路设计实验报告1.引言1.1 概述概述随着科技的发展,数字电路设计在计算机科学和电子工程领域中扮演着至关重要的角色。

本实验旨在设计并实现可控加减法电路和先行进位电路,以进一步提升数字电路设计的能力。

在本实验中,我们首先介绍了实验的目的和本文的结构。

接着,我们详细讲解了1.8位可控加减法电路设计的原理和电路图设计,并通过实验演示了其功能和性能。

随后,我们进一步介绍了2.4位先行进位电路设计的原理和电路图设计。

通过实验验证,我们展示了该电路在实际应用中的可靠性和高效性。

最后,我们总结了实验的结果,并分享了实验过程中的心得体会。

通过本次实验,我们不仅深入理解了可控加减法电路和先行进位电路的工作原理,还提升了自身的数字电路设计技能。

在本文中,我们将使用以下内容来阐述每个部分的主要思想和实验结果。

通过对这些内容的深入讨论,希望能够为读者提供一个清晰而全面的认识,以便更好地理解和应用可控加减法电路和先行进位电路的设计方法。

1.2文章结构【1.2 文章结构】本实验报告将分为以下几个部分进行描述和介绍。

首先,在引言部分,我们将对本实验的概述进行说明,介绍实验报告的结构以及实验的目的。

接下来,在第二部分中,我们将详细介绍1.8位可控加减法电路的设计原理。

这部分将涵盖所需的原理背景知识,并展示设计过程中所采用的方法和思路。

同时,我们将呈现电路图的设计,以便读者可以更直观地理解整个电路的实现方式。

第三部分将介绍2.4位先行进位电路的设计原理。

在这一部分中,我们将阐述该电路的工作原理和所采用的设计方案。

同样,我们还将提供对应的电路图设计,以帮助读者更好地了解电路的构成和工作方式。

在实验报告的最后一部分,我们将总结实验结果并得出结论。

在4.1实验结果总结中,将详细列举每个电路的实验结果,并对其性能进行评估和分析。

同时,我们将在4.2实验心得中分享我们在实验过程中的经验和感悟,包括遇到的问题、解决方案以及对未来可能的改进的展望。

八位加法器设计实验报告

八位加法器设计实验报告

八位加法器设计实验报告实验名称:八位加法器设计实验一、实验目的:1.了解数字电路中加法器的基本原理。

2.学习八位加法器的设计和实现方法。

3.掌握八位加法器的工作过程和输出结果。

二、实验器材:数字电路实验箱、电源线、逻辑门芯片(2个8位加法器芯片、1个与门芯片、1个或门芯片)、导线、电压表,显示器。

三、实验原理:四、具体步骤:1.搭建实验电路。

将两个8位加法器芯片、一个与门芯片、一个或门芯片分别插入数字实验箱中,并使用导线连接它们。

将A和B分别连接到8位加法器芯片的A和B输入端,将进位输入端Cin接地。

然后将两个八位加法器芯片的S0-S7依次连接到特定点,作为低位数;再将与门芯片的S仅连接到A口或B口上的特定点,或门芯片的S仅连接到A口上的特定点;然后将A、B、Cin的高位输入引脚接到与门芯片的输入端上;最后将八位加法器芯片的Cout引脚接到特定点,作为进位输出;将与门芯片和或门芯片的输出引脚接到显示器上。

2.进行实验。

给定任意两个8位操作数A和B,将它们输入到加法器中,并设置进位输入端Cin为0。

观察显示器上的运算结果。

3.分析实验结果。

根据实验数据和观察结果,分析八位加法器的工作过程和输出结果,研究其工作原理。

5.总结实验。

根据实验结果和分析,总结设计和实现八位加法器的方法,并讨论可能存在的问题和改进方法。

五、注意事项:1.在搭建实验电路之前,仔细检查电路连接是否准确、导线是否插紧。

2.在实验过程中,注意实验安全,注意观察显示器上的运算结果,及时记录实验数据。

3.实验结束后,将电源关闭,清理整理实验场地,将实验器材归位。

六、实验结果:S0=1,S1=1,S2=0,S3=0,S4=0,S5=0,S6=1,S7=1,Cout=1七、实验总结:通过本次实验,我学习了数字电路中加法器的基本原理,掌握了八位加法器的设计和实现方法,了解了八位加法器的工作过程和输出结果。

我通过实际搭建电路、输入操作数并设置进位输入,观察了八位加法器的运算结果,并根据实验结果进行了分析和总结。

加法和减法运算电路实验报告总结

加法和减法运算电路实验报告总结

加法和减法运算电路实验报告总结
加法和减法运算电路是数字电路中常见的基本电路之一。

本次实验主要目的是通过搭建加法器和减法器电路,实现两个二进制数的加法和减法运算。

通过本次实验,我学到了以下几点:
1. 加法器电路的原理:加法器电路是通过将两个输入数的每一位进行相加,然后进行进位运算,最后得到每一位的和。

根据加法器的不同类型(半加器、全加器等),我们可以得到不同位数的加法器电路。

2. 减法器电路的原理:减法器电路是通过将减数取反后与被减数相加,然后进行进位运算,最后得到每一位的差。

通常将减数进行取反可以简化运算过程。

3. 实验步骤:实验中我按照课本和实验要求进行了电路搭建工作。

首先,分别搭建了加法器和减法器电路,使用逻辑门和触发器实现了相关功能。

然后,通过给定的测试用例检验了电路的正确性。

4. 实验结果:实验中我得到了正确的加法和减法运算结果。

通过观察电路输出与预期结果的一致性,我验证了电路的正确性。

同时,我还注意到了电路的稳定性和可靠性。

5. 实验总结:通过本次实验,我对加法和减法运算电路有了更深入的理解。

我学会了如何搭建这些基本的数字电路,并且能够根据需求进行相应的扩展和改进。

在今后的学习和实践中,我将能够更好地应用这些原理和方法。

总之,本次实验使我对加法和减法运算电路有了更深刻的理解和掌握。

通过实际动手操作,我不仅获得了实验结果,还加深了对数字电路的理论知识的理解,为将来的学习和实践奠定了基础。

计算机组成原理加减器实验报告

计算机组成原理加减器实验报告

网工二班 陈衍席 1205110125实验四 加减器实验【实验环境】1. Windows 2000 或 Windows XP2. QuartusII9.1 sp2、DE2-115计算机组成原理教学实验系统一台,排线若干。

1.实验原理加减器是以二进制方式进行数字的加法或减法运算的器件,它能进行加法或减法运算,做减法运算时,是通过将减法运算转化为加法运算来实现的。

它可以用全加器做成。

(1)1位加法器的原理图设计两个二进制数字A ,B 和一个进位输入C 0相加,产生一个和输出S ,以及一个进位输出C 1,这种运算电路成为全加器(1位加法器)。

1位加法器有两个输出S 和C1,其中S 为加法器的和,C1为进位位输出。

下表中列出一位全加器进行加法运算的输入输出真值表: 加法器的真值表如下表所示:根据以上真值表,可以得到1位加法器的输入与输出逻辑关系。

0)(C B A S ⊕⊕= ; )()()())(()(01C A C B B A C B A B A C ∙+∙+∙=∙⊕+∙=1位加法器的原理图文件:1位加法器的封装图为:(2)8位加法器的原理图设计8位加法器用于对两个8位二进制数进行加法运算,并产生进位。

8位加法器真值表如下所示:8位加法器真值表表中 A[7..0]表示A 有8位输入端:A7-A0;B[7..0]表示B 有8位输入端:B7-B0;S[7..0]表示S 有8位输入端:S7-S0。

8位加法器的A 、B 都有8个输入端,加上进位CIN ,共有17个输入端。

它有9个输出端,即S7-S0和COUT ,因此8位加法器可由8个1位加法器构成。

建立8位加法器原理图文件:输 入 输 出 A[7..0] B[7..0] CIN S[7..0] COUT A B 进位输入 A+B+CIN 进位输出8位加法器的封装图为:(3)32位加法器的原理图设计32位加法器用于对两个32位二进制数进行加法运算,并产生进位。

计算机组成原理运算器实验报告-八位运算器实验

计算机组成原理运算器实验报告-八位运算器实验

计算机组成原理实验一运算器实验一、实验目的:1、掌握简单运算器的数据传输方式。

2、验证运算功能发生器(74LS181)及进位控制的组合功能。

二、实验要求:完成不带进位及带进位算数运算实验、逻辑运算实验,了解算数逻辑运算单元的运用。

三、实验原理:74LS181是4位算术逻辑运算器,用两个74LS181并联可以实现8位运算,为了实现双操作的运算,ALU的输入端分别由两个锁存器DR1,DR2锁存数据。

数据显示灯和数据总线相连接,用来显示数据总线上的内容。

由于实验电路中的时序信号均已连接至W/RUIT相应的时序信号引出端,只要微动开关,即可获得实验所需的单脉冲。

四、实验连接:1.八位运算器控制信号连接:S3,S2,S1,S0,M,/CN,LDDR1,LDDR2,LDCZY,/SW-B,/ALU-B,Cn+4 Cn+4I2.完成连接并检查无误后接通电源。

五、实验仪器状态设定:在闪动的“P.”状态下按动“增址”命令键,使LED显示器自左向右第一位显示提示符“H”,表示本装置已进入手动单元实验状态。

五、实验项目:(一)算数运算实验拨动二进制数据开关向DR1和DR2寄存器置数(灯亮为1,灯灭为0)。

步骤如下:[CBA=001] [LDDR1=1] [LDDR1=0][LDDR2=0] [LDDR2=1][“按STEP”] [“按STEP”] 然后检查数据:1.关闭数据输入三态门(CBA=000)2.打开ALU输出三态门(CBA=010)3.当置S3,S2,S1,S0,M为11111时,总线指示灯显示DR1中的数4.当置S3,S2,S1,S0,M为10101时,总线指示灯显示DR2中的数算数运算(不带进位)实验:置CBA=010,S3,S2,S1,S0,M,/CN为100101,LDCZY=0,则数据总线指示灯显示00001100(0CH)(二)进位控制实验(1)进位标志清零CBA=000 置S3,S2,S1,S0,M为00000 置/CN为0,LDCZY为1 按STEP (2)向DR1和DR2置数(同上)(3)验证进位运算及进位锁存功能,使/CN=1,LDCZY=1,来进行算数运算。

实验一 八位全加器的设计 报告

实验一 八位全加器的设计 报告

实验一八位全加器的设计一、实验目的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,得到八位全加器的仿真结果为下图。

8位加法器实验报告

8位加法器实验报告

6.1 实验一:8位加法器的设计1.实验目的(1)学习isEXPERT/MAX+plusisEXPERT/MAX+plus II/Foudation Series 软件的基本使用方法。

(2)学习GW48-CK EDA实验开发系统的基本使用方法。

(3)了解VHDL程序的基本结构。

2.实验内容设计并调试好一个由两个4位二进制并行加法器级联而成的8位二进制加法器,并用GW48-CK EDA实验开发系统(拟采用的实验芯片的型号为ispLSI1032E PLCC-84或EPF10K10LC84-3或XCS05/XL PLCC84)进行硬件验证。

3.实验条件(1)开发设备:Lattice ispEXPERT。

(2)实验设备:GW48-CK EDA实验开发系统。

(3)拟用芯片:ispLSI1032E PLCC-84或EPF10K10LC84-3或XCS05/XL PLCC84。

4.实验设计1)系统的原理框图2)VHDL源程序(1)4位二进制并行加法器的源程序ADDER4B.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ADDER4B ISPORT(C4: IN STD_LOGIC;A4: IN STD_LOGIC_VECTOR(3 DOWNTO 0);B4: IN STD_LOGIC_VECTOR(3 DOWNTO 0);S4: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);CO4: OUT STD_LOGIC);END ENTITY ADDER4B;ARCHITECTURE ART OF ADDER4B ISSIGNAL S5: STD_LOGIC_VECTOR(4 DOWNTO 0);SIGNAL A5,B5: STD_LOGIC_VECTOR(4 DOWNTO 0);BEGINA5<='0'&A4;B5<='0'&B4;S5<=A5+B5+C4;S4<=S5(3 DOWNTO 0);CO4<=S5(4);END ARCHITECTURE ART;(2)8位二进制加法器的源程序ADDER8B.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ADDER8B ISPORT(C8: IN STD_LOGIC;A8: IN STD_LOGIC_VECTOR(7 DOWNTO 0);B8: IN STD_LOGIC_VECTOR(7 DOWNTO 0);S8: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);CO8: OUT STD_LOGIC);END ENTITY ADDER8B;ARCHITECTURE ART OF ADDER8B ISCOMPONENT ADDER4B ISPORT(C4: IN STD_LOGIC;A4: IN STD_LOGIC_VECTOR(3 DOWNTO 0);B4: IN STD_LOGIC_VECTOR(3 DOWNTO 0);S4: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);CO4: OUT STD_LOGIC);END COMPONENT ADDER4B;SIGNAL SC:STD_LOGIC;BEGINU1:ADDER4BPORT MAP(C4=>C8,A4=>A8(3 DOWNTO 0),B4=>B8(3 DOWNTO 0),S4=>S8(3 DOWNTO 0),CO4=>SC);U2:ADDER4BPORT MAP(C4=>SC,A4=>A8(7 DOWNTO 4),B4=>B8(7 DOWNTO 4),S4=>S8(7 DOWNTO 4),CO4=>CO8);END ARCHITECTURE ART;5.系统仿真文件预计当输入为以下值时C8: 0 1 1 00A8: 10 02 FF 02B8:11 04 FF 02与之对应的输出应该为CO8:0 0 1 0S8:21 07 FF 04仿真结果为:6.实验小结本实验使我加深了对加法器的了解,也使我学会了isEXPERT/MAX+plus软件的基本操作,使我对VHDL程序有了更深的了解,但是我不知道是不是我的软件问题,仿真结果是正确的,但CO8那一行为什么与别的行不一样,为什么是阴影的,还有就是S8那一行出现的那些红色“XXX”我不知道事怎么回事,希望老师给我解释一下。

8位加法器的设计(推荐文档)

8位加法器的设计(推荐文档)

实验二 8位加法器设计一、实验目的熟悉利用Quartus Ⅱ的图形编辑输入法设计简单组合电路,掌握层次化设计方法,并通过8位全加器的设计,进一步熟悉利用EDA 软件进行数字系统设计的流程。

二、实验仪器与器材计算机1台,GW48-PK2S 实验箱1台,Quartus Ⅱ6.0 1套。

三、实验内容1. 基本命题利用图形输入法设计一个一位半加器和全加器,再利用级联方法构成8位加法器。

2. 扩展命题利用文本输入法设计4位并行进位加法器,再利用层次设计方法构成8位加法器。

通过时序仿真,比较两种加法器的性能。

四、设计思路加法器是数字系统中的基本逻辑器件。

例如,为了节省逻辑资源,减法器和硬件乘法器都可由加法器来构成。

多位加法器的设计十分耗费硬件资源,因此在实际的设计和相关系统的开发中,需要注意资源的利用率和进位速度两方面的问题。

对此,首先应选择较适合组合逻辑设计的器件作为最终的目标器件,如CPLD ;其次在加法器的逻辑结构设计上,在芯片资源的利用率和加法器的速度两方面权衡得失,探寻最佳选择,即选择最佳的并行进位最小的加法单元的宽度。

显然这种选择与目标器件的时延特性有直接关系。

多位加法器的构成有两种方式:即并行进位和串行进位方式。

串行进位方式的加法器是将全加器级联构成的,它有电路简单,但进位速度较慢的特点。

并行进位加法器设有产生并行进位的逻辑电路,加法器的进位仅与输入状态有关,与各级加法器的进位无关,即第 i 位加法器的进位直接由该位的各输入状态决定,其关系式为:i i i i i i C Y X Y X C ⋅⊕+=+1 (i = 0,1,2,3…)当i = 3时,代入上述表达式可得:00112233001122331122332233334C Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y X C ⋅⊕⋅⊕⋅⊕⋅⊕+⋅⊕⋅⊕⋅⊕+⋅⊕⋅⊕+⋅⊕+= 4位加法器的各位和数表达式如下:0000010000111112111122222322223333343333C Y X Y X C C Y X S C Y X Y X C C Y X S C Y X Y X C C Y X S C Y X Y X C C Y X S ⋅⊕+=⊕⊕=⋅⊕+=⊕⊕=⋅⊕+=⊕⊕=⋅⊕+=⊕⊕=用门电路实现的4位并行加法器电路如图2-1所示。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

综合电子系统实习报告设计题目:8位加法器和减法器的设计一、实习目的:综合电子系统实习是电子信息类专业学生了解电子系统设计实现过程,培养实践动手能力的实践性教学环节,是电子信息工程等理工科专业学生一门必修的实践性课程。

通过学习和实践,可以让学生进一步接触电子元器件,电子材料及电子产品的生产实际,了解电子工艺的一般知识和掌握基本电路板的制作,元件的焊接,产品的组装等技能,了解电子工艺生产线的流程和基本管理知识,使学生通过设计一个课题,巩固和加深在“模拟电子技术基础”和“数字电子技术基础”等课程中所学到的理论知识和实验技能,掌握常用电子电路中的一般分析和设计方法,熟悉protel和其他开发软件的使用方法,提高电子电路的分析、设计和实验能力,为以后从事生产和科研工作打下一定的基础,为今后专业实验,毕业设计准备必要的工艺知识和操作技能。

同时培养学生严谨的工作作风,养成良好的工作习惯,它是基本技能和工艺知识的入门向导,又是创新实践和创新精神的启蒙。

综合电子系统实习对训练我们基本操作技能,提高我们实际动手能力是难得的一次好机会。

二、实习基本内容和要求:(1)掌握常用电子元器件的种类,性能,选用原则及质量辨别;(2)掌握电子产品装配及材料;(3)学会印制电路板的制作,掌握锡焊原理及手工焊接工艺技术;(4)学会器件的装配,焊接,调试;(5)学会使用常用电子测试仪器设备,初步具有借助说明书或资料掌握常用工具,仪器的使用能力;(6)掌握常用电子电路的设计方法,学会系统实物制作和调试。

三、实习工具:(1)电烙铁:由于焊接的元件多,所以使用的是外热式电烙铁,功率为30w,烙铁头是铜制。

(2)螺丝刀、钻孔机、斜口钳、尖嘴钳等必备工具。

(3)焊锡,由于锡它的熔点低,焊接时,焊锡能迅速散步在金属表面焊接牢固,焊点光亮美观。

(4)数字万用表,5V直流稳压电源。

要求:1、利用逻辑门电路设计8位加法器和减法器,实现两个8位二进制数的加法运算和减法运算;2、具有进位信号输入和输出能力;3、通过功能选择控制信号F选择运算功能,F=0,加法运算,F=1,进行减法运算;4、用发光二极管显示两个输入数据和运算结构。

1、设计原理:仿真电路图:原理说明:根据实习要求,要设计一个两个8位二进制加法器和减法器,综合各方面考虑,决定用上面的芯片进行仿真电路的设计,用到芯片是74LS283.和74LS86,在设计的时候用开关控制高低电平作为二进制的1和0,用发光二极管来表示,二极管发光表示是高电平,二极管不发光就是低电平。

通过芯片来完成相应的功能转换。

在上面图的右边是加法器和减法器处理两组数据以后的情况,同样发光二极管发光表示1,不发光表示0,上面用到电阻主要是限流作用,用来保护发光二极管以免被烧坏。

上面的电路图经过验证是能正常工作的,发光二极管亮与灭完全符合相加减的结果。

74LS283(四位二进制超前进位加法器)的引脚图:原理:图中A3~A0,B3~B0为四位二进制数,作为加数,C1为低位进位,S0~S3为加法器的和,C3为本位的进位。

它可以完成四位二进制数的加法运算。

如输入:A3A2A1A0(1000),B3B2B1B0(0110),C1(0),则输出S3S2S1S0(1110),C3(0)。

74LS86(四2输入异或门)的管脚图:原理:当输入电平相同时输出为低电平,当两个输入不相同时输出为高电平。

图中A3~A0,B3~B0为输入端;O0~O3为输出端。

Protel 电路原理图:前面我已经用仿真软件进行了仿真,并且结果非常令人满意。

所以我们就用protel 来进行下一步的制作,首先进行画原理图,具体画的图就是上面的那个样子,上面用到电阻很多是因为我们用电阻的封装来安装发光二极管,因为具体的发光二极管在元件库里面没找到,找到的也是贴片封装,所以决定用电阻的封装来代替发光二极管。

上面的原理图也是完全按照仿真的图来画的,应该是没有什么问题的,左下角是加减法功能控制开关,通过开关可以切换加法和减法。

在原理图中我们还是用到了两个1K的排阻,用排阻比较方便,是作为上拉电阻接在原理图中。

图中的异或门实际上是芯片86的分开的原理图,封装还是集成芯片的14孔芯片。

Protel 电路PCB电路图:上面就是我们小组PCB图,是双面板的。

因为用单面板布线相当困难,而且跳线很多,用双面板来布线比较简单,顶层和底层的布线都没有很大的问题,自动布线就可以完全不好,自己稍微修改一些布的不好的线就可以了。

空间布置基本是原理图的位置来放置的,整个布线过程我还是很满意的。

2、电路板的制作,元件的焊接,产品组装过程情况:首先老师给我们讲解了电路原理图的绘制及电路板的制作以及实习过程中要注意的事项。

然后进行资料查找,确定设计方案;接着进行系统设计实现,完成系统原理图设计和PCB板设计。

列好元器件清单,给老师检查无误后去领元器件,把拿回来的元器件清点一次看看是否有缺漏。

用我们学的protel软件画PCB 板,然后用热转印法把设计好的PCB图形打印到转印纸上,再把转印纸上的图形用电熨斗转印到板上,用油性笔对小的瑕疵进行修补。

把电路板放进三氯化铁溶液里腐蚀,腐蚀之后得到的就是只有线路的板子了,这时板子上会有留下来的电黑色的东西,用砂纸擦一下就显出铜的颜色了。

到实验室用钻孔机把印在板子上有要打孔的地方打孔,那些都是放置元件的孔。

接着分好元件,读准各元件的值,确定各元件摆放的位置及方向,把原件放到电路板上。

用焊锡把元件焊接好。

到实验室把连接好的实物与5V的直流电源连接好调试实现两个8位二进制数的加法运算和减法运算。

最后再让老师验收。

3、实验结果:把电路板上的两条电源线与5V的直流电源连上,接通电源。

任意输入几组两个8位二进制数进行加法和减法运算,观察发光二极管输出的结果与计算机上的仿真软件得出的计算结果相对比,检验实物电路的功能。

经调试该实物电路能够实现两个8位二进制数的加法运算和减法运算,实物调试成功。

4、实习中碰到的问题和解决措施:1、用protel软件画原理图时很难做到布线时没有交叉,而且自己第一次画时线很乱,没有考虑到后面安装元件时元件怎么摆放位置怎么插入才算合理等,后来发现这些问题后经过自己的修改手动布线调整原来器件的位置,终于协调好刚才的问题调好之后和就设置进行布线。

用热转印法把设计好的PCB图形打印到转印纸上时由于没有控制好熨斗的温度,所以没有充分把线路转印上去,后来用油性笔把不清楚的地方修补好。

2、进行腐蚀时没有注意好腐蚀的时间,腐蚀出来的板子有些地方没有腐蚀,后来在焊接时把断开的线路焊上。

3、用钻孔机打孔时不小心把一些孔打歪了,因此打孔要对准那个孔打而且也要小心把打孔针弄断。

4、要注意 PCB中的元件封装和实际中元件的封装是不一样,这是我在实习开始时没有注意的问题,后来自己检查才发现是自己安装错误导致调试时电路不能正常工作。

要学会利用万用表来验证读数和实际情况是否一致,以免安装电阻时出错。

学会怎样辨认二极管的“+”,“—”极,二极管的引脚也要很小心不要把负的接到正极。

这几个问题都是实习过程中要注意的。

5、要说出现问题最多的就是焊接这一步。

由于自己进行焊接没有什么经验,后来用万用表检测时发现很多地方虚焊,要用万用表对线路逐级检测,然后把虚焊的地方焊上,还有一些地方线与线之间的距离很小,所以要注意不能使焊点或线之间连接起来,否则就会引起短路。

6、在焊接时还要注意元件的摆放,对照所画的原理图放好元件的方向,需要注意的就是芯片的位置不要装反了,否则会使做出来的电路板功能和要求的不一致,这次因为把元器件放反了,调试了很多次才调试出来。

最后要记得把地线焊接上去,先前我忘记把地线焊上去,到后来检测时才焊上去的。

7、进行调试时发现发光二极管灯不亮,而且电路板不能工作。

后来用万用表检测发现一些地方虚焊,焊上后终于调试成功。

8、因为我们做的是双面板,虽然布线是简单很多,但是双面板的做板要比单面板难很多,首先是顶层和底层在用熨斗熨的时候一定要对好位置,否则的话这块板就不行了,我们采用过孔对准的方法来进行两层对位热熨,结果也是很完美的。

双面板和单面板不同,在装元器件之前必须要把过孔先焊好。

9、在检查完后进行调试,结果减法器是对的,但是加法器不正确,经过仔细检查是一个电阻太大了,换了一个小电阻后去调试,结果就对了。

8位加法器和减法器总电路正常工作。

5、今后实习的改进意见和建议:1、耐心细致、冷静有序。

2、检测按步骤进行,一般由后级向前检测,先判定故障位置(用信号注入法)。

再查找故障点(用电位法),循序渐进,排除故障。

3、不能乱调乱拆、盲目烫焊,导致越修越坏。

五、综合电子系统实习在知识能力和作风培养方面的体会:通过这两个星期综合电子系统的实习,我得到了很大的收获,这些都是平时在课堂理论学习中无法学到的,我主要的收获有以下几点:1、本次实习操作多,对我们技能要求高,对我们素质的发展有着相当重要的作用,所以我们应该认真听讲,仔细操作,来不得半点懈怠。

2、在操作前应该认真的学习理论知识以便更好的指导实践,之后应该继续思考以把理论与实际更好的结合。

3、凡事不可操之过急,静下心来认真的思考,谨慎的处理好动手与动脑的有效结合既互相的促进。

4、此次的实习大大的提高了我们的动手能力与运用所学知识解决实际问题的素质,为以后的实践积累了宝贵的经验。

5、使我们进一步的认识到:实际≠理论,它们之间还有一定的距离,但它们之间有一座无形的桥,那就是思考与动手。

这也进一步的告诫我们:知识≠能力,它们之间也有着一个鸿沟,但并不是不可逾越的。

这也就更进一步间接的告诉我们理论联系实际。

总而言之,我们的实践能力还很欠缺,尤其表现在理论与实际联系的素质。

主要的原因可能是思考的少以至眼界不是十分的开阔,进一步的导致在实践的过程中敢想而不敢做,敢做了又表现得力不从心。

通过这次的综合电子系统实习,我学到很多东西,熟练了画原理图、焊板、调试这几个过程中都要注意什么事项,使我对电子工艺的理论有了初步的系统了解和焊普通元件与电路元件的技巧、印制电路板图的设计制作与工艺流程、功放的工作原理与组成元件的作用等。

这些知识不仅在课堂上有效,对以后的电子工艺课的学习有很大的指导意义,在日常生活中更是有着现实意义;也对自己的动手能力是个很大的锻炼。

在实习中,我锻炼了自己动手技巧,提高了自己解决问题的能力。

这短暂的两周实习,使我从理论到实践上的一个飞跃。

这次综合电子系统实习,使我深刻地理解了实践的重要性,理论无论多么熟悉,但是缺乏了实践的理论是行不通的。

在学校我们学到的很多都是书本上的理论知识,从考试到学习,都是围绕书本的理论知识展开的,而很少会关心我们自己的实际动手能力,这一次的实习,让我们自己去发现问题,去想问题,去如何解决这个问题去亲手操作,实践,这个过程使得我觉得自己完成了一次质的飞跃。

相关文档
最新文档