Verilog 加法器和减法器(2)
类似半加器和全加器,也有半减器和全减器。
半减器只考虑当前两位二进制数相减,输出为差以及是否向高位借位,而全减器还要考虑当前位的低位是否曾有借位。它们的真值表如下:
对半减器,diff = x ^y, cin = ~x&y
对全减器,要理解真值表,可以用举列子的方法得到,比如4’b1000-4b'0001,则第一位对应0 1 0 1 1第二位对应的是0 0 1 1 1
从真值表中,可以得到 diff = x ^ y ^cout, cin = (~x&(y^cout))|(y&cout)
推导过程:diff = ~x&~y&cout + ~x&y&~cout +x&~y&~cout+x&y&cout=~x&(~y&cout+y&~cout)+x&(~y&~cout+y&cout)=~x&(y^cout)+x&~(y^cout)=x^y^cout;
cin = ~x&~y&cout+~x&y&~cout+~x&y&cout+x&y&cout=~x&(~y&cout+~x&~cout)+(~x+x)&y&cout=~x&(y^cout)+y&cout
注意:这儿 +和|都表示或。
半减器的verilog代码和testbench代码如下:


module halfsub(x,y,d,cin); input x;
input y; output d;
output cin; assign d = x^y;
assign cin = (~x)&y; endmodule


`timescale 1ns/1ns
`define clock_period 20 module halfsub_tb;
reg x,y; wire cin; //carryover
wire d;
reg clk; halfsub halfsub_0(
.x(x),
.y(y),
.d(d),
.cin(cin)
); initial clk = 0;
always #(`clock_period/2) clk = ~clk; initial begin
x = 0;
repeat(20)
#(`clock_period) x = $random; end initial begin
y = 0;
repeat(20)
#(`clock_period) y = $random; end initial begin
#(`clock_period*20)
$stop;
end endmodule
用rtl viewer,可以看到半减器逻辑图如下:
半减器功能验证的波形:
全减器的verilog代码和testbench代码如下:


module fullsub(cout,x,y,d,cin); input cout; // carry out bit, borrowed by its next low bit
input x;
input y; output d;
output cin; assign d = x^y^cout;
assign cin = (~x&(y^cout))|(y&cout); endmodule


