数字IC基础:有符号数和无符号数加、减法的Verilog设计
相关阅读
数字IC基础
https://blog.csdn.net/weixin_45791458/category_12365795.html?spm=1001.2014.3001.5482
本文是对数字IC基础:有符号数和无符号数的加减运算一文中的谈到的有符号数加减法的算法进行Verilog实现,有关算法细节请阅读原文,本文不会过多谈到原理相关问题。
虽然有符号加减和无符号加减在底层都是使用同样的补码加法器结构,但我们首先分别设计有符号加减法器和无符号加减法器,然后再将其组成一个完整的加减计算单元。
一个有符号数加减法器的Verilog描述如下所示。
//本加减法器不涉及-8作为减数的情况,-8作为减数需要单独讨论
module signed_adder(input signed [7:0]A, B, input mode, output reg signed [7:0]C, output reg OF);always@(*)beginif(mode == 0) begin //有符号加法C = A + B;OF = ((A[7] == B[7]) & (C[7] != A[7])); //溢出endelse begin //有符号减法C = A + (~B) +1'b1;OF = ((A[7] != B[7]) & (C[7] != A[7])); //溢出endend
endmodule
图1和图2是分别对加法和减法功能进行测试的波形,可以看出在某些情况下结果出现了溢出。

图1 有符号加法测试的波形
图2 有符号减法测试的波形
一个无符号加减法器的Verilog描述如下所示。
module unsigned_adder(input [7:0]A, B, input mode, output reg[7:0]C, output reg CF);reg cout;always@(*)beginif(mode == 0) begin //无符号加法{cout, C} = A + B;CF = cout; //进位endelse begin //无符号减法{cout, C} = A + (~B) +1'b1;CF = cout; //借位endend
endmodule
其中A和B会按照算法中谈到的一样,先补零拓展成9位数(这是自动进行的,进一步的位宽拓展问题可以阅读Verilog基础:表达式位宽的确定(位宽拓展)_verilog定义位宽-CSDN博客这篇文章),然后再按照有符号加减的运算。图3和图4是分别对加法和减法功能进行测试的波形,可以看出在某些情况下结果出现了进位和借位。
图3 无符号加法测试的波形

