_8位加法器
8位加法器的设计

实验二8位加法器的设计1.实验目的:(1)学习使用Quartus II软件的基本用法(2)了解和掌握VHDL语言的语法规则和编程方法及基本流程(3)了解VHDL语言的基本结构(4)掌握元件例化设计思想2.实验内容设计一个由两个4位二进制并行加法器级联而成的8位加法器。
参考设计方案:加法器是数字系统中的基本逻辑器件,减法器和硬件乘法器都可由加法器来构成。
多位加法器的构成有两种方式:并行进位和串行进位方式。
并行进位加法器设有进位产生逻辑,运算速度较快;串行进位方式是将全加器级联构成多位加法器。
并行进位加法器通常比串行级联加法器占用更多的资源。
随着位数的增加,相同位数的并行加法器与串行加法器的资源占用差距也越来越大。
因此,在工程中使用加法器时,要在速度和容量之间寻找平衡点。
实践证明,4位二进制并行加法器和串行级联加法器占用几乎相同的资源。
这样,多位加法器由4位二进制并行加法器级联构成是较好的折中选择,下图即为八位加法器原理框图。
3.实验要求(1)画出系统的RTL原理框图,说明系统中个主要成分的功能(2)编写VHDL程序(3)进行系统时序仿真,画出时序图(4)记录实验过程中遇到的问题及解决办法4.程序设计5.生成RTL电路图如图所示,一个8位加法器由2个4位二进制并行加法器级联构成,4位二进制并行加法器U1的进位输出串接在U2的低位进位CIN上,4位二进制并行加法器U1的输入是A、B、CIN,4位二进制并行加法器U2的输入是A、B和由U1来的进位CONT,从而得到一个8位全加器。
6.仿真波形7.实验心得在本次实验中我遇到的问题是,刚开始我以为只要把4位二进制并行加法器和8位二进制加法器的VHDL程序代码全打在ADDER8B 中编译就可以了,这样做虽然也能够编译成功,但是,结果是,Quartus II软件只默认编译的第一个源程序,也就是4位二进制并行加法器的源程序。
结果我尝试了很久才发现,原来要把两个.vhd文件分开书写,并且8位二进制加法器的顶层文件名要与程序的实体名称一致。
八位加法器设计实验报告

实验四:8位加法器设计实验1.实验目的:熟悉利用quartus原理图输入方法设计简单组合电路,掌握层次化设计方法。
2.实验原理:一个八位加法器可以由八个全加器构成,加法器间的进位可以串行方式实现,即将低位加法器的进位输出cout与相邻的高位加法器的最低进位输入信号cin相接。
3.实验任务:完成半加器,全加器,八位加法器设计,使用例化语句,并将其设计成一个原件符号入库,做好程序设计,编译,程序仿真。
1)编译成功的半加器程序:module h_adder(a,b,so,co);input a,b;output so,co;assign so=a^b;assign co=a&b;endmodule2)编译成功的全加器程序:module f_adder(ain,bin,cin,cout,sum);output cout,sum;input ain,bin,cin;wire net1,net2,net3;h_adder u1(ain,bin,net1,net2);h_adder u2(.a(net1),.so(sum),.b(cin),.co(net3));or u3(cout,net2,net3);endmodule3)编译成功的八位加法器程序:module f_adder8(ain,bin,cin,cout,sum);output [7:0]sum; output cout;input [7:0]ain,bin;input cin;wire cout0, cout1, cout2 ,cout3, cout4,cout5,cout6; f_adderu0(.ain(ain[0]),.bin(bin[0]),.cin(cin),.sum(sum[0]) ,.cout(cout0));f_adderu1(.ain(ain[1]),.bin(bin[1]),.cin(cout0),.sum(sum[1 ]),.cout(cout1));f_adderu2(.ain(ain[2]),.bin(bin[2]),.cin(cout1),.sum(sum[2 ]),.cout(cout2));f_adderu3(.ain(ain[3]),.bin(bin[3]),.cin(cout2),.sum(sum[3 ]),.cout(cout3));f_adderu4(.ain(ain[4]),.bin(bin[4]),.cin(cout3),.sum(sum[4]),.cout(cout4));f_adderu5(.ain(ain[5]),.bin(bin[5]),.cin(cout4),.sum(sum[5 ]),.cout(cout5));f_adderu6(.ain(ain[6]),.bin(bin[6]),.cin(cout5),.sum(sum[6 ]),.cout(cout6));f_adderu7(.ain(ain[7]),.bin(bin[7]),.cin(cout6),.sum(sum[7 ]),.cout(cout));endmodule4)八位加法器仿真程序:module f_adder8_vlg_tst();// constants // general purpose registers//reg eachvec;// test vector input registersreg [7:0] ain;reg [7:0] bin;reg cin;// wires wire cout;wire [7:0] sum;// assign statements (if any) f_adder8 i1 (// port map - connection between master ports and signals/registers.ain(ain),.bin(bin),.cin(cin),.cout(cout),.sum(sum));initial begin ain=10;bin=11;cin=0;#100 ain=10;bin=10;cin=0;#100 ain=10;bin=10;cin=1;#100 ain=12;bin=18;cin=0;#100 ain=12;bin=18;cin=1;#100 $stop;endendmodule5)八位加法器仿真图:6)元件原理图及元件入库:半加器原理图:文件入库bsf:全加器原理图:全加器元件入库:八位全加器rtl图:八位全加器仿真图:精品文档。
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.设计方法和开发步骤加法器是数字系统中的基本逻辑器件。
例如:为了节省资源,减法器和硬件乘法器都可由加法器来构成。
但宽位加法器的设计是很耗费资源的,因此在实际的设计和相关系统的开发中需要注意资源的利用率和进位速度等两方面的问题。
多位加法器的构成有两种方式:并行进位和串行进位方式。
并行进位加法器设有并行进位产生逻辑,运算速度快;串行进位方式是将全加器级联构成多位加法器。
实验一 八位全加器的设计

