八位二进制加法器论文
EDA实验六8位二进制全加法器的设计说明

《电子设计自动化》实验报告实验六实验名称:8位二进制全加法器的设计专业及班级:姓名:学号:一、实验目的:1.掌握VHDL语言的基本结构。
2.掌握全加器原理,能进行多位加法器的设计。
3.掌握VHDL语言的基本描述语句特别是元件例化语句的使用方法。
二、实验内容设计并实现一个由两个4位二进制并行加法器级联而成的8位二进制并行加法器。
要求编写4位加法器的VHDL语言程序,顶层8位加法器的设计要求利用元件例化语句进行设计,并利用开发工具软件对其进行编译和仿真,最后通过实验开发系统对其进行硬件验证。
三、实验步骤〔附源代码及仿真结果图:1.根据4位二进制加法器的原理,利用VHDL语言的基本描述语句编写出4位加法器的VHDL语言程序。
--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.对所设计的4位二进制加法器的VHDL程序进行编译,然后对其进行仿真,初步验证程序设计的正确性。
EDA8位二进制并行加法器

实验二:8位加法器的设计1.实验目的(1)学习Quartus Ⅱ/ISE Suite/ispLEVER软件的基本使用方法。
(2)学习GW48-CK或其他EDA实验开发系统的基本使用方法。
(3)了解VHDL程序的基本结构。
2.实验内容设计并调试好一个由两个4位二进制加法器级联而成的8位二进制并行加法器,并用GW48-CK或其他EDA实验开发系统(事先应选定拟采用的实验芯片的型号)进行硬件验证。
3.实验要求(1)画出系统的原理图,说明系统中各主要组成部分的功能。
(2)编写各个VHDL源程序。
(3)根据系统的功能,选好测试用例,画出测试输入信号波形或编号测试程序。
(4)根据选用的EDA实验开发装置编好用于硬件验证的管脚锁定表格或文件。
(5)记录系统仿真、逻辑综合及硬件验证结果。
(6)记录实验过程中出现的问题及解决办法。
4.实验条件(1)开发条件:Quartus Ⅱ 8.0。
(2)实验设备:GW48-CK实验开发系统。
(3)拟用芯片:EPM7128S-PL84。
5.实验设计1)系统原理图为了简化设计并便于显示,本加法器电路ADDER8B的设计分为两个层次,其中底层电路包括两个二进制加法器模块ADDER4B,再由这两个模块按照图2.1所示的原理图构成顶层电路ADDER8B。
ADDER4B图2.1 ADDER4B电路原理图A8[7..0]图 2.1 ADDER8B电路原理图2)VHDL程序加法器ADDER8B的底层和顶层电路均采用VHDL文本输入,有关VHDL程序如下。
ADDER4B的VHDL源程序:--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;ADDER8B的VHDL源程序:--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:ADDER4B PORT MAP(C4=>C8,A4=>A8(3 DOWNTO 0),B4=>B8(3 DOWNTO 0),S4=>S8(3 DOWNTO 0),CO4=>SC);U2:ADDER4B PORT MAP(C4=>SC,A4=>A8(7 DOWNTO 4),B4=>B8(7 DOWNTO 4),S4=>S8(7 DOWNTO 4),CO4=>CO8);END ARCHITECTURE ART;CTRLS的VHDL程序--CTRLS.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CTRLS ISPORT(CLK: IN STD_LOGIC;SEL: OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END ENTITY CTRLS;ARCHITECTURE ART OF CTRLS ISSIGNAL CNT:STD_LOGIC_VECTOR(2 DOWNTO 0);BEGINPROCESS(CLK) ISBEGINIF CLK'EVENT AND CLK='1' THENIF CNT="111" THENCNT<="000";ELSECNT<=CNT+'1';END IF;END IF;END PROCESS;SEL<=CNT;END ARCHITECTURE ART;DISPLAY的VHDL程序--DISPLAY.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY DISPLAY ISPORT( SEL: IN STD_LOGIC_VECTOR(2 DOWNTO 0); -- DATAIN: IN STD_LOGIC_VECTOR(15 DOWNTO 0); DATAIN: IN STD_LOGIC_VECTOR(7 DOWNTO 0); COM: OUT STD_LOGIC_VECTOR(7 DOWNTO 0); --LEDW: OUT STD_LOGIC_VECTOR(2 DOWNTO 0); SEG: OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END ENTITY DISPLAY;ARCHITECTURE ART OF DISPLAY ISSIGNAL DATA: STD_LOGIC_VECTOR(3 DOWNTO 0);-- SIGNAL DATA: STD_LOGIC_VECTOR(7 DOWNTO 0);BEGINP1:PROCESS(SEL) ISBEGINCASE SEL ISWHEN"000"=>COM<="11111110";WHEN"001"=>COM<="11111101";WHEN"010"=>COM<="11111011";WHEN"011"=>COM<="11110111";WHEN"100"=>COM<="11101111";WHEN"101"=>COM<="11011111";WHEN"110"=>COM<="10111111";WHEN"111"=>COM<="01111111";WHEN OTHERS=>COM<="11111111";END CASE;END PROCESS P1;--LEDW<=SEL;P2:PROCESS(SEL)BEGINCASE SEL ISWHEN"000"=>DATA<=DATAIN(3 DOWNTO 0);WHEN"001"=>DATA<=DATAIN(7 DOWNTO 4);-- WHEN"010"=>DATA<=DATAIN(11 DOWNTO 8);-- WHEN"011"=>DATA<=DATAIN(15 DOWNTO 12); WHEN OTHERS=>DATA<="0000";END CASE;CASE DATA ISWHEN"0000"=>SEG<="00111111";WHEN"0001"=>SEG<="00000110";WHEN"0010"=>SEG<="01011011";WHEN"0011"=>SEG<="01001111";WHEN"0100"=>SEG<="01100110";WHEN"0101"=>SEG<="01101101";WHEN"0110"=>SEG<="01111101";WHEN"0111"=>SEG<="00000111";WHEN"1000"=>SEG<="01111111";WHEN"1001"=>SEG<="01101111";WHEN OTHERS=>SEG<="00000000";END CASE;END PROCESS P2;END ARCHITECTURE ART;ADDER8B动态扫描的VHDL程序--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);CLK:IN STD_LOGIC;-- S8: OUT STD_LOGIC_VECTOR(7 DOWNTO 0); S8: BUFFER STD_LOGIC_VECTOR(7 DOWNTO 0); CO8: OUT STD_LOGIC ;COM: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);SEG: OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END ENTITY ADDER8B;ARCHITECTURE ART OF ADDER8B IS--COMPONENT ADDER4BCOMPONENT 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;--COMPONENT CTRLSCOMPONENT CTRLS ISPORT(CLK: IN STD_LOGIC;SEL: OUT STD_LOGIC_VECTOR(2 DOWNTO 0)); END COMPONENT CTRLS;--COMPONENT DISPLAYCOMPONENT DISPLAY ISPORT(SEL: IN STD_LOGIC_VECTOR(2 DOWNTO 0);--DATAIN: IN STD_LOGIC_VECTOR(15 DOWNTO 0);DATAIN: IN STD_LOGIC_VECTOR(7 DOWNTO 0);COM: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);SEG: OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END COMPONENT DISPLAY;SIGNAL SC: STD_LOGIC;SIGNAL SB: STD_LOGIC_VECTOR(2 DOWNTO 0);BEGINU1:ADDER4B PORT MAP(C4=>C8,A4=>A8(3 DOWNTO 0),B4=>B8(3 DOWNTO 0),S4=>S8(3 DOWNTO 0),CO4=>SC);U2:ADDER4B PORT MAP(C4=>SC,A4=>A8(7 DOWNTO 4),B4=>B8(7 DOWNTO 4),S4=>S8(7 DOWNTO 4),CO4=>CO8);U3:CTRLS PORT MAP(CLK,SB);U4:DISPLAY PORT MAP(SB,S8(7 DOWNTO 0),COM(7 DOWNTO 0),SEG(7 DOWNTO 0));END ARCHITECTURE ART;3)仿真波形设置本设计包括两个层次,因此先进行底层的二进制加法器ADDER4B的仿真,再进行顶层ADDER8B的仿真。
实验二8位二进制加减可控计数器设计

实验二8进制加减可控计数器设计一、实验目的1.学习时序电路的设计,仿真和硬件测试,进一步熟悉VHDL设计技术。
2.学习使用SignalTap的使用方法。
3.学习用AS模式下对配置器件的编程。
二、实验内容1.参考书中4-22,设计一个异步清零和同步时钟使能的十进制加法计数器,在QuartusⅡ上进行编辑、编译、综合、适配、仿真。
给出其所有信号的时序仿真波形。
引脚锁定后进行编译、下载和硬件测试实验。
2.使用SignalTap II对此计数器进行实时测试,保存波形。
3.从设计中去除SignalTap II,要求全程编译后生成用于配置器件EPCS1编程的压缩POF文件,并使用ByteBlasterII,通过AS模式对实验板上的EPCS1进行编程,最后进行验证。
4.设计含有异步清零和同步时钟使能的8进制加减可控计数器。
并完成硬件测试。
一般加法计数器的设计参照书本例4-22。
异步清零表示只要清零信号有效,计数器输出为某个特定的值(比如00H),计数器使能表示只有该信号有效时,才开始计数,其他时候停止计数。
另外加减控制线来控制计数器是加还是减。
三、实验报告将实验原理、设计过程、编译仿真波形和分析结果写进实验报告。
四、实验步骤1.创建工程在D盘中新建一个文件夹D:\ cnt10,此文件夹用于存放整个工程。
打开Quartus II 7.2,在菜单中选择File—〉New Project Wizard 将会出现一个信息框,这个对话框介绍创建工程步骤,可以直接选Next,这时会出现如图1所示的对话框。
这里需输入的是欲创建工程的基本信息,三个输入栏中分别输入的是工程将被保存的路径及工程文件夹、工程的名称和顶层实体的名称。
建议工程名与顶层实体名称保持一致。
输入完毕我们就可以点击Next。
图1 新建工程基本信息对话框然后出现图2所示的添加工程文件对话框。
在这里需要做的是将已经写好的VHDL文件加入到工程中。
本次实验,可以直接点击Next,以后再添加VHDL 文件的工作。
八位二进制累加器

摘要随着社会的发展,在生活和生产中,我们经常要用到二进制累加问题,为了提高运算速度,更大的节约时间,所以我做了这个八位二进制累加器来进行二进制的累加,主要内容为加法器和寄存器及一些简易的电容电阻等器件,来实现八位二进制的累加问题,这样就可以把复杂的问题具体化,从而提高生产与学习效率,极大地节约时间。
关键词:二进制累加器目录一.课题名称……………………………………………………………二.主要功能(简要说明) ………………………………………………三.电路原理图…………………………………………………………四. 工作原理分析………………………………………………………1.电路组成…………………………………………………………2.单个元器件性能…………………………………………………五. 整体电路工作原理及EDA仿真和结果分析:……………………六. 元器件选择(元器件明细表和参考价格,电路成本估算)……七.电路的制作与实验测试……………………………………………1.电路排布…………………………………………………………2.电路焊接…………………………………………………………3.电路的检查及测试………………………………………………4.调试结果…………………………………………………………八.线路的改进意见:……………………………………………………九.思考题………………………………………………………………十.课程设计的收获和体会………………………………………………十一.参考文献……………………………………………………………一.课题名称:8位二进制累加器二.主要功能(简要说明):该电路将K3,K4设定的8位二进制数与74LS273中锁存的数相累加,并将结果通过发光二极管D1~D8显示出来。
K1为累加键,每按以此累加一次。
K2为清零键,用于将累加和清零。
三.电路原理图:V四. 工作原理分析1、电路组成:如图1所示,整个电路由一个8位高速寄存器、两个4位二进制全加器及一些电阻、电容、发光二极管组成,实现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为二进制加法计算器,其功能就是对两个八位的二进制数执行加法运算,并可以异步清零。
二:电路可划分为三部分:半加器、全加器和复位电路。
1、半加器:真值表a b so co0 0 0 00 1 1 01 0 1 01 1 0 1电路图2全加器:由半加器和或门组成电路图3复位电路:复位电路通过en控制,当en为‘1’时,执行加法运算,输出正确的值,当en为‘0’时,输输出及结果为全0.三:实验波形仿真和VHDL1、仿真图:2、VHDL代码1)半加器h_adder: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)或门or2a:library ieee;use ieee.std_logic_1164.all;entity or2a isport (a,b :in std_logic;c: out std_logic);end entity or2a;architecture one of or2a isbeginc <= a or b ;end architecture one;3)全加器f_adder: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_adderport (a,b :in std_logic;co,so :out std_logic);end component;component or2aport (a,b :in std_logic;c: out std_logic);end component;signal d,e,f: std_logic;beginu1: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);u3: or2a port map(a=>d,b=>f,c=>cout);end architecture fd1;4)与门and2a:library ieee;use ieee.std_logic_1164.all;entity and2a isport (a,b :in std_logic;c: out std_logic);end entity and2a;architecture one of and2a isbeginc <= a and b ;end architecture one;5)顶层设计文件library ieee;use ieee.std_logic_1164.all;entity zong isport (a1,a2,a3,a4,a5,a6,a7,a8,b1,b2,b3,b4,b5,b6,b7,b8,en :in std_logic;solution1,solution2,solution3,solution4,solution5,solution6,solution7,solution8,solution9 :out std_logic );end entity zong;architecture fh1 of zong iscomponent h_adderport (a,b :in std_logic;co,so :out std_logic);end component;component f_adderport (ain,bin,cin:in std_logic;cout,sum:out std_logic);end component;component and2aport (a,b :in std_logic;c: out std_logic);end component;signale2,e3,e4,e5,e6,e7,e8,e9,e10,e11,e12,e13,e14,e15,e16,e17,e18,e19,e20,e21,e22,e23,e24 :std_logi c;beginu1:and2a port map(a=>en,b=>a1,c=>e2);u2:and2a port map(a=>en,b=>a2,c=>e3);u3:and2a port map(a=>en,b=>a3,c=>e4);u4:and2a port map(a=>en,b=>a4,c=>e5);u5:and2a port map(a=>en,b=>a5,c=>e6);u6:and2a port map(a=>en,b=>a6,c=>e7);u7:and2a port map(a=>en,b=>a7,c=>e8);u8:and2a port map(a=>en,b=>a8,c=>e9);u9:and2a port map(a=>en,b=>b1,c=>e10);u10:and2a port map(a=>en,b=>b2,c=>e11);u11:and2a port map(a=>en,b=>b3,c=>e12);u12:and2a port map(a=>en,b=>b4,c=>e13);u13:and2a port map(a=>en,b=>b5,c=>e14);u14:and2a port map(a=>en,b=>b6,c=>e15);u15:and2a port map(a=>en,b=>b7,c=>e16);u16:and2a port map(a=>en,b=>b8,c=>e17);u17:h_adder port map(a=>e2,b=>e10,co=>e18,so=>solution1);u18:f_adder port map(ain=>e3,bin=>e11,cin=>e18,cout=>e19,sum=>solution2);u19:f_adder port map(ain=>e4,bin=>e12,cin=>e19,cout=>e20,sum=>solution3);u20:f_adder port map(ain=>e5,bin=>e13,cin=>e20,cout=>e21,sum=>solution4);u21:f_adder port map(ain=>e6,bin=>e14,cin=>e21,cout=>e22,sum=>solution5);u22:f_adder port map(ain=>e7,bin=>e15,cin=>e22,cout=>e23,sum=>solution6);u23:f_adder port map(ain=>e8,bin=>e16,cin=>e23,cout=>e24,sum=>solution7);u24:f_adder port map(ain=>e9,bin=>e17,cin=>e24,cout=>solution9,sum=>solution8);end architecture fh1;。
8位二进制加法器

