概述

本文利用了硬件行为描述、数据流描述、结构描述三种方法分别写了几个加法器

一位半加法器

即两个一位的二进制数相加,得到其正常相加的结果的最后一位。

仿真波形图

硬件行为描述

设计文件

  1. 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
  1. module bjqxw(a,b,sum,cout);
    input a,b;
    output sum,cout;
    reg sum,cout;
    always @(a or b)
    begin
    case({a,b})
    2'b00:begin
    sum=0;cout=0;
    end
    2'b01:begin
    sum=1;cout=0;
    end
    2'b10:begin
    sum=1;cout=0;
    end
    2'b11:begin
    sum=0;cout=1;
    end
    endcase
    end
    endmodule

仿真结构图

仿真文件

  1. 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
  1. module bjqxwsimu;
    reg a,b;
    wire sum,cout;
    bjqxw sl(a,b,sum,cout);
    initial
    begin
    a=0;b=0;
    end
    always #10 {a,b}={a,b}+1;
    endmodule

结构描述

设计文件

  1. 1
    2
    3
    4
    5
    6
  1. module add(a,b,sum,cout);
    input a,b;
    output sum,cout;
    xor(sum,a,b);
    and(cout,a,b);
    endmodule

仿真结构图

仿真文件

  1. 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
  1. module add1;
    reg a,b;
    wire sum,cout;
    add ul(a,b,sum,cout);
    initial
    begin
    a=0;b=0;
    end
    always #10 {a,b}={a,b}+1;
    endmodule

数据流描述

设计文件

  1. 1
    2
    3
    4
    5
    6
    7
  1. endmodulemodule add3(a,b,sum,cout);
    input a,b;
    output sum,cout;
    wire sum,cout;
    assign sum=a^b;
    assign cout=a&b;
    endmodule

仿真结构图

仿真文件

  1. 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
  1. module add1;
    reg ain,bin;
    reg clk;
    wire sum1,cout1;
    initial
    begin
    ain=0;bin=0;clk=0;
    end
    always #50 clk=~clk;
    always @(posedge clk)
    begin
    ain={$random}%2;
    #3 bin={$random}%2;
    end
    add3 ul(.a(ain),.b(bin),.sum(sum1),.cout(cout1));
    endmodule

一位全加器

仿真波图

硬件行为描述

设计文件

  1. 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
  1. module qjq(a,b,cin,sum,cout);
    input a,b,cin;
    output sum,cout;
    reg sum,cout;
    always @(a or b or cin)
    begin
    case ({cin,a,b})
    3'b000:begin
    sum=0;cout=0;
    end
    3'b001:begin
    sum=1;cout=0;
    end
    3'b010:begin
    sum=1;cout=0;
    end
    3'b011:begin
    sum=0;cout=1;
    end
    3'b100:begin
    sum=1;cout=0;
    end
    3'b101:begin
    sum=0;cout=1;
    end
    3'b110:begin
    sum=0;cout=1;
    end
    3'b111:begin
    sum=1;cout=1;
    end
    endcase
    end
    endmodule

仿真结构图

仿真文件

  1. 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
  1. module qjq1;
    reg a,b,cin;
    wire sum,cout;
    qjq ul(a,b,cin,sum,cout);
    initial
    begin
    a=0;b=0;cin=0;
    end
    always #10 {a,b,cin}={a,b,cin}+1;
    endmodule

结构描述

设计文件

  1. 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
  1. module qiq(a,b,cin,sum,cout);
    input a,b,cin;
    output sum,cout;
    wire q1,q2,q3;
    xor(sum,a,b,cin);
    or(q1,a,b);
    or(q2,b,cin);
    or(q3,a,cin);
    and(cout,q1,q2,q3);
    endmodule

仿真结构图

仿真文件

  1. 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
  1. module qjq1;
    reg a,b,cin;
    wire sum,cout;
    qiq ul(a,b,cin,sum,cout);
    initial
    begin
    a=0;b=0;cin=0;
    end
    always #10 {a,b,cin}={a,b,cin}+1;
    endmodule

数据流描述

设计文件

  1. 1
    2
    3
    4
    5
  1. module qjq(a,b,cin,sum,cout);
    input a,b,cin;
    output sum,cout;
    assign {sum,cout}=a+b+cin;
    endmodule

仿真结构图

仿真文件

  1. 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
  1. module qjqsimu;
    reg a,b,cin;
    wire sum,cout;
    qjq sl(a,b,cin,sum,cout);
    initial
    begin
    a=0;b=0;cin=a&b;
    end
    always #20 {a,b}={a,b}+1;
    endmodule

四位全加器

数据流描述

设计文件

  1. 1
    2
    3
    4
    5
    6
    7
  1. module qjq(a,b,cin,sum,cout);
    input [3:0] a,b;
    input cin;
    output [3:0] sum;
    output cout;
    assign {sum,cout}=a+b+cin;
    endmodule

仿真结构图

仿真文件

  1. 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
  1. module qjqsimu;
    reg [3:0] a,b;
    reg cin;
    wire [3:0] sum;
    wire cout;
    qjq sl(a,b,cin,sum,cout);
    initial
    begin
    a=4'b0000;b=4'b0000;cin=0;
    end
    always #20 {a,b}={a,b}+4'b0001;
    endmodule

仿真波图

ps:将上述输入输出的字段长度对应修改,可得到相应数位的全加器数据流描述

