0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【教程分享】FPGA零基础学习:数字电路中的数字表示

电子发烧友论坛 来源:未知 2023-04-11 10:30 次阅读

大侠好,欢迎来到FPGA技术江湖。本次带来FPGA系统性学习系列,本系列将带来FPGA的系统性学习,从最基本的数字电路基础开始,最详细操作步骤,最直白的言语描述,手把手的“傻瓜式”讲解,让电子信息通信类专业学生、初入职场小白及打算进阶提升的职业开发者都可以有系统性学习的机会。

系统性的掌握技术开发以及相关要求,对个人就业以及职业发展都有着潜在的帮助,希望对大家有所帮助。后续会陆续更新 Xilinx 的 Vivado、ISE 及相关操作软件的开发的相关内容,学习FPGA设计方法及设计思想的同时,实操结合各类操作软件,会让你在技术学习道路上无比的顺畅,告别技术学习小BUG卡破脑壳,告别目前忽悠性的培训诱导,真正的去学习去实战应用,这种快乐试试你就会懂的。话不多说,上货。

数字电路中的数字表示

在我们的生活中,常用的是十进制数字,有0、1、2、3、4、5、6、7、8、9十个数字。我们用这不同的十个数字可以表示不同的十种情况,但是很多情况下,会现在超过10种情况,那我们应该怎么表示呢?例:有很多(远远多于10个)的房间需要贴门牌号,我们可以从0开始贴,逐渐增加,在我们贴到第10个(9号)后,后面一个我们应该怎么办?

数字信号通常都是用数码来表示的,不同的数码可以表示数量的不同大小。用数码表示数量的时候,仅仅用一个数码往往不够,因此需要用进位计数制的方法组成多位数码使用。我们把多位数码中每一位的构成方法以及从低位到高位的进位规则称为数制。

当用数码表示大小时,它们之间可以进行数量间的加、减、乘、除等算数运算。

下面讨论十进制

十进制是生活中最常使用的进位计数制(可能是人都有十个手指头,十个脚趾头,所以古人创立了十进制),十进制的有0~9十个数码,计数的基数是10。超过9的数必须要用多位数来表示。

例:任何的十进制数字都可以写成本位的数字乘以本位的权重的累加和。十进制的数字一般用“D”来标注。

在日常生活中,我们都是十进制来表示大小,多少等等。十进制有自己的运算规则。例:有五个抽屉,每个抽屉有五块糖,一共有多少块糖?现在我们讨论的是数字电路基础,那么在电路中还适合使用十进制数吗?

在第一章中,我们已经给出答案,用的是“0” 和“1”两个数码。那么我们按照十进制的规律类推一下二进制。

二进制有0和1两个数码,计数的基数是2。超过1的数必须要用多位数来表示。二进制一般用“B”来标注。

例:通过对二进制的本位数字乘以本位的权重的累加和,我们可以算出二进制的101.01,就是我们十进制的5.25。

通过上述的方法,我们确定了二进制换算到十进制的方法。那么十进制的数字换算到二进制的方法如下:

例:将十进制的173化为二进制数字的方法如下:

b638b308-d810-11ed-bfe3-dac502259ad0.png

图1 :十进制173换算二进制的过程


将上述的余数倒着写下来10101101就是我们想要的结果。

通过讲解十进制和二进制,我们应该了解,描述同样一个物体的大小,我们可以用两种不同的方法,但是本质上还是相等的。只是描述的方法不一样而已。

同理,我们可以定义出八进制、十六进制。

八进制使用数码0~7来表示,一般用字母“O”来标注;十六进制使用数码0~9和A~F来表示,一般用字母“H”来标注。它们与十进制的换算关系与二进制相同。

下面我们研究八进制与二进制之间的换算关系

对于八进制来说,它的权重是8的n次幂,也可以表示成权重是2的3n次幂。八进制的数码为0~7,0~7的数码用二进制表示可以写成:K=。如果此时的权重是8的n次幂(2的3n次幂),那么此位的数码乘以权重(K*8的n次幂),用二进制表示就是:。按照二进制的规则,正好是连续三个数码。所以八进制转换二进制的方法如下:

将一个八进制转换为三个二进制排列即可(必须熟悉0到7对应的二进制码)。

例:八进制的253,转换二进制为010 101 011。

二进制转八进制的方法如下:

从权重为1开始,向左(整数向左,小数向右)三个一组,最左或者最右不够三位时,用零补充,转成八进制即可。