8位二进制加法器1.摘要:本次设计主要是如何实现8位二进制数的相加,即两个000到255之间的数相加,由于在实际中输入的往往是三位十进制数,因此,被加数和加数是两个三位十进制数,范围在000到255之间,通过六个二-十进制编码器(即74LS147)分别将加数和被加数的个位、十位、百位转换为8421BCD码,于是得到了两个12位字码,将它们接入三个四位超前进位并行加法器(即74LS283),其中原加数三位十进制数的个位转换得到的四位BCD码与被加数三位十进制数的个位转换得到的四位BCD码相加,串入到第一个74LS283的接线端,得到一个四位8421BCD码。
同理,原加数和被加数的十位转换得到的四位BCD码相加也得到一个8421BCD码。
同理,百位也是如此。
需要注意的是:由于这12位BCD码是由三位十进制数转换过来的,因此在用加法器相加时,要逢10进一。
于是通过一些与非门、非门和加法器构成一个新的加法器,使该加法器能对这十二位BCD码进行计算,并且逢10进1,这样得到一个十二位BCD码,即相加结果三位十进制数所对应的BCD码,再通过7447数字显示译码器将这十二位8421BCD码还原成一个三位十进制数,用数码管显示出来,得到一个三位十进制数,即为所求的结果。
另外,本次设计不仅可以适用加数和被加数是000到255的数字,同时也适用于加数和被加数是000到999的任何一个数,这是本次设计的创新之处。
2.关键字:二-十进制编码器、四位超前进位并行加法器、7447七段数码显示译码器、逢十进一、数码管。
3.设计要求:1.八位二进制加数与被加数的输入;2.三位数码管显示;3.三位十进制加数与被加数的输入。
4.正文:第一章系统概述本次设计的目的是实现两个八位二进制数的相加,那么我们如何实现呢?通常在实际中输入的是三位十进制数,而要求是八位二进制数,八位二进制数换算成三位十进制数最大为255,也就是说要输入两个000到255之间的数。
8位二进制加法器

