概述

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

一位半加法器

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

仿真波形图

硬件行为描述

设计文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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
2
3
4
5
6
7
8
9
10
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
2
3
4
5
6
module add(a,b,sum,cout);
input a,b;
output sum,cout;
xor(sum,a,b);
and(cout,a,b);
endmodule

仿真结构图

仿真文件

1
2
3
4
5
6
7
8
9
10
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
2
3
4
5
6
7
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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
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
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
2
3
4
5
6
7
8
9
10
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
2
3
4
5
6
7
8
9
10
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
2
3
4
5
6
7
8
9
10
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
2
3
4
5
module qjq(a,b,cin,sum,cout);
input a,b,cin;
output sum,cout;
assign {sum,cout}=a+b+cin;
endmodule

仿真结构图

仿真文件

1
2
3
4
5
6
7
8
9
10
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
2
3
4
5
6
7
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
2
3
4
5
6
7
8
9
10
11
12
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. Jmeter使用代理录制web

    Jmeter有录制功能,录制HTTPs需要增加一个证书配置,录制步骤如下: 1.打开jmeter,添加线程组.线程组右键,逻辑控制器>录制控制器 工作台 右键 非测试元件 >HTTP代理服 ...

  2. python 学习路程(一)

    好早之前就一直想学python,可是一直没有系统的学习过,给自己立个flag,从今天开始一步步掌握python的用法: python是一种脚本形式的语言,据说是面向废程序员学习开发使用的,我觉得很适合 ...

  3. 作业要求20191031-7 beta week 1/2 Scrum立会报告+燃尽图 05

    此作业要求参见:https://edu.cnblogs.com/campus/nenu/2019fall/homework/9915 一.小组情况 队名:扛把子 组长:孙晓宇 组员:宋晓丽 梁梦瑶 韩 ...

  4. 01-python中一切皆对象

    python一切皆对象 Python中一切皆对象,在静态语言中,Java也是面向对象编程,Python要比Java的面向对象编程更加彻底.元类编程以及猴子补丁都是用一切皆对象编程出来的. 1.函数和类 ...

  5. 基于HTTP协议的WAF绕过

    一,畸形包绕过 1.先关闭burpsuite长度更新,为get请求,先使用bp的method转换为POST请求 2.get请求中空格使用%20代替,Connection改为keep-alive 二,分 ...

  6. 洛谷P1426-小鱼会有危险吗

    原题链接: https://www.luogu.org/problem/P1426 题面简述: 有一次,小鱼要从A处沿直线往右边游,小鱼第一秒可以游7米,从第二秒开始每秒游的距离只有前一秒的98%98 ...

  7. C博客作业05--2019-指针

    0.展示PTA总分 1.本章学习总结 1.1 学习内容总结 1.2 本章学习体会 2.PTA实验作业 2.16 -7 输出月份英文名 2.1.1 伪代码 char* getmonth(int n) { ...

  8. scrapy抓取人人网上的“新鲜事”

    利用scrapy模拟登陆人人网,笔者本打算抓取一下个人页面新鲜事,感觉这个网站越做越差,都懒得抓里面的东西了.这里仅仅模拟人人网登陆,说明一下scrapy的POST请求问题. 人人网改版之后,反爬措施 ...

  9. OSI-传输层

    OSI-传输层 端口号(2字节 SYN(1bit) ACK(1bit) 会话多路复用(为什么一个IP地址可以做很多事情?) 源端口地址可以不同 五元组(世界上没有相同的2个五元组) 源IP地址-目的I ...

  10. vue中的$EventBus.$emit、$on 遇到的问题

    今天在项目中遇到的一个需求: 在一个选项卡功能的页面,出现的问题是,当点击选项卡的某个选项时,会同时加载整个选项卡的数据,本身产品就很大,数据很多,所以这个问题无法忽略: 仔细研究下发现,当刚进入页面 ...