例 :二进制1010110.01,分组001 010 110 . 010–> 126.2

十六进制与二进制之间的转换是四个一组(必须熟悉0到9和A到F所对应的二进制码),和八进制是类似的,不在多余描述。

b66a97b0-d810-11ed-bfe3-dac502259ad0.png

图2 :二进制、八进制、十进制、十六进制前16个数码的对应表


思考:为什么在上述图表中,二进制直接用四个数码来表示,八进制直接用两个数码来表示?

四个二进制的数码或者两个八进制的数码才可以表示到十进制的15。

在电路中,这些数码都是要存放的,每一个数码都需要一个小存储空间。当存储空间的个数是固定的时候,所表示的数字的大小也就有了范围。例:只考虑整数的情况下,三个数码的十进制表示000~999。

后续设计时,如果我们出现设计失误,将四个数码存放到三个存储空间里时,就会出现错误(综合器不一定报错),最终结果为将后面的三个数码存放到三个存储空间里了,最高位的那个数码丢掉了,一定要注意。不要在设计中看到某一个变量赋值为N,就一直以为这个变量为N,不一定,一定观察变量的存储空间的个数和N所需要的个数的对比。

思考:在电路中,数字N需要几个存储空间?

根据上一个问题的思考,一个存储空间只能存放一个数码,那就需要看数字N有多少个数码了。这样的想法是正确的吗?注意:在电路中,都是二进制表示。那么也就是数字N需要的存储空间的个数,应该是N转换成为二进制时,他的数码的个数。

例:十进制的25,首先转换成为二进制11001,所以需要5个存储空间。

思考:在设计电路时,需要把所有的数字都写成二进制吗?

目前设计大多数是写代码,代码想要形成电路,需要综合器的综合。而综合器是可以把任何进制的数字转换成为二进制的。注意:存储空间的问题。

思考:在赋值时,两个变量赋值的进制不相同,可以直接对比大小吗?

例 :在电路中变量A赋值十进制的25,变量B赋值十六进制的24,假设变量A和B的存储空间的个数可以放下本身赋值的数字,可以直接对比吗?答案是肯定的,我们经常说的进制不同不能相对比,那是对于人类自己看见的而言,但是对于设计来说,我们的赋值是在代码级别,距离真正的电路还有一个综合器的综合,综合器综合过后,所有的进制都是二进制,那就可以直接对比了。

BCD码(nary-Coded Decimal‎)又称二-十进制代码,亦称二进码十进数。是一种二进制的数字编码形式,用二进制编码的十进制代码。这种编码形式利用了四个位元来储存一个十进制的数码。利用四位二进制表示十进制数的个位或者十位等。

二进制码的10110,表示十进制的22,利用BCD码表示则为0010 0010。

在计算中会经常遇到负数,那么在数字电路中,怎么样来表示负数呢?

首先要认识到,无论是正数还是负数,都是人类赋予它的意义。同样的数字,在对他用不同的眼光来看待时,也会得到不同的结果。例:101,在十进制中它就是一百零一,如果用二进制来看,这就是十进制中的五。

当一个变量为无符号位时,就认为这个变量是正数,所有位按照自己的权重进行计算。如果一个变量为有符号位时,那么规定他的最高位为符号位(0:正数。1:负数),其他位用来表示数值。

下面讨论有符号数的表示。0011表示正三,1011表示负三,这样的表示方法对吗?首先表示方法没有对错之说,只是符合不符合场合。

这个表示方法是不符合当代计算机中的表示方法的。在当代计算机中,不仅仅要描述数的表示,还要表示运算。很明显这两个数字相加不为0。

那应该如何表示负数呢?如果在只有四位的二进制,四位二进制可以表示16种状态,无符号数可以表示0到15,15+1=0,0-1=15,这两个算式是正确的。

b6730d5a-d810-11ed-bfe3-dac502259ad0.png

图3 :四位二进制补码运算的例子

补码就是顺时针方向的长度。

符号和绝对值拼接到一起组成的码成为原码。

表示正数时,补码和原码是相同的;表示负数时,补码和原码不相同,两个绝对值相加应该为“一圈”。

二进制的位数和能够表示的有符号数的范围也是有关系的。例:四位二进制能够表示16种状态,它能够表示的范围[-8:7]。并不是负数比正数多一个,中间有一个0。