电子科技大学电子工程学院标准实验报告(实验)课程名称EDA技术与应用**:**学号:*****************:**电子科技大学教务处制表实验一八位全加器的设计一、预习内容1.结合教材中的介绍熟悉QuartusⅡ软件的使用及设计流程;2.八位全加器设计原理。
二、实验目的1.掌握图形设计方法;2.熟悉QuartusⅡ软件的使用及设计流程;3.掌握全加器原理,能进行多位加法器的设计。
三、实验器材PC机一台、EDA教学实验系统一台、下载电缆一根(已接好)、导线若干四、实验要求1、用VHDL设计一个四位并行全加器;2、用图形方式构成一个八位全加器的顶层文件;3、完成八位全加器的时序仿真。
五、实验原理与内容1、原理:加法器是数字系统中的基本逻辑器件。
例如:为了节省资源,减法器和硬件乘法器都可由加法器来构成。
但宽位加法器的设计是很耗费资源的,因此在实际的设计和相关系统的开发中需要注意资源的利用率和进位速度等两方面的问题。
多位加法器的构成有两种方式:并行进位和串行进位方式。
并行进位加法器设有并行进位产生逻辑,运算速度快;串行进位方式是将全加器级联构成多位加法器。
通常,并行加法器比串行级联加法器占用更多的资源,并且随着位数的增加,相同位数的并行加法器比串行加法器的资源占用差距也会越来越大。
实验表明,4 位二进制并行加法器和串行级联加法器占用几乎相同的资源。
这样,多位数加法器由4 位二进制并行加法器级联构成是较好的折中选择。
因此本实验中的8 位加法器采用两个4位二进制并行加法器级联而成。
2、实现框图:1)四位加法器四位加法器可以采用四个一位全加器级连成串行进位加法器,实现框图如下图所示,其中CSA为一位全加器。
显然,对于这种方式,因高位运算必须要等低位进位来到后才能进行,因此它的延迟非常可观,高速运算肯定无法胜任。
通过对串行进位加法器研究可得:运算的延迟是由于进位的延迟。
因此,减小进位的延迟对提高运算速度非常有效。
8位二进制加法计算器

