Verilog快速入门(8)—— 4bit超前进位加法器电路
Verilog快速入门
(1) 四选一多路器
(2)异步复位的串联T触发器
(3)奇偶校验
(4)移位运算与乘法
(5)位拆分与运算
(6)使用子模块实现三输入数的大小比较
(7)4位数值比较器电路
(8)4bit超前进位加法器电路
(9)优先编码器电路①
(10)用优先编码器①实现键盘编码电路
(11)8线-3线优先编码器
(12)使用8线-3线优先编码器实现16线-4线优先编码器
(13)用3-8译码器实现全减器
(14)使用3-8译码器①实现逻辑函数
(15)数据选择器实现逻辑函数
(16)状态机
(17)ROM的简单实现
(18)边沿检测
4bit超前进位加法器电路
- Verilog快速入门
- 一、题目描述
- 二、解析与代码
- 1. 半加器
- 2. 全加器
- 3. 行波进位加法器
- 4. 超前进位加法器
一、题目描述
输入描述:
输入信号:
A_in[3:0],
B_in[3:0]
C_1
类型:wire
输出描述:
输出信号:
S[3:0]
CO
类型:wire
二、解析与代码
以下内容摘自Leonico题主解析
1. 半加器
它不考虑进位输入。其中A和B是两个加数,S是和, C o C_o Co是进位输出。
assign S = A ^ B;
assign C_out = A & B;
2. 全加器
全加器是多bit加法器的基础。 C i C_i Ci是进位输入, C o C_o Co是向上进位输出。
下图中红色路径是全加器的关键路径。
module full_adder(input A,input B,input C_i,output S,output C_o
);assign S = A ^ B ^ C_i;assign C_o = A & B | C_i&(a^b);// assign C_o = A & B | A & C_i | B & C_i; // 也可以??? 不确定
endmodule
3. 行波进位加法器
Ripple-carry adder, RCA。将全加器串联起来。 虽然RCA结构简单易于理解,但容易看出,每一位的运算结果 S i S_i Si都要依赖进位 C i − 1 C_{i-1} Ci−1才能得出。如下图所示,这会使得RCA的关键路径变得很长,而长关键路径会让电路难以满足时序要求。
module rca #(parameter width = 4
)(input [width-1:0] A,input [width-1:0] B,output [width-1:0] S,input C_i,output C_o
);wire [width:0] C;genvar i;generatefor (i=0; i<width; i=i+1)beginfull_adder myadder(.A (A[i]),.B (B[i]),.C_i (C[i]),.S (S[i]),.C_o (C[i+1]),);endendgenerateassign C[0] = C_i;assign C_o = C[width];
endmodule
或者
//行波进位
wire C2,C3,C4;
sub_add sub_add_inst1(.Ai(A_in[0]),.Bi(B_in[0]),.C(C_1),.Si(S[0]),.Ci(C2)
);
sub_add sub_add_inst2(.Ai(A_in[1]),.Bi(B_in[1]),.C(C2),.Si(S[1]),.Ci(C3)
);
sub_add sub_add_inst3(.Ai(A_in[2]),.Bi(B_in[2]),.C(C3),.Si(S[2]),.Ci(C4)
);
sub_add sub_add_inst4(.Ai(A_in[3]),.Bi(B_in[3]),.C(C4),.Si(S[3]),.Ci(C0)
);
///
module sub_add(input Ai,input Bi,input C,output Si,output Ci
);assign Si = Ai ^ Bi ^ C;
assign Ci = (Ai & Bi) ||( (Ai ^ Bi )& C);
4. 超前进位加法器
Lookahead Carry Adder,LCA。超前进位加法器的思想是并行计算进位 C i C_i Ci,以缩短关键路径。 C i C_i Ci可以直接由加数得到。
超前进位加法器是通过公式直接导出最终结果与每个输入的关系,是一种用面积换性能的方法。
对于4bit LCA,进位输出C4的计算路径如下:
`timescale 1ns/1nsmodule lca_4(input [3:0] A_in ,input [3:0] B_in ,input C_1 ,output wire CO ,output wire [3:0] S
);
//超前进位wire [3:0] C;assign S[0] = A_in[0] ^ B_in[0] ^ C_1;assign S[1] = A_in[1] ^ B_in[1] ^ C[0];assign S[2] = A_in[2] ^ B_in[2] ^ C[1];assign S[3] = A_in[3] ^ B_in[3] ^ C[2];assign C[0] = (A_in[0] & B_in[0]) || ((A_in[0] ^ B_in[0]) & C_1);assign C[1] = (A_in[1] & B_in[1]) || ((A_in[1] ^ B_in[1]) & C[0]);assign C[2] = (A_in[2] & B_in[2]) || ((A_in[2] ^ B_in[2]) & C[1]);assign C[3] = (A_in[3] & B_in[3]) || ((A_in[3] ^ B_in[3]) & C[2]);assign CO = C[3];endmodule
Verilog快速入门(8)—— 4bit超前进位加法器电路相关推荐
- 4bit超前进位加法器电路
4bit超前进位加法器电路 题目描述 采用门级描述方式,实现此4bit超前进位加法器,接口电路如下: `timescale 1ns/1nsmodule lca_4(input [3:0] A_in , ...
- 《牛客刷verilog》Part I Verilog快速入门
前言 之前刷过HDLbits上面的题目,点击链接可以查看详细笔记:verilog练习:hdlbits网站系列完结! 最近又想刷一下牛客上面的题目,可以点击链接与小编一起刷题:牛客刷题 小编不才,文中如 ...
- Verilog快速入门(13)—— 用3-8译码器实现全减器
Verilog快速入门 (1) 四选一多路器 (2)异步复位的串联T触发器 (3)奇偶校验 (4)移位运算与乘法 (5)位拆分与运算 (6)使用子模块实现三输入数的大小比较 (7)4位数值比较器电路 ...
- 超前进位加法器(附Verilog代码)
超前进位加法器: 普通全加器(行波进位加法器)是单比特全加器的级联,高位需要低位的进位位,故位宽增大时,加法的组合逻辑不断增大,超前进位加法器解决了这一问题. 优点:不需要等待低位的进位.直接计算就可 ...
- 串行进位加法器与超前进位加法器 verilog
文章目录 串行进位加法器 半加器 全加器 任意位数串行进位加法器 tb 4bit超前进位加法器 Reference 串行进位加法器 半加器 module half_adder (input in1,i ...
- 原码一位乘法器设计_数字IC校招基础知识点复习(七)——超前进位加法器、Wallace树、Booth乘法器...
1.超前进位加法器 看了一些面经,提到会让你用基础的门搭加法器,因此首先得熟悉半加器,全加器等最基础的加法器才能理解之后的超前进位加法器,树型加法器等复杂的加法器. 半加器的输入为a,b,输出为结果s ...
- Verilog中的加法器(半加器,全加器,串行、超前进位加法器)
加法器为半加器和全加器: 半加器:不考虑低位向高位的进位.2输入,2输出. 全加器:考虑低位向高位的进位.3输入(多了进位输入C),2输出. Verilog代码如下: module half_add( ...
- 超前进位加法器 verilog代码
超前进位加法器(Carry LookAhead Adder) 设计思想 由于行波进位加法器具有明显的延迟,从图中可以看出延迟主要是由进位传播链引起的,因此如何可以快速得到每一位的进位信号是加速计算的关 ...
- 超前进位加法器原理与递推式超详细推导+verilog实现与测试
当记忆的线缠绕过往支离破碎,是慌乱占据了心扉.----<寂寞沙洲冷> 超前进位加法器原理 1. 一位二进制的加法 首先考虑两个1位二进制相加 a+b,不考虑上一级的进位,0和1简单相加,即 ...
最新文章
- JAVA生成不重复随机数算法
- OpenStack潜力巨大:红帽打造生态系统
- 一种解决 MacBook 里的 App Store 无法登录的问题
- php 获取signature,PHP开发微信无法获取到signature,timestamp,nonce
- Linux 下安装配置redis
- 【前端】这可能是你看过最全的css居中解决方案了~
- 数据结构思维 第十章 哈希
- 使用MOE进行药效团建模与分析
- 曾鸣:区块链中没有绝对的“去中心化”
- 数据结构(郝斌课程内容概述)
- 全球IP将告罄,美国已摇号限购
- 【NLP】自然语言处理中常见的英文单词
- 外星人笔记本没有修复计算机,外星人笔记本如何恢复出厂设置
- JavaScript中Object.entries(obj)
- 人活到了30岁,月薪还停留在20岁怎么办?
- 数据分析两场NBA比赛结果!大数据+NBA=?
- 《C Primer Plus》第5章复习题与编程练习
- js汉字转换首字母大写拼音
- 在蝰蛇峡谷上实现YOLOv5模型的OpenVINO异步推理程序
- matlab雷达回波生成图像代码,附上IDL的SAR雷达回波代码,请matlab高手帮忙转换成MATLAB代码...