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位加法器和减法器的设计一、实习目的:综合电子系统实习是电子信息类专业学生了解电子系统设计实现过程,培养实践动手能力的实践性教学环节,是电子信息工程等理工科专业学生一门必修的实践性课程。
通过学习和实践,可以让学生进一步接触电子元器件,电子材料及电子产品的生产实际,了解电子工艺的一般知识和掌握基本电路板的制作,元件的焊接,产品的组装等技能,了解电子工艺生产线的流程和基本管理知识,使学生通过设计一个课题,巩固和加深在“模拟电子技术基础”和“数字电子技术基础”等课程中所学到的理论知识和实验技能,掌握常用电子电路中的一般分析和设计方法,熟悉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

实验报告课程名称电子设计自动化实验(基于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位二进制全加器设计实验报告

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位可控加减法电路设计实验,利用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八位硬件加法器

实验六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 称为产生量变 。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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、使我们进一步的认识到:实际≠理论,它们之间还有一定的距离,但它们之间有一座无形的桥,那就是思考与动手。
这也进一步的告诫我们:知识≠能力,它们之间也有着一个鸿沟,但并不是不可逾越的。
这也就更进一步间接的告诉我们理论联系实际。
总而言之,我们的实践能力还很欠缺,尤其表现在理论与实际联系的素质。
主要的原因可能是思考的少以至眼界不是十分的开阔,进一步的导致在实践的过程中敢想而不敢做,敢做了又表现得力不从心。
通过这次的综合电子系统实习,我学到很多东西,熟练了画原理图、焊板、调试这几个过程中都要注意什么事项,使我对电子工艺的理论有了初步的系统了解和焊普通元件与电路元件的技巧、印制电路板图的设计制作与工艺流程、功放的工作原理与组成元件的作用等。
这些知识不仅在课堂上有效,对以后的电子工艺课的学习有很大的指导意义,在日常生活中更是有着现实意义;也对自己的动手能力是个很大的锻炼。
在实习中,我锻炼了自己动手技巧,提高了自己解决问题的能力。
这短暂的两周实习,使我从理论到实践上的一个飞跃。
这次综合电子系统实习,使我深刻地理解了实践的重要性,理论无论多么熟悉,但是缺乏了实践的理论是行不通的。
在学校我们学到的很多都是书本上的理论知识,从考试到学习,都是围绕书本的理论知识展开的,而很少会关心我们自己的实际动手能力,这一次的实习,让我们自己去发现问题,去想问题,去如何解决这个问题去亲手操作,实践,这个过程使得我觉得自己完成了一次质的飞跃。