八位二进制加法器论文
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码。
8bit 符号数加法器
8bit符号数加法器一、概述8bit符号数加法器是一种用于实现两个8位二进制数相加的硬件或软件设备。
在数字电路和计算机编程中,这种加法器对于各种应用和计算任务非常有用。
二、设计原理符号数加法器基于二进制数的加法原理进行设计。
当两个二进制数相加时,我们需要考虑的是每一位上的数值相加的结果,以及最高位的进位问题。
对于负数,我们还需要考虑到符号位的问题。
为了处理这些情况,符号数加法器设计为可以识别输入数字的符号,并根据不同的符号采取不同的加法策略。
三、硬件实现8bit符号数加法器的硬件实现方法多种多样,具体实现方式取决于所使用的硬件平台和设计要求。
常见的实现方式包括微处理器、FPGA(现场可编程门阵列)以及其他数字逻辑设备。
微处理器通常具有专门的硬件模块或软件算法来实现加法运算,而FPGA则允许根据需要进行自定义设计。
在FPGA实现中,可以使用计数器或寄存器来存储输入数字的数值位,以及查找表来存储输入数字的符号位。
此外,可能需要使用额外的逻辑和寄存器来处理溢出和下溢情况。
四、软件实现8bit符号数加法器的软件实现方法也很多样化,具体实现方式取决于所使用的编程语言和设计要求。
常见的编程语言如Python、C++、Java等都可以方便地实现这个功能。
在软件实现中,可以通过编写程序代码来实现8bit符号数加法器的功能,并进行相应的测试和验证。
五、应用场景8bit符号数加法器可以应用于各种数字系统和计算机编程模型中,例如数字信号处理、嵌入式系统、游戏开发、人工智能等。
它提供了高效、可靠的数字运算功能,对于这些应用中的计算任务至关重要。
除此之外,它还可以用于数据校验、加密解密、科学计算等领域。
六、总结8bit符号数加法器是一种重要的数字电路组件,它能够将两个8位的二进制数相加,并对负数的符号进行特殊处理。
通过不同的硬件和软件实现方法,我们可以方便地设计和使用这个加法器。
它的应用范围广泛,为各种数字系统和计算任务提供了有力的支持。
设计8位加法器
EDA技术及应用实验报告姓名:XXX班级:XXX学号:XXXXX大学XX学院实验/上机报告一、实验目的设计一个8位加法器。
二、实验环境Quartus II 7.0 开发系统三、实验内容以一位二进制全加器为基本元件,用例化语句写出8位并行二进制全加器的顶层文件,并讨论此加法器的电路特性。
四、实验过程设计思想:8位二进制加法器可以由8个全加器通过级联的方式构成。
根据全加器级联的原理,用VHDL设计一个8位二进制数的加法器,可以先设计一个一位全加器,然后利用一位全加器采用元件例化的方式实现加法器。
实验步骤:1、设计一个全加器新建工程,建立源文件,输入VHDL设计文件,如下图所示:完成设计文件输入后,保存文件。
选用器件型号cyclone2,芯片EP2C8Q208C8编译后使用器件资源情况、引脚配置情况(硬件实验)所选引脚:语法检查:编译结果:对文件进行编译、仿真,以下是仿真结果,如图所示:由图可知仿真结果正确。
五、实验总结这次实验是我首次实践Quartus II 7.0 开发系统,在实验之前老师带我们深刻认识和学习了这个软件,同时也让我对Quartus II 7.0 开发系统有了初步的了解,本学期周三的第一次实验是设计一个8位二进制加法器,而8位二进制加法器可以由8个全加器通过级联的方式构成。
根据全加器原理,用VHDL设计一个8位二进制数的加法器,我们可以先设计一个一位全加器,然后再利用一位全加器来采用元件例化的方式从而实现加法器。
首先有了设计思路后,我先用VHDL设计了一个全加器full_adder.vhd,通过编译、仿真成功后,使用元件例化的方式,从而根据原理图设计了一个8位的加法器adder8.bdf,虽然在这个过程中出现少许问题,但是通过不断的调试,我还是得出了正确的仿真图形。
建立VHDL源文件以后,保存为add1.vhd文件名,编译、仿真,但在这个过程中出现少许问题,在仿真时给输入信号添加信号时不能确定到底应该怎么添加。
八位二进制加法计数器设计
八位二进制加法计数器设计目录一、设计目的和要求 (1)1.课程设计目的 (1)2.课程设计的基本要求 (1)3.课程设计类型 (1)二、仪器和设备 (1)三、设计过程 (1)1.设计内容和要求 (1)2.设计方法和开发步骤 (2)3.设计思路 (2)4.设计难点 (4)四、设计结果与分析 (4)1.思路问题以及测试结果失败分析 (4)2.程序简要说明 (5)五、心得体会 (11)六、参考文献 (12)一、设计目的和要求1.课程设计目的设计一个带进位的八位二进制加法计数器:要求在MAX+plusⅡ10.2软件的工作平台上用VHDL语言层次设计出一个带进位的八位二进制加法器,并通过编译及时序仿真检查设计结果。
2.课程设计的基本要求全加器与带进位输入8位加法器设计要求我们通过8位全加器的设计掌握层次化设计的方法,充分理解全加器的设计过程,掌握一位全加器的程序,熟悉MAX+plusⅡ10.2软件的文本和原理图输入方法设计简单组合电路。
课程设计过程中要求能实现同步和异步的八位二进制全加器的设计。
3.课程设计类型EDA课程设计二、仪器和设备PC机、MAX+plusⅡ10.2软件三、设计过程1.设计内容和要求方法一:1.原理图输入完成半加器和1位全加器的设计,并封装入库2.层次化设计,建立顶层文件,由8个1位全加器串联构成8位全加器3.每一层次均需进行编译、综合、适配及仿真方法二:1. 原理图输入完成一个四位全加器的设计2.层次化设计,建立顶层文件,由2个4位全加器串联构成8位全加器3.每一层次均需进行编译、综合、适配及仿真2.设计方法和开发步骤加法器是数字系统中的基本逻辑器件。
例如:为了节省资源,减法器和硬件乘法器都可由加法器来构成。
但宽位加法器的设计是很耗费资源的,因此在实际的设计和相关系统的开发中需要注意资源的利用率和进位速度等两方面的问题。
多位加法器的构成有两种方式:并行进位和串行进位方式。
并行进位加法器设有并行进位产生逻辑,运算速度快;串行进位方式是将全加器级联构成多位加法器。
8位加法器的设计
8位加法器的设计一个8位加法器的设计需要考虑到以下几个方面:输入端口、输出端口、运算器、控制电路和时序以及综合测试等。
输入端口是加法器的输入,我们需要为每个输入端口分配相应的位数。
对于一个8位加法器,我们需要8个输入端口,每个端口为1位。
可以使用开关或者其他输入设备来控制输入信号。
输出端口是加法器的输出,同样需要为每个输出端口分配相应的位数。
对于一个8位加法器,我们需要8个输出端口,每个端口为1位。
可以使用LED灯等输出设备来显示输出结果。
运算器是加法器的核心部件,负责实现加法运算。
我们需要使用逻辑门电路来实现8位加法。
常见的实现方式是使用二进制加法器来实现,其中包括全加器、半加器等。
控制电路和时序是为了保证加法器的稳定运行。
可以采用时钟信号来对加法器的运算进行控制,时钟信号可以通过一个时钟源或者其他方式来产生。
综合测试是为了确保加法器的正确性。
我们需要设计一个测试电路,输入各种可能的输入信号,并检查输出结果是否符合预期。
以下是一个8位加法器的设计实例:1.输入端口设计:设计8个输入端口,每个端口为1位。
2.输出端口设计:设计一个8位输出端口,用于显示加法结果。
3.运算器设计:使用全加器和半加器组成8位二进制加法器。
首先将每一位的输入与进位相加,得到部分和和进位,然后再将部分和与下一位的输入和进位再相加,依次类推,最后得到8位加法结果。
4.控制电路和时序设计:使用时钟信号来控制加法器的运算。
可以通过一个时钟源或者其他方式来产生时钟信号。
5.综合测试设计:设计一个测试电路,输入各种可能的输入信号,并检查输出结果是否符合预期。
可以使用计算机软件来进行模拟测试。
在设计过程中,需要充分考虑各个部件之间的连接和信息传递,确保输入信号能够正确地经过运算器进行运算,并将运算结果正确地传递到输出端口。
总之,一个8位加法器的设计需要考虑到输入端口、输出端口、运算器、控制电路和时序以及综合测试等方面。
在具体设计过程中,还需要充分考虑其稳定性、可靠性和正确性等因素。
本科论文设计-同步八进制加法计数器版图设计与实现
同步八进制加法计数器版图设计与实现摘要21世纪是电子信息产品高速发展的时代。
如计算机、手机等电子信息产业的高速发展推动了集成电路产业的快速发展。
集成电路电子器件也越来越引起人们越的关注。
如手机、电脑中的大规模集成电路也在日常生活中有着广泛的应用。
本文首先介绍同步八进制加法器原理图设计,并采用传统的时序逻辑电路的设计方法,列出状态转换表、化简状态方程、由状态方程求出驱动方程、再由驱动方程画出时序逻辑电路等。
并介绍基于JK触发器来设计八进制加法计数器的设计和实现方法,并通过HSPICE工具进行了仿真。
其次介绍Linux境下CALIBRE工具的使用介绍,并重介绍同步八进制加法计数器版图设计,分析同步八进制加法计数器的组成结构及其工作原理。
通过电路图绘制出它的版图,并对它的版图与电路图进行了一致性检测,进一步验证了设计的正确性。
本设计对最终设计出的版图使用CALIBRE验证工具进行LVS、DRC及PEX等全面的验证,并顺利通过验证完成最终八进制加法计数器版图设计。
关键字:版图设计,计数器,DRC,LVSSynchronization Octal Up CounterLayout designand implementationAbstractThe 20th century is the era of rapid development of the IC, he blooming development of Computer and phone Science has led to the growth of integrated circuit (IC) devices. IC electronic devices also will be attracted more and more attention.Such as mobile phones, computers,most of the V ery Large Scale IC applications.This paper first introduces the synchronization octal adder schematic design, the traditional design methods and the use of sequential logic circuits, lists state transition tables, simplifying the equation of state, driven by a state equation, equations, and then draw the equation driven by sequential logic circuits.And describes the design and implementation of the design based on JK flip-flop octal addition to the counter, and simulated by HSPICE tools. Secondly, it introduces the Linux environment using CALIBRE tools introduced andre-introduced synchronous counter octal addition layout design, analysis synchronous counter octal addition the composition structure and working principle. Schematic drawing out through its territory, and its layout and schematics were consistency checking, further validate the correctness of the design.In the end, this design carried LVS and DRC and PEX of verification to the landscape used CALIBRE verification tool that finally designs and passed a verification smoothly.And V alidated successfully complete the final addition octal counter layou.Key words: Layout design, Counter, DRC,LVS目录摘要 (I)ABSTRACT (II)第1章绪论 (1)1.1课题研究背景与意义 (1)1.1.1 我国集成电路发展状况 (1)1.1.2 课题分析 (2)第2章关键技术介绍 (3)2.1版图设计流程: (3)2.2设计规则 (3)2.3版图的整体布局 (4)2.4HSPICE仿真软件介绍 (4)2.4.1 HSPICE的输入与输出文件 (4)2.4.2 HSPICE 仿真工具菜单项的选项卡功能及快捷键介绍 (5)第3章同步八进制加法计数器原理图设计及仿真 (7)3.1同步八进制加法计数器的原理图设计 (7)3.2晶体管级D触发器原理图 (9)3.4晶体管级同步八进制加法计数器原理图 (11)3.5同步八进制加法计数器及触发器仿真 (12)3.5.1 D触发器仿真波形图 (12)3.5.2 JK触发器仿真波形图 (12)3.5.3 同步八进制加法计数器仿真波形图 (13)第4章CALIBRE 工具的使用及版图绘制 (14)4.1CALIBRE软件介绍 (14)4.2CALIBRE DRC介绍 (14)4.3CALIBRE LVS介绍 (15)4.4CALIBRE工具的使用 (16)4.4.1 创建Layout (16)4.4.2 层选择窗的设置 (17)4.4.3 版图编辑窗的设置 (17)4.4.4 版图编辑窗的设置 (18)4.5同步八进制加法计数器版图及单元模块版图绘制 (19)4.5.1 版图设计的基本规则 (19)4.5.2 D触发器版图设计 (20)4.5.3 JK触发器版图设计 (21)4.5.4 同步八进制加法计数器版图设计 (21)第5章DRC验证和L VS验证及后仿真 (22)5.1DRC实例分析 (22)5.2L VS(版图和电路图一致性比较) (25)5.3寄生参数抽取PEX及HSPICE后仿真 (28)5.3.1 寄生参数抽取 (28)5.3.2 HSPICE 后仿真 (28)第7章结论 (31)参考文献 (32)致谢 (33)附录A (34)附录B (35)第1章绪论1.1 课题研究背景与意义人类社会的发展已经进入了信息时代,各种信息技术构成了信息时代的基础。
两个八位二进制补码相加运算
两个八位二进制补码相加运算在计算机科学中,二进制补码是一种表示有符号整数的方法。
它使用固定位数的二进制数来表示负数,使得负数的加法运算可以与正数的加法运算一样进行。
下面,我将以两个八位二进制补码相加运算为题,来描述一段关于二进制补码运算的故事。
故事开始于一个晴朗的早晨,小明和小红正在计算机实验室里进行二进制补码相加运算的实验。
他们希望通过这个实验来加深对二进制补码的理解,并且验证二进制补码相加运算的正确性。
小明手上拿着两个八位二进制补码,分别是01010101和11110000。
他首先将这两个补码放在了计算机实验室的桌子上,然后拿出了一张纸和一支笔,准备详细记录每一步的计算过程。
小红则站在小明的旁边,紧紧盯着桌子上的二进制补码。
她轻轻地说道:“小明,我们可以从最低位开始相加,然后逐位向左进行进位操作。
这样,我们就可以模拟计算机对二进制补码进行相加的过程了。
”小明点了点头,认同了小红的建议。
他拿起笔,在纸上写下了两个二进制补码的初始状态。
然后,他们开始从最低位开始相加。
小明首先计算了两个二进制补码中的最低位相加的结果,得到了一个二进制数。
然后,他将这个结果写在了纸上,并在下一行继续进行相加操作。
小红看到小明的计算结果后,迅速将这个结果转换成了十进制数。
她发现,这个结果是5。
小红兴奋地说道:“小明,我们的计算结果是正确的!最低位相加的结果是5,与我们手动计算得到的结果一致。
”小明也感到非常高兴,他们继续往上一位进行相加运算。
他们不断重复这个过程,直到计算完了所有的位数。
小明和小红得到了最终的计算结果。
他们将这个结果写在了纸上,并相互对视,露出了满意的笑容。
通过这个实验,小明和小红深刻理解了二进制补码相加运算的过程。
他们通过手动计算验证了计算机对二进制补码进行相加的正确性。
他们不仅增加了对二进制补码的了解,也加深了对计算机内部运算过程的认识。
小明和小红收拾好实验室,对着桌子上的二进制补码,深深地鞠了一躬,表示对这段实验的敬意。
8位二进制数加法
《8 位二进制数加法》
小朋友们,今天咱们来一起了解一个有点神奇的东西,叫做8 位二进制数加法。
你们可能会想,这是个啥呀?其实呀,它就像是一个特别的数学游戏。
咱们平常做加法,比如1+1=2,这很简单对吧。
那在二进制的世界里呢,也有加法。
先来说说什么是二进制。
咱们平常数数是0、1、2、3、4……在二进制里,就只有0 和 1 这两个数字。
那8 位二进制数呢,就是一共有8 个位置,每个位置上要么是0,要么是1。
比如说00000001 就是一个8 位二进制数。
咱们来做个加法。
比如00000001 加上00000001 。
从右边开始加,1+1 等于10,这里的10 可不是咱们平常说的十哦,在二进制里,就要往左边进位,右边写0 ,左边进位变成00000010 。
再举个例子,00001010 加上00000101 。
同样从右边开始,0 + 1 = 1 , 1 + 0 = 1 ,1 + 1 = 10 ,进位,继续这样加下去,最后就得到结果啦。
二进制数加法在计算机的世界里可重要啦。
计算机可不认识咱们平常的数字,它就靠二进制来工作。
就好像计算机是一个特别聪明的小机器人,它只能看懂0 和 1 ,通过这些
8 位二进制数加法,它就能帮我们做很多很多事情。
比如说,我们在手机上玩游戏、听音乐,背后都有计算机在快速地做着这样的加法呢。
小朋友们,虽然8 位二进制数加法有点复杂,但只要我们多练习,多想想,就能慢慢明白啦。
好啦,关于8 位二进制数加法就跟大家说到这儿,希望你们能越来越聪明,学会更多有趣的知识!。
8bit 符号数加法器
8bit 符号数加法器8位符号数加法器是一种用于将两个8位二进制数相加的计算器。
在电子计算机系统中,加法运算是最基本和最常用的运算之一。
为了实现高速和高性能的加法运算,硬件电路中使用了8位符号数加法器,该加法器可以在毫秒级别内完成加法运算。
8位符号数加法器由多个逻辑门组成,其中最基本的是逻辑门AND、OR和XOR。
逻辑门AND的作用是将两个输入信号相乘,只有当两个输入信号都为1时,输出信号才为1;逻辑门OR的作用是将两个输入信号相加,只要有一个输入信号为1,输出信号就为1;而逻辑门XOR的作用是对两个输入信号进行异或运算,只有当两个输入信号不同时,输出信号才为1。
在8位符号数加法器中,有两个8位输入端口和一个Carry输入端口,用于接收传入的两个8位数和Carry进位。
还有两个8位输出端口,分别用于输出结果数和Carry进位。
当两个8位输入数相加时,如果两个数的对应位相加结果为1,那么输出结果数的对应位就为1;如果两个数的对应位相加结果为0,那么输出结果数的对应位就为0。
Carry进位指的是当两个位相加时,产生的进位信号。
如果两个位相加结果大于等于2,那么会产生一个进位信号。
例如,当两个二进制数10和01相加时,结果为11,进位信号为1,表示有一个进位。
而当两个二进制数10和11相加时,结果为101,进位信号为0,表示没有进位。
Carry进位信号可以在下一次相加时参与进位运算。
在8位符号数加法器中,还可以使用Overflow溢出标志位来表示加法运算是否溢出。
溢出指的是当两个数相加结果超过8位二进制表示范围时,即生成了一个9位二进制数。
在8位符号数加法器中,当结果数的最高位和Carry进位相等时,表示没有溢出;当结果数的最高位和Carry进位不相等时,表示溢出。
实现8位符号数加法器的关键在于设计逻辑电路。
以下是一个用于实现8位符号数加法器的伪代码:```input: A[7:0], B[7:0], C_inoutput: S[7:0], C_out, Overflowfor i = 0 to 7:sum[i] = A[i] XOR B[i] XOR C_inC_in = (A[i] AND B[i]) OR (C_in AND (A[i] XOR B[i]))S[7:0] = sum[7:0]C_out = C_inOverflow = (A[7] AND B[7] AND (S[7] XOR C_out)) OR ((A[7] XOR B[7]) AND (S[7] AND C_out))```该伪代码实现了8位符号数加法器的逻辑运算。
EDA技术》实验报告8位二进制加法器设计
《EDA技术》实验报告实验名称: 8位二进制全加器设计
姓名:
班级:
学号:
实验日期:2010-3-29
指导教师:
一、实验设计要求
以一位二进制全加器为基本元件,用例化语句写出8位并行二进制全加器的顶层文件,并讨论此加法器的电路特性。
二、设计原理
电路结构图或原理图
电路功能描述
定义了8位二进制全加器顶层设计元件端口信号,输入端口:AIN, BIN,是八个二进制数,数据类型被定义为STD_LOGIC_VECTOR。
CIN是输入的进位,数据类型IN STD_LOGIC;输出端口:SUM为和,数据类型IN STD_LOGIC COUT 为输出的进位。
三、实验程序
程序1:一位二进制全加器设计顶层描述
程序2:8位并行二进制全加器顶层文件
四、编译及仿真结果
选用器件型号cyclone
编译后使用器件资源情况、引脚配置情况(硬件实验)
仿真结果显示:
该设计是成功的。
输入的进位也要加上去。
0---255 全加器的COUNT 没有进位,而当加到256,COUNT=1,SUM输出0.
五、总结
.1 编译不通过,检查后发现在建立工程时,同一工程的所有文件都必须放在同一文件夹中,而这一步没做。
2 程序中没有将文件名与实体名保持一致出错。
输入半加器的VHDL程序保存文件,将输入的VHDL语言程序保存为h _adder.vhd.
3不知道如何将输入/输出引脚号都添加到矢量波形编辑窗口中。
解决办法:view—utility window—noder finder 将需要引脚拖拽。
加法器课程设计论文正文
1 设计任务描述1.2.1设计目的通过课程设计使学生更进一步掌握微机原理及应用课程的有关知识,提高应用微机解决问题的能力,加深对微机应用的理解。
通过查阅资料,结合所学知识进行软、硬件的设计,使学生初步掌握应用微机解决问题的步骤及方法。
为以后学生结合专业从事微机应用设计奠定基础。
1.2.2 设计的原始资料及依据查阅可编程并行芯片8255、键盘工作原理等其他相关资料。
用简单的输入输出端口等硬件,输入数据、处理数据和输出数据。
1.2.3 设计的主要内容及要求内容:利用微机原理实验箱,进行数据处理。
要求:1)从键盘输入两个二/四位BCD数,求其和,保存到内存。
2)用LED指示灯显示结果。
1.2.4 设计发挥1)延时。
2)显示百位进位。
、2设计思路1.首先定义数据段和堆栈段。
2.其次对8255进行初始化,使8255工作在方式0,即基本输入输出方式;并且设置8255的A 端口和B端口为输出状态,C端口为输入状态。
3.设计键盘扫描子程序,首先键盘清零,然后根据行扫描法确定哪一按键被按下,即分别确定输入的两个二位BCD数。
4.设计延时子程序,使输入的数据及计算结果有一段停留时间。
5.设计主程序,分别调用键盘扫描子程序和延时子程序,以输入两个二位BCD加数,在CPU中计算求和,再经8255输出到LED显示器,用九盏灯显示结果,第一盏由8255的A端口高四位输出,表示十位向百位的进位,即只能进行一百以内的加法,接下来的八盏由8255的B端口输出,前四位为BCD码显示的十位,最后四位显示个位。
6.程序结束,清屏返回。
3.1 8255与键盘接口程序流程图图(3.1)主程序3.2 键盘扫描子程序图(3.2)键盘扫描子程序4 硬件接线图设置8255的工作方式为0,即基本输入输出方式,并将键盘中的各行X1-X4分别与A口的PA0-PA3相连,A口为输出;将各列Y1-Y4分别与C口的PC0-PC3相连,C口为输入。
输出结果时,由B口输出计算结果的十位和个位,并驱动LED灯显示;由A口高四位输出十位向百位的进位,并驱动LED灯显示。
实验三 八位并行二进制全加器的设计
实验三八位并行二进制全加器设计1.全加器程序:ibrary ieee;use ieee.std_logic_1164.all;entity cnt4 isport(ain,bin,cin :in std_logic;cout,sum:out std_logic);end entity cnt4;architecture one of cnt4 isbegincout<=((ain xor bin) and cin) or (ain and bin);sum<=(ain xor bin) xor cin ;end architecture one;2.八位并行二进制全加器程序:library ieee;use ieee.std_logic_1164.all;entity fa1 isport(ain,bin,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q:in std_logic;aout,bout,jout,dout,eout,fout,gout,hout,kout:out std_logic); end entity fa1;architecture one of fa1 iscomponent cnt4port(a,b,cin :in std_logic;cout,sum:out std_logic);end component;signal r,s,t,u,v,w,x:std_logic;beginu1:cnt4 port map (a=>ain,b=>bin,cin=>c,sum=>aout,cout=>r); u2:cnt4 port map (a=>d,b=>e,cin=>r,sum=>bout,cout=>s);u3:cnt4 port map (a=>f,b=>g,cin=>s,sum=>jout,cout=>t);u4:cnt4 port map (a=>h,b=>i,cin=>t,sum=>dout,cout=>u);u5:cnt4 port map (a=>j,b=>k,cin=>u,sum=>eout,cout=>v);u6:cnt4 port map (a=>l,b=>m,cin=>v,sum=>fout,cout=>w);u7:cnt4 port map (a=>n,b=>o,cin=>w,sum=>gout,cout=>x);u8:cnt4 port map (a=>p,b=>q,cin=>x,sum=>hout,cout=>kout); end architecture one;三.仿真图形及分析图形分析:1、全加器实现三位数的相加器,其中一位来自低位的进位;2、八位并行二进制全加器使用七个例化语句完成。
- 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这个局限的问题。
虽然还有部分构想因为知识储备的问题,难以实现,但是对于我们在大学里的第一件设计作品来说,我们很满意,也很有成就感。