数字IC基础:有符号数和无符号数加、减法的Verilog设计

相关阅读

数字IC基础icon-default.png?t=N7T8https://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基础:有符号数和无符号数的加减运算icon-default.png?t=N7T8https://blog.csdn.net/weixin_45791458/article/details/134537623

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/206038.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【追求卓越02】数据结构--链表

引导 今天我们进入链表的学习,我相信大家对链表都很熟悉。链表和数组一样,作为最基础的数据结构。在我们的工作中常常会使用到。但是我们真的了解到数组和链表的区别吗?什么时候使用数组,什么时候使用链表,能够正确的选…

微信小程序:This Mini Program cannot be opened as your Weixin version is out-of-date.

项目场景: 问题描述 升级基础库3.2.0,然后PC端整个小程序都打不开了,点击小程序提示”This Mini Program cannot be opened as your Weixin version is out-of-date. Update Weixin to the latest version.“,并且点击Update Wei…

Request 爬虫的 SSL 连接问题深度解析

SSL 连接简介 SSL(Secure Sockets Layer)是一种用于确保网络通信安全性的加密协议,广泛应用于互联网上的数据传输。在数据爬取过程中,爬虫需要与使用 HTTPS 协议的网站进行通信,这就牵涉到了 SSL 连接。本文将深入研究…

搜维尔科技:电影中面部动画的演变,Faceware面部捕捉成后起之秀

面部动画是电影中角色表演的一个重要方面,尤其是在严重依赖电子动画、化妆效果和动作捕捉系统的奇幻电影中。在《龙与地下城:盗贼荣耀》电影中,龙裔角色的面部动画是一个复杂的系统,使该生物在大屏幕上栩栩如生。该系统依赖于一种…

浅析教学型数控车床使用案例

教学型数控车床是一种专为教学和培训设计的机床,它具有小型化、高精度和灵活性的特点,可以作为学校和技术学院的培训机器。下面是一个使用案例,以展示教学型数控车床在教学实训中的应用。 案例背景: 某职业技术学院的机械工程专业…

sd-webui-controlnet代码分析

controlnet前向代码解析_Kun Li的博客-CSDN博客文章浏览阅读1.5k次。要分析下controlnet的yaml文件,在params中分成了4个部分,分别是control_stage_config、unnet_config、first_stage_config、cond_stage_config。其中control_stage_config对应的是13层…

实时数据备份实践inotify和rsync联动

目录 一、实时数据备份 1.实时数据备份 2.定时任务周期性的数据备份 3.实时数据备份 4.Inotify机制 二、实践 1.实时复制环境准备 2.实时复制概念 3.InofityRsync实施复制实战 4.配置好rsync守护进程 5.检查linux是否支持inotify 6.安装inotyify--tools 7.inotify…

【图像分类】基于深度学习的垃圾分类系统的设计与实现(ResNet网络,附代码和数据集)

写在前面: 首先感谢兄弟们的关注和订阅,让我有创作的动力,在创作过程我会尽最大能力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌。(专栏订阅用户订阅专栏后免费提供数据集和源码一份,超级VIP用户不在服务范围之内,不想订阅专栏的兄弟们可以私信…

服务器主机安全的重要性及防护策略

在数字化时代,服务器主机安全是任何组织都必须高度重视的问题。无论是大型企业还是小型企业,无论是政府机构还是个人用户,都需要确保其服务器主机的安全,以防止数据泄露、网络攻击和系统瘫痪等严重后果。 一、服务器主机安全的重…

计数排序java实现

计数排序假设n个输入元素中的每一个都是在0到k区间的一个整数,其中k为某个整数,当kO(n)时,排序的运行时间为θ(n)。 计数排序的基本思想是:对每一个输入元素x,确定小于x的元素个数。利用这一信息,就可以直…

ON1 Photo RAW 2024 for Mac——专业照片编辑的终极利器

ON1 Photo RAW 2024 for Mac是一款专为Mac用户打造的照片编辑器,以其强大的功能和易用的操作,让你的照片编辑工作变得轻松愉快。 一、强大的RAW处理能力 ON1 Photo RAW 2024支持大量的RAW格式照片,能够让你在编辑过程中获得更多的自由度和更…

Django ORM 执行复杂查询的技术与实践

概要 Django ORM(Object-Relational Mapping)是 Django 框架的核心组件之一,提供了一种高效、直观的方式来处理数据库操作。尽管简单查询在 Django ORM 中相对容易实现,但在面对复杂的数据请求时,需要更深入的了解和技…