一:本实验设计的是一个8为二进制加法计算器,其功能就是对两个八位的二进制数执行加法运算,并可以异步清零。
二:电路可划分为三部分:半加器、全加器和复位电路。
1、半加器:真值表a b so co0 0 0 00 1 1 01 0 1 01 1 0 1电路图2全加器:由半加器和或门组成电路图3复位电路:复位电路通过en控制,当en为‘1’时,执行加法运算,输出正确的值,当en为‘0’时,输输出及结果为全0.三:实验波形仿真和VHDL1、仿真图:2、VHDL代码1)半加器h_adder:library ieee;use ieee.std_logic_1164.all;entity h_adder isport (a,b :in std_logic;co,so :out std_logic);end entity h_adder;architecture fh1 of h_adder isbeginso <= not(a xor (not b));co <= a and b ; end architecture fh1;2)或门or2a:library ieee;use ieee.std_logic_1164.all;entity or2a isport (a,b :in std_logic;c: out std_logic);end entity or2a;architecture one of or2a isbeginc <= a or b ;end architecture one;3)全加器f_adder:library ieee;use ieee.std_logic_1164.all;entity f_adder isport (ain,bin,cin:in std_logic;cout,sum:out std_logic);end entity f_adder;architecture fd1 of f_adder iscomponent h_adderport (a,b :in std_logic;co,so :out std_logic);end component;component or2aport (a,b :in std_logic;c: out std_logic);end component;signal d,e,f: std_logic;beginu1:h_adder port map(a=>ain,b=>bin,co=>d,so=>e);u2:h_adder port map(a=>e,b=>cin,co=>f,so=>sum);u3: or2a port map(a=>d,b=>f,c=>cout);end architecture fd1;4)与门and2a:library ieee;use ieee.std_logic_1164.all;entity and2a isport (a,b :in std_logic;c: out std_logic);end entity and2a;architecture one of and2a isbeginc <= a and b ;end architecture one;5)顶层设计文件library ieee;use ieee.std_logic_1164.all;entity zong isport (a1,a2,a3,a4,a5,a6,a7,a8,b1,b2,b3,b4,b5,b6,b7,b8,en :in std_logic;solution1,solution2,solution3,solution4,solution5,solution6,solution7,solution8,solution9 :out std_logic );end entity zong;architecture fh1 of zong iscomponent h_adderport (a,b :in std_logic;co,so :out std_logic);end component;component f_adderport (ain,bin,cin:in std_logic;cout,sum:out std_logic);end component;component and2aport (a,b :in std_logic;c: out std_logic);end component;signale2,e3,e4,e5,e6,e7,e8,e9,e10,e11,e12,e13,e14,e15,e16,e17,e18,e19,e20,e21,e22,e23,e24 :std_logi c;beginu1:and2a port map(a=>en,b=>a1,c=>e2);u2:and2a port map(a=>en,b=>a2,c=>e3);u3:and2a port map(a=>en,b=>a3,c=>e4);u4:and2a port map(a=>en,b=>a4,c=>e5);u5:and2a port map(a=>en,b=>a5,c=>e6);u6:and2a port map(a=>en,b=>a6,c=>e7);u7:and2a port map(a=>en,b=>a7,c=>e8);u8:and2a port map(a=>en,b=>a8,c=>e9);u9:and2a port map(a=>en,b=>b1,c=>e10);u10:and2a port map(a=>en,b=>b2,c=>e11);u11:and2a port map(a=>en,b=>b3,c=>e12);u12:and2a port map(a=>en,b=>b4,c=>e13);u13:and2a port map(a=>en,b=>b5,c=>e14);u14:and2a port map(a=>en,b=>b6,c=>e15);u15:and2a port map(a=>en,b=>b7,c=>e16);u16:and2a port map(a=>en,b=>b8,c=>e17);u17:h_adder port map(a=>e2,b=>e10,co=>e18,so=>solution1);u18:f_adder port map(ain=>e3,bin=>e11,cin=>e18,cout=>e19,sum=>solution2);u19:f_adder port map(ain=>e4,bin=>e12,cin=>e19,cout=>e20,sum=>solution3);u20:f_adder port map(ain=>e5,bin=>e13,cin=>e20,cout=>e21,sum=>solution4);u21:f_adder port map(ain=>e6,bin=>e14,cin=>e21,cout=>e22,sum=>solution5);u22:f_adder port map(ain=>e7,bin=>e15,cin=>e22,cout=>e23,sum=>solution6);u23:f_adder port map(ain=>e8,bin=>e16,cin=>e23,cout=>e24,sum=>solution7);u24:f_adder port map(ain=>e9,bin=>e17,cin=>e24,cout=>solution9,sum=>solution8);end architecture fh1;。
实验06八位硬件加法器

