8位全加器的设计与实现
8位串行全加器设计
![8位串行全加器设计](https://img.taocdn.com/s3/m/0d63260f86c24028915f804d2b160b4e777f814d.png)
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位全加器的设计
![实验六 8位全加器的设计](https://img.taocdn.com/s3/m/2d007bec551810a6f5248611.png)
实验六8位全加器的设计实验报告一、实验要求1、GW48实验箱;2、用原理图输入方式设计8位全加器,并进行编译、仿真、下载;3、总结实验步骤和实验结果。
二、实验内容1、本设计中的8位二进制并行加法器即是由两个4位二进制并行加法器级联而成的,其电路原理图如图所示2、完成4位全加器ADDER4B的设计,并将此全加器电路设置成一个硬件符号入库。
建立一个更高的原理图设计层次,可以取名为ADDER8B。
利用以上获得的4位全加器构成8位全加器,并完成编译,仿真和硬件测试。
3、硬件逻辑验证:选择实验电路结构图NO.1和上图确定引脚的锁定。
如可取实验电路结构图的PIO3~PIO0接A[3..0],PIO7~PIO4接A[7..4],PIO11~PIO8接B[3..0],PIO15~PIO12接B[7..4],PIO49接CIN。
此加法器的被加数A和加数B分别由键2与键1、键4与键3输入,加法器的最低位进位CIN由键8输入,计算和S将分别通过PIO23~PIO20,PIO19~PIO16输出并显示于数码管6(高四位)和数码管5(低四位),溢出进位COUT由PIO39输出,当有进位时,结果显示于发光管D8上。
参考源程序:4位二进制并行加法器的源程序ADDER4Bmodule ADDER4B(A,B,CIN,S,CONT);output [3:0]S;output CONT;input [3:0]A,B;input CIN;assign {CONT, S}=A+B+CIN;endmodule三、实验步骤1、创建文件Max-plus->text editor源代码2、创建缺省符号(Creat Default Symbol)然后添加到框图中:3、连线并标注接口4、编译5、仿真6、下载1)引脚锁定2)开始下载四、实验结果选择实验电路结构图NO.1,此加法器的被加数A和加数B分别由键2与键1、键4与键3输入,加法器的最低位进位CIN由键8输入,当有进位时,结果显示于发光管D8上。
八位全加器原理图设计实验报告
![八位全加器原理图设计实验报告](https://img.taocdn.com/s3/m/a70604e019e8b8f67c1cb989.png)
南通大学计算机科学与技术学院课程实验报告
课程名称:计算机组成原理年级: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位全加器](https://img.taocdn.com/s3/m/3865940f76c66137ee061993.png)
原理图输入设计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位二进制全加器设计实验报告
![8位二进制全加器设计实验报告](https://img.taocdn.com/s3/m/fb74101d0066f5335a8121da.png)
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文件,例化元件,生成可以使用的元件。
实验一 八位全加器的设计
![实验一 八位全加器的设计](https://img.taocdn.com/s3/m/88c642e26294dd88d0d26b1a.png)
电子科技大学电子工程学院标准实验报告(实验)课程名称EDA技术与应用**:**学号:*****************:**电子科技大学教务处制表实验一八位全加器的设计一、预习内容1.结合教材中的介绍熟悉QuartusⅡ软件的使用及设计流程;2.八位全加器设计原理。
二、实验目的1.掌握图形设计方法;2.熟悉QuartusⅡ软件的使用及设计流程;3.掌握全加器原理,能进行多位加法器的设计。
三、实验器材PC机一台、EDA教学实验系统一台、下载电缆一根(已接好)、导线若干四、实验要求1、用VHDL设计一个四位并行全加器;2、用图形方式构成一个八位全加器的顶层文件;3、完成八位全加器的时序仿真。
五、实验原理与内容1、原理:加法器是数字系统中的基本逻辑器件。
例如:为了节省资源,减法器和硬件乘法器都可由加法器来构成。
但宽位加法器的设计是很耗费资源的,因此在实际的设计和相关系统的开发中需要注意资源的利用率和进位速度等两方面的问题。
多位加法器的构成有两种方式:并行进位和串行进位方式。
并行进位加法器设有并行进位产生逻辑,运算速度快;串行进位方式是将全加器级联构成多位加法器。
通常,并行加法器比串行级联加法器占用更多的资源,并且随着位数的增加,相同位数的并行加法器比串行加法器的资源占用差距也会越来越大。
实验表明,4 位二进制并行加法器和串行级联加法器占用几乎相同的资源。
这样,多位数加法器由4 位二进制并行加法器级联构成是较好的折中选择。
因此本实验中的8 位加法器采用两个4位二进制并行加法器级联而成。
2、实现框图:1)四位加法器四位加法器可以采用四个一位全加器级连成串行进位加法器,实现框图如下图所示,其中CSA为一位全加器。
显然,对于这种方式,因高位运算必须要等低位进位来到后才能进行,因此它的延迟非常可观,高速运算肯定无法胜任。
通过对串行进位加法器研究可得:运算的延迟是由于进位的延迟。
因此,减小进位的延迟对提高运算速度非常有效。
8位串行全加器设计
![8位串行全加器设计](https://img.taocdn.com/s3/m/e48570e2b1717fd5360cba1aa8114431b90d8eee.png)
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位二进制数的次低位和第一个全加器的进位,以此类推。
最后一个全加器的输出即为所求的和。
八位全加器设计
![八位全加器设计](https://img.taocdn.com/s3/m/4804f5d088eb172ded630b1c59eef8c75fbf9517.png)
八位全加器设计一、实验目的熟悉利用QuartusⅡ的原理图输入方法设计简单组合电路,掌握层次化设计的方法,并通过一个8位全加器的设计把握利用EDA软件进行原理图输入方式的电子线路设计的详细流程。
二、实验原理及仿真结果方案一8位全加器可以由8个1位全加器构成,加法器间的进位可以串行方式实现,即将低位加法器的进位输出cout与下一级一位全加器的进位输入信号cin相连。
设计流程(含仿真波形图):1、全加器的实现:由半加器加上组合电路实现。
仿真结果为:2、八位全加器的实现:由八个全加器组合生成八位全加器。
仿真结果为:方案二直接调用Quartus内部的宏功能模块LPM_ADD_SUB来实现8位全加器,其电路结构图如下:仿真结果为:方案三利用VHDL语言的运算操作符“+”和并置符“&”,可以通过少量的代码来实现复杂的全8位加器,关键代码如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_unsigned.ALL;ENTITY fulladderarray ISPORT(aa: IN STD_LOGIC_vector(7 downto 0);bb: IN STD_LOGIC_VECTOR(7 DOWNTO 0);cin: IN STD_LOGIC;sum: out STD_LOGIC_VECTOR(7 DOWNTO 0);cout: OUT STD_LOGIC);END ENTITY fulladderarray ;ARCHITECTURE one OF fulladderarray ISsignal nn: std_logic_vector(8 downto 0);BEGINnn<='0'& aa+bb+cin;sum<=nn(7 downto 0);cout<=nn(8);END ARCHITECTURE one;仿真结果为:三、方案比较三种方案的仿真时间如下:三种方案对FPGA的资源利用数量为:方案一方案二方案三经比较分析可得:方案一用时最多,方案三最少;方案一和方案三都用了较少的内部资源,方案一利用了较多的内部资源。
8位二进制全加器设计+杭州电子科技大学+EDA实验报告
![8位二进制全加器设计+杭州电子科技大学+EDA实验报告](https://img.taocdn.com/s3/m/0cb74c7001f69e31433294b7.png)
《EDA技术》实验报告实验名称: 8位二进制全加器设计一、实验设计要求以一位二进制全加器为基本元件,用例化语句写出8位并行二进制全加器的顶层文件,并讨论此加法器的电路特性。
二、设计原理电路结构图或原理图电路功能描述定义了8位二进制全加器顶层设计元件端口信号,输入端口:AIN, BIN,是八个二进制数,数据类型被定义为STD_LOGIC_VECTOR。
CIN是输入的进位,数据类型IN STD_LOGIC;输出端口:SUM为和,数据类型IN STD_LOGIC COUT 为输出的进位。
定义了7个信号C1, C2, C3,C4,C5,C6,C7作为器件内部的连接线,采用映射语句port map()将8个一位二进制全加器连接起来构成一个完整的全加器。
低位全加器进位输出端连到高一位全加器的进位输入端,任何一位的加法运算必须等到低位加法完成时才能进行,这种进位方式称为串行进位三、实验程序程序1:半加器描述程序2:一位二进制全加器设计顶层描述功能:程序功能简介程序3:8位并行二进制全加器顶层文件四、编译及仿真结果选用器件型号cyclone编译后使用器件资源情况、引脚配置情况(硬件实验)时序分析结果(最大延时路径、最大时钟频率等等)程序仿真波形图(结合文字分析仿真结果)仿真结果显示:该设计是成功的。
输入的进位也要加上去。
0---255 全加器的COUNT 没有进位,而当加到256,COUNT=1,SUM输出0.五、总结.1 编译不通过,检查后发现在建立工程时,同一工程的所有文件都必须放在同一文件夹中,而这一步没做。
2 程序中没有将文件名与实体名保持一致出错。
输入半加器的VHDL程序保存文件,将输入的VHDL语言程序保存为h _adder.vhd.3 ror: Can't name logic function scfifo0 of instance "inst" -- function has same name as current design file原因:模块的名字和project的名字重名了措施:把两个名字之一改一下,一般改模块的名字4 在QuartusII下进行编译和仿真的时候,会出现一堆warning,虽然编译仿真通过了,有的提醒可以忽视,但是有的还是需要引起重视的。
EDA综合实验——八位全加器 -张炘
![EDA综合实验——八位全加器 -张炘](https://img.taocdn.com/s3/m/a4f18166a98271fe900ef90f.png)
1.实验步骤正确,完成了本实验的全部内容。很好( ) 一般( ) 否( )
2.实验数据全面,调试步骤准确,结果正确。很好( ) 一般( ) 否( )
3.实验报告格式规范,图表清晰。很好( ) 一般( ) 否( )
教师签名
王红航
批改时间
年月日
学生实验报告
系别
电子信息学院
课程名称
《EDA综合实验》
班级
10通信A
实验名称
8位全加器的设计
姓名
张炘
实验时间
2012年9月24日
学号
2010010101073
指导教师
王红航
报告内容
一、实验目的和任务
本次实验的目的和任务是:1熟悉QUARTUES软件的使用及操作页面。2如何新建一个工程。2熟悉四位加法器的使用,对原理图的设计编译仿真和编译错误后如何处理解决问题。3 FPGA芯片的选择和对引脚的软件选择。4对实验箱的简单操作。
、
上图也为八位全加器的仿真时序图,但此图只是逻辑仿真,从图中看出得到所设计的八位全加器的基本逻辑功能正确。
上图为对八位加法器的引脚的划分情况,FPGA芯片的选择为EP1K30TC144-3.
四、实验结论与心得
因为本来就有学过QUARTUES的基本使用方法,所以对于软件的操作感觉并不是很难弄,但由于以前是自学这款软件所以学习的内容没有系统全面化,老师讲的一些内容感觉很有用,在做实验时有的问题是对实验箱的使用其中一位二极管不停的闪灭,最后发现其原因是由于那次实验的八位加法器的进位位没接FPGA的引脚然后其电平不断地在高低电平变动导致了不停的亮灭的情况,解决方法是只要接上进位位的引脚或直接接低电平即可。实验的目的和任务在本次实验中都已达到,顺便帮组本组或他组同学学习使用QUARTUES软件和对实验箱的使用。
8位加法器设计程序过程
![8位加法器设计程序过程](https://img.taocdn.com/s3/m/237cbeaab9f67c1cfad6195f312b3169a451ea8b.png)
8位加法器设计程序过程八位加法器是一种组合逻辑电路,用于计算两个八位二进制数的和。
在设计过程中,需要确定输入和输出的位数、电路逻辑、输入输出关系等。
下面是一个八位加法器设计程序的详细过程。
1.确定输入和输出的位数:首先,我们需要明确八位加法器的输入和输出的位数。
在这个例子中,我们使用八位二进制数作为输入,并需要输出一个八位的和。
因此,输入和输出的位数均为8位。
2.确定输入和输出的表示形式:在计算机中,二进制数通常以补码形式进行表示。
因此,在这个例子中,我们将使用补码表示输入和输出。
3.分析电路逻辑:一个八位加法器由八位的全加器以及一个进位逻辑组成。
全加器用于计算两个相应位数相加的结果,而进位逻辑负责处理进位位。
因此,我们需要设计八个全加器和一个进位逻辑。
4.设计全加器电路:全加器是八位加法器的核心部分,用于计算两个位的和以及进位。
全加器的输入包括两个加数位和一个来自前一位的进位位。
输出包括和位以及进位位。
以下是一个典型的全加器电路:- 输入:A、B和C_in- 输出:Sum和C_out-逻辑表达式:Sum = A 异或 B 异或 C_inC_out = (A and B) 或 (C_in and (A 异或 B))设计八个这样的全加器电路,分别用于计算八个相应位数的和以及进位。
5.设计进位逻辑电路:进位逻辑电路负责处理来自各个位的进位。
具体来说,进位逻辑电路需要计算进位位以及进位到下一位的值。
以下是一个典型的进位逻辑电路:- 输入:C_in、C_0、C_1、C_2、C_3、C_4、C_5、C_6 和 C_7- 输出:C_out 和 C_next-逻辑表达式:C_out = C_7C_next = (C_6 and C_7) 或 (C_5 and (C_6 or C_7)) 或 (C_4 and (C_5 or (C_6 or C_7))) 或 ......(C_1 and (C_2 or (C_3 or (C_4 or (C_5 or (C_6 or C_7))))))其中,C_out代表从最高位传出的进位,C_next代表传递给下一位的进位。
用原理图方法设计8位全加器
![用原理图方法设计8位全加器](https://img.taocdn.com/s3/m/28b7a21f227916888486d770.png)
实验报告一一、实验目的熟悉利用QuartusII的原理图输入方法设计简单电路,掌握层次化设计的方法,并通过一个8位全加器的设计把握利用EDA软件进行电子线路设计的详细流程。
二、实验内容1.根据工作原理,完成1位半加器和全加器的设计;2.建立一个更高的原理图设计层次,利用以上获得的1位全加器构成8位全加器,并完成编译、综合、适配、仿真。
三、实验环境计算机、QuartusII软件四、实验步骤1.根据半加器工作原理,建立电路并仿真,并将元件打包。
(1)电路(2)仿真:仿真结果分析:S为和信号,当A=1,B=0或A=0,B=1时,和信号S为1,否则为0.当A=B=1时,产生进位信号,及CO=1。
(3)打包后的文件:2.利用半加器构成一位全加器,并打包。
(1)电路(2)仿真仿真结果分析:CI为来自低位的进位,S=A xor B xor CI,即:当A,B,CI中有一位为高电平‘1’或者三位同时高电平为‘1’,则S=1,否则S=0;当A,B,CI有两位或者三位同为高电平‘1’时,产生进位信号CO=‘1’。
(3)打包后的文件3.利用全加器构成8位全加器,并完成编译、综合、适配、仿真。
(1)电路(2)仿真仿真结果分析:八位全加器,和S分别与A,B 对应。
当来自第七位的进位信号为‘1’、A 的最高位和B的最高位三者有两个位高电平‘1’时,则产生进位信号CO=‘1’。
五、实验结果与讨论实验的仿真结果与预计的结果一致,所以所设计的电路是正确的。
不足的地方有:1、对软件还不够熟悉,所以操作的有点慢;2、设计电路时,由于数字电路的知识有些开始淡忘了,所以应当及时去补缺补弱。
六、总结思考题:为了提高加法器工作速度,如何改进以设计的进位方式?答:采用超前进位。
串行加法器的第i位进位是由0~(i-1)决定的,而超前进位是事先得出每一位全加器的进位输出信号,而无需再从低位开始向高位逐位传递进位信号了,这就有效地提高了工作速度了。
八位全加器
![八位全加器](https://img.taocdn.com/s3/m/8f2c88e1172ded630b1cb6f0.png)
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后存盘。
八位全加器
![八位全加器](https://img.taocdn.com/s3/m/44d1e6f0700abb68a982fbe5.png)
西安邮电大学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位全加器电路。](https://img.taocdn.com/s3/m/3874ba84ba4cf7ec4afe04a1b0717fd5360cb2d9.png)
原题目:实现一个8位全加器电路。
实现一个8位全加器电路介绍本文档旨在说明如何实现一个8位全加器电路。
全加器电路是一种用于对两个二进制数进行加法运算的电路。
原理全加器电路由三个输入和两个输出组成。
输入包括两个二进制数位和一个进位位,输出为一个和位和一个进位位。
全加器电路的逻辑如下:- 和位的输出等于输入位和进位位的异或结果- 进位位的输出等于输入位和进位位的与运算结果以及输入位间的或运算结果实现要实现一个8位全加器电路,需要按照以下步骤进行:1. 首先,确定所需的器件和元件。
一个全加器电路通常由逻辑门和触发器构成。
逻辑门可以使用与门、或门、异或门等。
触发器可以使用D触发器、JK触发器等。
2. 根据所需的功能和规格,选择适合的逻辑门和触发器。
3. 依照全加器电路的原理,设计电路图。
将逻辑门和触发器按照一定的连接方式进行连接,满足和位和进位位的运算要求。
4. 制作电路板并连接电路。
根据设计的电路图,将所选的逻辑门和触发器按照正确的接线方式进行连接。
5. 进行电路测试。
使用适当的输入信号(两个二进制数位和一个进位位),检查和位和进位位的输出是否符合预期的结果。
6. 优化电路。
根据测试结果,如果电路效果不好或未能达到预期的输出结果,可以尝试优化电路的设计,调整逻辑门和触发器等元件的选择,重新布线等。
7. 验证电路的正确性。
通过多次测试,确保电路能够稳定地进行加法运算,输出正确的和位和进位位。
结论通过以上步骤,我们可以成功实现一个8位全加器电路。
全加器电路在计算机系统中扮演重要的角色,用于进行二进制数的加法运算。
设计8位全加器
![设计8位全加器](https://img.taocdn.com/s3/m/defed72de2bd960590c67716.png)
实验一设计8位全加器一、实验目的1、掌握运用MAX+plusII原理图编辑器进行层次电路系统设计的方法。
2、进一步熟悉利用MAX+plusII进行电路系统设计的一般流程。
3、掌握8位全加器原理图输入设计的基本方法及过程。
二、实验原理一个8位全加器可以由8个1位全加器构成,加法器间的进位可以以串行方式实现,即将低位加法器的进位输出cout与相邻的高位加法器的最低进位输入信号cin相连接。
而一个1位全加器则可由实验一包装元件入库得到。
三、实验过程1、先进行一位半加器的设计,设计原理图如下:链接时没有错误,进行波形仿真:仿真波形分析:输入:a=0、b=0时,输出:so=0、co=0输入:a=0、b=1时,输出:so=1、co=0输入:a=1、b=0时,输出:so=1、co=0输入:a=1、b=1时,输出:so=0、co=1存在一定的延迟,仿真结果与理论分析符合。
封装之后的效果图:上图:a、b为输入端口,co、so为输出端口2、再由两个半加器构成一个一位全加器设计原理图如下:链接时没有错误,进行波形仿真:仿真波形分析:输入:ain=1、bin=0、cin=0时,输出:sum=1、cout=0 输入:ain=1、bin=0、cin=1时,输出:sum=0、cout=1输入:ain=1、bin=1、cin=1时,输出:sum=1、cout=1输入:ain=1、bin=1、cin=0时,输出:sum=0、cout=1 在存在延迟的情况下,仿真结果与理论分析一致。
封装之后的效果图:输入端:ain、bin、cin,输出端:sum、cout3、最后有8个一位全加器构成8位全加器,原理图如下:链接时没有错误,进行波形仿真:在一定的延迟的基础前提下,仿真的结果与理论的一致封装之后的效果图:左端全部为输入端,右端为输出端。
实验一 8位全加器
![实验一 8位全加器](https://img.taocdn.com/s3/m/4c9b93006c85ec3a87c2c5b2.png)
实验一: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)。
回去以后尽快填写纸质实验报告,并在下次做实验的时候交上来。
EDA综合实验——八位全加器
![EDA综合实验——八位全加器](https://img.taocdn.com/s3/m/8d96db64366baf1ffc4ffe4733687e21af45ffe7.png)
学生实验报告系别电子信息学院课程名称《EDA综合实验》班级实验名称8位全加器的设计姓名实验时间2014年月日学号指导教师王红航成绩批改时间2014年月日报告内容一、实验目的和任务利用Quartus II 原理图输入方法设计简单组合电路, 通过一个8位全加器的设计掌握利用EDA软件进行原理图输入方式的电子线路设计的详细流程。
二、实验原理介绍三、一个8位全加器可以由2个4位全加器构成, 加法器间的进位可以用串行方式实现, 即将低位加法器的进位输出cout 与相邻的高位加法器的最低进位输入信号cin相接。
四、设计代码(或原理图)、仿真波形及分析在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.证明设计是正确的。
8位全加器的设计与实现
![8位全加器的设计与实现](https://img.taocdn.com/s3/m/e32584a265ce050876321374.png)
实验二 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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二 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 D
0 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 1
1
由表2得: ABCI CI AB CI B A BCI A CO +++= D ABCI ABCI ABCI ABCI =+++ 可用两个四选一芯片完成。
原理图如下:
A
BCI
1
0001111011
1
cout D0D1D2D31
A
BCI
1
00011110111S D0D1D2
D3
1
可得:
Cout 的连接方式如下: D0=0;D1=CI=D2;D3=1 S 的连接方式如下: D0=CI;D1=CI =D2;D3=CI
选用两片4选1,可绘制全加器如图1所示。
VCC
ci
INPUT VCC A INPUT VCC
B
INPUT S
OUTPUT
COUT
OUTPUT S0D2S1D3D0INH D1
Q
MUX41
inst9
NOT
inst10
S0D2S1D3D0INH D1Q MUX41
inst
GND
VCC
图1一位全加器
1. 为全加器项目工程设计建立文件夹
Windows 环境下在D :盘建立8位加法器设计项目的文件夹,取名为adder8, 路径为d :\adder8。
2. 输入原理图文件
(1) 打开Quartus II ,选择菜单File →New 。
在New 窗口中的Device Design Files
中选择硬件设计文件类型为Block Diagram/Sxhematic File ,单击OK 按钮后进入Quartus II 图形编辑窗口。
(2) 选择输入元件项Inset →Symbol ,分别调入mux41、not 元件及输入、输出端口,参照图上图合理布局、布线,最后输入各引脚名:A 、B 、ci 和s 、cout 。
(3) 原理图文件存盘,注意应选择刚才建立的文件夹
d:\adder8,将已设计好的原理图
文件取名为has.bdf,点击OK 存盘。
存盘后Quartus II 弹出“Do you want to create a new project with this file?”
窗口,窗口选择“是”,将进入建立新工程项目操作。
(具体操作见第3点) 3、 建立新工程项目
如在前一步操作中选择“否”的话,可按下面的操作建立新工程项目。
建立工程项目
包括工程名、目标器件、综合器、仿真器等的设置。
点击File →New Project Wizard 命令, 完成指定工作目录、指定工程名称等的设置,点击Next 按钮, 在弹出的Add File 对话框的File Name 栏内选择加入has.bdf 文件,下面栏内同时默认该文件。
再按Next 按钮,弹出目标芯片选择窗口,在该窗口内选择Cyclone 系列EP1C3TC144C8目标芯片(见图24).
4 编译原理图文件并将该设计设置成可调用的元件
1、选择主窗口Processing 菜单→Start Compilation 项编译综合全加器设计文件。
2、选择菜单File →Create/Update →Create Symbol Files for Current File 项,即可将当前文件设置成一个元件符号(名为has),以待在高层设计中调用。
二、8位全加器设计
选择菜单File →New ,在New 窗口中的Device Design Files 中选择硬件设计文件类型为Block Diagram/Sxhematic File ,单击OK 按钮后进入Quartus II 图形编辑窗口。
在原理图编辑窗口双击鼠标右键在弹出菜单栏内选Inset →Symbol ,于是将弹出输入元件的对话框,调出全加器元件。
该8位全加器由8个1位全加器采用串行方式实现,即将低位加法器的进位输出co 与相临的高位加法器的最低进位输入信号ci 相接。
完成8位全加器顶层原理图文件的设计、编辑、编译综合、适配、仿真和硬件测试工作。
VCC
A[8..1]
INPUT VCC
B[8..1]
INPUT S[8..1]
OUTPUT C 8
O U T P U T
c i A B
S C O U T
a d d e r
i n s t
c i A B
S C O U T
a d d e r
i n s t 3
c i A B
S C O U T
a d d e r
i n s t 4
c i A B
S C O U T
a d d e r
i n s t 7
c i A B
S
C O U T
a d d e r
i n s t 6
c i A B
S C O U T
a d d e r
i n s t 5
c i A B
S C O U T
a d d e r
i n s t 1
c i A B
S C O U T
a d d e r
i n s t 2
A [1]
B [1]
A [2]
B [2]
A [3]
B [3]
A [4]
B [4]
A [5]
B [5]
A [6]
B [6]
A [7]
B [7]
A [8]
B [8]
S [8]
S [7]
S [6]
S [5]
S [4]
S [3]
S [2]
S [1]
图2.4 目标芯片设置
模式1,按键1、2是加数;按键3、4是被加数,D1灯是高位进位。
实验结果
1.仿真图片
2.引脚锁定的信息
3、编程下载文件。