《电子技术》课程设计报告题目学院(部)专业班级学生姓名学号月日至月日共周指导教师(签字)前言8位二进制加法器,它的功能主要是实现两个8位二进制数的相加,其结果的范围应该在00000000到111111110之间,即000到510之间。
加法器在实际应用中占据着十分重大的地位,从我们呱呱坠地起,到小学,到初中,到高中,到大学,到工作,等等。
我们能离开加法吗,不能!加法可以说是一切运算的基础,因此8位二进制加法器的设计是很有必要的。
那么我们如何设计一个8位二进制加法器呢?在实际应用中,我们通常输入的是十进制数,一个八位二进制数所对应的最大的十进制数是255,于是输入两个范围在000到255之间的数,首先通过二-十进制编码器将输入的三位十进制数的个位、十位、百位分别转换为8421BCD码,得到两个十二位字码,再通过加法器将它们相加,逢10进1,得到一个新的十二位字码,再用7447数字显示译码器将这个十二位字码还原到原来的三位十进制数。
最后输出的就是一个三位十进制数,其范围在000到510之间。
通过上述方法我们实现了八位二进制数的相加,从而达到了题目的要求。
为实现上述目的,我们需要查阅相关资料。
通过查阅,理解以及加以运用,我们认识到了收集资料的不易性,但同时也得到了不少收获,可以说是有苦有甜。
同时,虽然我们基本设计出了这个八位二进制加法器,但是不必可避免地会产生一些问题,比如说在连线上可能有更简便的途径,在元件的选用上可能还有其它更简便的方法,在控制上可能还不够精简,等等。
我们希望在以后的实践中能找出更好的方法,也希望能吸取这次设计中的不足,逐渐改善。
另外,在电子设计的过程中,与同组同学之间的合作配和是十分重要的。
我在此次设计中也充分认识到这一点的重要性,我相信这次的电子设计能够为我们将来的工作奠定一定的基础。
目录1.摘要 (1)2.关键字 (1)3.设计要求 (1)4.正文 (1)第一章.系统概述 (1)第二章.单元电路设计与分析 (4)①.控制电路 (4)②.编码电路 (5)③.加法电路 (6)④.译码电路 (10)⑤.输出电路 (11)第三章.系统综述、总体电路图 (11)第四章.结束语 (14)5.鸣谢 (15)6.元器件明细表,附图 (15)7.参考文献 (16)8.收获与体会,存在的问题等 (17)9.评语 (18)8位二进制加法器1.摘要:本次设计主要是如何实现8位二进制数的相加,即两个000到255之间的数相加,由于在实际中输入的往往是三位十进制数,因此,被加数和加数是两个三位十进制数,范围在000到255之间,通过六个二-十进制编码器(即74LS147)分别将加数和被加数的个位、十位、百位转换为8421BCD码,于是得到了两个12位字码,将它们接入三个四位超前进位并行加法器(即74LS283),其中原加数三位十进制数的个位转换得到的四位BCD码与被加数三位十进制数的个位转换得到的四位BCD码相加,串入到第一个74LS283的接线端,得到一个四位8421BCD码。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
前言本次课程设计介绍了一种基于数字电子技术的八位二进制加法器,实现了如下功能:1、八位二进制加数与被加数输入2、三位数码管显示3、三位十进制加数与被加数的输入该电路系统主要分为八位二进制加法器和三位十进制加法器两个系统:八位二进制加法器系统由二进制输入电路、二进制加法运算电路、二进制码到十进制8421BCD码的转换电路和三位数码管显示输出4个模块组成;三位十进制加法器系统由十进制的输入电路、三位十进制8421BCD码加法运算电路、四位数码管显示输出3个模块组成。
设计过程:首先由本小组三名同学:夏程鉴,邢晓理,王维在互联网以及图书馆查阅了相关资料与文献,并参考了清华大学出版社06年版《数字电子技术基础》等参考教材,进行了资料整理以及设计构思。
随后三名组员分工设计,由邢晓理同学设计输入系统电路,王维同学设计加法系统电路,夏程鉴同学设计二进制_十进制BCD码转换系统电路和输出系统。
最后将电路模块整合为一个整体电路系统,并应用Multisim软件进行了设计电路图的绘制和仿真检验。
目录前言 (1)摘要 (3)关键词 (3)设计要求 (3)一、设计方案简介1、方案一 (4)2、方案二 (5)3、方案三 (6)二、单元电路设计与分析1、八位二进制加数与被加数输入(邢晓理) (7)2、八位二进制数的加法运算(王维) (8)3、二进制数转换为十进制8421BCD码(夏程鉴) (9)4、八位二进制加法器总体电路图 (13)5、十进制加数与被加数输入(邢晓理) (14)6、三位BCD码加法器(王维) (15)7、三位十进制加法器总体电路图 (16)元件明细表 (17)结束语 (18)参考文献 (19)鸣谢 (19)评语 (20)数字电子技术课程设计——八位二进制加法器摘要:介绍一种基于数字电子技术的八位二进制加法器电路,该电路分为两个部分,可以分别进行八位二进制和三位十进制加数与被加数的输入,并将结果由数码管显示输出。
二进制加法器中将着重介绍九位二进制码向十进制8421BCD码转换的电路,三位十进制加法器将介绍到三位十进制加数与被加数的输入、三位十进制BCD码加法器和部分未实现的构想。
关键词:二进制加法器码制转换器十进制BCD码加法器数码管显示8421BCD编码器码制转换器:通过一系列电路,将二进制数每四位看成一个整体,即视之为十六进制数,然后通过码制转换器,转换为十进制BCD码,供数码管显示使用。
设计要求:1.八位二进制加数与被加数输入2.三位数码管显示3.三位十进制加数与被加数的输入第一章 系统概述一、设计方案简介: 方案一:设计要求数码管显示输出,由于数码管输入为十进制BCD 码,而加数与被加数输入为八位二进制和三位十进制数,所以考虑添加一个码制转换电路,先使加数与被加数转换为十进制BCD 码信号,然后两组加数与被加数公用一个BCD 码加法器进行运算,最后将十进制BCD 码和数信号输入到数码管,实现数码管显示输出。
出现的问题:设计过程中发现码制转换器电路比较繁琐,使用元件数目较多,而此方案需要在加数与被加数输入部分分别放置一组码制转换器,大大增加元件使用量,于是我们经过讨论,修改了此方案,得出方案二。
三位十进制BCD 码 加法运算八位二进制加数 与被加数输入八位二进制数到三位 十进制BCD 码转换三位十进制加数 与被加数输入数码管显示输出相较于上一方案,本方案将码制转换电路放置在八位二进制加法器输出处,即先进行两组八位二进制数的加法运算,再将输出的九位二进制和数信号转换为三位十进制BCD 码信号。
将三位十进制加数与被加数直接输入到BCD 码加法器进行运算,输出BCD 码和数信号。
两组和数信号共用一组数码管进行显示输出。
该方案相比上一方案,虽然增加了一个加法器,增加了元件的使用,但是由于八位二进制加法器输出端为九位,所以在向十进制BCD 码转换是大大减少了元件的使用,整体来说在元件节约上更加优秀。
出现的问题:在两组电路共用一组数码管显示输出时,用Multisim 软件进行仿真模拟运行出现了问题,初步认定是电路带载的问题,解决方法为在输出端添加开关,但是所需元件太多,而且在使用时操作太麻烦,所以我们经过讨论,修改了此方案,得出方案三。
八位二进制加数 与被加数输入八位二进制数 加法运算九位二进制数到三位十进制BCD 码的转换三位十进制加数 与被加数输入三位十进制BCD 码 加法运算数码管显示输出此方案设置了两组数码管,对八位二进制加法运算的结果与三位十进制BCD 码加法运算的结果分别进行显示输出。
经过Multisim 软件的运行检验成功。
最后确定采用此方案进行设计。
此方案将电路分为两个不相关的部分了,这样必然会增加元件的使用,但是由于相关知识的局限,这是我们能拿出的最好的方案了,下面本文将详细讲解该方案下各细节的设计思想、方法、电路图等。
八位二进制加数 与被加数输入八位二进制数 加法运算九位二进制数到三位十进制BCD 码的转换三位数码管显示输出四位数码管显示输出三位十进制加数 与被加数输入三位十进制BCD 码 加法运算第二章单元电路设计与分析一、八位二进制加数与被加数输入(邢晓理)在加数与被加数的输入方面,该电路使用的是单刀双向开关控制输入,一面接5V的VCC,一面接地,当开关打到上方,输入为高电平,该位输入即为“1”,反之为“0”,这样可以有效解决八位二进制加数与被加数的输入。
部分电路图如下:二、 八位二进制数的加法运算(王维)电路图:74LS283管脚图八位二进制加法器在二进制加运算方面,该电路使用的是两个74LS283D 芯片,该芯片是四位二进制超前进位并行加法器,A4、A3、A2、A1、B4、B3、B2、B1分别为它的八个输入端,SUM_4、SUM_3 SUM_2、SUM_1分别为它的四个输出端,C0为低位进位端,C4为高位进位端。
在该电路中,加数的八位数从高位依次从U36的A4、A3、A2、A1和U35的A4、A3、A2、A1输入,被加数的八位从高位依次从U36的B4、B3、B2、B1和U35的B4、B3、B2、B1输入。
低位的四位对应进行加运算,当结果大于四位时,向高电位进位,即从U35的C4端输出一信号至U36的C0端,加入到高位四位的加运算中。
结果输出依次为(从高位到低位)C4、SUM_4(U36)、SUM_3(U36)、SUM_2(U36)、SUM_1(U36)、SUM_4(U35)、SUM_3(U35)、SUM_2(U35)、SUM_1(U35)U3574LS283DSUM_410SUM_313SUM_14SUM_21C49B411A412B315A314B22A23B16A15C07U3674LS283DSUM_410SUM_313SUM_14SUM_21C49B411A412B315A314B22A23B16A15C07770三、二进制数转换为十进制8421BCD码(夏程鉴)该电路此处设计实现的是一个二进制到十进制8421BCD码的转换电路。
其设计思路分为两步:1、设计一个4bit的大于4即加3的电路,然后。
2、利用这个电路来设计二进制到十进制8421BCD码的转换电路验证最高3位,如果大于4则加3并左移一位,否则只左移一位;其算法思想为:1、验证最高3位,如果大于4则加3并左移一位,否则只左移一位;2、依次验证每一个BCD码,如果大于4则加3并左移一位,否则只左移一位;3、重复上面的操作直到进行到进行完最后一次左移后要所验证的BCD码为最后四位BCD码,则结束(一)4bit的大于4即加3电路真值表由表可以设计出大于4即加3电路,本电路再次使用的74LS283D芯片。
设计公式如下:Q=A4+A4̅̅̅A3(A1+A2)=A4+A3(A1+A2)S=(A4A3A2A1)B+(B4B3B2B1)D该设计的内部原理图:AND3电路图如下:A端为输入端,B端为输出端,当A4输入为“1”,或者A4为“0”,A3为“1”,A2、A1至少一个为“1”,则“25”端输出为“1”,则加数为“0011”。
否则,为“0000”。
(二)利用大于4即加3电路设计出二进制到十进制8421BCD码的转换电路算法演变表(因为是八位二进制加法运算结果的转换,而两个(11111111)B相加,结果为(100000000)B,所以在此,我们以(100000000)B为例)由上表不难看出,一共是两组转换,分别要用6个和3个大于4即加3电路,所有可得下图:五、十进制加数与被加数输入(邢晓理)在加数与被加数的输入方面,该电路参考的是8421BCD编码器,该设计是在8421BCD编码器的基础上,将“0”输入端和“C S”端取消。
当左端对应开关闭合时,在右端立即输出相应的8421BCD 码,而“0”则不需要输入。
出现的问题:设计电路时,最初的设计思想中包括用数码管显示输入信号,而当我们在添加数码显示管的时候出现了无法运行的问题,初步认定为超出电路带载能力,解决方法可以为添加一个放大电路,因为相对繁琐,设计时便放弃了。
部分电路图如下:A1 A2 A3 A4六、三位BCD码加法器(王维)该电路在此处设计时,参考的《数字电子技术基础》上描述的一位BCD码加法器,将前一位的进位端接入到下一为的加数的最低位,从而实现了加法的进位,以此类推,该电路可以实现多为BCD码的加法运算。
电路图如下:NAND3七、三位十进制加法器总体电路图表1 元件明细表第四章结束语本次设计方案经历了两次更改,最终定型,每一套方案起初都似乎很美好,但下手时都发现很麻烦,每次遇到问题后,我们都想选择突破问题,而不是改变方案。
在方案一次次的流产下,我们曾经一度无比的失落,第三个方案定型时,我们的干劲已经大大折扣了,还好最终第三个方案终止了我们的方案修改之路。
在具体设计的过程中,我遇到了更大的困难。
我不断地给自己提出新的问题,然后去论证、推翻,再接着提出新的问题。
在这个循环往复的过程中,我这篇稚嫩的设计日臻完善。
每一次改进我都收获良多,每一次修改后的成功我都能兴奋好长一段时间。
虽然我的设计作品不是很成熟,仍然还有很多不足之处,但我心里仍然有一种莫大的幸福感,因为我实实在在地走过了一个完整的设计所应该走的每一个过程,并且享受了每一个过程,更重要的是这个设计中我们加入了自己鲜活的思想。
在二进制加输出时,我们考虑它的位数可能是9位,并成功的利用74LS283设计出一组二进制到十进制8421BCD码的转换电路,在十进制加法器上,我们成功的做到了,从0到999的三位十进制加法器,这个突破了起初我们认为的256这个局限的问题。
虽然还有部分构想因为知识储备的问题,难以实现,但是对于我们在大学里的第一件设计作品来说,我们很满意,也很有成就感。