实验一:8位全加器
8位串行全加器设计
8位串行全加器设计一.实验目的1.掌握ISE开发工具的使用,掌握FPGA开发的基本步骤;2.掌握8位串行全加器电路设计的一般办法;3.掌握程序下载的办法;4.初步了解开发板资源,掌握开发板的使用方法,重点掌握按键,开关,LCD,LED的使用方法。
二.实验内容1.用VHDL实现8位串行全加器8位串行全加器顶层模块电路如下图所示。
图 8位串行全加器顶层模块其中a_in,b_in:数据输入,使用板上开关(S0~S15);sum_out:运算结果输出,使用LED显示运算结果。
2.将程序下载到FPGA并进行检验资源使用要求用开关(S0~S15)输入加数,被加数。
用 LED(D8~D15)显示运算结果。
三.实验步骤1.启动ISE,新建工程文件;2.编写8位串行全加器模块Hadder,其原理图如上图所示。
3.编写完加法器模块之后,在顶层文件上实现映射;4.新建UCF文件,输入位置约束;5.完成综合,实现,生成下载文件;6.连接开发板USB下载线,开启开发板电源;7.下载FPGA;8.输入数据,验证结果。
四.关键代码entity add_one isPort ( a_in : in STD_LOGIC;b_in : in STD_LOGIC;cin : in STD_LOGIC;si : out STD_LOGIC;cout : out STD_LOGIC);end add_one;architecture Behavioral of add_one isbeginsi<=(a_in xor b_in)xor cin;cout<=(a_in and b_in)or(cin and a_in)or(cin and b_in); end Behavioral;-- 一位加entity add_eight isPort ( a : in STD_LOGIC_VECTOR (7 downto 0);b : in STD_LOGIC_VECTOR (7 downto 0);sum : out STD_LOGIC_VECTOR (7 downto 0);c_out :out STD_LOGIC);end add_eight;architecture Behavioral of add_eight is component add_oneport( a_in,b_in,cin:in STD_LOGIC;si,cout:out STD_LOGIC);end component;signal c: STD_LOGIC_VECTOR (7 downto 0);signal c_in:STD_LOGIC:='0';beginu0: add_one port map(a(0),b(0),c_in,sum(0),c(0)); u1: add_one port map(a(1),b(1),c(0),sum(1),c(1)); u2: add_one port map(a(2),b(2),c(1),sum(2),c(2)); u3: add_one port map(a(3),b(3),c(2),sum(3),c(3)); u4: add_one port map(a(4),b(4),c(3),sum(4),c(4)); u5: add_one port map(a(5),b(5),c(4),sum(5),c(5)); u6: add_one port map(a(6),b(6),c(5),sum(6),c(6)); u7: add_one port map(a(7),b(7),c(6),sum(7),c_out); end Behavioral;--八位加。
8位全加器
目录一、设计目的和要求 (1)1.课程设计目的 (1)2.课程设计的基本要求 (1)3.课程设计类型 (1)二、仪器和设备 (1)三、设计过程 (1)1.设计内容和要求 (1)2.设计方法和开发步骤 (2)3.设计思路 (2)4.设计难点 (4)四、设计结果与分析 (4)1.思路问题以及测试结果失败分析 (4)2.程序简要说明 (5)五、心得体会 (9)六、参考文献 (9)一、设计目的和要求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位全加器一、实验目的掌握运用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键。
(注意,刚进入窗口时,应该将最下方的滑标拖向最左侧,以便可观察到初始波形)。
EDA实验讲义
实验一 带进位输入的8位加法器一、实验目的设计并实现一个8位全加器。
二、实验原理在实验三中介绍了一个一位的全加器的例子,在这里将设计一个8 位的全加器,其框图如图1-1所示。
图中的“进位入”C i-1指的是低位的进位输出,“进位出”C i 即是本位的进位输出。
图 1-1 8位全加器原理图三、实验要求全加器的17个输入所对应的管脚与17位拨码开关相连,17个输入管脚是Ai0~Ai7、Bi0~Bi7和C i-1,Ai0~Ai7、Bi0~Bi7代表两个8位二进制数,C i-1代表进位入;9个输出所对应的管脚与9位发光二极管相连,9个输出管脚是Si0~Si7和C i ,Si0~Si7代表相加结果,C i 代表进位位。
实验工程项目命名为add ,源程序命名为add_8.bdf 。
四、实验记录五、实验报告要求1、详细叙述设计过程与实验步骤;2、分析实验记录的正确性。
(被加数)(被加数)(进位入)C i-1(全加和)Si (7..0)(进位出)Ci实验二多路数据选择器一、实验目的设计并实现一个16选1多路数据选择器。
二、实验原理在VHDL语言中描述一个2选一多路选择器的方法有多种,推荐使用when else构造,这样在VHDL代码中只用1行就可以描述2选1多路选择器。
例如:library ieee;use ieee.std_logic_1164.all;entity mux2 isport(a,b,sel: in std_logic;q: out std_logic);end;architecture a of mux2 isbeginq <= a when sel=’0’ else b;end;但我们在描述一个16选1的多路选择器时,若采用同样的方法,则就需要许多行VHDL代码,此时我们可以在进程中使用case语句会很清晰,不论使用哪一种描述方法,得到的结果应该是相同的。
16选1多路选择器结构图如图2-1所示。
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技术与应用**:**学号:*****************:**电子科技大学教务处制表实验一八位全加器的设计一、预习内容1.结合教材中的介绍熟悉QuartusⅡ软件的使用及设计流程;2.八位全加器设计原理。
二、实验目的1.掌握图形设计方法;2.熟悉QuartusⅡ软件的使用及设计流程;3.掌握全加器原理,能进行多位加法器的设计。
三、实验器材PC机一台、EDA教学实验系统一台、下载电缆一根(已接好)、导线若干四、实验要求1、用VHDL设计一个四位并行全加器;2、用图形方式构成一个八位全加器的顶层文件;3、完成八位全加器的时序仿真。
五、实验原理与内容1、原理:加法器是数字系统中的基本逻辑器件。
例如:为了节省资源,减法器和硬件乘法器都可由加法器来构成。
但宽位加法器的设计是很耗费资源的,因此在实际的设计和相关系统的开发中需要注意资源的利用率和进位速度等两方面的问题。
多位加法器的构成有两种方式:并行进位和串行进位方式。
并行进位加法器设有并行进位产生逻辑,运算速度快;串行进位方式是将全加器级联构成多位加法器。
通常,并行加法器比串行级联加法器占用更多的资源,并且随着位数的增加,相同位数的并行加法器比串行加法器的资源占用差距也会越来越大。
实验表明,4 位二进制并行加法器和串行级联加法器占用几乎相同的资源。
这样,多位数加法器由4 位二进制并行加法器级联构成是较好的折中选择。
因此本实验中的8 位加法器采用两个4位二进制并行加法器级联而成。
2、实现框图:1)四位加法器四位加法器可以采用四个一位全加器级连成串行进位加法器,实现框图如下图所示,其中CSA为一位全加器。
显然,对于这种方式,因高位运算必须要等低位进位来到后才能进行,因此它的延迟非常可观,高速运算肯定无法胜任。
通过对串行进位加法器研究可得:运算的延迟是由于进位的延迟。
因此,减小进位的延迟对提高运算速度非常有效。
8位全加器实验报告
实验1 原理图输入设计8位全加器一、实验目的:熟悉利用QuartusⅡ的原理图输入方法设计简单组合电路,掌握层次化设计的方法,并通过一个8位全加器的设计把握利用EDA软件进行电子线路设计的详细流程。
二、原理说明:一个8位全加器可以由8个1位全加器构成,加法器间的进位可以串行方式实现。
即将低位加法器的进位输出cout与其相邻的高位加法器的最低进位输入信号cin相接。
而一个1位全加器可以按照本章第一节介绍的方法来完成。
三、实验内容:1:完全按照本章第1节介绍的方法与流程,完成半加器和全加器的设计,包括原理图输入、编译、综合、适配、仿真。
2:建立一个更高的原理图设计层次,利用以上获得的1位全加器构成8位全加器,并完成编译、综合、适配、仿真和硬件测试。
四、实验环境:计算机、QuartusII软件。
五、实验流程:实验流程:↓↓六、实验步骤:1.根据半加器工作原理建立电路并仿真,并将元件打包。
(1)半加器原理图:图1.2 半加器原理图(2)综合报告:图1.3 综合报告:(3)功能仿真波形图4:图1.4 功能仿真波形图时序仿真波形图:图1.5 时序仿真波形图仿真结果分析:sout为和信号,当a=1,b=0或a=0,b=1时,和信号sout为1,否则为0.当a=b=1时,产生进位信号,及cout=1。
(4)时序仿真的延时情况:图1.6 时序仿真的延时情况(5)封装元件:图1.7 元件封装图2. 利用半加器构成一位全加器,建立电路并仿真,并将元件封装。
(1)全加器原理图如图:图2.1 全加器原理图(2)综合报告:图2.2 综合报告(3)功能仿真波形图:图2.3功能仿真波形图时序仿真波形图:图2.4时序仿真波形图仿真结果分析:cin为来自低位的进位,sum=a or b or cin,即:当a,b,cin中有一位为高电平‘1’或者三位同时高电平为‘1’,则sum=1,否则sum=0;当a,b,cin有两位或者三位同为高电平‘1’时,产生进位信号cout=‘1’。
八位全加器
信息科学与工程学院《EDA技术及应用》实验报告
专业班级姓名学号
实验时间指导老师成绩
实验一(八位全加器)
调试过程及结果:
【调试过程】
1)对输入程序进行编译
错误及改正:
①将的四位全加器存放在另一个工程后未将其添加至主程序
中,导致元件例化出错。
应将ADDER4.VHDL文件加入主工程。
②打印出错。
2)选择对应元件并设计管脚
3)进行下载,仿真
【结果】
1)先对4位全加器进行调试
输入:A K1-K4;B K5-K8 进位:DI_8
初始化:K1-K8拨档开关全部臵底,LED灯全灭
2)对8位全加器进行调制
输入:A K1-K8; B S1-S8 进位:D2_1
初始化:K1-K8拨档开关全部臵底,S1-S8全部按下。
LED灯全灭
错误及改正:
由于实验设备的状态问题,出现的结果和预计的结果存在差异同,可以对设备进行多次的下载和重新运行可以看到预测结果。
EDA综合实验——八位全加器
一个8位全加器可以由2个4位全加器构成,加法器间的进位可以用串行方式实现,即将低位加法器的进位输出cout与相邻的高位加法器的最低进位输入信号cin相接。
3、设计代码(或原理图)、仿真波形及分析
在Quartus II集成环境下,选择“Bock Diagram/Schematic File”,进入Quartus II图形编辑方式。双击编辑窗口,在元件选择窗口的符号库“Library”栏中,选择”Primitives”文件夹中的”Logic”后,调出元件。根据8位加法器设计的原理图,将2个4位加法器74283及输入、输出元件符号调入,完成电路内部的连接及输入、输出元件的连接,并将相应的输入、输出元件符号名分别更改为A[7..0]、B[7..0]、SUM[7...0]和OUT2。再将当前设计设定为工程,目标芯片类型为ACEX1K;型号为EP1K30TC144-3。编译设计文件,选择“Start Compilation”对文件进行编译。然后进行逻辑仿真设计,先建立波形文件,然后输入信号节点,设置波形参量,编辑输入信号,保存文件。
时序仿真图
功能仿真图
由图片可以看出,当8位全加器的输入端口A输入为60时,B端口输入为160时,输出SUM为220,进位OUT2为0;当输入端口A输入为60时,B输入为200时,SUM为4,进位OUT2为1.当8位全加器的输入端口A输入为80时,B端口输入为200时,输出SUM为24,进位OUT2为1;当输入端口A输入为80时,B输入为160时,SUM为240,进位OUT2为0.证明设计是正确的。
学生实验报告
系别
电子信息学院
课程名称
《EDA综合实验》
班级
实验名称
8位全加器的设计
姓名
实验时王红航
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位全加器课程设计一、课程目标知识目标: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位全加器相关知识。
8位全加器设计
基于原理图的8位全加器设计实验目的:熟悉利用Quartus II的原理图输入方法设计简单的组合电路,掌握层次化设计的方法,并通过一个8位全加器的设计把握利用EDA软件进行原理图输入方式的电子线路设计的详细流程。
实验原理:一个8位全加器可以由8个1位全加器串行构成,即将低位加法器的进位输出cout与相临的高位加法器的最低位输入信号cin相接。
试验任务:1.完成半加器和全加器的设计。
2.建立一个更高层次的原理图设计,利用以上获得的1位全加器构成8位全加器,完成编译、综合、适配、仿真和硬件测试。
实验步骤:一、1位全加器设计1.建立工程文件夹adder,路径d:\adder。
2.输入设计项目和存盘原理图编辑输入流程如下:(1)打开Quartus II,选择file—>new命令,在弹出的窗口中选择block diagram/schematic file 选项,单击ok按钮后将打开原理图编辑窗口。
(2)在编辑窗口中的任何一个位置上右击,将弹出快捷菜单,选择inset—>symbol命令,将弹出元件输入对话框。
(3)单击“…”按钮,找到基本元件库路径d:/altera/90/quartus/libraries/primitives/logic项(假设软件安装在D盘),选中需要的元件,单击“打开”按钮,此元件即显示在窗口中,然后单击symbol窗口中的ok按钮,即可将元件调入原理图编辑窗口中。
也可以在name栏输入需要的元件名。
调入好元件和引脚后,连接好电路,再输入各引脚名。
(4)选择file—>save as命令,选择刚才为自己的工程建立的目录d:\adder,将已设计好的原理图取名为h_adder.bdf,并存盘此文件夹内。
3.将设计好的项目设置成可调用的元件为了构成全加器的顶层设计,必须将以上设计的半加器h_adder.bdf设置成可调用的元件。
在打开半加器原理图文件的情况下,选择file—>create/update—>create symbol file for current file命令,即可将当前文件h_adder.bdf变成一个元件符号存盘,以待高层次设计中调用。
八位全加器
西安邮电大学Verilog HDL实验报告(一)——八位全加器学院名称:电子工程学院班级:学生姓名:学号:实验题目八位全加器一、实验目的:设计的一个八位全加器。
二、实验步骤:1、在ModelSim软件中对激励模块和设计模块进行书写和编译;2、对编译好的模块进行仿真。
三、源代码:1、主程序module fulladder8(c_out,sum,a,b,c_in);output[7:0] sum;output c_out;input [7:0] a,b;input c_in;assign {c_out,sum}=a+b+c_in;endmodule2、激励程序module fulladder8_tb;reg [7:0] A,B;reg C_IN;wire[7:0] SUM;wire C_OUT;fulladder8 fulladder_8(C_OUT,SUM,A,B,C_IN);initialbeginA=8'd10;B=8'd20;C_IN=1;#100;A=8'd30;B=8'd60;C_IN=0;#100;A=8'd88;B=8'd70;C_IN=1;#100;A=8'd29;B=8'd12;C_IN=0;endEndmodule四、仿真结果及分析:输出结果:结果分析:当A=00001010,B=00010100,C_IN=1时,SUM=0001111;当A=00011110,B=0011100,C_IN=0时,SUM=01011010;当A=01011000,B=01000110,C_IN=1时,SUM=10011111;当A=00011101,B=00001100,C_IN=0时,SUM=00101001;由波形可知,SUM=A+B+C_IN;进位则C_OUT = 1六、实验总结:通过这次试验,我学会了八位全加器的实验原理,并将其用软件仿真实现。
实验一 8位全加器
实验一:8位全加器请大家先学习实验一附 Quartus II开发环境简介.doc文件,对照着完成本次实验。
实验步骤1、熟悉QUARTUSⅡ集成开发环境;2、熟悉GW48-PK2型FPGA实验箱;3、编写8位全加器的Verilog HDL源代码;4、完成计算机模拟功能仿真;5、下载到Altera ACEXEP1K30中,使用实验箱完成硬件验证;6、完成实验报告实验要求8位全加器输入:Clk,Rst_,In1,In2,Cin输出:Cout,Sum首先在实验箱左下角有个按钮模式选择,选择到模式1,红色的七段译码器会显示你所选择的模式。
下载到实验箱的时候需要查阅白皮书,首先请查阅第129页找到各实验电路结构图特点和适用范围简述:我们实验时使用结构图NO.1来实现加法器设计,结构图NO.1见白皮书P133页附图3。
关于引脚的绑定,例如键1对应PIO3-PIO0,绑定引脚的时候我们就要查阅白皮书第142页的适合于QuartusII 的部分引脚对照表选择PIO0对应的GW AK30/50 EP1K30/20/50TQC144这一列对应的引脚名称I/00,这个引脚对应与我们程序中的In1[0],依次类推,绑定好引脚In1[2],到In2[7]。
Cin绑到键7,相加的结果绑到译码器5和6。
绑定的时候注意引脚和结果的高低位顺序。
Cout绑到D1。
Rst_绑定到键8。
Clk 绑到CLOCK0。
完成实验后提交:请指导老师观看实验结果,写电子档的实验报告包括实验结果(包括仿真截图,仿真截图需要有文字说明),实验心得,代码(是.V文件)。
截图工具为键盘上的F12右边的那个PrtscSysRq键。
按下此键后,点击电脑左下角的开始—〉所有程序—〉附件—〉画图工具,打开,按住Ctrl+V粘贴图像,再保存截图即可。
提交的时候,请将文件夹命名为学号姓名(如:200531510001XXX)。
回去以后尽快填写纸质实验报告,并在下次做实验的时候交上来。
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。
实验一 八位全加器的设计 报告
实验一八位全加器的设计一、实验目的1.熟悉使用QuartusⅡ的原理图输入方法设计简单组合电路。
2.掌握层次化设计的方法,通过一个8位全加器的设计,掌握利用EDA软件进行原理图输入方式的电子线路设计的详细流程。
3.自行验证所设计电路的正确性。
二、实验内容及要求设计一个八位全加器,并进行验证。
三、实验器材1.软件:Altera公司的Quartus II软件。
2.芯片:Altera公司的EP2C8T144C8。
3.开发平台:KH-31001智能型可编程数字开发系统。
四、实验电路图原理:先由一个半加器构成一个全加器, 8位全加器可以由8个1位全加器构成,加法器间的进位可以串行方式实现,即将低位加法器的进位输出cout与相临的高位加法器的最低进位输入信号cin相接。
图1 半加器图2 一位全加器图3八位全加器五、实验步骤本设计的思路是先设计1个1位半加器,因此建立新建文件夹D:/ ADD/ADD-H;要利用1位的半加器构造1位的全加器,因此建立新建文件夹D:/ADD/ADD-F;要利用1位的全加器构造8位的全加器,因此建立新建文件夹D:/ADD/ADD8。
1.建立名为ADD-H的工程文件,并在Quartus II原理图编辑环境中绘制如图1所示的电路图;2.保存文件、检查及编译;3.建立波形文件,并进行功能仿真,仿真结果如下图4所示;图44.单击“File”菜单里的“Create/Update”选项,选择“Create Symbol Files for Current File”选项后,生成“ADD-H.bsf”格式的图元文件,使其作为顶层器件,方便后面电路编辑时使用;5.建立建立名为ADD-F的工程文件,并在Quartus II原理图编辑环境中绘制电路图,如图2所示,然后依次执行步骤2、3,得到一位全加器的仿真结果如下图5所示;图56.单击“File”菜单里的“Create/Update”选项,选择“Create Symbol Files for Current File”选项后,生成“ADD-F.bsf”格式的图元文件,方便后面电路编辑时使用;7. .建立建立名为ADD8的工程文件,并在Quartus II原理图编辑环境中绘制电路图,由一个半加器和七个全加器构成的八位全加器如图3所示,然后依次执行步骤2、3,得到八位全加器的仿真结果为下图。
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.加法器的原理加法器是计算机的基本运算单元,在各种逻辑电路中经常使用。
加法器电路分二进制和十进制两种。
一般计算机中使用的多是二进制加法电路,十进制加法电路采用对二进制加法电路进行处理的方法实现。
8位全加器
8位全加器建立一个新的原理图,建立流程如下:
画半加器,原理图如下:
画好流程图之后保存,文件名不能与自己建立的文件夹一样,要记得封装,下面附上封装流程:
重新建立一个新的原理图,画全加器原理图:
画好流程图之后保存,文件名不能与自己建立的文件夹一样,要记得封装重新建立一个新的原理图,画8位全加器原理图:
画好后保存为与文件夹名相同的文件
保存好后进行编译,编译后进行波形仿真,然后进行引脚设置:
设置完后再进行编译,之后就可以下载到实验箱中了。