原码能够直观的看出大小,补码比较方便有符号位计算。在当代数字电路中,都是利用补码进行存储和运算的。

表示范围为-200到200,至少需要多少位二进制码才能表示?

-200到200一共有401种情况,需要9位来表示。9位的二进制表示有符号数时,能够表示-256到+255。

扩展符号位不改变数字大小

正数不在叙述。对于负数来说,就是在前面加了一个“1”,是否会改变数字大小呢?补码计算原码的规则为:补码减1,符号位不变,其他位取反。而我们添加的“1”,正好在“其他位取反”中,无论扩展多少位,都不会改变数字大小的。

在电路中大多数都是二进制的信息,那我们如何能够看得到汉字或者字母呢?对于字母来说,我们来介绍一下ASCII码。

ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646。

b6875486-d810-11ed-bfe3-dac502259ad0.png

图4 :部分ASCII码对照表


汉字国标码,创建于1980年,目的为了使每个汉字有一个全国统一的代码而颁布了汉字编码的国家标准。每个汉字有个二进制编码,叫汉字国标码。在我国汉字代码标准GB2312-80中有6763个常用汉字规定了二进制编码。具体国标码的信息就不在叙述,有兴趣的读者可以自行查询。

“ABC”字母序列在计算机中存储的形式按照ASCII码存储,十六进制的“41、42、43”。“郝旭帅”汉字序列在计算机中存储的形式按照汉字国标码存储,十六进制的“BA、C2、D0、F1、CB、A7”。

上述叙述的几种计数或者表示规则,都是非常常用的几种。在某些特殊的场合我们也可以自己编写规则,类似于24进制数,用5个二进制表示一个24进制数中的数字,都是可以的。

在数字电路中,只要是发送方和接收方能够统一好编码规则,就是可以的。

如果在数字电路中表示小数?方法有定点数和浮点数(浮点数不做介绍)。

定点数

定点格式,即约定电路中所有数据的小数点位置是固定不变的。

对于整数而言,小数点默认位置在最后一位的后面。例:二进制的101表示十进制的5,小数点的位置就在101的后面。

如果是有小数呢?那如何来表示呢?例:十进制的5.5。

有小数时,就不能够把点放在最后一位的后面了,因为要存放小数,所以点必须在中间。当用8位来表示时,规定四位表示整数,四位表示小数:0101.1000,小数点并不是真实存在的,只是我们规定的而已。

也可以有另外一种理解,整数用的基础值是2的0次幂,所以所有的整数直接编写即可。如果有小数的话,基础值就要有所变化,假如是2的-3次幂。那么表示十进制的5时,就会变为101000。

定点、定点就是定好了小数点的位置,也就是定好基础值。

浮点数即小数点的位置可以浮动,利用专门的几个数码确定小数点的位置。这里不做过多介绍,有兴趣的读者,可以自行查阅相关资料


b6b1c7a2-d810-11ed-bfe3-dac502259ad0.png

b6c2393e-d810-11ed-bfe3-dac502259ad0.png

声明本文由电子发烧友社区发布,转载请注明以上来源。如需社区合作及入群交流,请添加微信EEFans0806,或者发邮箱liuyong@huaqiu.com。

更多热点文章阅读

  • 龙芯架构首款面向嵌入式应用的开发板,2K500开发应用实例

  • 基于32位RISC-V设计的互联型微控制器,沁恒微CH32V307开发样例

  • RK3568!四核64位ARMv8.2A架构,汇聚编译源码及实战样例

  • 尺寸仅有21mm*51mm,板边采用邮票孔设计,合宙 Air105 核心板开发总结

  • 24Bit ADC高精度低功耗MCU 医疗级别设备参考设计(附上高精确算法+电路原理图)


原文标题:【教程分享】FPGA零基础学习:数字电路中的数字表示

文章出处:【微信公众号:电子发烧友论坛】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

原文标题:【教程分享】FPGA零基础学习:数字电路中的数字表示

