EDA课程设计八位二进制全加器
8位全加器设计
实验报告
系别电子信息工程系课程名称《EDA技术及其应用》实验
班级1班实验名称8位全加器设计
姓名×××实验时间××××年××月××日
学号××××××××指导教师×××
报告内容
一、实验目的和任务
学习使用QuartusⅡ9.0软件,熟悉EDA设计流程。
学习用图形输入法设计八位全加器,并对其进行分析和测试。
二、实验原理介绍
学习用四位全加器设计八位全加器,第1片74283(四位全加器)的进位输出信号应该和第2片74283的进位输入信号相连。
三、设计代码、仿真波形及分析
任务1:学习使用QuartusⅡ软件,熟悉EDA设计流程(主要为软件设计部分)。
步骤:
编辑输入图形、编译设计文件、仿真设计文件
仿真波形如下图所示:
任务2:硬件验证8位全加器的功能。
步骤:
引脚锁定、编译、下载、硬件测试
可选实验电路模式1;
键2、键1和键3、4分别负责输入两个加数A和B;且能在数码管1、2和3、4上显示;两个加数的和在数码管5、6显示;发光管D1显示进位输出。
编译下载后进行硬件测试;
实验室演示
四、实验结论与心得。
数字电子技术基础八位二进制加法器课程设计报告
方案二:
相较于上一方案,本方案将码转换器放置在八位二进制加法器输出处,即先进行两组八位二进制数的加法运算,再将输出的九位二进制和数信号转换为三位十进制BCD码信号。将三位十进制加数与被加数直接输入到BCD码加法器进行运算,输出BCD码和数信号。两组和数信号共用一组数码管进行显示输出。
该方案相比上一方案,虽然增加了一个加法器,增加了元件的使用,但是由于八位二进制加法器输出端为九位,所以在向十进制BCD码转换是大大减少了元件的使用,整体来说在元件节约上更加优秀。
出现的问题:在两组电路共用一组数码管显示输出时,用Multisim软件进行仿真模拟运行码转换器后面部分出现了问题,预想解决方法为在输出端输入转换开关,但是所需元件太多,而且在使用时操作太麻烦,所以我们经过讨论,修改了此方案,得出方案三。
一位8421BCD码加法器电路图
1.3 三位8421BCD码加法器电路
三位8421BCD码加法器是基于一位8421BCD码的加法器的原理上连接的,十进制数的个位相加大于9,则8421BCD码的加法器就向下一级产生一个进位,输出为1,如没有输出为0,这样我们就可以通过三位串行进位加法器进行加法计算。
三位8421BCD码加法器电路图
综合各个方面的,我们可以选择超前进位加法器来设计电路。
3、系统框图
4、工作原理
当输入十进制数的时候,8421BCD码编码器先开始工作,编码器先将十进制数转换成四位二进制数,输出的四位二进制数直接到达8421BCD码加法器的输入端,我们可以使用
8位加法器设计
目录第1章概述 (1)第2章设计总体思路 (3)第3章单元电路设计 (5)3.1 八位二进制加法器 (5)3.2 译码显示电路 (8)第4章波形仿真结果分析 (11)第5章安装调试步骤 (12)第6章故障分析与改进 (13)第7章心得体会 (14)参考文献 (15)附录:整体电路图 (16)第1章概述随着EDA技术发展和应用领域的扩大与深入,EDA技术在电子信息、通讯、自动控制及计算机应用等领域的重要性突出。
随着技术市场与人才市场对EDA的需求不断提高,产品的市场需求和技术市场的要求也必然会反映到教学领域和科研领域中来。
因此学好EDA技术对我们有很大的益处。
EDA是电子设计自动化(Electronic Design Automation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。
EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。
利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程的计算机上自动处理完成。
VHDL系统优势:(1)与其他的硬件描述语言相比,VHDL具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。
强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。
(2)VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。
(3)VHDL语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。
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程序进行编译,然后对其进行仿真,初步验证程序设计的正确性。
EDA技术实用教程 设计8位全加器
END IF;
END PROCESS;
END BHV;
4. h_adder
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY h_adder IS
PORT ( a , b : IN STD_LOGIC ;
co, so : OUT STD_LOGIC );
component or2a
PORT ( a , b : IN STD_LOGIC ;
c : OUT STDຫໍສະໝຸດ LOGIC );END component ;
component CNT4
PORT ( CLK : IN BIT ;
Q : BUFFER INTEGER RANGE 7 DOWNTO 0);
END component ;
signal d,e,f : std_logic;
begin
u1: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:or2aport map (a=>d, b=>f, c=>cout);
ENTITY E_adder IS
PORT ( CLK1,LOAD1: IN STD_LOGIC ;
A :IN STD_LOGIC_VECTOR(7 DOWNTO 0):="00000000";
B :IN STD_LOGIC_VECTOR(7 DOWNTO 0);
COUNTOUT,E : OUT STD_LOGIC );
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. 学生理解8位全加器的基本概念,掌握全加器的逻辑结构和工作原理;2. 学生掌握8位全加器的电路图绘制方法,能分析并解释全加器中各个部分的作用;3. 学生了解8位全加器在计算机运算中的应用,理解其重要性。
技能目标:1. 学生能够运用所学知识,独立完成8位全加器的电路图设计;2. 学生能够运用逻辑门电路,搭建8位全加器电路,并进行功能验证;3. 学生能够通过实际操作,提高解决问题的能力和团队协作能力。
情感态度价值观目标:1. 学生培养对电子技术课程的兴趣,激发学习热情;2. 学生在学习过程中,树立正确的科学态度,注重实践,勇于创新;3. 学生通过团队合作,培养沟通与协作能力,增强集体荣誉感。
课程性质分析:本课程为电子技术课程的一部分,重点在于让学生掌握8位全加器的原理和应用,培养实际操作能力。
学生特点分析:八年级学生具有一定的电子技术基础,对电路有一定的了解,但可能对全加器的理解尚浅,需要通过具体实例和操作来加深理解。
教学要求分析:本课程要求教师以理论与实践相结合的方式进行教学,注重培养学生的实际操作能力和团队协作能力。
在教学过程中,关注学生的个体差异,给予个性化指导,确保课程目标的实现。
通过本课程的学习,学生能够达到上述具体的学习成果。
二、教学内容1. 引言:介绍全加器在数字电路中的重要性,回顾一位全加器的基本原理,引出8位全加器的研究意义。
2. 理论知识:a. 8位全加器的定义和功能;b. 8位全加器的逻辑结构,包括加法器、进位发生器和进位传递部分;c. 8位全加器的真值表和逻辑表达式。
3. 实践操作:a. 8位全加器电路图的绘制;b. 利用集成电路芯片搭建8位全加器电路;c. 电路功能测试及故障排查。
4. 应用拓展:a. 8位全加器在计算机运算中的应用案例;b. 探讨8位全加器与其他数字电路模块的组合应用。
教学大纲安排:第一课时:引言及理论知识(1、2a)第二课时:理论知识(2b、2c)第三课时:实践操作(3a、3b)第四课时:实践操作(3c)第五课时:应用拓展(4a、4b)教材章节关联:本教学内容与教材中“第十章 数字电路及其应用”相关,涉及全加器部分的内容,与教材中的理论知识和实践操作相结合,确保学生能够系统地学习和掌握8位全加器的相关知识。
8位二进制全加器设计实验报告
EDA技术8位二进制全加器设计实验报告班级:学号:姓名:时间:2013-12-06目录方法一:自己写程序 (2)一、设计原理 (2)二、实验程序 (3)程序1:半加器描述 (3)程序2:一位二进制全加器设计顶层描述 (3)程序3:D触发器描述 (4)程序4:8位二进制加法器顶层描述 (4)三、编译及仿真结果 (9)方法二:使用LPM创立元件 (10)一、打开MegaWizard Plug-In Manager (10)二、按照提示,一步步完成全加器/全减器的创建 (10)三、创建成功,生成CMP文件 (10)四、调用CMP文件,例化元件,生成可以使用的元件。
(10)实验总结: (12)摘要我在本实验中用顶层设计思想,用半加器、全加器、D触发器例化出八位全加器,完成了八路加法器、寄存器/锁存器的设计,上升沿触发,使用了6个数码管,分别用于显示输入A,输入B和输出,输出结果也用红灯进行了显示,溢出用绿灯表示。
输入A用0~7号开关完成,输入B用10~17号开关完成,进位C 用8号开关完成。
实验要求完成八路全加器的设计,十六进制输出,上升沿触发,低电平复位,输入输出用数码管显示,用红灯显示输出,绿灯显示溢出。
方法一:自己写程序一、设计原理先写一个半加器,然后用两个半加器例化出一个全加器,再用八个全加器例化出一个八位全加器。
原理如图。
关于上升沿触发,使用D触发器和八位全加器进行例化,D触发器接同一个时钟。
最终完成上升沿触发的八位全加器的设计。
二、实验程序程序1:半加器描述LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY h_adder ISPORT (A, B : IN STD_LOGIC;CO, SO : OUT STD_LOGIC );END ENTITY h_adder;ARCHITECTURE FH1 OF h_adder ISBEGINSO <= NOT (A XOR (NOT B));CO <= A AND B;END ARCHITECTURE FH1;程序2:一位二进制全加器设计顶层描述LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY f_adder ISPORT (AIN, BIN, CIN : IN STD_LOGIC;COUT, SUM : OUT STD_LOGIC );END ENTITY f_adder;ARCHITECTURE FD1 OF f_adder ISCOMPONENT h_adder ISPORT (A, B : IN STD_LOGIC;CO, SO : OUT STD_LOGIC );END COMPONENT;SIGNAL D, E, F : STD_LOGIC;3BEGINU1 : h_adder PORT MAP(A => AIN, B => BIN, CO => D, SO => E);U2 : h_adder PORT MAP(A => E, B => CIN, CO => F, SO => SUM);COUT <= D OR F;END ARCHITECTURE FD1;程序3:D触发器描述LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DEF1 ISPORT (CLK : IN STD_LOGIC;D : IN STD_LOGIC;Q : OUT STD_LOGIC);END;ARCHITECTURE bhv OF DEF1 ISSIGNAL Q1 :STD_LOGIC;BEGINPROCESS (CLK)BEGINIF CLK'EVENT AND CLK = '1'THEN Q1<=D;END IF;Q<=Q1;END PROCESS;END bhv;程序4:8位二进制加法器顶层描述LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY f_adder8 ISPORT ( AIN, BIN : IN STD_LOGIC_VECTOR(7 DOWNTO 0);ASEGIN1,ASEGIN2, BSEGIN1,BSEGIN2 : BUFFER STD_LOGIC_VECTOR(6 DOWNTO 0);CIN : IN STD_LOGIC;CLK : IN STD_LOGIC;SUM : BUFFER STD_LOGIC_VECTOR(7 DOWNTO 0);SEG1 : BUFFER STD_LOGIC_VECTOR(6 DOWNTO 0);SEG2 : BUFFER STD_LOGIC_VECTOR(6 DOWNTO 0);COUT : OUT STD_LOGIC );END f_adder8;ARCHITECTURE ONE OF f_adder8 ISCOMPONENT f_adder ISPORT (AIN, BIN, CIN : IN STD_LOGIC;COUT, SUM : OUT STD_LOGIC );END COMPONENT;COMPONENT DEF1 ISPORT (CLK : IN STD_LOGIC;D : IN STD_LOGIC;Q : OUT STD_LOGIC);END COMPONENT;SIGNAL C,C1, C2, C3,C4,C5,C6,C7: STD_LOGIC;SIGNAL a : STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL b : STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL s : STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL ss : STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL sss : STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINU1 : f_adder PORT MAP(AIN => a(0), BIN => b(0), CIN => CIN, SUM => s(0),COUT => C1);U2 : f_adder PORT MAP(AIN => a(1), BIN => b(1), CIN => C1, SUM => s(1),COUT => C2);U3 : f_adder PORT MAP(AIN => a(2), BIN => b(2), CIN => C2, SUM => s(2),COUT => C3);U4 : f_adder PORT MAP(AIN => a(3), BIN => b(3), CIN => C3, SUM => s(3),COUT => C4);U5 : f_adder PORT MAP(AIN => a(4), BIN => b(4), CIN => C4, SUM => s(4),COUT => C5);U6 : f_adder PORT MAP(AIN => a(5), BIN => b(5), CIN => C5, SUM => s(5),COUT => C6);U7 : f_adder PORT MAP(AIN => a(6), BIN => b(6), CIN => C6, SUM => s(6),COUT => C7);U8 : f_adder PORT MAP(AIN => a(7), BIN => b(7), CIN => C7, SUM => s(7),COUT => C);U9 : DEF1 PORT MAP(Q=>a(0),D=>AIN(0),CLK=>CLK);U10 : DEF1 PORT MAP(Q=>a(1),D=>AIN(1),CLK=>CLK);U11 : DEF1 PORT MAP(Q=>a(2),D=>AIN(2),CLK=>CLK);U12 : DEF1 PORT MAP(Q=>a(3),D=>AIN(3),CLK=>CLK);U13 : DEF1 PORT MAP(Q=>a(4),D=>AIN(4),CLK=>CLK);U14 : DEF1 PORT MAP(Q=>a(5),D=>AIN(5),CLK=>CLK);U15 : DEF1 PORT MAP(Q=>a(6),D=>AIN(6),CLK=>CLK);U16 : DEF1 PORT MAP(Q=>a(7),D=>AIN(7),CLK=>CLK);5U17 : DEF1 PORT MAP(Q=>b(0),D=>BIN(0),CLK=>CLK); U18 : DEF1 PORT MAP(Q=>b(1),D=>BIN(1),CLK=>CLK); U19 : DEF1 PORT MAP(Q=>b(2),D=>BIN(2),CLK=>CLK); U20 : DEF1 PORT MAP(Q=>b(3),D=>BIN(3),CLK=>CLK); U21 : DEF1 PORT MAP(Q=>b(4),D=>BIN(4),CLK=>CLK); U22 : DEF1 PORT MAP(Q=>b(5),D=>BIN(5),CLK=>CLK); U23 : DEF1 PORT MAP(Q=>b(6),D=>BIN(6),CLK=>CLK); U24 : DEF1 PORT MAP(Q=>b(7),D=>BIN(7),CLK=>CLK);U25 : DEF1 PORT MAP(Q=>SUM(0),D=>s(0),CLK=>CLK); U26 : DEF1 PORT MAP(Q=>SUM(1),D=>s(1),CLK=>CLK); U27 : DEF1 PORT MAP(Q=>SUM(2),D=>s(2),CLK=>CLK); U28 : DEF1 PORT MAP(Q=>SUM(3),D=>s(3),CLK=>CLK); U29 : DEF1 PORT MAP(Q=>SUM(4),D=>s(4),CLK=>CLK); U30 : DEF1 PORT MAP(Q=>SUM(5),D=>s(5),CLK=>CLK); U31 : DEF1 PORT MAP(Q=>SUM(6),D=>s(6),CLK=>CLK); U32 : DEF1 PORT MAP(Q=>SUM(7),D=>s(7),CLK=>CLK);U33 : DEF1 PORT MAP(Q=>COUT,D=>C,CLK=>CLK);PROCESS(CLK,AIN,BIN)VARIABLE sSeg1 : STD_LOGIC_VECTOR(7 DOWNTO 0);VARIABLE sSeg2 : STD_LOGIC_VECTOR(7 DOWNTO 0);BEGINss(3 DOWNTO 0)<=SUM(3 DOWNTO 0);sss(3 DOWNTO 0)<=SUM(7 DOWNTO 4);sSeg1(7 DOWNTO 0):= AIN(7 DOWNTO 0);sSeg2(7 DOWNTO 0):= BIN(7 DOWNTO 0);CASE ss ISWHEN "0000" => SEG1 <= "";--0WHEN "0001" => SEG1 <= "";WHEN "0010" => SEG1 <="";WHEN "0011" => SEG1 <="";WHEN "0100" => SEG1 <="";WHEN "0101" => SEG1 <="";WHEN "0110" => SEG1 <="";WHEN "0111" => SEG1 <="";WHEN "1000" => SEG1 <="";WHEN "1001" => SEG1 <=""; --9WHEN "1010" => SEG1 <="";WHEN "1011" => SEG1 <="";WHEN "1100" => SEG1 <="";WHEN "1101" => SEG1 <="";WHEN "1110" => SEG1 <="";WHEN "1111" => SEG1 <="";WHEN OTHERS =>NULL;END CASE;CASE sss ISWHEN "0000" => SEG2 <= "";--0WHEN "0001" => SEG2 <= "";WHEN "0010" => SEG2 <="";WHEN "0011" => SEG2 <="";WHEN "0100" => SEG2 <="";WHEN "0101" => SEG2 <="";WHEN "0110" => SEG2 <="";WHEN "0111" => SEG2 <="";WHEN "1000" => SEG2 <="";WHEN "1001" => SEG2 <=""; --9WHEN "1010" => SEG2 <="";WHEN "1011" => SEG2 <="";WHEN "1100" => SEG2 <="";WHEN "1101" => SEG2 <="";WHEN "1110" => SEG2 <="";WHEN "1111" => SEG2 <="";WHEN OTHERS =>NULL;END CASE;CASE sSeg1(3 DOWNTO 0) ISWHEN "0000" => ASEGIN1 <= "";--0WHEN "0001" => ASEGIN1 <= "";WHEN "0010" => ASEGIN1 <="";WHEN "0011" => ASEGIN1 <="";WHEN "0100" => ASEGIN1 <="";WHEN "0101" => ASEGIN1 <="";WHEN "0110" => ASEGIN1 <="";WHEN "0111" => ASEGIN1<="";WHEN "1000" => ASEGIN1 <="";WHEN "1001" => ASEGIN1 <=""; --9WHEN "1010" => ASEGIN1 <="";WHEN "1011" => ASEGIN1 <="";WHEN "1100" => ASEGIN1 <="";WHEN "1101" => ASEGIN1 <="";WHEN "1110" => ASEGIN1 <="";WHEN "1111" => ASEGIN1 <="";WHEN OTHERS =>NULL;END CASE;7CASE sSeg1(7 DOWNTO 4) ISWHEN "0000" => ASEGIN2 <= "";--0 WHEN "0001" => ASEGIN2 <= "";WHEN "0010" => ASEGIN2 <="";WHEN "0011" => ASEGIN2 <="";WHEN "0100" => ASEGIN2 <="";WHEN "0101" => ASEGIN2 <="";WHEN "0110" => ASEGIN2 <="";WHEN "0111" => ASEGIN2<="";WHEN "1000" => ASEGIN2 <="";WHEN "1001" => ASEGIN2 <=""; --9 WHEN "1010" => ASEGIN2 <="";WHEN "1011" => ASEGIN2 <="";WHEN "1100" => ASEGIN2 <="";WHEN "1101" => ASEGIN2 <="";WHEN "1110" => ASEGIN2 <="";WHEN "1111" => ASEGIN2 <="";WHEN OTHERS =>NULL;END CASE;CASE sSeg2(3 DOWNTO 0) ISWHEN "0000" => BSEGIN1 <= "";--0 WHEN "0001" => BSEGIN1 <= "";WHEN "0010" => BSEGIN1 <="";WHEN "0011" => BSEGIN1 <="";WHEN "0100" => BSEGIN1 <="";WHEN "0101" => BSEGIN1 <="";WHEN "0110" => BSEGIN1 <="";WHEN "0111" => BSEGIN1<="";WHEN "1000" => BSEGIN1 <="";WHEN "1001" => BSEGIN1 <=""; --9 WHEN "1010" => BSEGIN1 <="";WHEN "1011" => BSEGIN1 <="";WHEN "1100" => BSEGIN1 <="";WHEN "1101" => BSEGIN1 <="";WHEN "1110" => BSEGIN1 <="";WHEN "1111" => BSEGIN1 <="";WHEN OTHERS =>NULL;END CASE;CASE sSeg2(7 DOWNTO 4) ISWHEN "0000" => BSEGIN2 <= "";--0 WHEN "0001" => BSEGIN2 <= "";WHEN "0010" => BSEGIN2 <="";WHEN "0011" => BSEGIN2 <="";WHEN "0100" => BSEGIN2 <="";WHEN "0101" => BSEGIN2 <="";WHEN "0110" => BSEGIN2 <="";WHEN "0111" => BSEGIN2<="";WHEN "1000" => BSEGIN2 <="";WHEN "1001" => BSEGIN2 <=""; --9WHEN "1010" => BSEGIN2 <="";WHEN "1011" => BSEGIN2 <="";WHEN "1100" => BSEGIN2 <="";WHEN "1101" => BSEGIN2 <="";WHEN "1110" => BSEGIN2 <="";WHEN "1111" => BSEGIN2 <="";WHEN OTHERS =>NULL;END CASE;END PROCESS;--U1 : f_adder PORT MAP(AIN => AIN(0), BIN => BIN(0), CIN => CIN, SUM => SUM(0), COUT => C1);--U2 : f_adder PORT MAP(AIN => AI N(1), BIN => BIN(1), CIN => C1, SUM => SUM(1), COUT => C2);--U3 : f_adder PORT MAP(AIN => AIN(2), BIN => BIN(2), CIN => C2, SUM => SUM(2), COUT => C3);--U4 : f_adder PORT MAP(AIN => AIN(3), BIN => BIN(3), CIN => C3, SUM => SUM(3), COUT => C4);--U5 : f_adder PORT MAP(AIN => AIN(4), BIN => BIN(4), CIN => C4, SUM => SUM(4), COUT => C5);--U6 : f_adder PORT MAP(AIN => AIN(5), BIN => BIN(5), CIN => C5, SUM => SUM(5), COUT => C6);--U7 : f_adder PORT MAP(AIN => AIN(6), BIN => BIN(6), CIN => C6, SUM => SUM(6), COUT => C7);--U8 : f_adder PORT MAP(AIN => AIN(7), BIN => BIN(7), CIN => C7, SUM => SUM(7), COUT => COUT);END ONE;三、编译及仿真结果程序波形仿真图9时间分析方法二:使用LPM创立元件一、打开MegaWizard Plug-In Manager二、按照提示,一步步完成全加器/全减器的创建三、创建成功,生成CMP文件四、调用CMP文件,例化元件,生成可以使用的元件。
EDA实验2 原理图输入法设计8位二进制全加器
实验2原理图输入法设计8位二进制全加器一、实验目的进一步熟悉QuartusⅡ的使用方法,学习时序仿真。
二、实验内容用V erilog HDL设计一个8位二进制全加器。
可以直接编写程序,也可以利用例化语句调用1位全加器构成8位全加器。
并进行编译、综合、适配和仿真。
三、实验步骤:1.为本项工程设计建立文件夹2.建立V erilog HDL文件3.存盘并建立工程4.全程编译5.时序仿真⑴建立矢量波形文件菜单操作:file—new图2-1 选择编辑矢量波形文件图2-2 波形编辑器⑵设置仿真时间长度菜单操作:Edit—end time图2-3 设置仿真时间长度⑶存盘图2-4 vwf激励波形文件存盘⑷将工程test2的端口信号选入波形编辑器中。
菜单操作:View—Utility Windows—Node Finder,并按图2-5 向波形编辑器拖入信号节点选项:Look:工程名;filer:Pins all⑸编辑输入波形单击输入信号a使之变成蓝色条,激活波形编辑器图2-6波形编辑器按图2-7设置输入信号a的周期在Tool Zoom 状态下调整波形图图2-8 设置好的激励波形图⑹菜单操作:Assignments –setting进入以下窗口:图2-9 选择仿真控制图2-10 仿真波形输出图2-11 选择全时域显示⑺仿真:Processing-Start Simulation 或。
注:该实验也可用硬件测试的方法来验证其设计的正确性。
四、实验报告详细叙述实验内容所要求的设计流程;给出仿真波形图;给时序分析情况。
五、参考程序module ADDER8B(A,B,CIN,COUT,DOUT);output [7:0] DOUT; output COUT;input [7:0] A,B; input CIN; wire [8:0] DA TA;assign DA TA =A+B+CIN;assign COUT=DA TA[8];assign DOUT=DA TA[7:0];endmodule。
EDA实验报告1_8位全加器
EDA技术与应用实验报告姓名学号专业年级电子信息工程实验题目八位全加器设计实验目的1.熟悉QuartuaⅡ的文本和原理图输入方法设计简单组合电路2.通过8位全加器的设计掌握层次化设计的方法3.学会对实验板上的FPGA/CPLD开发系统硬件电路的编程下载及测试实验原理1.由文本输入利用元件例化语句或者原理图输入封装元件的方式,层次化设计1位全加器2.用原理图输入方法,由1位全加器通过低位进位输出cout与高位进位输入cin以串行方式相连接,构成8位全加器实验内容实验一:用原理图输入法设计8位全加器1.原理图输入完成半加器和1位全加器的设计,并封装入库2.层次化设计,建立顶层文件,由1位全加器构成8位全加器3.每一层次均需进行编译、综合、适配、仿真及实验板上硬件测试实验二:用文本输入法设计8位全加器1. VHDL文本输入完成半加器和一位全加器的设计2. 用元件例化语句由1位全加器设计一个8位全加器3.每一层次均需进行编译、综合、适配、仿真及实验板上硬件测试实验步骤实验一1.设计1位全加器<1>完成对半加器的设计(详见P117),编译、仿真、生成可调用元件h_adder.bsf;<2>完成对1位全加器的设计(详见P118),编译、仿真与下载,生成可调用原件f_adder.bsf;2.利用1位全加器进行8位全加器的设计<1>新建文件夹adder_8bit,作为顶层文件的目录,将底层文件h_adder.bdf、f_adder.bdf拷贝到此目录下。
新建一个初始原理图adder_8bit.bdf,并为其创建project,将三个设计文件加入工程。
<2>在原理图编辑窗口,调入元件f_adder.bsf,连接线路,对引脚命名,完成对8位全加器的设计。
<3>选择芯片EP1K100QC208-3,引脚锁定并再次编译,编程下载,分析实验结果。
实验二1.设计1位全加器<1>分别新建子文件夹,用来保存底层文件或门or2a.VHDL、半加器h_adder.VHDL的设计,并分别建立相应的project,进行编译、综合、适配、仿真,确保无error(详见P72)。
EDA实验_设计一个8位加法器
XXXX大学计算机科学学院实验/上机报告一、实验目的设计一个8位加法器。
二、实验环境Quartus II 7.0 开发系统三、实验内容利用全加器,设计一个8位加法器。
四、实验过程设计思想:8位二进制加法器可以由8个全加器通过级联的方式构成。
根据全加器级联的原理,用VHDL设计一个8位二进制数的加法器,可以先设计一个一位全加器,然后利用一位全加器采用元件例化的方式实现加法器。
实验步骤:1、设计一个全加器新建工程,建立源文件,输入VHDL设计文件,如下图所示:完成设计文件输入后,保存文件,对文件进行编译、仿真,以下是仿真结果,如图所示:由图可知仿真结果正确。
2、元件例化把VHDL设计文件转为原理图中使用的元件。
在文件菜单File中选择Creat/Update选项,单击Create Symbol File for Current File 选项,系统自动生成相应的元件标号。
重复新建文件的操作,选择Block Diagram/Schmatic File 选项,新建一个原理图文件,在添加元件列表中可以看到自动生成的元件,选择full_adder这个元件添加到原理图中,如下图所示:3、完成顶层图的设计用生成的元件标号,完成顶层图的设计。
这里有两种方法,一种是直接用原理图设计,根据原理图设计工具的使用方法,完成顶层文件的设计,这个方法比较复杂,所以这里选择另一种方法,通过VHDL设计文件。
继续建立源文件,输入VHDL设计文件,如下图所示:依照上述步骤,保存文件,对文件进行编译、仿真,以下是仿真结果,如图所示:五、实验总结本次实验的目的是设计一个8位二进制加法器,而8位二进制加法器可以由8个全加器通过级联的方式构成。
根据全加器级联的原理,用VHDL设计一个8位二进制数的加法器,可以先设计一个一位全加器,然后利用一位全加器采用元件例化的方式实现加法器。
根据实验设计思路,我先用VHDL设计了一个全加器full_adder.vhd,编译、仿真成功后,通过元件例化的方式,采用原理图设计了一个8位的加法器adder8.bdf,但是在这个过程中出现了很多问题,即由于我是把这个8位的加法器的每个全加器元件输入输出引脚分开的,因此一开始就设计了17个输入引脚,这使得我在给输入引脚添加信号时不知道添加什么信号,才能够起到验证仿真结果是否正确的目的。
八位二进制加法器课程设计
长安大学电子技术课程设计课题名称______________班级______________姓名______________指导教师日期______________前言8位二进制加法器,它的功能主要是实现两个8位二进制数的相加,其结果的范围应该在00000000到111111110之间,即000到510之间。
加法器在实际应用中占据着十分重大的地位,从我们呱呱坠地起,到小学,到初中,到高中,到大学,到工作,等等。
我们能离开加法吗,不能!加法可以说是一切运算的基础,因此8位二进制加法器的设计是很有必要的。
那么我们如何设计一个8位二进制加法器呢?在实际应用中,我们通常输入的是十进制数,一个八位二进制数所对应的最大的十进制数是255,于是输入两个范围在000到255之间的数,首先通过二-十进制编码器将输入的三位十进制数的个位、十位、百位分别转换为8421BCD码,得到两个十二位字码,再通过加法器将它们相加,逢10进1,得到一个新的十二位字码,再用7447数字显示译码器将这个十二位字码还原到原来的三位十进制数。
最后输出的就是一个三位十进制数,其范围在000到510之间。
通过上述方法我们实现了八位二进制数的相加,从而达到了题目的要求。
为实现上述目的,我们需要查阅相关资料。
通过查阅,理解以及加以运用,我们认识到了收集资料的不易性,但同时也得到了不少收获,可以说是有苦有甜。
同时,虽然我们基本设计出了这个八位二进制加法器,但是不必可避免地会产生一些问题,比如说在连线上可能有更简便的途径,在元件的选用上可能还有其它更简便的方法,在控制上可能还不够精简,等等。
我们希望在以后的实践中能找出更好的方法,也希望能吸取这次设计中的不足,逐渐改善。
另外,在电子设计的过程中,与同组同学之间的合作配和是十分重要的。
我在此次设计中也充分认识到这一点的重要性,我相信这次的电子设计能够为我们将来的工作奠定一定的基础。
目录摘要、关键字、设计要求 (3)第一章系统概述 (4)1.总体设计思想 (4)2.总体设计方案及选择 (4)3.系统框图 (6)4.工作原理 (6)第二章单元电路设计与分析 (7)1.三位十进制数的加法运算模块 (7)1.1 8421BCD码编码器原理 (7)1.2 8421BCD码加法器原理 (8)1.3三位8421BCD码加法器电路 (9)2.八位二进制加法运算模块 (11)2.1八位二进制的加法电路的实现 (11)2.2九位二进制在数码管的显示 (12)第三章系统综述、总体电路图 (12)1.系统综述 (12)2.总体电路图 (13)2.1三位十进制数相加总电路图 (13)2.2八位二进制数加法总电路图 (14)第四章结束语 (15)收获与体会 (15)元器件明细表 (16)参考文献 (16)8位二进制加法器摘要:加法运算是最重要最基本的运算,所有的其他基本算术运算,减、乘、除、模乘运算最终都能归结为加法运算。
8位全加器 课程设计
硬件技术课程设计课题名称 8位全加器的设计与实现组名组员班级1201专业计算机科学与技术指导教师计算机学院2014年12 月目录一、设计目的 (1)二、设计内容 (1)三、实验原理图 (1)半加器原理图 (1)1位全加器原理图 (1)4位全加器原理图 (2)8位全加器原理图 (2)锁引脚图 (3)四、设计与说明 (3)五、时序仿真 (4)六、实验步骤 (5)七、设计总结 (8)八、参考文献 (8)8位全加器的设计与实现一、设计目的1、掌握运用MAX+plusII原理图编辑器进行层次电路系统设计的方法。
2、进一步熟悉利用MAX+plusII进行电路系统设计的一般流程。
3、掌握8位全加器原理图输入设计的基本方法及过程。
二、设计内容一个8位全加器可以由8个1位全加器构成,加法器间的进位可以以串行方式实现,即将低位加法器的进位输出cout与相邻的高位加法器的最低进位输入信号cin相连接。
而一个1位全加器则可由实验一包装元件入库得到。
三、实验原理图半加器原理图:1位全加器原理图:1 /84位全加器原理图:8位全加器原理图:2 / 8锁引脚原理图:四、设计与说明8位全加器可由2个4位的全加器串联组成,因此,先由一个半加器构成一个全加器,再由4个1位全加器构成一个4位全加器并封装成元器件。
加法器间的进位可以串行方式实现,即将低位加法器的进位输出cout与相临的高位加法器的最低进位输入信号cin相接最高位的输出即为两数之和。
最后一个Cout输出进位,D8显示。
3 / 8五、时序仿真1、建立波形文件。
为此设计建立一个波形测试文件。
选择File项及其New,再选择右侧New窗中的vector Waveform file项,打开波形编辑窗。
2、输入信号节点。
在波形编辑窗的左方双击鼠标,在出现的窗口中选择Node finder,在弹出的窗口中首先点击List键,这时左窗口将列出该项设计所以利用中间的“=>”键将需要观察的信号选到右栏中。
eda8位二进制
实验报告课程名称电子设计自动化实验项目 8为二进制带符号数的加减电路设计实验仪器计算机系别:通信学院专业:电子信息工程班级/学号:电信1105班 /2011010612学生姓名:张正实验日期:2013年5月29日成绩: _______________________指导教师: _______李春云_____________电子自动化设计实验一、实验目的:1学习多字节压缩BCD码加减运算的程序设计2学习单字节有符号数加减运算的程序设计二、实验内容:1用VHDL代码实现8为二进制带符号数的加减电路设计2实现二进制码和BCD码之间的转换3实现用七段BCD码显示译码器显示源代码三、实验原理:加减法实验电路原理:二进制带符号数的加减电路,是将输入的带符号数转化成补码,利用补码进行运算,并且对运算结果的符号进行判断,还原成真值。
四、源代码:library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_arith.all;use IEEE.std_logic_unsigned.all;entity adder isport ( a:in STD_LOGIC_VECTOR(7 downto 0);b:in STD_LOGIC_VECTOR(7 downto 0);ctrol:in std_logic;bcd_symbol:out std_logic;binaryout:out STD_LOGIC_VECTOR(7 downto 0);dataout: out STD_LOGIC_vector( 20 downto 0));end adder;architecture adder_arch of adder 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 c1:std_logic_vector(7 downto 0);signal ga_hundred:std_logic_vector(3 downto 0);signal cc:std_logic_vector(7 downto 0);signal ga:std_logic_vector(7 downto 0);signal ga0,ga1,ga2:std_logic_vector(6 downto 0);beginaddsub:blockbeginprocess(a)beginif a(7)='0'then x<='0'&'0'&a;else x(9 downto 8)<='1'&'1';x(7 downto 0)<=not('0'&a(6 downto 0))+1;end if;end process;process(ctrol,b)beginif ctrol='0'thenif b(7)='0'then y<='0'&'0'&b;else y<='1'&'1'&(not('0'& b(6 downto 0))+1);end if;else if b(7)='1' then y<='0'&'0'&(not('0'& b(6 downto 0))+1);else y<='1'&'1'&(not('0'&b(6 downto 0))+1);end if;end if;end process;process(a,b)beginif a(6 downto 0)=0 then z<=y;elseif b(6 downto 0)=0 then z<=x;elsez<=x+y;end if;end if;end process;process(z)beginif z(9)='1' thenc(7 downto 0)<=not z(7 downto 0)+1; c(8)<='1';else c(8 downto 0)<='0'& z(7 downto 0);end if;end process;end block addsub;bcd_symbol<=c(8);binaryout<=c(7 downto 0);bcd:blockbegincc<=c(7 downto 0); process(cc)beginif cc>199 then c1<=cc-200;ga_hundred<="0010";elsif cc>99 then c1<=cc-100;ga_hundred<="0001";else ga_hundred<="0000";c1<=cc;end if;if c1>=90 and c1<100 then ga<=c1+54;elsif c1>80 and c1<90 then ga<=c1+48;elsif c1>70 and c1<80 then ga<=c1+42;elsif c1>60 and c1<70 then ga<=c1+36;elsif c1>50 and c1<60 then ga<=c1+30;elsif c1>40 and c1<50 then ga<=c1+24;elsif c1>30 and c1<40 then ga<=c1+18;elsif c1>20 and c1<30 then ga<=c1+12;elsif c1>10 and c1<20 then ga<=c1+6;else ga<=c1;end if;end process;end block bcd;xianshi0:blockbeginga0<="0111111" when ga_hundred<=0 else"0000110" when ga_hundred<=1 else"1011011" when ga_hundred<=2 else"1001111" when ga_hundred<=3 else"1100110" when ga_hundred<=4 else"1101101" when ga_hundred<=5 else"1111101" when ga_hundred<=6 else"0000111" when ga_hundred<=7 else"1111111" when ga_hundred<=8 else"1101111" when ga_hundred<=9 else"0000000" when ga_hundred<=10 else"0000000" when ga_hundred<=11 else"0000000" when ga_hundred<=12 else"0000000" when ga_hundred<=13 else"0000000" when ga_hundred<=14 else"0000000" ;dataout( 20 downto 14) <= ga0;end block xianshi0;xianshi1:blockbeginga1<="0111111" when ga(7 downto 4)<=0 else"0000110" when ga(7 downto 4)<=1 else"1011011" when ga(7 downto 4)<=2 else"1001111" when ga(7 downto 4)<=3 else"1100110" when ga(7 downto 4)<=4 else"1101101" when ga(7 downto 4)<=5 else"1111101" when ga(7 downto 4)<=6 else"0000111" when ga(7 downto 4)<=7 else"1111111" when ga(7 downto 4)<=8 else"1101111" when ga(7 downto 4)<=9 else"0000000" when ga(7 downto 4)<=10 else"0000000" when ga(7 downto 4)<=11 else"0000000" when ga(7 downto 4)<=12 else"0000000" when ga(7 downto 4)<=13 else"0000000" when ga(7 downto 4)<=14 else"0000000" ;dataout( 13 downto 7) <= ga1;end block xianshi1;xianshi2:blockbeginga2<="0111111" when ga(3 downto 0)<=0 else"0000110" when ga(3 downto 0)<=1 else"1011011" when ga(3 downto 0)<=2 else"1001111" when ga(3 downto 0)<=3 else"1100110" when ga(3 downto 0)<=4 else "1101101" when ga(3 downto 0)<=5 else "1111101" when ga(3 downto 0)<=6 else "0000111" when ga(3 downto 0)<=7 else "1111111" when ga(3 downto 0)<=8 else "1101111" when ga(3 downto 0)<=9 else "0000000" when ga(3 downto 0)<=10 else "0000000" when ga(3 downto 0)<=11 else "0000000" when ga(3 downto 0)<=12 else"0000000" when ga(3 downto 0)<=13 else"0000000" when ga(3 downto 0)<=14 else"0000000" ;dataout( 6 downto 0) <= ga2;end block xianshi2;end adder_arch;五、项目实施六、实验总结:通过本次试验,加深了我对例化语句和分模块显示的理解。
八位全加器
EDA技术课程大作业设计题目:八位全加器设计院系:电子信息与电器工程学院学生姓名:学号:200902070002班级:09电信专升本2010 年12 月8 日八位全加器设计1.设计背景和设计方案1.1设计背景近年来,由于EDA技术迅猛发展,已成为电子领域的一项重要技术。
设计方法也多种多样。
本文用EDA技术作为开发手段,用图形输入设计方法,实现一个八位加法器的设计,并进行了系统仿真。
八位加法器的构成有两种方法:并行进位和串行进位方式。
并行进位加法器设有进位产生逻辑,运算速度较快;串行进位方式是将低位加法器的进位输出与相邻的高位加法器的进位输入信号相连,将全加器级联构成多位加法器。
并行进位加法器通常比串行级联占用更多的资源。
随着位数的增加,相同位数的并行加法器与串行加法器的资源占用差距也越来越大。
因此,在工程中使用加法器时,要在速度和容量之间寻找平衡点。
1.2设计方案本实验采用串行级联的方式构成八位加法器。
该八位加法器由八个一位全加器构成,加法器间的进位由串行方式实现,即将低位加法器的进位输出与相邻的高位加法器的最低进位输入信号相连。
原理图编辑如下:图一八位全加器设计原理图2. 方案实施2.1 半加器设计采用图形输入设计方法,实现半加器的设计。
在D盘上建立本实验文件夹,取名为adder8。
打开Quartus II,进入原理图输入编辑窗口。
分别调入and2,not,xnor和输入输出引脚input和output,并按照下图连接好电路。
然后分别修改input和output的引脚名为a、b、co和so。
把该文件名改为h_adder,并保存在adder8文件夹中。
保存后,把该文件转换为元件符号存盘。
图二半加器设计原理图2.2(宋体四号,加粗)一位全加器设计(宋体小四,1.5倍行距)重新打开一个原理图编辑窗口,调入h_adder、or2、input和output,连接好一位全加器电路图。
修改input和output的引脚名,并把文件名修改为f_adder后存盘。
8位全加器课程设计
8位全加器课程设计一、课程目标知识目标:1. 学生能理解8位全加器的基本原理,掌握全加器的电路构成及其功能。
2. 学生能运用所学的数字电路知识,解释8位全加器的工作过程,并分析其特点。
3. 学生能掌握8位全加器在计算机算术运算中的应用。
技能目标:1. 学生能够独立设计并搭建简单的8位全加器电路。
2. 学生能够运用所学知识,解决与8位全加器相关的实际问题,提高问题解决能力。
3. 学生能够通过实验操作,培养观察、分析、总结实验现象的能力。
情感态度价值观目标:1. 学生通过学习8位全加器,培养对电子技术和计算机硬件的兴趣,增强学习动力。
2. 学生在小组合作完成实验过程中,培养团队合作精神和沟通能力,提高合作意识。
3. 学生能够认识到电子技术在实际生活中的应用,增强实践意识,提高创新思维。
课程性质:本课程为电子技术基础课程,以实验和实践为主,注重理论联系实际。
学生特点:学生已具备一定的数字电路基础,具有较强的动手能力和好奇心。
教学要求:结合学生特点,注重启发式教学,引导学生主动探索,提高学生的实践能力和问题解决能力。
将课程目标分解为具体的学习成果,便于教学设计和评估。
二、教学内容本章节教学内容主要包括以下三个方面:1. 8位全加器基本原理:- 数字电路基础知识回顾,重点复习加法器原理。
- 介绍8位全加器的电路结构,包括输入、输出及内部逻辑关系。
- 分析8位全加器的工作原理,理解进位产生和传递的过程。
2. 8位全加器电路设计与搭建:- 依据电路原理,制定实验方案,明确实验步骤。
- 使用集成电路芯片和基础电子元件,指导学生动手搭建8位全加器电路。
- 分析实验过程中可能出现的故障及解决办法。
3. 8位全加器的应用与拓展:- 讲解8位全加器在计算机算术运算中的应用,如加法、减法等。
- 探讨8位全加器的拓展应用,如多位全加器、加减混合运算等。
- 结合实际案例,分析8位全加器在现代电子设备中的应用。
教学内容依据教材相关章节进行组织,注重理论与实践相结合,循序渐进地引导学生掌握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 将需要引脚拖拽。
8位全加器
EDA技术课程大作业设计题目:8位全加器院系:电子信息与电气工程系学生姓名:学号:200902070023专业班级:09电子信息工程专升本2010年12月10 日8位全加器1. 设计背景和设计方案1.1设计任务用VHDL设计一个八位并行加法器,该八位并行加法器是有两个四位二进制并行加法器通过级联而成,先设计两个四位二进制并行加法器分别表示八位数中的低四位和高四位以及其加法(含进位),再将两个四位并行加法器级联成一个八位并行加法器。
1.2设计要求加法器是数字系统中的基本逻辑器件,减法器和硬件乘法器都可由加法器来构成。
一个8位全加器可以由用两个4位二进制并行加法器级联以构成,加法器间的进位可以并行方式实现,即将低位加法器的进位输出COUT端与高位加法器的低位输入信号CIN 相连。
1.3方案构思多位加法器按其进位方式的不同可以分为两类:串行进位加法器和并行进位加法器。
串行进位加法器是将多个一位全加器级联,低位全加器的进位输出送给相邻高位全加器作为进位输入,以此构成多位加法器。
这种设计思路简单明了且占用资源较少,但运算速度较慢。
并行进位方式则是在各位的加法环节之外,另外设有进位产生逻辑电路,各位的进位输入信号同时产生,从而各位可以同时完成全家运算,输出最后结果。
并行进位方式具有较快的运算速度,但是相对于串行进位方式来说,却往往占用更多的资源。
尤其是当运算位数增加的时候,相同位数的并行进位和串行进位加法器的资源占用差距也越来越大。
因此,常常需要设计者在运算速度和资源占用量之间做出折中和平衡。
实践证明,4位二进制并行进位加法器和串行级联加法器占用的资源几乎相同。
因此,可以用两个4位二进制并行加法器级联以构成8位二进制加法器,这是一种较为合理的选择。
其结构如图1:图1 8位加法器原理图2. 方案实施2.1.加法器的原理加法器是计算机的基本运算单元,在各种逻辑电路中经常使用。
加法器电路分二进制和十进制两种。
一般计算机中使用的多是二进制加法电路,十进制加法电路采用对二进制加法电路进行处理的方法实现。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
EDA课程设计八位二进制全加器
EDA设计说明书
课程名称: EDA技术实用教程
设计题目:八位二进制全加器
院系:电子信息与电气工程学院学生姓名:
学号:
专业班级:
指导教师:李响
年 6 月 1
1. 设计目的
熟悉利用QuartusⅡ的原理图输入法设计简单的组合电路,掌握层次化设计的方法,并经过一个八位全加器的设计把握利用EDA软件进行原理图输入方式的电子线路设计的详细流程。
2. 设计原理
2.1 一位全加器的原理
一位全加器能够用两个半加器及一个或门连接而成,因此需要首先完成半加器的设计。
在本设计中,将采用原理图输入法来完成设计。
一位全加器的设计步骤:
①为本项工程设计建立文件夹;
②输入设计项目和存盘;
③将设计项目设计成可调用的元件;
④设计全加器顶层文件;
⑤将设计项日设置成工程和时序仿真。
2.2 八位全加器的原理
一个八位全加器能够由八个一位全加器构成,加法器之间的进位能够用串行方式实现,即将低位加法器的进位输出cout 与相邻的高位加法器的最低进位输入信号cin 相接。
3. 设计方案与仿真
3.1 一位全加器的设计与仿真
全加器的实现是以半加器的实现为基础的,因此,要设计全加器应首先设计一个一位的半加器。
半加器的实现方案为:
①为此项工程建立文件夹;
②在基本元件库中,选中需要的元件,将元件(包含元件
and2、not 、xnor 和输入输出引脚input、output)调入原理图编辑窗口中;
③将己设计好的原理图文件存盘;
④将所设计的半加器设置成可调用的元件。
用原理图输入法所设计的半加器原理图如图3-1所示,利用QuartusⅡ软件平台,根据图3-1所示电路,可生成一个半加器元件符号,如图3-2所示。
在半加器的基础上,为了建立全加器的顶层文件,必须再打开一个原理图编辑窗口,方法同上。
其中,所选择的元件包含半加器、或门和输入输出引脚,由此可得到如图3-3所示的全加器原理图;进而可生成个全加器元件符号,如图3-4所示。
图3-1 半加器原理图图3-2 半加器元件符号
图3-3 全加器原理图图3-4 全加器元件符号
按照一位全加器原理图连接电路,经过编译、仿真所得的波形图如图3-5所示:
图3-5 一位全加器时序仿真波形
根据图3-5可知,当输入信号ain 、bin 、cin 全是低电平时,输出信号sum 和cout 全是低电平;当输入信号ain 、bin 、cin 中有且只有一个为高电平时,输出信号sum 为高电平,输出信号cout 为低电平;当输入信号ain 、bin 、cin 中有两个为高电平时,输出信号sum 为低电平,输出信号cout 为高电平;当输入信号ain 、bin 、cin 全是高电平时,输出信号sum 和cout 全是高电平。
由此能够看出仿真结果与理论值相符合。
3.2 八位全加器的实现方案与仿真
八位全加器的实现是以一位全加器的实现为基础的,它由八个一位。