图4 无符号减法测试的波形
现在可以将两者结合,这样一个可以进行有符号数加减法和无符号数加减法的通用计算器就诞生了。
module adder(input [7:0]A, B, input mode, output reg[7:0]C, output reg CF);reg cout;always@(*)beginif(mode == 00) begin //有符号加法C = A + B;OF = ((A[7] == B[7]) & (C[7] != A[7])); //溢出endelse if(mode == 01) begin //有符号减法C = A + (~B) +1'b1;OF = ((A[7] != B[7]) & (C[7] != A[7])); //溢出endif(mode == 10) begin //无符号加法{cout, C} = A + B;CF = cout; //进位endelse if(mode == 11)begin //无符号减法{cout, C} = A + {(~B)} +1'b1;CF = !cout; //借位endend
endmodule
下面是介绍有符号数和无符号数的加减运算的文章。
数字IC基础:有符号数和无符号数的加减运算
https://blog.csdn.net/weixin_45791458/article/details/134537623
相关文章:
数字IC基础:有符号数和无符号数加、减法的Verilog设计
相关阅读 数字IC基础https://blog.csdn.net/weixin_45791458/category_12365795.html?spm1001.2014.3001.5482 本文是对数字IC基础:有符号数和无符号数的加减运算一文中的谈到的有符号数加减法的算法进行Verilog实现,有关算法细节请阅读原文࿰…...
2023年11月25日(星期六)骑行三家村
2023年11月25日 (星期六) 骑行三家村(赏红杉林),早8:30到9:00, 大观公园门囗集合,9:30准时出发 【因迟到者,骑行速度快者,可自行追赶偶遇。】 偶遇地点:大观公园门口集合 ,家住东,南…...
.skip() 和 .only() 的使用
.skip() 和 .only() 的使用 说明 在做自动化测试中,跳过执行某些测试用例,或只运行某些指定的测试用例,这种情况是很常见的Cypress中也提供了这种功能 如何跳过测试用例 通过describe.skip() 或者 context.skip() 来跳过不需要执行的测试…...
如何证明特征值的几何重数不超过代数重数
设 λ 0 \lambda_0 λ0 是 A A A 的特征值,则 λ 0 \lambda_0 λ0 的代数重数 ≥ \geq ≥ 几何重数 证明 假设 A A A 的特征值 λ 0 \lambda_0 λ0 对应的特征向量有 q 维,记为 α 1 , . . . , α q \alpha_1, ... , \alpha_q α1,...,…...
Android修行手册-POI操作Excel文档
Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分…...
浅析教学型数控车床使用案例
教学型数控车床是一种专为教学和培训设计的机床,它具有小型化、高精度和灵活性的特点,可以作为学校和技术学院的培训机器。下面是一个使用案例,以展示教学型数控车床在教学实训中的应用。 案例背景: 某职业技术学院的机械工程专业…...
图论 2023.11.20
次短路 P2829 大逃离 题意:给定一个无向图,入口1,出口n,求第二短路的值 一个节点所直接连接的地方小于k个(起点和终点除外),那么他就不敢进去。 n<5000,m<100000 思路:次短路…...
思福迪 运维安全管理系统 test_qrcode_b 远程命令执行漏洞
思福迪 运维安全管理系统 test_qrcode_b 远程命令执行漏洞 一、漏洞描述二、漏洞影响三、网络测绘四、漏洞复现1.手动复现2.自动化复现3.python源代码 免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任…...
electron项目开机自启动
一、效果展示:界面控制是否需要开机自启动 二、代码实现: 1、在渲染进程login.html中,画好界面,默认勾选; <div class"intro">开机自启动 <input type"checkbox" id"checkbox&quo…...
2023年约特干故城夜间演艺《万方乐奏有于阗》完美谢幕
11月19日,记者走进约特干故城看到演员在欢乐地跳着刀郎舞和古典舞,庆祝今年以来夜间演艺《万方乐奏有于阗》演出200场完美谢幕。 11月19日在约特干故城,演员正在表演迎宾乐舞。阿卜力克木依卜拉依木摄 当天晚上,城楼上旌旗猎猎&am…...
学习网络编程No.10【深入学习HTTPS】
引言: 北京时间:2023/11/14/18:45,因为种种原因,上个月的文章昨天才更新,目前处于刷题前夕,算法课在看了。这次和以前不一样,因为以前对知识框架没有很好的理念,并不清楚相关知识要…...
ubuntu下docker环境使用GPU配置
本文主要讲述整个命令流程,具体讲解请看官网nvidia-容器工具包和一篇总结得很详细的博文docker使用GPU总结 docker的版本必须安装19.0版本以上的,这里也只讲19.0版本以上的使用方法 首先设置一下网络信息 curl -fsSL https://nvidia.github.io/libnvi…...
渗透工具---BurpSuite 插件开发之HelloWorld
本文主要记录如何利用burp官方的新版API即MontoyaApi 写helloworld(上一篇的demo使用旧版api写的,这篇及后续开发将采用新版api) 先看效果图 更多详细内容见下方 这里有更详细更全面的代码内容 以及配置相关的内容 https://mp.weixin.qq.co…...
2216. 美化数组的最少删除数
我的做法: 使用一个index作为检查坐标,当index为偶数时检查当前数和后一个数是否相等,相等的话,后一个数设置为-1,注意如果相等,要把相等的数保留下来last,以便接下来检查,防止出现2…...
竞赛 题目:基于深度学习的人脸表情识别 - 卷积神经网络 竞赛项目 代码
文章目录 0 简介1 项目说明2 数据集介绍:3 思路分析及代码实现3.1 数据可视化3.2 数据分离3.3 数据可视化3.4 在pytorch下创建数据集3.4.1 创建data-label对照表3.4.2 重写Dataset类3.4.3 数据集的使用 4 网络模型搭建4.1 训练模型4.2 模型的保存与加载 5 相关源码6…...
基于安卓android微信小程序的好物分享系统
运行环境 开发语言:Java 框架:ssm JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7(一定要5.7版本) 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven包&a…...
【Spring Boot】使用WebSocket协议完成来单提醒及客户催单功能
1 WebSocket介绍 WebSocket 是基于 TCP 的一种新的网络协议。它实现了浏览器与服务器全双工通信(双向传输)——浏览器和服务器只需要完成一次握手,两者之间就可以创建持久性的连接, 并进行双向数据传输。 1.1 HTTP协议和WebSocket协议对比 1、HTTP是短…...
如何有效的禁止Google Chrome自动更新?
禁止Chrome自动更新 1、背景2、操作步骤 1、背景 众所周知,当我们在使用Selenium进行Web自动化操作(如爬虫)时,一般会用到ChromeDriver。然而Driver的更新速度明显跟不上Chrome的自动更新。导致我们在使用Selenium进行一些操作时就…...
OpenShift 4 - 部署 RHODS 环境,运行 AI/ML 应用(视频)
《OpenShift / RHEL / DevSecOps 汇总目录》 说明:本文已经在 OpenShift 4.14 RHODS 1.33 的环境中验证 文章目录 RHODS 简介安装 RHODS 环境运行环境说明用 RHODS Operator 安装环境创建 Jupyter Notebook 运行环境 开发调式 AI/ML 应用部署运行 AI/ML 应用视频参…...
MySQL 的执行原理(二)
5.3. MySQL 的查询成本 5.3. MySQL 的查询成本 MySQL 执行一个查询可以有不同的执行方案,它会选择其中成本最低,或者 说代价最低的那种方案去真正的执行查询。不过我们之前对成本的描述是非常模 糊的,其实在 MySQL 中一条查询语句的执行成本…...
Windows Terminal命令行黑科技:5个隐藏技巧让你的终端效率飙升300%
Windows Terminal命令行黑科技:5个隐藏技巧让你的终端效率飙升300% 【免费下载链接】terminal The new Windows Terminal and the original Windows console host, all in the same place! 项目地址: https://gitcode.com/GitHub_Trending/term/terminal 你是…...
如何快速掌握数据流同步技术:Lab Streaming Layer完整使用指南
如何快速掌握数据流同步技术:Lab Streaming Layer完整使用指南 【免费下载链接】labstreaminglayer LabStreamingLayer super repository comprising submodules for LSL and associated apps. 项目地址: https://gitcode.com/gh_mirrors/la/labstreaminglayer …...
3大优势解析:Royal TSX中文汉化包如何让远程管理更简单高效
3大优势解析:Royal TSX中文汉化包如何让远程管理更简单高效 【免费下载链接】Royal_TSX_Chinese_Language_Pack Royal_TSX的简体中文汉化包 项目地址: https://gitcode.com/gh_mirrors/ro/Royal_TSX_Chinese_Language_Pack 你是否曾经面对Royal TSX这款强大的…...
Windows 10系统优化终极指南:如何用Windows10Debloater一键清理预装垃圾应用
Windows 10系统优化终极指南:如何用Windows10Debloater一键清理预装垃圾应用 【免费下载链接】Windows10Debloater Script to remove Windows 10 bloatware. 项目地址: https://gitcode.com/gh_mirrors/wi/Windows10Debloater 你是否曾为Windows 10系统中那些…...
OpenClaw Doctor:基于Claude技能的AI Agent系统自动化诊断与运维指南
1. 项目概述:一个专为Claude设计的OpenClaw“家庭医生”如果你正在用OpenClaw搭建自己的AI Agent聊天机器人集群,那你大概率遇到过这样的场景:半夜收到用户反馈说“机器人不回复了”,或者部署新频道后消息石沉大海,又或…...
蓝桥杯单片机备赛:手把手教你用DS1302实现一个带暂停/调整功能的电子时钟(附完整代码)
蓝桥杯单片机备赛:手把手教你用DS1302实现一个带暂停/调整功能的电子时钟(附完整代码) 在蓝桥杯单片机竞赛中,实时时钟模块是常见的基础功能之一。DS1302作为一款经典的时钟芯片,以其简单可靠的特性成为比赛中的热门选…...
终极免费音乐解锁指南:3步轻松解密你的加密音乐文件
终极免费音乐解锁指南:3步轻松解密你的加密音乐文件 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web 项目地址: https:/…...
【无人机控制】多旋翼无人机建模与控制matlab代码和报告
✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,代码获取、论文复现及科研仿真合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 🔥 内容介绍 近年来&…...
Applite:Mac用户的终极软件管理神器,告别复杂命令行
Applite:Mac用户的终极软件管理神器,告别复杂命令行 【免费下载链接】Applite User-friendly GUI macOS application for Homebrew Casks 项目地址: https://gitcode.com/gh_mirrors/ap/Applite 还在为Mac软件安装和管理而烦恼吗?Appl…...
基于MCP协议构建AI驱动的Attio CRM自动化工作流实战
1. 项目概述:当Attio遇到MCP,自动化工作流的新篇章如果你和我一样,每天的工作都离不开各种SaaS工具,那你一定对“数据孤岛”和“重复劳动”这两个词深恶痛绝。Salesforce里更新了一个客户状态,Notion里的项目看板得手动…...
