精华内容
下载资源
问答
  • 一位全加器

    2020-07-16 18:03:16
    一位全加器 一、实验原理与目的 实验目的:使用vhdl设计出来一个一位全加器。 实验原理:本实验的原理是利用两个一位的半加器来组成一个一位的全加器。在程序设计中,利用组件化的思想来调用两个功能比较简单的...

    一位全加器

    一、实验原理与目的

    1. 实验目的:使用vhdl设计出来一个一位全加器。
    2. 实验原理:本实验的原理是利用两个一位的半加器来组成一个一位的全加器。在程序设计中,利用组件化的思想来调用两个功能比较简单的半加器来实现功能稍加复杂的全加器。而一位半加器的设计思想就是利用真值表来进行设计即可。

    二、实验代码

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    **代码分析:**实验代码由三部分组成,第一部分是使用真值表来描述一个半加器,有两个输入端a,b和两个输出端co,so;第二部分是或门的逻辑描述,是进位的输出端;第三部分是顶层的设计描述,综合两个部分,实例化出来两个半加器组成一个一位半加器,或们来实现进位。

    三、原件图展示

    在这里插入图片描述

    四、测试波形

    1. 仿真之前设置的波形
      在这里插入图片描述
    2. 仿真之后的波形
      在这里插入图片描述
      仿真结果分析
      1. 第一段0到160,此时三个输入端均为一,那么相加之后的结果是3,那么就是11,cout和sum都是1。
      2. 第二段从160到320,此时三个输入端都是0,那么输出也应该是0,那么cout和sum都是0.
      3. 第三段三个输入端是1,1,0,那么输出的应该是2,产生进位,sum为0,cout是1.
      4. 最后一段是三个输入端是0,1,1,那么进位端cout为1,sum为0.
    展开全文
  • (1).通过实验初步了解EDA的基本概念; (2) 熟悉利用QuartusⅡ的原理图输入方法...(3)初步了解层次设计法,握层次化设计的方法,并通过个1位全加器的设计把握利用EDA软件原理图输入方式的电子线路设计的详细流程。
  • 问题1:一位全加器 assign sum = a ^ b ^ cin; assign cout = a&b | a&cin | b&cin; 一位全加器,sum为输入加进位位异或(即1的个数为奇数时,sum==1); cout为a&b&cin;即三个输入是1时为1,...

    问题1:一位全加器

    assign sum = a ^ b ^ cin;
    assign cout = a&b | a&cin | b&cin;
    

    一位全加器,sum为输入加进位位异或(即1的个数为奇数时,sum==1);
    cout为cout = a&b | a&cin | b&cin即三个输入至少两个是1时为1。
    在这里插入图片描述

    问题2:加/减法器

    减法可以由加法得到,将一个加数取负(二进制形式取反加一)。
    这里当输入sub为1时进行减法运算,当sub=0时进行加法运算。一方面,输入b与sub取异或,sub为1时,可以进行取反操作,sub为0时保持不变。另一方面,sub为1时,将其输入作为cin刚好可以完成减法运算中的加一操作,为0时,刚好可以满足加法运算。
    在这里插入图片描述

    module top_module(
        input [31:0] a,
        input [31:0] b,
        input sub,
        output [31:0] sum
    );
        wire [31:0] in;
        wire cout,cout1;
        assign in=b^{32{sub}};
        add16 add16 ( .a(a[15:0]), .b(in[15:0]),  .cin(sub), .sum(sum[15:0]), .cout(cout) );
        add16 add161 ( .a(a[31:16]), .b(in[31:16]),  .cin(cout), .sum(sum[31:16]), .cout(cout1) );
    endmodule
    

    另外,将位数不一样的两个数进行按位门运算时,不要忘记把位数补足。
    assign in=b^{32{sub}};

    问题3

    1.Procedures:always,initial,task,function
    2.For synthesizing hardware, two types of always blocks are relevant:
    Combinational: always @(*)
    Clocked: always @(posedge clk)
    这俩RTL(功能)(前)仿真和门级(后)仿真都一样。
    在这里插入图片描述

    关于仿真

    FPGA的仿真可以划分为四类,即代码级仿真、门级仿真、映射后仿真以及布局布线后仿真。其中,代码级仿真,仿真的对象就是原始的、未经加工的HDL代码,这也就是我们通常所说的功能仿真;门级仿真,仿真对象是HDL代码经过综合后的门级 网表;而映射后仿真,仿真对象是门级网表经过转换后对应到FPGA上的具体逻辑资源聚类, 此时可以得到电路中的门延迟信息文件供仿真时使用;最后,布局布线后仿真,仿真对象是具 有位置信息和连线信息的FPGA上逻辑资源聚类,因此可以兼并考虑门延迟与线延迟信息, 这也就是我们通常所说的时序仿真。
    vivado下就有好多种仿真。
    在这里插入图片描述

    问题4 &是按位与 and是门类型的关键字

    nand #10 nd1(a,data,clock,clear);
    这说明在模块中引用了一个名为nd1的与非门(nand),输入为data、clock和clear,输出为a,输出与输 入的延时为10个单位时间

    问题5 关于tb文件中的initial和always的执行顺序

    可以认为两者一起执行,并行执行。

    问题6 关于always和always@(*)

    两者区别是
    verilog规定,always@()中的是指该always块内的所有输入信号的变化为敏感列表,也就是仿真时只有当always@()块内的输入信号产生变化,该块内描述的信号才会产生变化,而如果没有@,那就是不用满足特定条件才执行,而是执行完一次后立马执行下一次,一直重复执行。具体不做分析,反正tb不能用@()。
    `timescale 1 ns/1 ps
    module tb();
    reg a,b,clk;
    wire out_always_comb,out_always_ff ;
    aa aa(
    clk,
    a,
    b,
    out_assign,
    out_always_comb,
    out_always_ff );

    initial begin
    a=0; b=0;clk=0;
    #1000 $stop;
    end
    always #10 clk=~clk;
    always begin
    #10 a=~a;
    end
    always begin
    #20 b=~b;
    end
    endmodule
    前仿真
    在这里插入图片描述
    后仿真直接没法看了
    在这里插入图片描述

    问题7 后仿真(功能仿真)之前最好先Start EDA netlist writer一下

    展开全文
  • 你以为这又是篇计算机内部原理的文章? 不, 放开那个女孩, 和我一起走进中学物理的课堂.问题先把问题抛出来, 我们的全加器大概就长这样.输入端放进来两个数字, 然后输出端返回两个数字的和.抛开全加器不说, 首要问....

    概述

    用了这么久计算机, 都知道计算机有一个核心部件叫 CPU, 而 CPU中有一个小部件叫做全加器. 它是用来做什么的呢? 看名字就知道了, 做加法运算用的. 那么如何实现一个全加器呢?

    你以为这又是一篇计算机内部原理的文章? 不, 放开那个女孩, 和我一起走进中学物理的课堂.

    问题

    先把问题抛出来, 我们的全加器大概就长这样.

    5fc84cc4a4bd5870fccb47ea9fc24aa8.png

    输入端放进来两个数字, 然后输出端返回两个数字的和.

    抛开全加器不说, 首要问题是: 用什么来标识输入和输出的数字呢?

    输入输出

    当然了, 输出输出端都是导线, 要通过电流来表示. 那就使用电的特征咯.

    方案一

    简单粗暴, 使用电压. 数字1表示为1V, 数字10就是10V.

    但是, 这个时候如果来了一个数字是10万呢? 整个10万 V 的电压, 别闹, 那还怎么抱在手里愉快的玩耍, 难道你不想玩手游了?

    方案二

    既然电压太高不可取. 人体的安全电压是36V, 也就是只要电压不高于36V 就可以了. 我们可以用一根导线来表示十进制的一位, 这样就可以将电压控制在0-9V 之间了. 嗯, 安全.

    但是, 电压是不稳定的. 但是可以规定 8.6-9.5V=9. 嗯, 这个方案确实可行, 至少咱没有看出什么问题来. (据说现在已经有十进制的了??) 但是别着急, 看下一个方案.

    方案三

    想一下, 除了电压, 电还有什么特征呢? 电流? 功率? 开闭? 就是开闭. 一个电路要么连通, 要么断开, 简单明了没有歧义.

    用电路的开闭如何表示数呢? 表示不了十进制, 还表示不了二进制么..

    好, 就是它了, 实现简单方便.

    输入输出的问题解决了, 剩下的就是全加器的构造了, 二进制的运算就不说了. 现在, 全加器应该长这样:

    f919ad18e8a3a7b1497e615a15831ba3.png

    为什么是三个输入数字呢? c是进位. 那为什么是两个输出呢? y 是进位.

    电路的逻辑运算

    在开始全加器之前, 先来复习一下高中的物理知识.

    还记得这个东西么?

    08edf3475579829365c498a1a78eb793.png

    画的丑了一些, 凑合看. 他可以将电场转换为磁场. 好, 下面的实现都是基于它的. 电磁感应. 继电器就是基于它实现的.

    逻辑电路

    看下面电路:

    0ca70b3fca951a4732c6631354088df7.png

    这是一个简单的并联电路, 实现了逻辑或, 只要有一个电路接通, 整体就是通路. 当然了, 串联电路就是逻辑与了. 那逻辑非如何处理呢? 这就要用到上面提到的继电器了.

    逻辑非

    74d06a46d8fbc792d2ba849d947a2ab0.png

    图中的 J 表示继电器.

    右侧电路的开关正常情况处于连通状态, 当左侧通电后, 会将右侧开关吸附起来, 令其断开. 这就实现了逻辑非. 当然, 与 或的实现也可以通过继电器来传递.

    逻辑与

    1e41627f3edda9b03f42de8f056f4fc9.png

    这就是一个通过继电器实现的与门.

    当然了, 或门也是一样的, 只是将右侧的串联电路改成并联电路就成了.

    逻辑异或

    有了与或非, 把他们三拼一拼, 异或就有了.

    A xor B = (!A && B) || (A && !B)

    来来来, 看图了.

    b3419645b52f0be2c6ca1f451d32eb7a.png

    这就是一个异或了. 有没有发现什么? 可以将电路参与到逻辑运算中.

    好啦, 足够了. 开始着手实现全加器.

    全加器

    到这, 想必各位看官也知道为什么在全加器之前要先说逻辑电路了吧. 没错, 就是要把01的加法运算, 转换成逻辑运算.

    列一张真值表:

    b6d9193ec61e870f633d983c4d09386c.png

    真值表在此, 请运用你们数值计算的知识, 把逻辑表达式推出来吧. 请原谅我, 下面表达式是我嫖来的, 直接把化简后的逻辑表达式拿来了.

    x = a xor b xor c

    y = c && (a xor b) || (a && b)

    算一算一个全加器一共用到了多少继电器? 其中: 与(2个), 或(2个), 亦或(8个).

    x 需要2个亦或, 共16个继电器. y 需要2个与,1个亦或,1个或, 共14个继电器. 整个全加器共需30个继电器. 又因为 x 和 y 的计算在同一个全加器中, a xor b的操作, xy 可以公用同一个, 所以减少一个亦或, 共22个继电器. 据说还能少, 嗯, 咱也不知道.

    以上, 一个超级简陋的全加器横空出世. 将上面的逻辑表达式放到电路里, 就能返回输入结果相加后的结果.


    既然有全加器, 那是不是也有半加器? 嗯, 有. 半加器就是将两个位相加, 产生和和进位, 不考虑上一个来的进位. 简单说, 全加器有3个运算数, 半加器只有两个.


    有了全加器, 是不是还得有全减器? 偷偷告诉你, 减法运算就是补码的加法运算.

    展开全文
  • 实验报告二:例2-19 一位全加器

    千次阅读 2020-06-04 10:17:56
    例2-19一位全加器,要做出仿真波形 提交完整详细的代码,元件图,测试波形,说明文字 一、实验目的 学习、掌握QuartusII开发平台的基本使用 设计一个一位全加器,并验证全加器的功能 二、实验说明和实验原理 一个...

    广工计算机组成原理实验
    实验二要求:
    例2-19一位全加器,要做出仿真波形
    提交完整详细的代码,元件图,测试波形,说明文字

    一、实验目的

    1. 学习、掌握QuartusII开发平台的基本使用
    2. 设计一个一位全加器,并验证全加器的功能

    二、实验说明和实验原理

    一个一位全加器可以用两个一位半加器和一个或门连接而成。而一个一位半加器可由基本门电路组成。

    1. 半加器设计原理:只考虑两个一位二进制数的相加,而不考虑来自低位进位数的运算电路,称为半加器。
      其中:a、b分别为被加数与加数,作为电路的输入端;s0为两数相加产生的本位和,它和两数相加产生的向高位的进位c0一起作为电路的输出。
    2. 全加器设计原理:除本位两个数相加之外,还要加上从低位来的进位数,称为全加器。
      其中:a为被加数,b为加数,c为低位向本位的进位,c0为本位向高位的进位,s0为本位和。

    三、实验内容

    利用VHDL编辑程序实现半加器和或门,再连接半加器和或门完成全加器的设计。

    LIBRARY IEEE;
    USE IEEE.STD_LOGIC_1164.ALL;
    ENTITY f_adder IS
    	PORT (ain,bin,cin:IN STD_LOGIC;
    		  cout,sum:OUT STD_LOGIC);
    END ENTITY f_adder;
    ARCHITECTURE fd1 OF f_adder IS
    	COMPONENT h_adder
    		PORT (a,b:IN STD_LOGIC;
    			  co,so:OUT STD_LOGIC);
    	END COMPONENT;
    	COMPONENT or2a
    		PORT(a,b:IN STD_LOGIC;
    			 c: OUT STD_LOGIC);
    	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: or2a PORT MAP(a=>d,b=>f,c=>cout);
    END ARCHITECTURE fd1;
    
    LIBRARY IEEE;
    USE IEEE.STD_LOGIC_1164.ALL;
    ENTITY h_adder IS
    	PORT (a,b:IN STD_LOGIC;
    		  co,so:OUT STD_LOGIC);
    END ENTITY h_adder;
    ARCHITECTURE fh1 OF h_adder IS
    BEGIN
    	so<=NOT(a XOR (NOT b));
    	co<=a AND B;
    END ARCHITECTURE fh1;
    
    LIBRARY IEEE;
    USE IEEE.STD_LOGIC_1164.ALL;
    ENTITY or2a IS
    	PORT(a,b:IN STD_LOGIC;
    		 c: OUT STD_LOGIC);
    END ENTITY or2a;
    ARCHITECTURE one OF or2a IS
    	BEGIN 
    		c<=a OR b;
    END ARCHITECTURE one;
    

    四、元件图

    实验二元件图

    五、测试结果

    实验二测试结果

    六、实验心得

    1. 通过这次实验,学习且掌握了QuartusII开发平台的基本使用。
    2. 能设计出一个一位全加器,并验证全加器的功能。
    3. 学会了使用元件例化语句。例化语句用于层次设计,即在当前设计中调用一个已经设计好的功能模块。
    COMPONENT 元件名 IS 
          PORT  (端口名表) ;
        END COMPONENT 文件名 ; 
    

    例化名 : 元件名 PORT MAP( [端口名 =>] 连接端口名,…);

    展开全文
  • 能够计算低位进位的二进制加法电路为一位全加器一位全加器可以处理低位进位,并输出本位加法进位。多个一位全加器进行级联可以得到多位全加器。本次利用proteus对一位全加器进行设计和验证。 其基本原理图为: 1...
  • 思路:先做半加器,再做一位全加器,再扩展为八位全加器。 首先新建工程:file->project wizard 新建文件选择block diagram/schematic file 在红色框的地方可以选择门电路 在上面路径的地方logic里面可以找到门...
  • verilog 8位全加器

    千次阅读 2020-04-06 23:52:16
    先构建一位全加器,在将8个全加器串起来,低位的进位传送到下一个全加器里。 一位全加器的构建 列出真值表 A,B:加数,Ci:来自低位的进位 Sum:和 ,Co:进位 verilog代码实现 module fulladder(Sum,Co,A,B,Ci); ...
  • 功能特性设计思路基于一位全加器,设计32位并行加法器。并行加法器中全加器的位数与操作数相同,影响速度(延时)的主要因素是进位信号的传递。主要的高速加法器【1】有基本上都是在超前进位加法器(CLA)的基础上...
  • 首先设计一位半加器,利用层次化设计的思想借助一位半加器实现一位全加器 知识储备: 半加器: 1、真值表: 2、关系式: 全加器: 1、真值表: 2、由半加器实现的方法如实现方法中所示 附: 1、各种...
  • 一位全加器 VHDL设计与实现

    万次阅读 2012-03-03 20:11:05
    设计一位全加器,给出程序的设计、软件编译、仿真分析、硬件测试及详细实验过程。 三.程序设计原理  实验步骤:  (1) 新建一个QuartusⅡ工程,用以在DE2平台上实现所要求的电路。 (2) 建立一个VHDL文件,...
  • 本关需要你根据所学的组合逻辑及数字电路的知识完成一位全加器的设计,验证满足一位全加器的规则,根据逻辑真值表和逻辑表达式完成表决功能。熟悉Quartus II的Verilog HDL文本设计流程,掌握组合逻辑电路的设计仿真...
  • 汉字编码 输入编码:输入 汉字内码:内部处理 字模码:输出 奇偶校验 数加上0/1组成奇数个1就是奇校验 组成偶数个1就是偶校验 奇偶校验不能观察偶数个...一位全加器设计 S表示输出,C表示进位,应该很好理解 ...
  • 验证半加器和全加器的逻辑功能。 学会逻辑分析仪的使用方法。实验原理数字电路分为组合逻辑电路和时序逻辑电路两类。任意时刻电路的输出信号仅取决于该时刻的输入信号,而与信号输入前电路所处的状态无关,这种电路...
  • 实验基于多思计算机组成原理网络虚拟实验系统 ... 实验目的: 1.完成全加器的电路图 2.... 半加器电路是指:对两个输入数据... 是实现两个一位二进制数的加法运算电路 类比:现实中我们可以很容易计算出 1 + 1 = 2...
  • 其中包含三个文件夹对应的三个工程分别为一位半加器、一位全加器、四位全加器;从底向上的编程思想,先建立一位半加器工程-接下来是一位全加器-最后4位全加器--三个工程皆可独立运行。 芯片选的是用的Cyclone II:EP...
  • 计算机原理 · 全加器

    千次阅读 2018-10-11 22:45:50
    全加器原理 首先,我们来了解下 全加器的描述 : 全加器是实现两个一位二进制数相加的基本单元,其内部主要由 n 个全加器构成。 设A(i)为被加数,B(i)为加数,本位和S(i),本为进位C(i+1),低位进位C(i) 全加器真...
  • 计算机原理--全加器

    千次阅读 2019-06-19 16:24:51
    全加器英语名称为full-adder,是用门电路实现两个二进制数相加并求出和的组合线路,称为一位全加器一位全加器可以处理低位进位,并输出本位加法进位。多个一位全加器进行级联可以得到多位全加器 我们看图吧,只要...
  • 《数据结构》重点在线性表、树、图、查找和排序。参考书目是《数据结构》(C语言版)严蔚敏、吴伟民编著。...最后是查找和排序,有很多不同的算法,同学们不能硬记,而是理解各个算法的基本原理,理解记忆和联系...
  • 全加:将两个多位二进制数相加时,除了最低位以外,每一位都应考虑来自低位的进位,即:将两个对应的加数和来自低位的进位3个数相加,称为全加。 串行进位加法器:把n个全加器按低位的进位输出与高位的进位输入相连...
  • 组成原理全加器实验

    万次阅读 2018-10-03 18:46:30
    1.1 实验目的 1) 熟悉多思计算机组成原理网络虚拟实验系统的使用方法。 2) 掌握全加器的逻辑结构和电路实现方法。 1.2 实验要求 1) 做好实验预习,复习全加器的原理,掌握实验元...一位全加器的逻辑结构如图 1.1...
  • 计算机组成原理实验项目之,要求使用Quartus II 的图形化编程制作 4位全加器 和 两个4位四位数相乘的乘法阵列。 本篇假定,你已经掌握Quartus II 和 DICE-E213实验箱的基本使用,如果遇到问题可以参考Quartus II ...
  • 原理图输入法设计一位全加器,计数器(74160)和译码器(7448),顶层用原理图设计,用混合输入及层次化设计,VHDL语言的组合电路设计,0--9可逆计数器输出的是8421BCD码,交通灯,数字钟的VHDL语言设计
  • 这是我的顶层原理图和底层一位全加器代码 是个新手 求大家救我 LIBRARY ieee; USE ieee.std_logic_1164.all; -- Entity Declaration ENTITY block_name IS -- {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS ...
  • 1 二进制加法器有三个输入量:两个二进制数字 Ai、Bi 和个低位的进位信号 Ci,这三个值相加产生个和输出Si以及个向高位的进位输出Ci+1,这种加法单元称为全加器。 内容: 运行虚拟实验系统,从左边的实验...
  • 全加器的真值表 真值表的理解记忆: 0+0+0=0 0+0+1=1 0+1+0=1 0+1+1=2,进1为10 1+0+0=1 1+0+1=2,进1为10 1+1+0=2,进1为10 1+1+1=3,进1为11 全加器逻辑组合电路的构建 异或门(XOR): 与门(AND): 或门(OR): ...
  • 1、单元电路实现,两种实现方式都可以,:2输入门;二:复杂CMOS门。 2、由单元电路连接成4加法器。 3、Chartered 0.35工艺。 4、通过波形仿真、DRC、LVS。 首先熟悉cadence软件的使用,练习反相器的原理图和...
  • 实验内容设计一个一位二进制全加器模块设计一个4位二进制并行进位模块 设计一个一位二进制全加器模块 module qjq(A,B,CIN,COUT,F); input A,B,CIN; output F,COUT; assign F=A^B^CIN; assign COUT=A&B|((A^...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 123
精华内容 49
关键字:

一位全加器原理