`timescale 1ns/1ns
`define clock_period 20 module fullsub_tb;
reg x,y,cout; wire cin; //carryover
wire d;
reg clk; fullsub fullsub_0(
.cout(cout),
.x(x),
.y(y),
.d(d),
.cin(cin)
); initial clk = 0;
always #(`clock_period/2) clk = ~clk; initial begin
x = 0;
repeat(20)
#(`clock_period) x = $random; end initial begin
y = 0;
repeat(20)
#(`clock_period) y = $random; end initial begin
cout = 0;
repeat(20)
#(`clock_period) cout = $random; end initial begin
#(`clock_period*20)
$stop;
end endmodule
用rtl viewer,可以看到全减器逻辑图如下:
全减器的功能验证波形:
Verilog 加法器和减法器(2)的更多相关文章
- Verilog 加法器和减法器(8)-串行加法器
如果对速度要求不高,我们也可以使用串行加法器.下面通过状态机来实现串行加法器的功能. 设A=an-1an-2-a0, B=bn-1bn-2-b0,是要相加的两个无符号数,相加的和为:sum=sn-1s ...
- Verilog 加法器和减法器(4)
类似于行波进位加法器,用串联的方法也能够实现多位二进制数的减法操作. 比如下图是4位二进制减法逻辑电路图. 8位二进制减法的verilog代码如下: module subn(x, y, d,cin) ...
- Verilog 加法器和减法器(7)
在计算机中浮点数 表示通常采用IEEE754规定的格式,具体参考以下文章. https://www.cnblogs.com/mikewolf2002/p/10095995.html 下面我们在Veri ...
- Verilog 加法器和减法器(6)
为了减小行波进位加法器中进位传播延迟的影响,可以尝试在每一级中快速计算进位,如果能在较短时间完成计算,则可以提高加法器性能. 我们可以进行如下的推导: 设 gi=xi&yi, pi = xi ...
- Verilog 加法器和减法器(3)
手工加法运算时候,我们都是从最低位的数字开始,逐位相加,直到最高位.如果第i位产生进位,就把该位作为第i+1位输入.同样的,在逻辑电路中,我们可以把一位全加器串联起来,实现多位加法,比如下面的四位加法 ...
- Verilog 加法器和减法器(1)
两个一位的二进制数x,y相加,假设和为s,进位为cout,其真值表为: 从真值表中,我们可以得到:s = x^y, cout = x&y,实现两个一位数相加的逻辑电路称为半加器. 实现该电路的 ...
- Verilog 加法器和减法器(5)
前面二进制加法运算,我们并没有提操作数是有符号数,还是无符号数.其实前面的二进制加法对于有符号数和无符号数都成立.比如前面的8位二进制加法运算,第一张图我们选radix是unsigned,表示无符号加 ...
- 基于Xilinx的Synthesize
所谓综合.就是讲HDL语言.原理图等设计输入翻译成由与.或.非们和RAM.触发器登记本逻辑单元的逻辑连接(即网表).并依据目标和要求(约束条件)优化生成的逻辑连接. ISE-XST XST是Xilin ...
- FPGA综合工具--Synplify Pro的常用选项及命令
最近要用到Synplify,但以前没使用过,无基础,找到一篇帖子,隧保存下来. 本文转自:http://blog.sina.com.cn/s/blog_65fe490d0100v8ax.html Sy ...
随机推荐
- jQuery选择器(转)
原文:http://www.cnblogs.com/qinwang913/p/3444135.html 一.基本分类 jQuery选择器大致可以分为两类,基本选择器和过滤选择器,总体结构体系如下: ...
- 聊聊zookeeper的分布式锁
分布式锁就是多台机器,分布在不同的JVM中,这些不同JVM内的方法需要获取一个唯一锁,比如获取锁之后要把数据写入数据库,保证数据在同一时刻只有一台机器写入数据库. 分布式锁的实现有多种实现方法,除了今 ...
- C#开发Unity游戏教程之游戏对象的行为逻辑方法
C#开发Unity游戏教程之游戏对象的行为逻辑方法 游戏对象的行为逻辑——方法 方法(method),读者在第1章新建脚本时就见过了,而且在第2章对脚本做整体上的介绍时也介绍过,那么上一章呢,尽管主要 ...
- BZOJ.2705.[SDOI2012]Longge的问题(莫比乌斯反演 欧拉函数)
题目链接 \(Description\) 求\[\sum_{i=1}^n\gcd(i,n)\] \(Solution\) \[ \begin{aligned} \sum_{i=1}^n\gcd(i,n ...
- NOI.AC NOIP模拟赛 第六场 游记
NOI.AC NOIP模拟赛 第六场 游记 queen 题目大意: 在一个\(n\times n(n\le10^5)\)的棋盘上,放有\(m(m\le10^5)\)个皇后,其中每一个皇后都可以向上.下 ...
- HDU 4770 Lights Against Dudely (2013杭州赛区1001题,暴力枚举)
Lights Against Dudely Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
- There are no packages available for install
解决方法: ·删除sublime Text 安装目录下Data->Packages目录下的Package Control(如果没有,略过此步骤). ·下载Package Control,下载路径 ...
- Java 微服务实践 - Spring Boot 系列
https://segmentfault.com/l/1500000009515571
- 《大话设计模式》C#/C++版pdf/源码下载
大话设计模式(带目录完整版)[中文PDF+源代码].zip 下载地址:http://pan.baidu.com/s/1giQP4大话设计模式C++.pdf下载地址:http://pan.baidu.c ...
- Unity3D实践系列05,为GameObject添加额外属性
在Unity中,通常通过脚本为GameObject添加额外的属性.具体有2种方式:一种是通过硬编码为脚本字段赋值,另一种是通过反射在运行时给脚本字段赋值. 脚本通过字段硬编码为GameObject添加 ...