基于封装设计思想实现8位全加器
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 );
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位全加器
原理图输入设计8位全加器一、实验目的掌握运用MAX+plusII原理图编辑器进行层次电路系统设计的方法。
进一步熟悉利用MAX+plusII进行电路系统设计的一般流程。
掌握8位全加器原理图输入设计的基本方法及过程。
二、实验原理一个8位全加器可以由8个1位全加器构成,加法器间的进位可以以串行方式实现,即将低位加法器的进位输出cout与相邻的高位加法器的最低进位输入信号cin相连接。
而一个1位全加器则可由实验一包装元件入库得到。
实验步骤1、为本项设计建立文件夹2、输入设计项目和存盘根据8位全加器原理图输入设计8位全加器。
并另存(Save As)在为本设计建立的文件夹中。
3、将设计项目设置成工程文件将8位全加器设置为工程文件。
4、选择目标器件并编译首先在Assign选项的下拉菜单中选择器件选择项Device,此窗口的Device Family是器件序列栏,应该首先在此拦中选定目标器件对应的序列名,为了选择EPF1K30TC144-3器件,应将此栏下方标有Show only Fastest Speed Grades的勾消去,以便显示出所有速度级别的器件。
完成器件选择后,按OK键。
最后启动编译器,首先选择左上角的MAX+plusII选项,在其下拉菜单中选择编译器项Compiler。
(此编译器的功能包括网表文件提取、设计文件排错、逻辑综合、逻辑分配、适配(结构综合)、时序仿真文件提取和编程下载文件装配等。
)点击Start,开始编译!如果发现有错,排除错误后再次编译。
5、时序仿真接下来应该测试设计项目的正确性,即逻辑仿真,具体步骤如下:(1)建立波形文件。
(2)输入信号节点。
(3)设置波形参量。
(4)设定仿真时间宽度。
(5)加上输入信号。
(6)波形文件存盘。
(7)运行仿真器。
选择MAX+plusII项及其中的仿真器Simulator选项,点击跳出的仿真器窗口中的Start键。
(注意,刚进入窗口时,应该将最下方的滑标拖向最左侧,以便可观察到初始波形)。
8位二进制全加器设计实验报告
EDA技术8位二进制全加器设计实验报告班级:学号:姓名:时间:2013-12-06目录方法一:自己写程序 (2)一、设计原理 (2)二、实验程序 (3)程序1:半加器描述 (3)程序2:一位二进制全加器设计顶层描述 (3)程序3:D触发器描述 (4)程序4:8位二进制加法器顶层描述 (4)三、编译及仿真结果 (9)方法二:使用LPM创立元件 (10)一、打开MegaWizard Plug-In Manager (10)二、按照提示,一步步完成全加器/全减器的创建 (10)三、创建成功,生成CMP文件 (10)四、调用CMP文件,例化元件,生成可以使用的元件。
(10)实验总结: (12)摘要我在本实验中用顶层设计思想,用半加器、全加器、D触发器例化出八位全加器,完成了八路加法器、寄存器/锁存器的设计,上升沿触发,使用了6个数码管,分别用于显示输入A,输入B和输出,输出结果也用红灯进行了显示,溢出用绿灯表示。
输入A用0~7号开关完成,输入B用10~17号开关完成,进位C 用8号开关完成。
实验要求完成八路全加器的设计,十六进制输出,上升沿触发,低电平复位,输入输出用数码管显示,用红灯显示输出,绿灯显示溢出。
方法一:自己写程序一、设计原理先写一个半加器,然后用两个半加器例化出一个全加器,再用八个全加器例化出一个八位全加器。
原理如图。
关于上升沿触发,使用D触发器和八位全加器进行例化,D触发器接同一个时钟。
最终完成上升沿触发的八位全加器的设计。
二、实验程序程序1:半加器描述LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY h_adder ISPORT (A, B : IN STD_LOGIC;CO, SO : OUT STD_LOGIC );END ENTITY h_adder;ARCHITECTURE FH1 OF h_adder ISBEGINSO <= NOT (A XOR (NOT B));CO <= A AND B;END ARCHITECTURE FH1;程序2:一位二进制全加器设计顶层描述LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY f_adder ISPORT (AIN, BIN, CIN : IN STD_LOGIC;COUT, SUM : OUT STD_LOGIC );END ENTITY f_adder;ARCHITECTURE FD1 OF f_adder ISCOMPONENT h_adder ISPORT (A, B : IN STD_LOGIC;CO, SO : OUT STD_LOGIC );END COMPONENT;SIGNAL D, E, F : STD_LOGIC;3BEGINU1 : h_adder PORT MAP(A => AIN, B => BIN, CO => D, SO => E);U2 : h_adder PORT MAP(A => E, B => CIN, CO => F, SO => SUM);COUT <= D OR F;END ARCHITECTURE FD1;程序3:D触发器描述LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DEF1 ISPORT (CLK : IN STD_LOGIC;D : IN STD_LOGIC;Q : OUT STD_LOGIC);END;ARCHITECTURE bhv OF DEF1 ISSIGNAL Q1 :STD_LOGIC;BEGINPROCESS (CLK)BEGINIF CLK'EVENT AND CLK = '1'THEN Q1<=D;END IF;Q<=Q1;END PROCESS;END bhv;程序4:8位二进制加法器顶层描述LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY f_adder8 ISPORT ( AIN, BIN : IN STD_LOGIC_VECTOR(7 DOWNTO 0);ASEGIN1,ASEGIN2, BSEGIN1,BSEGIN2 : BUFFER STD_LOGIC_VECTOR(6 DOWNTO 0);CIN : IN STD_LOGIC;CLK : IN STD_LOGIC;SUM : BUFFER STD_LOGIC_VECTOR(7 DOWNTO 0);SEG1 : BUFFER STD_LOGIC_VECTOR(6 DOWNTO 0);SEG2 : BUFFER STD_LOGIC_VECTOR(6 DOWNTO 0);COUT : OUT STD_LOGIC );END f_adder8;ARCHITECTURE ONE OF f_adder8 ISCOMPONENT f_adder ISPORT (AIN, BIN, CIN : IN STD_LOGIC;COUT, SUM : OUT STD_LOGIC );END COMPONENT;COMPONENT DEF1 ISPORT (CLK : IN STD_LOGIC;D : IN STD_LOGIC;Q : OUT STD_LOGIC);END COMPONENT;SIGNAL C,C1, C2, C3,C4,C5,C6,C7: STD_LOGIC;SIGNAL a : STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL b : STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL s : STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL ss : STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL sss : STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINU1 : f_adder PORT MAP(AIN => a(0), BIN => b(0), CIN => CIN, SUM => s(0),COUT => C1);U2 : f_adder PORT MAP(AIN => a(1), BIN => b(1), CIN => C1, SUM => s(1),COUT => C2);U3 : f_adder PORT MAP(AIN => a(2), BIN => b(2), CIN => C2, SUM => s(2),COUT => C3);U4 : f_adder PORT MAP(AIN => a(3), BIN => b(3), CIN => C3, SUM => s(3),COUT => C4);U5 : f_adder PORT MAP(AIN => a(4), BIN => b(4), CIN => C4, SUM => s(4),COUT => C5);U6 : f_adder PORT MAP(AIN => a(5), BIN => b(5), CIN => C5, SUM => s(5),COUT => C6);U7 : f_adder PORT MAP(AIN => a(6), BIN => b(6), CIN => C6, SUM => s(6),COUT => C7);U8 : f_adder PORT MAP(AIN => a(7), BIN => b(7), CIN => C7, SUM => s(7),COUT => C);U9 : DEF1 PORT MAP(Q=>a(0),D=>AIN(0),CLK=>CLK);U10 : DEF1 PORT MAP(Q=>a(1),D=>AIN(1),CLK=>CLK);U11 : DEF1 PORT MAP(Q=>a(2),D=>AIN(2),CLK=>CLK);U12 : DEF1 PORT MAP(Q=>a(3),D=>AIN(3),CLK=>CLK);U13 : DEF1 PORT MAP(Q=>a(4),D=>AIN(4),CLK=>CLK);U14 : DEF1 PORT MAP(Q=>a(5),D=>AIN(5),CLK=>CLK);U15 : DEF1 PORT MAP(Q=>a(6),D=>AIN(6),CLK=>CLK);U16 : DEF1 PORT MAP(Q=>a(7),D=>AIN(7),CLK=>CLK);5U17 : DEF1 PORT MAP(Q=>b(0),D=>BIN(0),CLK=>CLK); U18 : DEF1 PORT MAP(Q=>b(1),D=>BIN(1),CLK=>CLK); U19 : DEF1 PORT MAP(Q=>b(2),D=>BIN(2),CLK=>CLK); U20 : DEF1 PORT MAP(Q=>b(3),D=>BIN(3),CLK=>CLK); U21 : DEF1 PORT MAP(Q=>b(4),D=>BIN(4),CLK=>CLK); U22 : DEF1 PORT MAP(Q=>b(5),D=>BIN(5),CLK=>CLK); U23 : DEF1 PORT MAP(Q=>b(6),D=>BIN(6),CLK=>CLK); U24 : DEF1 PORT MAP(Q=>b(7),D=>BIN(7),CLK=>CLK);U25 : DEF1 PORT MAP(Q=>SUM(0),D=>s(0),CLK=>CLK); U26 : DEF1 PORT MAP(Q=>SUM(1),D=>s(1),CLK=>CLK); U27 : DEF1 PORT MAP(Q=>SUM(2),D=>s(2),CLK=>CLK); U28 : DEF1 PORT MAP(Q=>SUM(3),D=>s(3),CLK=>CLK); U29 : DEF1 PORT MAP(Q=>SUM(4),D=>s(4),CLK=>CLK); U30 : DEF1 PORT MAP(Q=>SUM(5),D=>s(5),CLK=>CLK); U31 : DEF1 PORT MAP(Q=>SUM(6),D=>s(6),CLK=>CLK); U32 : DEF1 PORT MAP(Q=>SUM(7),D=>s(7),CLK=>CLK);U33 : DEF1 PORT MAP(Q=>COUT,D=>C,CLK=>CLK);PROCESS(CLK,AIN,BIN)VARIABLE sSeg1 : STD_LOGIC_VECTOR(7 DOWNTO 0);VARIABLE sSeg2 : STD_LOGIC_VECTOR(7 DOWNTO 0);BEGINss(3 DOWNTO 0)<=SUM(3 DOWNTO 0);sss(3 DOWNTO 0)<=SUM(7 DOWNTO 4);sSeg1(7 DOWNTO 0):= AIN(7 DOWNTO 0);sSeg2(7 DOWNTO 0):= BIN(7 DOWNTO 0);CASE ss ISWHEN "0000" => SEG1 <= "";--0WHEN "0001" => SEG1 <= "";WHEN "0010" => SEG1 <="";WHEN "0011" => SEG1 <="";WHEN "0100" => SEG1 <="";WHEN "0101" => SEG1 <="";WHEN "0110" => SEG1 <="";WHEN "0111" => SEG1 <="";WHEN "1000" => SEG1 <="";WHEN "1001" => SEG1 <=""; --9WHEN "1010" => SEG1 <="";WHEN "1011" => SEG1 <="";WHEN "1100" => SEG1 <="";WHEN "1101" => SEG1 <="";WHEN "1110" => SEG1 <="";WHEN "1111" => SEG1 <="";WHEN OTHERS =>NULL;END CASE;CASE sss ISWHEN "0000" => SEG2 <= "";--0WHEN "0001" => SEG2 <= "";WHEN "0010" => SEG2 <="";WHEN "0011" => SEG2 <="";WHEN "0100" => SEG2 <="";WHEN "0101" => SEG2 <="";WHEN "0110" => SEG2 <="";WHEN "0111" => SEG2 <="";WHEN "1000" => SEG2 <="";WHEN "1001" => SEG2 <=""; --9WHEN "1010" => SEG2 <="";WHEN "1011" => SEG2 <="";WHEN "1100" => SEG2 <="";WHEN "1101" => SEG2 <="";WHEN "1110" => SEG2 <="";WHEN "1111" => SEG2 <="";WHEN OTHERS =>NULL;END CASE;CASE sSeg1(3 DOWNTO 0) ISWHEN "0000" => ASEGIN1 <= "";--0WHEN "0001" => ASEGIN1 <= "";WHEN "0010" => ASEGIN1 <="";WHEN "0011" => ASEGIN1 <="";WHEN "0100" => ASEGIN1 <="";WHEN "0101" => ASEGIN1 <="";WHEN "0110" => ASEGIN1 <="";WHEN "0111" => ASEGIN1<="";WHEN "1000" => ASEGIN1 <="";WHEN "1001" => ASEGIN1 <=""; --9WHEN "1010" => ASEGIN1 <="";WHEN "1011" => ASEGIN1 <="";WHEN "1100" => ASEGIN1 <="";WHEN "1101" => ASEGIN1 <="";WHEN "1110" => ASEGIN1 <="";WHEN "1111" => ASEGIN1 <="";WHEN OTHERS =>NULL;END CASE;7CASE sSeg1(7 DOWNTO 4) ISWHEN "0000" => ASEGIN2 <= "";--0 WHEN "0001" => ASEGIN2 <= "";WHEN "0010" => ASEGIN2 <="";WHEN "0011" => ASEGIN2 <="";WHEN "0100" => ASEGIN2 <="";WHEN "0101" => ASEGIN2 <="";WHEN "0110" => ASEGIN2 <="";WHEN "0111" => ASEGIN2<="";WHEN "1000" => ASEGIN2 <="";WHEN "1001" => ASEGIN2 <=""; --9 WHEN "1010" => ASEGIN2 <="";WHEN "1011" => ASEGIN2 <="";WHEN "1100" => ASEGIN2 <="";WHEN "1101" => ASEGIN2 <="";WHEN "1110" => ASEGIN2 <="";WHEN "1111" => ASEGIN2 <="";WHEN OTHERS =>NULL;END CASE;CASE sSeg2(3 DOWNTO 0) ISWHEN "0000" => BSEGIN1 <= "";--0 WHEN "0001" => BSEGIN1 <= "";WHEN "0010" => BSEGIN1 <="";WHEN "0011" => BSEGIN1 <="";WHEN "0100" => BSEGIN1 <="";WHEN "0101" => BSEGIN1 <="";WHEN "0110" => BSEGIN1 <="";WHEN "0111" => BSEGIN1<="";WHEN "1000" => BSEGIN1 <="";WHEN "1001" => BSEGIN1 <=""; --9 WHEN "1010" => BSEGIN1 <="";WHEN "1011" => BSEGIN1 <="";WHEN "1100" => BSEGIN1 <="";WHEN "1101" => BSEGIN1 <="";WHEN "1110" => BSEGIN1 <="";WHEN "1111" => BSEGIN1 <="";WHEN OTHERS =>NULL;END CASE;CASE sSeg2(7 DOWNTO 4) ISWHEN "0000" => BSEGIN2 <= "";--0 WHEN "0001" => BSEGIN2 <= "";WHEN "0010" => BSEGIN2 <="";WHEN "0011" => BSEGIN2 <="";WHEN "0100" => BSEGIN2 <="";WHEN "0101" => BSEGIN2 <="";WHEN "0110" => BSEGIN2 <="";WHEN "0111" => BSEGIN2<="";WHEN "1000" => BSEGIN2 <="";WHEN "1001" => BSEGIN2 <=""; --9WHEN "1010" => BSEGIN2 <="";WHEN "1011" => BSEGIN2 <="";WHEN "1100" => BSEGIN2 <="";WHEN "1101" => BSEGIN2 <="";WHEN "1110" => BSEGIN2 <="";WHEN "1111" => BSEGIN2 <="";WHEN OTHERS =>NULL;END CASE;END PROCESS;--U1 : f_adder PORT MAP(AIN => AIN(0), BIN => BIN(0), CIN => CIN, SUM => SUM(0), COUT => C1);--U2 : f_adder PORT MAP(AIN => AI N(1), BIN => BIN(1), CIN => C1, SUM => SUM(1), COUT => C2);--U3 : f_adder PORT MAP(AIN => AIN(2), BIN => BIN(2), CIN => C2, SUM => SUM(2), COUT => C3);--U4 : f_adder PORT MAP(AIN => AIN(3), BIN => BIN(3), CIN => C3, SUM => SUM(3), COUT => C4);--U5 : f_adder PORT MAP(AIN => AIN(4), BIN => BIN(4), CIN => C4, SUM => SUM(4), COUT => C5);--U6 : f_adder PORT MAP(AIN => AIN(5), BIN => BIN(5), CIN => C5, SUM => SUM(5), COUT => C6);--U7 : f_adder PORT MAP(AIN => AIN(6), BIN => BIN(6), CIN => C6, SUM => SUM(6), COUT => C7);--U8 : f_adder PORT MAP(AIN => AIN(7), BIN => BIN(7), CIN => C7, SUM => SUM(7), COUT => COUT);END ONE;三、编译及仿真结果程序波形仿真图9时间分析方法二:使用LPM创立元件一、打开MegaWizard Plug-In Manager二、按照提示,一步步完成全加器/全减器的创建三、创建成功,生成CMP文件四、调用CMP文件,例化元件,生成可以使用的元件。
8位串行全加器设计
8位串行全加器设计串行全加器是一种基本的数字电路,用于实现两个二进制数的加法运算。
它可以将两个数位相同的二进制数相加,并将其和以及进位输出。
本文将详细介绍如何设计一个8位串行全加器。
首先,我们需要了解全加器的功能。
全加器由两个输入和两个输出组成。
输入包括两个要相加的二进制数位以及前一位的进位(Carry In),输出包括当前位的和(Sum)和当前位的进位(Carry Out)。
设计一个8位串行全加器时,我们需要将8个全加器连接在一起。
每个全加器的输入为两个二进制数位和前一位的进位,输出为当前位的和和当前位的进位。
具体设计步骤如下:1.首先,我们需要设计一个单个全加器电路。
全加器电路可以通过将两个半加器连在一起来实现。
半加器接收两个输入,并输出当前位的和和当前位的进位。
2.设计一个半加器电路。
半加器电路由两个输入和两个输出组成。
输入包括两个要相加的二进制数位,输出包括当前位的和和当前位的进位。
3.实现半加器电路的真值表。
半加器的真值表如下:输入A,输入B,输出S,进位--------,--------,--------,-------0,0,0,0,1,1,1,0,1,1,1,0,根据真值表可知,半加器的和输出为输入A和输入B的异或运算结果,进位输出为输入A和输入B的与运算结果。
4.通过使用逻辑门来实现半加器电路。
可以使用异或门实现和输出,使用与门实现进位输出。
5.设计一个完整的全加器电路。
一个全加器电路由一个半加器和一个或门构成。
半加器负责计算两个输入位的和和进位,而或门负责计算前一位的进位和当前位的进位的和。
全加器电路的输入为两个要相加的二进制数位和前一位的进位,输出为当前位的和和当前位的进位。
6.将8个全加器连在一起。
将第一个全加器的输入连接到待相加的两个8位二进制数的最低位和前一位的进位,将第二个全加器的输入连接到待相加的两个8位二进制数的次低位和第一个全加器的进位,以此类推。
最后一个全加器的输出即为所求的和。
基于FPGA的八位加法器
课程实训报告课程名称EDA 技术设计题目基于FPGA的八位加法器院系名称机械电子工程学院专业班级电子信息工程2014级姓名学号成绩指导教师2016年12月目录1、设计目的、要求.................................................................................................................... - 2 -1.1、设计目的.................................................................................................................... - 2 -1.2、系统设计要求............................................................................................................ - 2 -2、设计原理及相关硬件............................................................................................................ - 3 -2.1、系统设计方案及原理................................................................................................ - 3 -2.2、硬件原理.................................................................................................................... - 3 -3、主要模块设计........................................................................................................................ - 5 -3.1、模块Key-led............................................................................................................. - 5 -3.2、模块Adder................................................................................................................. - 6 -4、系统编译及仿真过程............................................................................................................ - 6 -4.1、系统编译.................................................................................................................... - 6 -4.2、仿真............................................................................................................................ - 7 -5、硬件验证过程和分析............................................................................................................ - 8 -5.1、引脚设置和保护........................................................................................................ - 8 -5.2、硬件下载.................................................................................................................... - 8 -5.3、硬件测试结果及分析................................................................................................ - 9 -6、实验参考程序........................................................................................................................ - 9 -6.1、模块key_led............................................................................................................. - 9 -6.2、模块adder4b........................................................................................................... - 13 -6.3、模块adder8b........................................................................................................... - 14 -总结 ......................................................................................................................................... - 15 -参考文献...................................................................................................................................... - 0 -附录 ........................................................................................................................................... - 1 -1、设计目的、要求1.1、设计目的(1)了解并掌握一般设计方法,具备初步的独立设计能力;(2)掌握用VerilogHDL语言程序的基本技能;(3)提高综合运用所学的理论知识独立分析和解决问题的能力;(4)进一步掌握EDA技术的开发流程;(5)学习较复杂的数字系统设计方法。
8位全加器
目录一、设计目的和要求 (1)1.课程设计目的 (1)2.课程设计的基本要求 (1)3.课程设计类型 (1)二、仪器和设备 (1)三、设计过程 (1)1.设计内容和要求 (1)2.设计方法和开发步骤 (2)3.设计思路 (2)4.设计难点 (4)四、设计结果与分析 (4)1.思路问题以及测试结果失败分析 (4)2.程序简要说明 (5)五、心得体会 (9)六、参考文献 (10)一、设计目的和要求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.设计方法和开发步骤加法器是数字系统中的基本逻辑器件。
例如:为了节省资源,减法器和硬件乘法器都可由加法器来构成。
但宽位加法器的设计是很耗费资源的,因此在实际的设计和相关系统的开发中需要注意资源的利用率和进位速度等两方面的问题。
多位加法器的构成有两种方式:并行进位和串行进位方式。
并行进位加法器设有并行进位产生逻辑,运算速度快;串行进位方式是将全加器级联构成多位加法器。
verilog8位全加器实验报告
Verilog实验报告基于封装设计思想实现8位全加器小组成员:实验时间:2010年5月 16日实验报告---基于封装设计思想实现8位全加器实验时间:2010年5月16日小组成员:一、实验目的1)在掌握QuartusII软件环境和全加器原理的基础上,重点学习Verilog封装的设计方法。
2)进一步巩固文本和图形法结合的设计方法。
二.实验仪器1.PC机2. 数字系统设计实验开发板三.实验学时:3学时四.实验原理:全加器的原理设计.五.实验步骤1)熟悉quartusII的使用a)打开开发环境,如错误!未找到引用源。
2)原理图输入法:八个一位加法器连接成的一个八位加法器原理图图表:3)仿真波形:4)封装后的八位加法器:5)程序代码:module yy1(x,y,sum,c1,c2);input x;input y;input c1;output sum;output c2;assign{c2,sum}=x+y+c1;endmodule六.问题回答:assign 用于描述组合逻辑,always(敏感事件列表) 用于描述时序逻辑。
所有的assign 和 always 块都是并行发生的。
并行块、顺序块,将要并行执行的语句写在fork//语句并行执行join将要顺序执行的语句写在begin//语句顺序执行end并行块和顺序块都可以写在initial 或 always@ 之后,也就是说写在块中的语句是时序逻辑的对assign之后不能加块,实现组合逻辑只能用逐句的使用assign 组合逻辑如果不考虑门的延时的话当然可以理解为瞬时执行的,因此没有并行和顺序之分,并行和顺序是针对时序逻辑来说的。
值得注意的是所有的时序块都是并行执行的。
initial块只在信号进入模块后执行1次而always块是由敏感事件作为中断来触发执行的。
七.实验总结:经过这次实验,我们复习了一些Verilog的基本知识,并且熟习了一些封装等的操作,为以后的实验打下基础。
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位全加器相关知识。
基于VHDL的八位全加器
EDA技术课程大作业设计题目:基于VHDL的八位全加器院系:电子信息与电气工程学院学生姓名:学号: ************专业班级: 09电子信息专升本2010 年12 月5日基于VHDL的八位全加器1. 设计背景和设计方案1.1设计背景全加器是数字电路中一种典型的集成电路功能元件,它在有关数值运算的系统中得到广泛的应用。
就产品而言,对于各集成电路族,均有现成的双全加器、四位全加器,可供使用,从而为使用全加器的逻辑设计提供了物质基础。
它是一种由被加数、加数和来自低位的进位数三者相加的运算器,基本功能是实现二进制加法。
进位传送速度快,主要用于高速数字计算机、数据处理及控制系统。
与其它专用的中规模集成电路不同, 它同时具有多种重要的特性和功能,具有多种用途的潜力。
1.2设计方案多位加法器的构成有两种方式:并行进位和串行进位方式。
并行进位加法器设有并行进位产生逻辑,运算速度快;串行进位方式是将全加器级联构成多位加法器。
通常,并行加法器比串行级联加法器占用更多的资源,并且随着位数的增加,相同位数的并行加法器比串行加法器的资源占用差距也会越来越大。
4 位二进制并行加法器和串行级联加法器占用几乎相同的资源。
这样,多位数加法器由4 位二进制并行加法器级联构成是较好的折中选择。
因此本文中的8 位加法器采用两个4位二进制并行加法器级联而成。
2. 方案实施2.1 并行四位全加器2.1.1 源程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity adder8 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 adder8;architecture art of adder8 iscomponent adder4 isport(c: in std_logic;a: in std_logic_vector(3 downto 0);b: in std_logic_vector(3 downto 0);s: out std_logic_vector(3 downto 0);co: out std_logic);end component adder4;signal sc: std_logic;beginu1: adder4 port map(c8,a8(3 downto 0),b8(3 downto 0),s8(3 downto 0),sc); u2: adder4 port map(sc,a8(7 downto 4),b8(7 downto 4),s8(7 downto 4),co8); end architecture art;2.1.2 波形仿真图高位运算必须要等低位进位来到后才能进行,并行四位全加器可以胜任高速运算。
原题目:实现一个8位全加器电路。
原题目:实现一个8位全加器电路。
实现一个8位全加器电路介绍本文档旨在说明如何实现一个8位全加器电路。
全加器电路是一种用于对两个二进制数进行加法运算的电路。
原理全加器电路由三个输入和两个输出组成。
输入包括两个二进制数位和一个进位位,输出为一个和位和一个进位位。
全加器电路的逻辑如下:- 和位的输出等于输入位和进位位的异或结果- 进位位的输出等于输入位和进位位的与运算结果以及输入位间的或运算结果实现要实现一个8位全加器电路,需要按照以下步骤进行:1. 首先,确定所需的器件和元件。
一个全加器电路通常由逻辑门和触发器构成。
逻辑门可以使用与门、或门、异或门等。
触发器可以使用D触发器、JK触发器等。
2. 根据所需的功能和规格,选择适合的逻辑门和触发器。
3. 依照全加器电路的原理,设计电路图。
将逻辑门和触发器按照一定的连接方式进行连接,满足和位和进位位的运算要求。
4. 制作电路板并连接电路。
根据设计的电路图,将所选的逻辑门和触发器按照正确的接线方式进行连接。
5. 进行电路测试。
使用适当的输入信号(两个二进制数位和一个进位位),检查和位和进位位的输出是否符合预期的结果。
6. 优化电路。
根据测试结果,如果电路效果不好或未能达到预期的输出结果,可以尝试优化电路的设计,调整逻辑门和触发器等元件的选择,重新布线等。
7. 验证电路的正确性。
通过多次测试,确保电路能够稳定地进行加法运算,输出正确的和位和进位位。
结论通过以上步骤,我们可以成功实现一个8位全加器电路。
全加器电路在计算机系统中扮演重要的角色,用于进行二进制数的加法运算。
FPGA 8位全加器的原理图设计
3-8. 在QuartusII中用原理图输入法设计8位全加器1、实验目的:熟悉利用QuartusⅡ的原理图输入方法设计简单组合电路,掌握层次化设计的方法,并通过一个8位全加器的设计把握利用EDA软件进行原理图输入方式的电子线路设计的详细流程。
2、实验原理:先由一个半加器构成一个全加器,8位全加器可以由8个1位全加器构成,加法器间的进位可以串行方式实现,即将低位加法器的进位输出cout与相临的高位加法器的最低进位输入信号cin 相接。
3、实验内容及过程:在D盘下建立一个新的文件夹为ADDER8。
本设计的思路是先设计1个1位半加器,因此建立新建文件夹D:/ ADDER8/h_adder;要利用1位的半加器构造1位的全加器,因此建立新建文件夹D:/ADDER8/f_adder;要利用1位的全加器构造8位的全加器,因此建立新建文件夹D:/ADDER8/adder8;(1)、用原理图输入法构造1位半加器打开QuartusII软件,选择菜单File-New,在弹出的New对话框中选择原理图文件编辑输入项Block Diagram/Schematic File(如图4-1所示),按ok按钮后将打开原理图编辑窗口。
(2)建立一个初始原理图。
在编辑窗口中的任何一个位置上右击鼠标,选择输入原件项Insert-Symbol,或者直接双击原理图编辑窗口,于是将弹出如图4-2所示原件对话框。
在坐下的Name栏键入输入引脚符号input。
然后单击ok按钮。
即可将元件调入原理图编辑窗口。
图4-1 图4-2(3)原理图文件存盘。
选择菜单File-Save As,将此原理图文件存于刚才建立的目录D:/ ADDER8/h_adder 中,取文件名为:h_adder.bdf。
然后将h_adder.bdf设定为工程,创建工程。
(4)绘制半加器原理图。
在工程管理窗口,双击工程名,再次进入原理图编辑窗。
双击原理图任何位置,再次弹出4-2的对话框。
八位全加器原理图设计实验报告
南通大学计算机科学与技术学院课程实验报告
课程名称:计算机组成原理年级:2012级上机日期:11月6日姓名:学号:班级:信管122
实验名称:八位全加器设计教师:陈越成绩:
上图为n个1位的全加器FA级联成的n位的行波进位加减器。
M为方式控制输入线,当M=0时,做加法运算;当M=1时,做减法运算。
图中左边还表示出单符号位法的溢出检测逻辑:当C n=C n-1时,运算无溢出;而当C n≠C n-1时,运算有溢出,经异或门产生溢出信号,0无溢出,1表示溢出。
四、内容及步骤(包括程序流程及说明)
1.建立add8项目
2.建立一位全加器原理图,输入如下
3.将一位全加器封装成芯片FA,如图
4.将FA级联成8位全加器如图,至此8位全加器原理图设计完毕
四、运行结果
建立波形文件,验证8位全加器。
8位全加器的设计与实现
实验二 8位全加器的设计与实现[实验目的]1 掌握Quartus II 环境下原理图输入、编译综合、仿真、引脚锁定、下载及硬件测试测试方法;2 掌握Quartus II 对FPGA 的设计方法。
3 学习8位全加器原理图的设计,掌握Quartus II 原理图层次化设计方法。
[实验仪器]Pentium PC 机 、EDA 实验箱 各一台 Quartus II 6.0软件 [实验内容]采用Quartus II 原理图输入方式及层次化设计方法设计8位全加器并进行器件编程、检测。
1. 完成全加器的设计(包括原理图输入、编译综合、适配、仿真并将它们设置成硬件符号入库)。
2. 建立顶层原理图文件。
采用已产生的全加器元件设计一个8位串行全加器电路,并完成编译综合、适配、仿真和硬件测试。
一、一位全加器每个全加器有三位输入,分别是加数A,B 和一个进位位CI 。
将这三个数相加,得出全加和数D 和进位数CO 。
这个过程称为”全加”,全加器的真值表参见表1。
全加器的真值表1 A B CI CO D0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 1 1 0 1 0 0 0 1 1 0 1 1 0 1 1 0 1 0 1 1 1 11由表2得: ABCI CI AB CI B A BCI A CO +++= D ABCI ABCI ABCI ABCI =+++ 可用两个四选一芯片完成。
原理图如下:ABCI100011110111cout D0D1D2D31ABCI100011110111S D0D1D2D31可得:Cout 的连接方式如下: D0=0;D1=CI=D2;D3=1 S 的连接方式如下: D0=CI;D1=CI =D2;D3=CI选用两片4选1,可绘制全加器如图1所示。
VCCciINPUT VCC A INPUT VCCBINPUT SOUTPUTCOUTOUTPUT S0D2S1D3D0INH D1QMUX41inst9NOTinst10S0D2S1D3D0INH D1Q MUX41instGNDVCC图1一位全加器1. 为全加器项目工程设计建立文件夹Windows 环境下在D :盘建立8位加法器设计项目的文件夹,取名为adder8, 路径为d :\adder8。
CMOS数字集成电路设计_八位加法器实验报告
CMOS数字集成电路设计课程设计报告学院:******专业:******班级:******姓名:Wang Ke qin指导老师:******学号:******日期:2012-5-30目录一、设计要求..............................................错误!未定义书签。
二、设计思路..............................................错误!未定义书签。
三、电路设计与验证........................................错误!未定义书签。
(一) 1位全加器的电路设计与验证........................错误!未定义书签。
1) 原理图设计......................................错误!未定义书签。
2) 生成符号图......................................错误!未定义书签。
3) 建立测试激励源..................................错误!未定义书签。
4) 测试电路........................................错误!未定义书签。
5) 波形仿真........................................错误!未定义书签。
(二) 4位全加器的电路设计与验证........................错误!未定义书签。
1) 原理图设计......................................错误!未定义书签。
2) 生成符号图......................................错误!未定义书签。
3) 建立测试激励源..................................错误!未定义书签。
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)。
实验三 用原理图输入法设计8位全加器
实验三用原理图输入法设计8位全加器一、实验目的:熟悉和掌握用QUARTUS Ⅱ的原理图输入方法设计简单组合电路的方法,并通过一个8位全加器的设计掌握用EDA软件进行电子线路设计的详细流程。
二、实验原理:一个8位全加器可以由8个1位全加器构成,加法器间的进位可以串行方式实现,即将低位加法器的进位输出cout与相邻的高位加法器的最低位输入信号cin相接。
三、实验内容:1.打开原理图编辑器,完成半加器和全加器的设计。
包括原理图输入、编译、综合、适配、仿真、实验板上的硬件测试,并将此全加器电路符号入库。
详细的过程见教材相关章节。
根据以上步骤画出以下原理图:1位半加器的原理图。
名字hadder.2.在完成1位半加器的原理图后,进行编译综合之后,选择File\create\Create Symbol file for current file,将文件变成一个包装好的单一元件模块待调用。
运用以上包装好的1位半加器可画以下1 位全加器,名字adder。
3. 在完成1位全加器的原理图后,进行编译综合之后,选择File\create\Create Symbol file for cur建立一个更高的原理图设计层次,利用以上获得的1位全加器构成8位全加器,并完成编译、综合、适配、仿真和测试。
4.运用以上包装好的1 位半加器、全加器,可画以下8位的全加器,rent file,将文件变成一个包装好的单一元件模块待调用。
四.注意事项:每一个设计(文本或原理图)都能创建一个原理图符号,并且也只可以在同工程设计中被调用。
五.图形及仿真效果:1. 1位半加器的原理图:1位半加器的仿真结果:2. 1 位全加器的原理图:1位全加器的仿真结果:3. 8位的全加器的原理图:8位全加器的仿真结果:。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
<实验报告一>
学生姓名:
班级学号:
指导老师:
<基于封装设计思想实现8位全加器>
一、实验名称:基于封装设计思想实现8位全加器
二、实验学时:3学时
三、实验目的:
1) 在掌握QuartusII软件环境和全加器原理的基础上,重点学习
Verilog封装的设计方法。
2)进一步巩固文本和图形法结合的设计方法。
四、实验内容
分别用原理图输入法和文本输入法来设计八位全加器。
1)原理图输入法:
给出一位全加器的原理图,在quartusⅡ中封装一位全加器,再用它顺序链接形成八位全加器。
2)文本输入法:
用Verilog语言编写源程序来实现八位全加器。
五、实验仪器
1.PC机
2. 数字系统设计实验开发板
六、实验步骤
1)熟悉quartusII的使用
a)打开开发环境,如图表1
图表 1
2)原理图输入法
a) 我们在这里给出一位加法器的原理图图表2。
图表 2
b) 给出一位加法器的真值表图表3。
图表 3
3) 文本输入方法
i.创建Verilog程序文件,如图表。
图表 5
ii.把同学们自己写的源程序输入进去,然后编译,如果不
明白,可以参考以前的实验。
iii.代码可以参考《V erilog数字系统设计教程》,P199,进行设计。
4)通过文本输入法或原理图输入法实现一位加法运算器,并将其封装,然后通过8个一位加法器的链接实现8位加法器。
封装方法:一位加法器程序编写并编译通过后,点击
File->Creat/Update->Creat Symbol Files for Current File可以产生与module同名的元器件,然后可以通过对器件的连接产生一个8位加法器。
请同学们根据一位加法器设计出8位加法器的电路图。
然后进行仿真。
我们在这里提供一个4位加法器的参考设计图6.
图表 4
七、实验结果
1.文本输入法
1.1一位全加器:
程序代码:
module one_bit(s,co,x,y,ci);
input x,y,ci;
output s,co;
wire a,b,c;
xor (s,ci,x,y);
and
and1(a,x,y),
and2(b,x,ci),
and3(c,y,ci);
or (co,a,b,c);
endmodule
波形图:
1.2 八位全加器
程序代码:
module eight_bit(s,co,x,y); input [7:0] x,y;
output [7:0] s;
output co;
assign {co,s}=x+y;
endmodule
波形图:
2.原理图输入法:2.1 一位全加器原理图:
波形图:
2.2 八位全加器:原理图:
波形图:
八、问题讨论:
为什么我们有时候用always,而有时候又用assign,同学们能否正确区分它们的区别?
assign语句即持续赋值语句,主要用于对wire型变量的赋值,因为wire即线型的值不能存住,需要一直给值,所以需要用持续赋值。
always语句即过程赋值语句,主要用于reg 型变量的赋值,因为always语句被执行是需要满足触发条件的,所以always过程块里面的内容不是每时每刻都被执行,因此需要将被赋值的对象定义成寄存器类型,以便这个值能被保持住。
九、附录
程序代码:
1.1一位全加器:
程序代码:
module one_bit(s,co,x,y,ci);
input x,y,ci;
output s,co;
wire a,b,c;
xor (s,ci,x,y);
and
and1(a,x,y),
and2(b,x,ci),
and3(c,y,ci);
or (co,a,b,c);
Endmodule
1.2 八位全加器
程序代码:
module eight_bit(s,co,x,y); input [7:0] x,y;
output [7:0] s;
output co;
assign {co,s}=x+y;
endmodule。