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超前进位加法器电路相关推荐

  1. 4bit超前进位加法器电路

    4bit超前进位加法器电路 题目描述 采用门级描述方式,实现此4bit超前进位加法器,接口电路如下: `timescale 1ns/1nsmodule lca_4(input [3:0] A_in , ...

  2. 《牛客刷verilog》Part I Verilog快速入门

    前言 之前刷过HDLbits上面的题目,点击链接可以查看详细笔记:verilog练习:hdlbits网站系列完结! 最近又想刷一下牛客上面的题目,可以点击链接与小编一起刷题:牛客刷题 小编不才,文中如 ...

  3. Verilog快速入门(13)—— 用3-8译码器实现全减器

    Verilog快速入门 (1) 四选一多路器 (2)异步复位的串联T触发器 (3)奇偶校验 (4)移位运算与乘法 (5)位拆分与运算 (6)使用子模块实现三输入数的大小比较 (7)4位数值比较器电路 ...

  4. 超前进位加法器(附Verilog代码)

    超前进位加法器: 普通全加器(行波进位加法器)是单比特全加器的级联,高位需要低位的进位位,故位宽增大时,加法的组合逻辑不断增大,超前进位加法器解决了这一问题. 优点:不需要等待低位的进位.直接计算就可 ...

  5. 串行进位加法器与超前进位加法器 verilog

    文章目录 串行进位加法器 半加器 全加器 任意位数串行进位加法器 tb 4bit超前进位加法器 Reference 串行进位加法器 半加器 module half_adder (input in1,i ...

  6. 原码一位乘法器设计_数字IC校招基础知识点复习(七)——超前进位加法器、Wallace树、Booth乘法器...

    1.超前进位加法器 看了一些面经,提到会让你用基础的门搭加法器,因此首先得熟悉半加器,全加器等最基础的加法器才能理解之后的超前进位加法器,树型加法器等复杂的加法器. 半加器的输入为a,b,输出为结果s ...

  7. Verilog中的加法器(半加器,全加器,串行、超前进位加法器)

    加法器为半加器和全加器: 半加器:不考虑低位向高位的进位.2输入,2输出. 全加器:考虑低位向高位的进位.3输入(多了进位输入C),2输出. Verilog代码如下: module half_add( ...

  8. 超前进位加法器 verilog代码

    超前进位加法器(Carry LookAhead Adder) 设计思想 由于行波进位加法器具有明显的延迟,从图中可以看出延迟主要是由进位传播链引起的,因此如何可以快速得到每一位的进位信号是加速计算的关 ...

  9. 超前进位加法器原理与递推式超详细推导+verilog实现与测试

    当记忆的线缠绕过往支离破碎,是慌乱占据了心扉.----<寂寞沙洲冷> 超前进位加法器原理 1. 一位二进制的加法 首先考虑两个1位二进制相加 a+b,不考虑上一级的进位,0和1简单相加,即 ...

最新文章

  1. JAVA生成不重复随机数算法
  2. OpenStack潜力巨大:红帽打造生态系统
  3. 一种解决 MacBook 里的 App Store 无法登录的问题
  4. php 获取signature,PHP开发微信无法获取到signature,timestamp,nonce
  5. Linux 下安装配置redis
  6. 【前端】这可能是你看过最全的css居中解决方案了~
  7. 数据结构思维 第十章 哈希
  8. 使用MOE进行药效团建模与分析
  9. 曾鸣:区块链中没有绝对的“去中心化”
  10. 数据结构(郝斌课程内容概述)
  11. 全球IP将告罄,美国已摇号限购
  12. 【NLP】自然语言处理中常见的英文单词
  13. 外星人笔记本没有修复计算机,外星人笔记本如何恢复出厂设置
  14. JavaScript中Object.entries(obj)
  15. 人活到了30岁,月薪还停留在20岁怎么办?
  16. 数据分析两场NBA比赛结果!大数据+NBA=?
  17. 《C Primer Plus》第5章复习题与编程练习
  18. js汉字转换首字母大写拼音
  19. 在蝰蛇峡谷上实现YOLOv5模型的OpenVINO异步推理程序
  20. matlab雷达回波生成图像代码,附上IDL的SAR雷达回波代码,请matlab高手帮忙转换成MATLAB代码...

热门文章

  1. MySQL误删数据后快速恢复的方法
  2. kbengine第三方支付流程图
  3. Promise学习笔记(一)
  4. Unity实战篇:实现连连看死局判定(二:具体实现)
  5. 360随身WIFI解决网络感叹号
  6. 会在精读和泛读中自由切换的神经网络
  7. vue中引入第三方js
  8. python解释过程中速度是关键_Python beautifulsoup解析速度改进
  9. JavaScript异步编程的原理
  10. 腾达fh365虚拟服务器,腾达(Tenda)FH365路由器固定(静态)IP设置上网方法