verilog设计加法器的更多相关文章

  1. verilog流水线加法器

    四位加法器 两级加法实现 verilog code module pipeliningadder( output reg [3:0] s, output reg co, input [3:0] a, ...

  2. Verilog设计Valid-Ready握手协议

    转自http://ninghechuan.com 我不生产知识,我只是知识的搬运工. Handshake Protocol握手协议!为了保证数据传输过程中准确无误,我们需要加上握手信号来控制信号的传输 ...

  3. Verilog设计技巧实例及实现

    Verilog设计技巧实例及实现 1 引言 最近在刷HDLBits的过程中学习了一些Verilog的设计技巧,在这里予以整理.部分操作可能降低代码的可读性和Debug的难度,请大家根据实际情况进行使用 ...

  4. 数字逻辑实践3->EDA技术与Verilog设计

    本文属于EDA技术概述类文章 1 EDA技术及其发展 概念 EDA(Electronic Design Automation),指的是以计算机为工作平台,以EDA软件工具为开发环境,以PLD期间或者A ...

  5. 硬件描述语言Verilog设计经验总结

    一.硬件描述语言Verilog 粗略地看Verilog与C语言有许多相似之处.分号用于结束每个语句,注释符也是相同的(/* ... */和// 都是熟悉的),运算符"=="也用来测 ...

  6. verilog 实现加法器

    半加器 如果不考虑来自低位的进位将两个1二进制数相加,称为半加. 实现半加运算的逻辑电路称为半加器. 真值表 逻辑表达式和 \begin{align}\notag s = a{b}' + {a}'b ...

  7. 全数字锁相环(DPLL)的原理简介以及verilog设计代码

    随着数字电路技术的发展,数字锁相环在调制解调.频率合成.FM 立体声解码.彩色副载波同步.图象处理等各个方面得到了广泛的应用.数字锁相环不仅吸收了数字电路可靠性高.体积小.价格低等优点,还解决了模拟锁 ...

  8. 基于basys2驱动LCDQC12864B的verilog设计图片显示

    话不多说先上图 前言 在做这个实验的时候在网上找了许多资料,都是关于使用单片机驱动LCD显示,确实用单片机驱动是要简单不少,记得在FPGA学习交流群里问问题的时候,被前辈指教,说给我最好的指教便是别在 ...

  9. 基于basys2用verilog设计多功能数字钟(重写)

    话不多说先上图         前言 自从学习FPGA以来,唯一做过的完整系统就是基于basys2得多功能数字表.记得当时做的时候也没少头疼,最后用时间磨出来了一个不是很完整的小系统,当时还是产生了满 ...

随机推荐

  1. 使用ndk交叉编译android各平台版本的第三方库

    只要弄明白了ndk-bundle的目录结构,交叉编译的基本原理就可以自行编写脚本去编译了.从仓库拿下代码包后,一般在linux平台下编译当前平台使用的库,只要使用其自动配置脚本configure进行平 ...

  2. 2019-9-10:渗透测试,基础学习,sql注入笔记

    sql注入1,万能密码,自己写的网站,找到登录窗口,必须和数据库交互,往里插入构造的恶意代码,最后可以直接登录进去,不需要账号和密码,输入的恶意代码成为万能密码,后端拼接的sql语句,SELECT * ...

  3. SpringBoot学习(六)—— springboot快速整合RabbitMQ

    目录 Rabbit MQ消息队列 简介 Rabbit MQ工作模式 交换机模式 引入RabbitMQ队列 代码实战 Rabbit MQ消息队列 @ 简介 优点 erlang开发,并发能力强. 社区活跃 ...

  4. supervisor 安装配置详解

    一.安装 源码安装 先下载最新的supervisor安装包:https://pypi.python.org/pypi/supervisor , 如: (python3命令为 pip install g ...

  5. 02 jQuery中的事件、动画、复合函数

    jQuery中的事件 在JavaScript中,常用的基础事件有鼠标事件.键盘事件.window事件.表单事件.事件绑定和处理函数的语法格式如下 语法q 事件名 = "函数名()" ...

  6. Idea创建maven项目,报错xxx already exists in VFS

    1.问题描述: 我打算在父级maven项目中创建子级project,但是一直报错如下: 2.stackover flow中找到了问题的答案, 地址:https://stackoverflow.com/ ...

  7. 【Android - 进阶】之Drawable简介

    Drawable是什么?Android给我们的解释是:“A general abstraction for 'something that can be drawn'.”,翻译过来就是:对于可以绘制的 ...

  8. 【Android - IPC】之使用Bundle实现IPC

    Android四大组件中,Activity.Service和BroadcastReceiver都支持在Intent中传递Bundle数据.由于Bundle实现了Parcelable接口,所以它可以方便 ...

  9. Java中标识符和变量的区别

    1.标识符 在JAVA的组成部分中包括了对包.类.方法.变量等的起名,这些名字是要有一定的规则的: 标识符可以包含数字.字母.$._,但是不能以数字开头: 关键字不能用作标识符: 标识符是大小写敏感的 ...

  10. ASP.NET Core 2 preview 1中Program.cs,Startup.cs和CreateDefaultBuilder的探索

    Exploring Program.cs, Startup.cs and CreateDefaultBuilder in ASP.NET Core 2 preview 1 ASP.NET Core 2 ...