实验六8位硬件加法器一. 实验目的1. 掌握QuartusII的硬件描述语言设计方法2. 了解同步计数器的原理及应用3. 设计一个带使能输入、进位输出及同步清零的增1四位N (N<16)进制同步计数器二. 准备知识1. 串行进位加法器若有多位数相加,则可采用并行相加串行进位的方式来完成。
例如,有两个4位二进制数A3A2A1A0和B3B2B1B0相加,可以采用两片内含两个全加器或1片内含4个全加器的集成电路组成,其原理图如图6.1所示:图6.1 串行进位加法器由图6.1可以看出,每1位的进位信号送给下1位作为输入信号,因此,任1位的加法运算必须在低1位的运算完成之后才能进行,这种进位方式称为串行进位。
这种加法器的逻辑电路比较简单,但它的运算速度不高。
为克服这一缺点,可以采用超前进位等方式。
2. 超前进位加法器对于一个加法器来说,它是一个纯组合电路。
也就是它的输出在输入出现的时刻就已经确定了,包括它的和和进位值,是输入的组合逻辑。
换而言之,只要知道输入,在不算出和的情况下也可以得到进位值,该值仅为输入的组合逻辑,以这样的一种思路设计的叫超前进位加法器。
而所谓串行进位加法器,就是必须算得低位加法的值后才可以继续计算高位值,如图6.1所示的电路,引用了一位全加器构成了四位全加器。
在硬件实现上,在4倍的单个全加器延时时间内它的输出都是不准确的,必须经过4倍的单个全加器延时时间才能得到准确值。
如果是16位或32位的加法器,延时是不可容忍的。
因此一般来说是直接利用输入组合逻辑方式同时决定结果的每一位和输出进位来实现的加法器,为超前进位加法器,相比与串行加法大大减低了多位加法所需要的延迟。
由于串行进位加法器的速度受到进位信号的限制,人们又设计了一种多位数超前进位加法逻辑电路,使每位的进位只由加数和被加数决定,而与低位的进位无关。
现在介绍超前进位的概念。
根据全加器的功能,可列出它的真值表:表6.1 全加器真值表由全加器的真值表可得Si 和Ci 的逻辑表达式:1111111i i i i i i i i i i i i i i i i i i i i i i S A B C A B C A B C A B C A B C A B C A B C -------=+++=⊕+⊕=⊕⊕ (6.1)11111i i i i i i i i i i i i i i i i i i C A B C A B C A B C A B C A B A B C -----=+++=+⊕ (6.2)定义两个中间变量Gi 和Pi :i i i i i iG A B P A B ==⊕ (6.3)当Ai =Bi =1时,Gi =1,由Ci 的表达式可得Ci =1,即产生进位,所以Gi 称为产生量变 。
8位加法器设计程序过程
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位加法器循环语句循环语句是计算机编程中非常重要的一种语句,它可以让程序重复执行某些操作,从而提高程序的效率。
在计算机中,加法器是一种非常常见的电路,它可以将两个二进制数相加,并输出它们的和。
本文将以8位加法器循环语句为题,列举一些常见的循环语句,以及它们在加法器中的应用。
1. for循环for循环是一种常见的循环语句,它可以让程序重复执行一段代码,直到满足某个条件为止。
在8位加法器中,for循环可以用来遍历两个二进制数的每一位,并将它们相加。
例如:for(int i=0; i<8; i++){sum[i] = a[i] + b[i] + carry;carry = sum[i] / 2;sum[i] %= 2;}在上面的代码中,i表示当前遍历的位数,sum[i]表示两个二进制数在第i位相加的结果,carry表示进位。
每次循环都会将两个二进制数在当前位相加,并将进位保存下来,以便下一次循环使用。
2. while循环while循环是另一种常见的循环语句,它可以让程序重复执行一段代码,直到满足某个条件为止。
在8位加法器中,while循环可以用来判断两个二进制数是否都已经遍历完了。
例如:while(i < 8 || j < 8){sum[k] = a[i] + b[j] + carry;carry = sum[k] / 2;sum[k] %= 2;i++;j++;k++;}在上面的代码中,i和j分别表示两个二进制数当前遍历的位数,k 表示当前计算的和的位数。
每次循环都会将两个二进制数在当前位相加,并将进位保存下来,以便下一次循环使用。
同时,i、j和k 都会自增1,以便遍历下一位。
3. do-while循环do-while循环是一种类似于while循环的循环语句,它可以让程序重复执行一段代码,直到满足某个条件为止。
与while循环不同的是,do-while循环会先执行一次循环体,然后再判断条件是否满足。
8位加法器的设计
8位加法器的设计一个8位加法器的设计需要考虑到以下几个方面:输入端口、输出端口、运算器、控制电路和时序以及综合测试等。
输入端口是加法器的输入,我们需要为每个输入端口分配相应的位数。
对于一个8位加法器,我们需要8个输入端口,每个端口为1位。
可以使用开关或者其他输入设备来控制输入信号。
输出端口是加法器的输出,同样需要为每个输出端口分配相应的位数。
对于一个8位加法器,我们需要8个输出端口,每个端口为1位。
可以使用LED灯等输出设备来显示输出结果。
运算器是加法器的核心部件,负责实现加法运算。
我们需要使用逻辑门电路来实现8位加法。
常见的实现方式是使用二进制加法器来实现,其中包括全加器、半加器等。
控制电路和时序是为了保证加法器的稳定运行。
可以采用时钟信号来对加法器的运算进行控制,时钟信号可以通过一个时钟源或者其他方式来产生。
综合测试是为了确保加法器的正确性。
我们需要设计一个测试电路,输入各种可能的输入信号,并检查输出结果是否符合预期。
以下是一个8位加法器的设计实例:1.输入端口设计:设计8个输入端口,每个端口为1位。
2.输出端口设计:设计一个8位输出端口,用于显示加法结果。
3.运算器设计:使用全加器和半加器组成8位二进制加法器。
首先将每一位的输入与进位相加,得到部分和和进位,然后再将部分和与下一位的输入和进位再相加,依次类推,最后得到8位加法结果。
4.控制电路和时序设计:使用时钟信号来控制加法器的运算。
可以通过一个时钟源或者其他方式来产生时钟信号。
5.综合测试设计:设计一个测试电路,输入各种可能的输入信号,并检查输出结果是否符合预期。
可以使用计算机软件来进行模拟测试。
在设计过程中,需要充分考虑各个部件之间的连接和信息传递,确保输入信号能够正确地经过运算器进行运算,并将运算结果正确地传递到输出端口。
总之,一个8位加法器的设计需要考虑到输入端口、输出端口、运算器、控制电路和时序以及综合测试等方面。
在具体设计过程中,还需要充分考虑其稳定性、可靠性和正确性等因素。
8位并行加法器的设计
实验一:8位加法器的设计1.实验目的(1)学习isEXPERT/MAX+plus Ⅱ/Foudation Series软件的基本使用方法。
(2)学习GW48-CK EDA实验开发系统的基本使用方法。
(3)了解VHDL程序的基本结构。
2.实验内容设计并调试一个由两个4位二进制并行加法器级联而成的8位二进制并行加法器,并用GW48_CK EDA实验开发系统(拟采用的实验芯片的型号为isPLSI1032E OLCC_84)进行硬件验证。
3.实验条件(1)画出系统的原理框架图,说明系统中各主要部分的功能。
(2)编写各个VHDL源程序。
(3)根据选用的软件编好用于系统仿真的测试文件。
(4)根据选用的软件及EDA实验开发装置编好用于硬件验证的管脚锁定文件。
(5)记录系统仿真、硬件验证结果。
(6)记录式样过程中出现的问题及解决方法。
4.实验设计(1)系统原理图框架4位二进制并行加法器2个4位二进制并行加法器级联而成的8位加法器(2)VHDL源程序1)4位二进制并行加法器的源代码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)8位二进制并行加法器的源代码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:adder4bport map(c4=>c8,a4=>a8(3 downto 0),b4=>b8(3 downto 0), s4=>s8(3 downto 0),co4=>sc);u2:adder4bport map(c4=>sc,a4=>a8(7 downto 4),b4=>b8(7 downto 4),s4=>s8(7 downto 4),co4=>co8);end architecture art;(3)波形仿真文件Module adder8b;C8,a8[7..0],b8[7..0],s8[7..0],co8 pin;Test_vectors(C8,a8[7..0],b8[7..0]->s8[7..0],co8);[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,]->[x,x,x,x,x,x,x,x,x]; [1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,]->[x,x,x,x,x,x,x,x,x]; [0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,]->[x,x,x,x,x,x,x,x,x]; [1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,]->[x,x,x,x,x,x,x,x,x]; [0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,]->[x,x,x,x,x,x,x,x,x]; [1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,]->[x,x,x,x,x,x,x,x,x]; [0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,]->[x,x,x,x,x,x,x,x,x]; [1,0,1,1,1,0,1,1,1,0,1,1,1,0,1,1,1,]->[x,x,x,x,x,x,x,x,x]; [0,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,]->[x,x,x,x,x,x,x,x,x]; [1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,]->[x,x,x,x,x,x,x,x,x]; [0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,]->[x,x,x,x,x,x,x,x,x]; [1,1,0,1,1,1,0,1,1,1,0,1,1,1,0,1,1,]->[x,x,x,x,x,x,x,x,x]; [0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,]->[x,x,x,x,x,x,x,x,x]; [1,1,1,0,1,1,1,0,1,1,1,0,1,1,1,0,1,]->[x,x,x,x,x,x,x,x,x]; [0,1,1,1,0,1,1,1,0,1,1,1,0,1,1,1,0,]->[x,x,x,x,x,x,x,x,x]; [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,]->[x,x,x,x,x,x,x,x,x]; End;(4)管脚锁定文件管脚锁定设计图管脚锁定文件//adder8b.ppn//part: isPLSI1032E OLCC_84 //fromat:pinnanme pintype lock c8 in 11a87 in 73a86 in 17a85 in 19a84 in 2a83 in 29a82 in 60a81 in 44a80 in 1b87 in 69b86 in 18b85 in 16b84 in 42b83 in 27b82 in 53b81 in 84b80 in 43s87 out 71s86 out 70s85 out 59s84 out 58s83 out 62 s82 out 61 s81 out 28 s80 out 30 co8 out 725.实验结果及总结(1)系统仿真情况系统功能仿真结果时序仿真结果(2)硬件验证情况(3)实验开发过程中出现的问题及解决的方法1)在进行仿真时,value总会随着初始设定值的改变而改变,一开始不明白,总是去调节,后面发现者value的值就是设定的初始值的第一位值,对仿真并没影响,于是把他隐藏了。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
8位加法器VHDL实验作业
----------授课老师:杨守良
设计算法:先由一个半加器构成一个全加器,8位加法器可以由8个1位全加器构成,加法器间的进位可以串行方式实现,即将低位加法器的进位输出cout与相临的高位加法器的最低进位输入信号cin相接。
也可用VHDL语言描述,输入a0~a7八位二进制数,共128种状态,采用VHDL中的算术运算可以实现。
一.8位加法器VHDL设计描述为:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity add_8 is
port (a,b: in integer range 0 to 128 ;
sum: out integer range 0 to 256);
end add_8;
architecture one of add_8 is
begin
sum<=a+b;
end one;
8位二进制加法器示意图可表示如下:
A7 A6 A5 A4 A3 A2 A1 A0
+ B7 B6 B5 B4 B3 B2 B1 B0
S7 S6 S5 S4 S3 S2 S1 S0
第一位相加:A0+B0=S0+C0 半加器
第二位相加:A1+B1+C0=S1+C1 全加器
8位二进制加法
(11110010B)+(10011001B)=(110001011)B
(11100011)B + (11000011)B=(110100110)B
二、8位加法器原理图输入如下:
二.8位加法器波形仿真如图所示:
课后总结:通过8位加法器的设计此次作业,基本掌握利用QuartusⅡ的原理图输入方法设计简单组合电路,掌握层次化设计的方法,并通过一个8位全加器的设计把握利用EDA软件进行原理图输入方式的电子线路设计的基本流程。
学会用简单VHDL语言描述加法器。