注册
登录
电子工程世界-论坛
返回首页
EEWORLD首页
频道
EE大学堂
下载中心
Datasheet
专题
单片机
物联网
汽车电子
嵌入式
手机/便携
模拟电子
家用电子
网络通信
电源管理
工业控制
测试测量
半导体设计/制造
安防电子
传感器
医疗电子
凔海的个人空间
https://home.eeworld.com.cn/space-uid-641902.html
[收藏]
[复制]
[分享]
[RSS]
空间首页
动态
记录
日志
相册
主题
分享
留言板
个人资料
借用开发板
论坛
淘帖
Collection
查看新帖
最新回复
社区活动
联系管理员
我的空间
帖子
日志
收藏
好友
勋章
积分
安全验证
请完成以下验证码
日志
凔海笔记之FPGA(六):二进制的加法番外篇
已有 896 次阅读
2016-3-25 21:13
貌似在会说话的时候,妈妈就会问,这是几?1+1等于几?如果伸出两个手指头或是说个2,那幸福日子就来了,若是蹦出三个手指头,呵呵……。
咱打小学的就是满十进一的运算,也就是十进制,而对于数字系统来说,它只有高低电平,所以只有0和1。然而就是这些0和1,若我们按一定的顺序排列,就可以表示一些自己想要的东西了,这和十进制数一样,我们可以说119是一百一十九,也可以认为是火警电话,就看在什么语境下了。对于10进制的数学运算,例如146+179=325,计算方式就是由低位到高位进行满十进一。同理可得,二进制的数学运算也是如此。
例如:11+10=101(3+2=5),1001+1100=10101(9+12=21),由右向左,满二进一。我们的计算机就是进行二进制计算的,Why?因为在数字系统中,只有高电平和低电平,如果有“中电平”这么个东西的话可能就是三进制了。那么,用逻辑器件是如何实现的呢?
先看一位的,列个表看一下一位二进制A+B?
看这表可以发现,0+0=0,0+1=1,1+0=1,但当A、B同时为1时,是个麻烦事,因为1+1=2有个进位。所以,以防AB均为1时出现尴尬,需要俩个输出来表示。这样说来,就需要一位表示二进制的第一位,一位表示二进制的第二位,这个第二位是因为进位产生的,所以这个位被称之为“进位”,而第一位被叫做“和”。总得来说,当A+B时,有俩个位数来记录它们的输出,分别为和和进位。
现在将上表分为和和进位俩表如下:
很显然,对于A+B的“和”,就是当AB不一样的时候为1,对于“进位”,就是当AB均为1的时候为1。所以,A+B的运算可以由异或和与门组成,将异或门输出作为“和”,将与门输出作为 “进位”如下图A:
这样A+B的任意情况就都满足了,这个东西有个学名,叫做半加器,如图B, S(sum)是“和”,C(carry-over)是“进位”。为什么叫半加器呢?往下看。
如果A=11,B=11,可以用我们聪明的大脑计算出A+B=110,如何把这个计算用硬件实现呢?用俩个半加器可以吗?是不是感觉无从下手,俩个如何连在一块?对于第一位1+1会产生进位,那这个进位参与第二位的相加,三个数又该如何输入?所以说,半加器是无法实现对进位的处理,更无法进行多位的计算。
估计这就是为什么叫半加器了,它解决不了进位问题啊。所以说,对于多位二进制相加,这个器件需要实现3位数的相加。其中一位是由前一位决定的。怎么实现?所以,现在开始想如何实现三个二进制相加。也就是说,我们要构造一个这样的东西:
输入是三个数,输出是这三个数相加的结果0(00)到3(11)。而我们要实现的功能如下表:
学过数电的一定知道,通过此表就可以得出全加器的逻辑图,因为我们有万能的韦恩图。但是,太麻烦了,太死板了,不想用,所以咱走走歪门邪道吧,没准还行。
由表可知,对于高位来说,有两个及以上个1则为1,对于低位,有奇数个1则为1。看到这个规律,我是有个想法,就是判断是几个1,来决定高位和低位的输出是什么。三位一起判断,咱不会,可以俩位俩位的判断嘛。这时你有没有想到半加器?为什么我想到他了呢?
再看这图,我想回顿悟的。如果没有看下表,如果有的话goto Loop。
对于AB的三种情况:俩个1、一个1、零个1,和和进位也会不同,恰好满足咱们的需要。
Loop:上面我们已经想到了对于俩个输入数据做判断了,那么接下来就该和第三个判断了,如何判断,看表,省事。
由上表可以得出结论,当Co为1,或者S和C同时为,则高位输出1,这时有俩种情况,S和第三个数据有一个为1,则为1。那么,这又可以用一个半加器了,
把第二个半加器的一个输入端改为B1,令它为第三个数,这样实现了三个数的输入。可是呢?第一个半加器的C怎么处理,当AB不全为1时,C为1,而第二个半加器的C,等等,是否意识到了一个问题,更惊奇的是S1和C1不能同时为1,
这就完成了,
下面,来把它扩展到八位,这个应该很简单了吧。
然后,对其进行封装
这就完成了对8位二进制数的相加运算,但须注意的是,这是8位无符号二进制相加。
学识浅薄出拙文,如察错误望赐教,小弟在此感涕零。
山寨源:
编码的奥秘
本文来自论坛,点击查看完整帖子内容。
收藏
邀请
举报
全部
作者的其他最新日志
•
凔海笔记之FPGA(十一):SDRAM(づ。◕‿‿◕。)づ
•
凔海笔记之FPGA(九):玩一玩DS1302
•
凔海笔记之FPGA(十):Verilog描述IIC单字节读写协议
•
凔海笔记之FPGA(八):Verilog描述RS232 UART
•
凔海笔记之FPGA(七):触发器和锁存器
评论 (
0
个评论)
涂鸦板
您需要登录后才可以评论
登录
|
注册
评论
凔海
加为好友
给我留言
打个招呼
发送消息
热门文章
头条资讯
新品 | 只需一对铜线,即可完成以太网传输的标准化建设
谷歌无人车离奇车祸曝光:人类安全员睡着后,误触关闭了自动驾驶
融合创新,推动中国集成电路产业供给侧改革 ——2017年中国半导体市场年会暨第六届中国集成电路产业创新大会今日于南京举行
学习、旅行、锻炼,人生不能俭省的三件事
莫大康:中国存储器梦初探
预告:银行业务光凭“刷脸”真的靠谱吗?
新增数据手册
AGLN030V2-ZQNG81PP
240-032-2-15SCF6J5-18H
EUGA18-FREQ5-I2
2402-32-CJ-B
MATP18DS-GK-BHT
C1206H101J2GAL7800
热搜器件
Y00751K80000B9L
DJT14F11-5AN
LM4890
MASMCG45CA
653P5005C3T
Motor Driver
推荐下载
数字电路课程设计教学大纲.doc
基于单片机交直流数字电压表的设计
自己制作的3D接插件库:Female-Header-2.00-Single-7
CD4023BC
GD32F170xx Datasheet Rev1.0
IEEE最新的100GHz压控振荡器设计让大家了解国
推荐关注
AXS4056:1000mA单节锂电池充电芯片参数资料、内置锂电池反接保护功能
《图解入门——功率半导体基础与工艺精讲(原书第3版)》阅读心得——碳化硅与氮化镓
ROS2 中 TF 变换发布与订阅:实现 base_link 和 test_link 实时可视化显示
《图解入门——功率半导体基础与工艺精讲(原书第3版)》阅读心得之一——一本好书
ROS2 应用:按键控制 MoveIt2 中 Panda 机械臂关节位置
对射传感器最大感应距离是多少米,最大感应距离的多种因素影响