文章出处:【微信号:gh_9b9470648b3c,微信公众号:电子发烧友论坛】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    数字电路和模拟电路的区别与联系

    的数值表示,如二进制数字0和1。数字电路的设备通常是通过处理这些离散的数值来实现逻辑和计算功能的。数字电路在电子计算机和通信设备中得到广泛应用,如计算机处理器、存储器、通信网络等。 相
    的头像 发表于 04-21 10:29 583次阅读

    数字电路仿真元件符号是什么

    数字电路仿真元件通常用符号来表示。这些符号是通过简洁和易于理解的图形来表示元件的特性和功能。符号是数字电路设计和仿真过程中非常重要的一部分,帮助工程师和设计者有效地沟通和理解
    的头像 发表于 04-21 09:20 200次阅读

    全面解析数字电路基础知识

    模拟电路:用连续的模拟电压 / 电流值来表示信息 数字电路:用一个离散的电压序列来表示信息
    发表于 03-13 14:08 130次阅读
    全面解析<b class='flag-5'>数字电路</b>基础知识

    FPGA/CPLD数字电路设计经验分享

    电子发烧友网站提供《FPGA/CPLD数字电路设计经验分享.pdf》资料免费下载
    发表于 11-21 11:03 3次下载
    <b class='flag-5'>FPGA</b>/CPLD<b class='flag-5'>数字电路</b>设计经验分享

    数字电路是什么

    电源电压的高电平和低电平来分别表示0和1,从而实现信息的表达。 不同于生活中使用的数字0123456789,在电子硬件中最常使用的是2进制和16进制,而数字电路中采用的就是二进制。 二进制中一个字节(byte)通常由8个数据位(
    的头像 发表于 11-06 17:25 1262次阅读
    <b class='flag-5'>数字电路</b>是什么

    建立/保持时间对数字电路的影响

    建立/保持时间对数字电路的影响 数字电路是指使用数字信号进行连接和处理信息的电路数字电路是由一系列数字
    的头像 发表于 10-29 14:21 401次阅读

    数字电路用什么仪器测试

    数字电路用什么仪器测试  数字电路测试是数字电路设计的重要环节。它是验证数字电路功能是否按照所期望的方式工作的过程。在数字电路测试过程中,要
    的头像 发表于 09-19 16:33 703次阅读

    数字电路如何实现倍频?

    数字电路如何实现倍频?  数字电路是由数字电子器件以及逻辑门电路组成,可以用于处理数字信号或数字
    的头像 发表于 09-18 10:37 3995次阅读

    为什么说数字电路无法取代模拟电路

    ,具有高精度和高保真度的特点。在很多领域中,数字电路的应用已经越来越广泛,然而数字电路无法取代模拟电路数字电路都是由数字信号构成,采用的
    的头像 发表于 08-27 15:37 1353次阅读

    数字电路的定义、应用及分类

    数字电路是现代电子技术中的重要组成部分,它是由数字信号进行处理和传输的电路系统。数字电路的定义是指由逻辑门和触发器等基本逻辑元件组成的电路
    的头像 发表于 07-31 11:46 6496次阅读

    数字电路知识点整理

    编码是各种集合的元素映射到字符串的过程 。数字电路中的数字表示就是一串用已约定好的表示的 0 和 1 的组合。
    的头像 发表于 06-27 14:16 873次阅读
    <b class='flag-5'>数字电路</b>知识点整理

    数字电路知识点整理

    编码是各种集合的元素映射到字符串的过程 。数字电路中的数字表示就是一串用已约定好的表示的 0 和 1 的组合。
    的头像 发表于 06-06 16:07 4280次阅读
    <b class='flag-5'>数字电路</b>知识点整理

    单片机入门之数字电路学习

    单片机是一种可编程的数字电路芯片。数字电路是单片机的基础,单片机是数字电路的发展。
    发表于 06-06 11:34 935次阅读
    单片机入门之<b class='flag-5'>数字电路</b><b class='flag-5'>学习</b>

    FPGA零基学习数字电路中的时序逻辑

    大侠好,欢迎来到FPGA技术江湖。本系列将带来FPGA的系统性学习,从最基本的数字电路基础开始,最详细操作步骤,最直白的言语描述,手把手的“傻瓜式”讲解,让电子、信息、通信类专业学生、
    的头像 发表于 05-11 11:48 686次阅读
    <b class='flag-5'>FPGA</b><b class='flag-5'>零基</b>础<b class='flag-5'>学习</b>:<b class='flag-5'>数字电路</b>中的时序逻辑

    数字电路基础知识分享1

    数字芯片本质是0-1逻辑。我们将用系列文章来一起学习数字电路基础。我们的目标不是求大求全,而是整理一些面试过程跟数字电路基础相关的知识点,以及平时工作中经常用到的
    的头像 发表于 05-04 15:00 753次阅读