当前位置: 首页 > news >正文

【FPGA】Verilog:BCD 加法器的实现


0x00 XOR 运算在 2 的补码加减法中的应用

2 的补码加减法的特点是,当从某个数中减去负数时,将其转换为正数的加法来计算,并将减去正数的情况转换为负数的加法来计算,从而将所有减法运算转换为加法运算。在这种情况下,两个数的加法运算中产生进位的情况是在加法位的所有位都为 1 时。

换句话说,可以使用 AND 门来检测产生进位的情况。在两个数的加法运算中,进位传播的情况是在加法位的两个位中只有一个被设置为 1 时。这是因为从较低位传递上来的进位位会再次传递到下一个位,因此可以使用 XOR 门来检测进位传播的情况。

  • carry-generate funciton:\color{}g_i=x_iy_i
  • carry-propagate function:\color{}p_i=x_i\oplus y_i

0x01 BCD 运算

在 BCD 中,使用4位值作为操作数,但由于只表示 0 到 9 的数字,因此只使用 0000 到 1001 的二进制数,而不使用 1010 到 1111 的二进制数(don't care)。

因此,不能使用常规的 2'complement 运算来计算,需要额外的处理:如果 4 位二进制数的运算结果在 1010 到 1111 的范围内,需要将 6 (即 0110),添加到运算结果中。

BCD 运算例子

0x02 BCD 加法器的实现

关于 BCD 加法器的结果和模拟过程进行说明(Verilog源代码,输出示例,详细描述过程)。

💬 Design source:

module BCD2(input Cin,input a1,input a2,input a3,input a4,input b1,input b2,input b3,input b4,output sum1,output sum2,output sum3,output sum4,output cout);
wire s1,s2,s3,s4;
wire c1,c2,c3,c4;
wire C1,C2,C3,C4;assign s1 = (a1^b1)^Cin;
assign c1 = (Cin && (a1^b1)) || (a1 && b1);assign s2 = (a2^b2)^c1;
assign c2 = (c1 && (a2^b2)) || (a2 && b2);assign s3 = (a3^b3)^c2;
assign c3 = (c2 && (a3^b3)) || (a3 && b3);assign s4 = (a4^b4)^c3;
assign c4 = (c3 && (a4^b4)) || (a4 && b4);///
assign cout = (c4 || (s3 && s4) || (s2 && s4));assign sum1 = s1;
assign C1 = (0 && (s1^0)) || (s1 && 0);assign sum2 = (s2^cout)^C1;
assign C2 = (C1 && (s2^cout)) || (s2 && cout);assign sum3 = (s3^cout)^C2;
assign C3 = (C2 && (s3^cout)) || (s3 && cout);assign sum4 = (s4^0)^C3;
assign C4 = (C3 && (s4^0)) || (s4 && 0);endmodule

💬 Testbench:

`timescale 1ns / 1psmodule BCD2_tb;
reg Cin,a1,a2,a3,a4,b1,b2,b3,b4;
wire sum1,sum2,sum3,sum4,cout;BCD2 u_BCD2 (.Cin(Cin ),.a1(a1 ),.a2(a2 ),.a3(a3 ),.a4(a4 ),.b1(b1 ),.b2(b2 ),.b3(b3 ),.b4(b4 ),.sum1(sum1 ),.sum2(sum2 ),.sum3(sum3 ),.sum4(sum4 ),.cout(cout )
);initial beginCin = 1'b0;a1 = 1'b0;a2 = 1'b0;a3 = 1'b0;a4 = 1'b0;b1 = 1'b0;b2 = 1'b0;b3 = 1'b0;b4 = 1'b0;
endalways@(Cin or a1 or a2 or a3 or a4 or b1 or b2 or b3 or b4) beginCin <=#10 ~Cin;a1 <= #20 ~a1;a2 <= #40 ~a2;a3 <= #80 ~a3;a4 <= #160 ~a4;b1 <= #320 ~b1;b2 <= #640 ~b2;b3 <= #1280 ~b3;b4 <= #2560 ~b4;
endinitial begin#5120$finish;
endendmodule

🚩 运行结果如下:

📜 Schematic:

实现的 BCD 加法器是一种将 4 位加法器运算结果转换为 BCD 表示的设备。如果运算结果是一个大于 9 的数字,我们只需加上 6 (0110)。为了实现这一点,该装置由两个加法器电路组成:一个用于执行 4 位加法器运算,另一个电路用于在第一个运算结果大于 9 时加上 0110(补偿电路)。

0x03 补充:Single-level 16 bit 超前进位加法器

四个 4 位超前进位加法器可以合并成一个 16 位超前进位加法器。它是四个并行结构的串行连接,是并行和串行结构的混合体。

0x04 补充:2-level 16-bit 超前进位加法器

2 级 16 位超前进位加法器是一种通过使用双 CLA 发生器,比单级 16 位超前进位加法器更能减少通过栅极所需的延迟的结构。

2-level 16-bit Carry Look-ahead Adder

📌 [ 笔者 ]   최역우(韩)
📃 [ 更新 ]   2022.9.20
❌ [ 勘误 ]   /* 暂无 */
📜 [ 声明 ]   由于作者水平有限,本文有错误和不准确之处在所难免,本人也很想知道这些错误,恳望读者批评指正!

📜 参考资料 

Introduction to Logic and Computer Design, Alan Marcovitz, McGrawHill, 2008

Microsoft. MSDN(Microsoft Developer Network)[EB/OL]. []. .

百度百科[EB/OL]. []. https://baike.baidu.com/.

相关文章:

【FPGA】Verilog:BCD 加法器的实现

0x00 XOR 运算在 2 的补码加减法中的应用 2 的补码加减法的特点是&#xff0c;当从某个数中减去负数时&#xff0c;将其转换为正数的加法来计算&#xff0c;并将减去正数的情况转换为负数的加法来计算&#xff0c;从而将所有减法运算转换为加法运算。在这种情况下&#xff0c;…...

机器学习第15天:GBDT模型

☁️主页 Nowl &#x1f525;专栏《机器学习实战》 《机器学习》 &#x1f4d1;君子坐而论道&#xff0c;少年起而行之 ​​ 文章目录 GBDT模型介绍 Boosting 残差 GBDT的缺点 python代码实现 代码 模型参数解释 结语 GBDT模型介绍 GBDT&#xff08;Gradient Boos…...

STM32F407-14.3.9-01输出比较模式

输出比较模式 此功能用于控制输出波形&#xff0c;或指示已经过某一时间段。 当捕获/比较寄存器与计数器之间相匹配时&#xff0c;输出比较功能&#xff1a; ● 将为相应的输出引脚分配一个可编程值&#xff0c;该值由输出比较模式&#xff08;TIMx_CCMRx 寄存器中的 OCxM⑦…...

LeetCode题:174. 地下城游戏

目录 一、题目要求 二、解题思路 &#xff08;1&#xff09;状态表示 &#xff08;2&#xff09;状态转移方程 &#xff08;3&#xff09;初始化dp表 &#xff08;4&#xff09;填表顺序 &#xff08;5&#xff09;返回值 三、代码 一、题目要求 174. 地下城游戏 恶魔们…...

CSS、JS文件无法正确加载至页面问题与解决

目录 1. 问题出现 2. 分析与解决 3. 总结 1. 问题出现 自己在写项目是时候&#xff0c;想启动浏览器查询首页面index.jsp的显示效果 预期效果应该是下面这样的&#xff1a; 但是实际上是这样的&#xff1a; 意思也就是说可能是关于CSS、JS相关的引入方面出了问题&#xff…...

ftp的服务安装配置

安装 yum install -y vsftpd # 是否安装成功 rpm -qa | grep vsftpd # 是否开机启动 systemctl list-unit-files | grep vsftpd # 开机启动 systemctl enable vsftpd.service # ftp端口 netstat -antup | grep ftp # 状态 service vsftpd status service vsftpd start service…...

原码,补码,反码(极简版)

原码补码反码 都有符号位&#xff0c;0表示正数&#xff0c;1表示负数 正数 正数的原码&#xff0c;补码&#xff0c;反码都相同 负数 负数的原码&#xff0c;最高位是1&#xff0c;其余的用正常二进制表示 负数的反码&#xff0c;对原码进行符号位不变&#xff0c;其余位…...

uniapp监听wifi连接状态

在uniapp中检测WiFi连接状态可以使用uni的API进行操作。 uni.onNetworkStatusChange((res) > { console.log(res)uni.getConnectedWifi({success: function(res) {console.log(已连接WIFI, res);},fail: function(err) {console.log(未连接WIFI, err);}}); }) 此函数将返回…...

2023年总结和2024年展望(以ue为主攻)

2023年就要过去了&#xff0c;总结下&#xff1a; 先说好的地方 1&#xff0c;pbr材质集成到了osg中&#xff0c;加上直接光和间接光。终于知道pbr咋回事了。光线追踪的视频也跟着敲了一个。 2&#xff0c;得到了认可。拿到了半年奖&#xff0c;leader让我明年和架构师一起进行…...

南京大学计算机学院面试准备

该内容是我面试南京大学计算机学院保研的时候的准备题目&#xff0c;最后是面试的时候问到的问题。 目录 1. 自我介绍2. 进程和线程的区别3. 循环引用4. 操作系统怎么利用多核&#xff1f;5. 英文介绍二叉搜索树6. 英文介绍二叉搜索树的时间复杂度7. 介绍 stackover flow8. 什…...

API成批分配漏洞介绍与解决方案

一、API成批分配漏洞介绍 批量分配&#xff1a;在API的业务对象或数据结构中&#xff0c;通常存在多个属性&#xff0c;攻击者通过篡改属性值的方式&#xff0c;达到攻击目的。比如通过设置user.is_admin和user.is_manager的值提升用户权限等级&#xff1b;假设某API的默认接口…...

跨网文件摆渡系统:安全、可控的数字传输桥梁

在企业高度信息化的时代&#xff0c;数据的流通与共享已经成为企业、组织乃至个人之间不可或缺的沟通方式。然而&#xff0c;在数据流通的过程中&#xff0c;我们经常会遇到各种难题和挑战&#xff0c;尤其是当涉及到不同网络环境之间的文件传输。这不仅需要保证文件的安全性&a…...

线程池的原理和基本使用~

线程池的基本原理&#xff1a; 无论是之前在JavaSE基础中&#xff0c;我们学习过的常量池&#xff0c;还是在操作数据库时&#xff0c;我们学习过数据库连接池&#xff0c;以及接下来要学习的线程池&#xff0c;均是一种池化思想&#xff0c;其目的就是为了提高资源的利用率&a…...

PyTorch2.0环境搭建

一、安装python并配置环境变量 1、打开python官网&#xff0c;下载并安装 Welcome to Python.org 下载 寻找版本&#xff1a;推荐使用3.9版本&#xff0c;或其他表中显示为安全&#xff08;security&#xff09;的版本 安装&#xff1a;&#xff08;略&#xff09; 2、配置环…...

figma 基础使用 —— 常用方法

一、 导入组件 分成两种方式 &#xff08;1&#xff09;离线的包导入&#xff08;iOS 常用组件.fig 直接拖拽到figma最近网页&#xff09; &#xff08;2&#xff09;在插件市场下载https://www.figma.com/community 二、figma中使用标尺 快捷键&#xff1a;shift R 三、插件…...

linux rsync 和scp区别

rsync 和 scp 都是 Linux 中用于文件复制的命令&#xff0c;但它们之间存在一些关键差异&#xff1a; 效率&#xff1a;rsync 在复制文件时&#xff0c;只会复制文件中改变的部分&#xff0c;而 scp 则会复制整个文件&#xff0c;即使文件只有一小部分发生了变化。因此&#xf…...

mac如何永久设置环境变量

1. 先将默认shell修改为bash mac修改默认shell为bash-CSDN博客 2. 修改环境变量 Mac中的环境变量介绍 Mac系统的环境变量&#xff0c;加载顺序为&#xff1a; /etc/profile /etc/paths ~/.bash_profile ~/.bash_login ~/.profile ~/.bashrc 当然/etc/profile和/etc/paths…...

小程序一键生成工具哪个好?

在这个数字化时代&#xff0c;小程序已经成为商家吸引客户、提升业务的重要工具。但是&#xff0c;传统的小程序开发方式既费时又费力&#xff0c;让许多商家望而却步。 现在&#xff0c;有了乔拓云小程序模板开发平台&#xff0c;一切都变了。 乔拓云提供了大量精心设计的模板…...

Ubuntu环境下使用nginx实现强制下载静态资源

安装Nginx sudo apt update sudo apt install nginx关闭防火墙 sudo ufw allow Nginx HTTP修改nginx配置 cd /etc/nginx/conf.d vi nginx.conf在http配置中添加(/your path/为需要下载的文件路径) server {listen 80;server_name localhost;location / {root /your path/…...

苹果 macOS 14.1.2 正式发布 更新了哪些内容?

苹果今日向 Mac 电脑用户推送了 macOS 14.1.2 更新&#xff08;内部版本号&#xff1a;23B92 | 23B2091&#xff09;&#xff0c;本次更新距离上次发布隔了 28 天。 需要注意的是&#xff0c;因苹果各区域节点服务器配置缓存问题&#xff0c;可能有些地方探测到升级更新的时间略…...

基于Adafruit IO与振动传感器的智能洗衣机提醒器DIY教程

1. 项目概述&#xff1a;告别遗忘&#xff0c;让洗衣机“开口说话”你有没有过这样的经历&#xff1f;把衣服塞进洗衣机&#xff0c;按下启动键&#xff0c;然后转头就去忙别的事情&#xff0c;等再想起来时&#xff0c;已经是好几个小时甚至第二天&#xff0c;湿漉漉的衣服在滚…...

django-stubs模型类型检查实战:告别运行时错误的终极指南

django-stubs模型类型检查实战&#xff1a;告别运行时错误的终极指南 【免费下载链接】django-stubs PEP-484 stubs for Django 项目地址: https://gitcode.com/gh_mirrors/dj/django-stubs 在Django开发中&#xff0c;模型定义是核心环节&#xff0c;但传统开发模式下&…...

5个PoE Overlay技巧:从新手到交易专家的快速升级指南

5个PoE Overlay技巧&#xff1a;从新手到交易专家的快速升级指南 【免费下载链接】PoE-Overlay An Overlay for Path of Exile. Built with Overwolf and Angular. 项目地址: https://gitcode.com/gh_mirrors/po/PoE-Overlay 你是否曾在《流放之路》中为装备价值判断而困…...

【VCS】(6)Code Coverage:从覆盖率收集到报告生成的全流程实战

1. 代码覆盖率基础概念 第一次接触代码覆盖率这个概念时&#xff0c;我也是一头雾水。记得当时领导问我&#xff1a;"这个模块的验证覆盖率多少了&#xff1f;"我只能支支吾吾说还在跑仿真。后来才明白&#xff0c;代码覆盖率是衡量验证完整性的重要指标&#xff0c;…...

跨平台包管理新思路:paks项目如何统一软件安装体验

1. 项目概述&#xff1a;一个轻量级、跨平台的包管理新思路如果你和我一样&#xff0c;常年混迹在开发运维一线&#xff0c;肯定对“包管理”这件事又爱又恨。爱的是&#xff0c;它能让我们一键安装、更新、卸载软件&#xff0c;省去了手动编译、配置依赖的繁琐&#xff1b;恨的…...

MegSpot视觉对比工具:3个专业级视觉分析难题的终极解决方案

MegSpot视觉对比工具&#xff1a;3个专业级视觉分析难题的终极解决方案 【免费下载链接】MegSpot MegSpot是一款高效、专业、跨平台的图片&视频对比应用 项目地址: https://gitcode.com/gh_mirrors/me/MegSpot 作为一名视觉内容创作者或质量检测人员&#xff0c;你是…...

typescript笔记、ts笔记、npx命令

文章目录npx命令npx tsc编译前后的对比编译前编译后ts和js的区别?报错 error TS5112: tsconfig.json is present but will not be loaded if files are specified on commandline. Use --ignoreConfig to skip this error.typescript并不是一个新概念&#xff0c;只不过随着20…...

阿里Qwen3.6系列实测

阿里Qwen3.6系列实测&#xff5c;1M上下文封神&#xff01;企业香爆&#xff0c;个人用官方举步维艰AI圈彻底沸腾&#xff01;阿里Qwen3.6系列甩出王炸——Plus/Flash支持1MToken超大上下文&#xff0c;思维链推理、全栈编程、多模态理解拉满&#xff0c;企业级生产力怪兽实锤&…...

别再手动整理了!用这个油猴脚本,5分钟搞定百度网盘群文件目录导出

百度网盘群文件目录导出神器&#xff1a;油猴脚本极简操作指南 1. 为什么需要群文件目录导出工具 百度网盘作为国内主流的云存储服务&#xff0c;群组文件共享功能被广泛用于团队协作、资源分发等场景。但官方界面存在一个明显的痛点&#xff1a;当群文件数量达到数百甚至上千时…...

TI毫米波雷达IWR/AWR1642 L3 RAM内存优化实战:从原理到配置

1. 项目概述&#xff1a;为何要动L3 RAM这块“蛋糕”&#xff1f;如果你正在基于TI的IWR1642或AWR1642毫米波雷达芯片进行开发&#xff0c;尤其是当你的应用代码量越来越大&#xff0c;或者数据处理任务越来越重时&#xff0c;你可能会遇到一个瓶颈&#xff1a;内存不够用了。不…...