数字电路——嵌入式(一)

本文介绍了数字电路的基础知识,包括信息与信号的概念,模拟信号与数字信号的差异,二值逻辑与逻辑电平,以及数字波形。此外,详细阐述了数制转换,如二进制、八进制、十六进制之间的转换,以及BCD码(8421、2421、余3码、格雷码)的概念和运算。文章还讨论了数字电路的分析与测试方法,以及计算机中数据的非数值表示,如ASCII码和检错码(奇偶校验码、海明码)的应用。
摘要由CSDN通过智能技术生成

第零章 绪论

0.1 信息与信号

信息,指音讯、消息、通讯系统传输和处理的对象,泛指人类社会传播的一切内容。
人通过获得、识别自然界和社会的不同信息来区别不同事物,得以认识和改造世界。
信息需要用某种物理方式表达,如:语言、文字、图画等,或者编码,称为消息
消息不便于传输,因此,常常将其转换为信号。现在,最常见的信号是电信号。
电信号一般是指随时间变化的电流或者电压等,其变化与声音、图画或者编码相对应,因此包含了消息中的信息。

0.2 模拟信号与数字信号

模拟信号是指时间和数值都连续的物理量。速度、压力、温度、声音、位置等很多人们从自然界感知的物理量,都属于模拟信号。
通过传感器将模拟物理量转换成与之对应的电压或者电流等电学量。常见的正弦波,锯齿波等是典型的模拟电信号,我们称之为模拟信号。
时间上离散的模拟信号是一种抽样信号,是由模拟信号每隔时间T抽样一次所得到的信号,虽然其波形在时间上是不连续的,但其幅度取值是连续的,所以仍是模拟信号。例如,某地7小时的气压就是一个模拟信号,在数值上都是连续的
在这里插入图片描述
数字信号指人们抽象出来的,时间上不连续的信号,其幅度的取值是离散的,且幅值被限制在有限个数值之内。例如每隔半小时使用气压表对大气压进行测量,并用一组数字代码对测量值进行表示,则就可以得到数字化的大气压信号。
在这里插入图片描述
数字信号可以由模拟信号通过模数转换电路产生。模拟信号可以由数字信号通过数模转换电路产生。处理模拟信号和数字信号的电路分别称为模拟电路数字电路
不同的数据必须转换为相应的信号才能进行传输:模拟数据一般采用模拟信号;数字数据则采用数字信号。
模拟数据也称为模拟量,数字数据也称为数字量,相对于模拟量而言,指的是取值范围是离散的变量或者数值。
电子系统中一般都包含模拟和数字两部分电路。模拟电路是系统中必需的组成部分
存储、传输信号,数字电路更具有优越性。
数字电路中,常用二进制数,其与数字逻辑中的数字1和0相对应,这样就可以采用数字系统实现信号的存储、分析和传输。

0.3 二值逻辑和逻辑电平

数字信号在时间上和数值上都是离散的,常用数字0和1来代表。
0和1不是十进制数中的数字,而是逻辑常量,称为逻辑0和逻辑1,用于代表逻辑假和逻辑真,因此称为二值逻辑或者二值数字逻辑。
二值逻辑代表了客观事物的两种状态,例如是非,真假,开关,高低等。在电路中,可以采用电子开关、电平高低、电流有无来代表其两种不同的状态。电路中电平的高与低形成离散信号电压,或者数字电压,通常用逻辑电平来表示。
逻辑电平(Logic Level)是物理量的相对表示。有逻辑高电平和逻辑低电平。对于不同的电路,逻辑高低电平代表的电压是不一样的,这与集成电路制造工艺有关。电压5V(物理量),可以用二值逻辑1代表,逻辑电平H(高电平);电压0V,用二值逻辑0代表,逻辑电平L(低电平)。

0.4 数字波形

数字波形是逻辑电平在时间轴上的图形表示。
当电压波形只有两个离散值时,称为脉冲波形;这时逻辑电平高和低与电压高和低相对应,数字波形与脉冲波形是相当的(前者用逻辑电平表达,后者用电压值表达)。
理想脉冲信号有前沿和后沿两个边沿:正向脉冲前沿称为“上升沿”,后沿称为“下降沿”。高低电平的转换是不需要时间的。
正向脉冲

正向脉冲

负向脉冲

负向脉冲

数字波形图中,如果表明了多个数字波形的相互时间关系,称为 时序图(Timing diagram)。
实际的脉冲波形有上升时间,脉冲宽度,下降时间,占空比等参数。
脉冲从低电平转换为高电平的时间称为 上升
时间
t r,与之对应的称为 下降时间 t f
实际中,把上升沿从10%V m上升到90%V m所需要的时间定义为t r,把
下降沿从90%V m下降到10%V m所需要的时间定义为t f
从脉冲前沿到达50%V m起,到脉冲后沿到达50%V m为止的时间定义为 脉冲宽度 T W
在这里插入图片描述
周期脉冲序列是指序列中某个脉冲波形以一固定的时间间隔T重复出现,T也称为脉冲信号的周期,频率f表示单位时间内脉冲重复的次数; 非周期的脉冲序列中的各个脉冲宽度、脉冲之间的间隔都是随机的。
占空比,常用脉宽和周期的比值表示。

0.5 数字电路与数字系统

数字电路以逻辑门为基本单元,分为组合逻辑电路和时序逻辑电路两大类。
数字电路的结构是以二值逻辑为基础,电路上工作的信号是离散的数字信号。
电路中的元器件工作在开关状态,也就是导通或者截止。
数字电路的发展,同模拟电路一样,经历了电子管、半导体分立器件和集成电路。
组合逻辑电路和时序逻辑电路,通常称之为逻辑部件功能模块,它们是构成数字系统的基本电路。
通常以是否有控制器作为区别功能部件和数字系统的标志。凡是包含控制器且能按顺序进行操作的系统,不论模大小,一律称为数字系统,否则只能算是一个子系统部件(数字电路),不能叫做一个独立的数字系统。
数字系统的设计方法一般采用自上而下的设计方法。所谓“上”指的是系统功能,向下就是按“系统、子系统、模块、触发器/门电路”的顺序,逐层进行设计。
对于简单的小型数字系统,可以直接对它进行模块划分。将整个系统从逻辑上划分成控制器和处理器(受控电路)两大模块,采用ASM图来描述控制器和处理器。

0.6 数字电路的分析与测试

数字电路中的器件是工作在开关状态,它的分析主要确定其输入和输出之间的逻辑关系。
计算机中对于数字电路和数字系统分析、仿真与设计,采用硬件描述语言,借助于计算机实现设计自动化。EDA:电子设计自动化。
仿真(Simulation),利用模型模拟实际电路系统,通过对系统模型的实验来研究设计中的电路。
常用的测试仪器:电压表,示波器,逻辑分析仪等。

第一章 数制与码制

1.1 数制与数制之间的转换

1.1.1 数制

数制就是计数进位制。数制规定了数码处于不同位置所代表的数值。

1.1.1.1 十进制

基:0、1、2、3、4、5、6、7、8、9;
基数:数码集合的大小,这里是10;
权:100、10、1、0.1等,10的整幂次方;
进位规则:满十,向高一位进一;向高一位借一,当十;
( N ) 10 = a n − 1 a n − 2 . . . a 1 a 0 a − 1 . . . a − n = a n − 1 × 1 0 n − 1 + a n − 2 × 1 0 n − 2 + . . . a 1 × 1 0 1      + a 0 × 1 0 0 + a − 1 × 1 0 − 1 + . . . a − n × 1 0 − n = ∑ i = − m n − 1 a i × 1 0 i \begin{split} \lparen N \rparen_{10} & = a_{n-1} a_{n-2}...a_{1} a_{0} a_{-1}...a_{-n} \\ & = a_{n-1}\times10^{n-1}+ a_{n-2}\times10^{n-2}+ ...a_{1} \times10^{1}\\ &\ \ \ \ + a_{0}\times10^{0}+ a_{-1}\times10^{-1}+ ...a_{-n}\times10^{-n} \\ & = \sum_{\mathclap{i = -m}}^{n - 1} a_i\times10^i \end{split} (N)10=an1an2...a1a0a1...an=an1×10n1+an2×10n2+...a1×101    +a0×100+a1×101+...an×10n=i=mn1ai×10i

1.1.1.2 R进制

基:0、1、… 、R-1;
基数:R;也就是集合的大小;
权: R的整幂次方;
进位规则:满R,向高一位进一;向高一位借一,当R;
( N ) R = a n − 1 a n − 2 . . . a 1 a 0 a − 1 . . . a − n = a n − 1 × R n − 1 + a n − 2 × R n − 2 + . . . a 1 × R 1      + a 0 × R 0 + a − 1 × R − 1 + . . . a − n × R − n = ∑ i = − m n − 1 a i × R i \begin{split} \lparen N \rparen_{R} & = a_{n-1} a_{n-2}...a_{1} a_{0} a_{-1}...a_{-n} \\ & = a_{n-1}\times R^{n-1}+ a_{n-2}\times R^{n-2}+ ...a_{1} \times R^{1}\\ &\ \ \ \ + a_{0}\times R^{0}+ a_{-1}\times R^{-1}+ ...a_{-n}\times R^{-n} \\ & = \sum_{\mathclap{i = -m}}^{n - 1} a_i\times R^i \end{split} (N)R=an1an2...a1a0a1...an=an1×Rn1+an2×Rn2+...a1×R1    +a0×R0+a1×R1+...an×Rn=i=mn1ai×Ri
二进制数在数字后面会加上字符B
八进制数在数字前面会加上0
十六进制数在数字前面加上0X
十六进制数有0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F 十六个数码;

1.1.2 R进制转换为十进制

先按照R进制数的权位展开,再按照十进制的运算规则, 将其各位数值相加得到十进制数。

1.1.3 十进制转换为二进制

数值N的整数部分,如果除以R,得到的余数就是a0;继续再除以R,就得到了a1,…,直到得到an-1,就得到了数据N的所有R进制整数的系数。数值N的小数部分,如果乘以R,得到的整数就是a-1;去掉前一步的整数部分之后,继续再乘以R,就得到了a-2;…,直到得到a-m,就得到了数据N的所有R进制小数的系数。

将十进制数分为整数部分和小数部分分别转换。
十进制数的整数部分,每次除以2,得到余数;作为二进制数值的系数,直到商为0;逆序排列得到的余数,就得到二进制整数部分;
小数部分通过乘以2,取整数,余下的小数继续乘以2,直到余下的小数为0,或者位数满足转换的精度要求为止;顺序排列得到的整数,就是二进制的小数部分。
注意:十进制要求精度为小数点后两位,则转换为二进制需要保留到小数点后7位。
注意:转换当中的零,也要占位,以保证数值的权位正确。

1.1.4 二、八、十六进制之间的转换

1.1.4.1 二进制数转换为八进制数

1位八进制数与3位二进制数是一一对应的。
将它每3位作为一个单元,并用对应的八进制数字代表。整数部分从右到左每三位一组,不足三位用0代替。小数部分从左到右每三位一组,不足三位用0代替。

1.1.4.2 二进制数转换为十六进制数

1位十六进制数与4位二进制数是一一对应的。
将它每4位作为一个单元,并用对应的十六进制数字代表。整数部分从右到左每四位一组,不足四位用0代替。小数部分从左到右每四位一组,不足四位用0代替。

1.1.4.3 八进制数转换成二进制数

由八进制数转换为二进制数,只要将八进制的各位分别用对应的三位二进制数代入。

1.1.4.4 十六进制转换成二进制数

将十六进制数的每一位用4位二进制数代替,就得到对应的二进制数。

1.1.4.5 八进制数与十六进制数之间的转换

借助于二进制;
一位八进制数与三位二进制数一一对应;
一位十六进制数与四位二进制数一一对应;
因此当需要将八进制数转换为十六进制数时,可以先将八进制数转换为二进制数,然后再将二进制数转换为十六进制数;当需要将十六进制数转换为八进制数时,先将十六进制数转换为二进制数,再将二进制数转换为八进制数。
注意以小数点为界。

1.2 码制和计算机的数的表示方法

1.2.1 BCD码的概念

是信息的表示方法,没有大小之分。计算机等数字系统中,有着更为复杂的码制,用于数据的存储,数据的处理以及各种信息之间的交换。
十进制数的数码在计算机中以二进制的形式出现,称为BCD,即用二进制数表示的十进制数。
BCD码与数的区别:码没有大小,而数是有大小的。
十进制的数码一共有十个,至少要用四位二进制码表示。主要有:8421BCD码、2421BCD码、余3BCD码、格雷码等。

1.2.1.1 8421BCD码

按4位二进制数的自然顺序,取前十个数,依次表示十进制的0~9;码的范围0000~1001,其它的6个码是非法码。
8421BCD码是一种有权码,权值从高到低依次为8, 4, 2, 1。

1.2.1.2 2421BCD码

4个码元对应的权分别为2、4、2、1。

1.2.1.3 余3BCD码

由8421BCD码加3形成,因此每一位的权值是不固定的,是一种无权码。
0011~1100代表十进制数0~9。

1.2.1.4 格雷码

又称循环码,特点是任意相邻的两个代码之间仅有一位变化。
数码:0000 0001 0011 0010 0110 0111 0101 0100 1100 1000
格雷码常用在计数器中。这也是一种无权码。请添加图片描述

十进制8421码2421码余3BCD码格雷码
00000000000110000
10001000101000001
20010001001010011
30011001101100010
40100010001110110
50101010110000111
60110011010010101
70111011110100100
81000110010111100
91001111111001000

用BCD码表示十进制数字时,只要将十进制数的每个数码分别用对应的BCD码组带入即可。
需要特别注意的是,用BCD码表示的数,从形式上看与普通二进制数没有区别。但是它们的各位之间不存在逢二进一的进位关系,因而不能按二进制运算法则进行运算。

1.2.2 BCD码的运算

两个BCD码相加,不能按照二进制加法的规则运算。
每一位数码的大小不能超过1001。
两个BCD码相加,如果是全加,不能超过9+9+1(进位)=19其中1是进位。
全加:在加法中会考虑到低位的进1,例如,两位数加法中十位的结果要考虑:加数、被加数、个位是否有进位。
半加:在加法中不会考虑到低位的进1,例如,两位数加法中个位的结果要考虑:加数、被加数。

1.2.2.1 BCD码的加法

对于BCD码进行2进制加法,再进行BCD修正。
加法修正规则:
1、如果任何两个对应位BCD数相加的结果向高一位无进位,若得到的结果小于或等于9,则该位不需修正;若得到的结果大于9且小于16时,该位进行加6修正。
2、如果任何两个对应位BCD数相加的结果向高一位有进位时(即结果大于或等于16,注意不是修正时的进位),该位进行加6修正。
3、低位修正结果使高位大于9时,高位进行加6修正。

1.2.2.2 BCD码的减法

两个组合BCD码进行减法运算时,当低位向高位有借位时,由于"借一作十六"与"借一作十"的差别,将比正确的结果多6,所以有借位时,可采用"减6修正法"来修正。
两个BCD码进行加减时,先按二进制加减指令进行运算,再对结果用BCD调整指令进行调整,就可得到正确的十进制运算结果。
请添加图片描述

1.2.3 原码及其运算

平时,对于数字,我们用“+”表示正值,用“-”表示负值。符号无法在机器中直接表示。因此“+”和“-”需要将其数值化。 通常用0代表“+”,用1代表“-”。这种数值化了的二进制数,也就是符号位和数值位一起表示的数,称为机器数。机器数通常有3种表示方法:原码、补码和反码。

原码的格式为:sm
其中s为符号位,m为有效数字,也称为尾数。
原码又称“符号+数值”,对于正数,符号位是0;对于负数,符号位是1;余下的各位表示该数的绝对值。
对于真值为0的数有两种表示形式:即“正零”,[+0]=00…0;和“负零” [-0]=10…0。0的原码,这两种表示都可以,因此0的原码有两种。

符号位不参与运算,单独处理。
同号数相加或异号数相减,运算规则为绝对值相加,取被加(减)数的符号。
同号数相减或者异号数相加,运算规则为绝对值相减,取绝对值较大值的符号。

1.2.4 补码及其运算

1.2.4.1 补数

在模为M的系统中,一个数与其模的整数倍相加减时,其值不变,即A=A±N*M(mod M),其中N为自然数。
在模为M的系统中,存在两个数A和B,如果A+B=M,则A为B关于模M的补数。A与B互为补数。
假设时钟目前指向9点钟,而实际时间为12点钟;那么我们有两种办法正:一种是将分针顺时针转3圈,这样就校正为12点;另一种办法是将分针逆时针转9圈,也能校正。时钟的模值M是12,因此9和3是互补的两个数。
利用补数的概念,可以将加法和减法运算统一起来。
12 - 3 = 12 - 3 + 12 = 12 + 9

1.2.4.2 补码的运算

在二进制中,若不考虑符号位,系统的模为2n-1。若考虑符号位,系统的模为2n
请添加图片描述
在二进制中对于负数,其补码就是符号位不变,其它各位数取反再加1。
而对于正数,其补码和原码一样。
有一个特殊数字,即0的补码,它只有一种补码形式。假设是八位机,最高位是符号位,则0的补码为00000000;
10000000 --> 11111111 + 1 --> 00000000
00000000 --> 00000000
用二进制补码的概念,很容易的在机器中,将加、减法统一变成加法运算。
对于补码的运算,有如下加、减法规则:
[N1+N2]=[N1]+[N2]
[N1-N2]=[N1]+[-N2]

1.2.5 反码及其运算

反码也叫1的补码,二进制的反码模为2n-1。对于8位二进制,其模为11111111。
真值0的反码也有2种:[+0]=000…00 [-0]=111…111
对于正数,其反码表示与原码表示相同,对于负数,符号位不变为1,其余各位取反;
对于反码的运算,遵循如下的规则:
[N1+N2]=[N1]+[N2]
[N1-N2]=[N1]+[-N2]
当符号位有进位时,应在结果的最低位再加“1”。
当运算结果的符号位没有进位时,如果符号位为0,得到的结果就是真值;如果符号位为1,得到的结果是真值的反码。

1.3 计算机中的非数值数据

1.3.1 ASCLL码

计算机不仅仅能够进行数学运算,还能够处理其它的信息。例如符号、文字、图形以及图像等。当然,计算机中所有的信息都是用0和1组成的代码来代表。
美国标准信息交换码(ASCII码),是目前用的最广泛的字符集及其编码;
一个ASCII码由8位二进制组成,其中,用于表达字符的二进制有7位可以表示128个字符。
第0-32号及127号是控制字符或通讯专用字符;第33-126号是字符。其中第48-57号为0-9十个阿拉伯数字字符;65-90号为26个大写英文字母;97-122号为26个小写英文字母,其余为一些标点符号和运算符号。
在这里插入图片描述

1.3.2 检错码和纠错码

在数据传送中,经常会发生数据错误。为了能够判别数据在传输过程中是否发生了错误,需要对传输的数据能够检错;检错可以采用检错码的方法;为了对数据传送中出现错误的数据进行纠正,就需要纠错码;传输的数据通常是二进制数据。数据中的错误出现在其中的一位或者几位。这些错误是由多种原因引起的,如硬件的错误,干扰(噪声),或者一些突发事件等。

1.3.2.1 奇偶校验码

由信息位和校验位(冗余部分)两部分组成。校验位的取值可使整个校验码中的1的个数按事先的规定,成为奇数或偶数个1。
奇偶校验码可发现奇数位错误,但不能发现偶数位错误。
奇偶校验无法知道是哪一位错了,也就是不能对错误进行定位。

1.3.2.2 海明码

海明码是一种纠错码,使用多位校验位来识别一位错误。
1类海明码有1位错误的纠错功能,但是没有2位错误的检错功能。也就是说,如果发生了1位的错误,它能定位是哪一位出错,因此能纠错。
校验位的编码方式为选定的各位取和。
2类海明码能够检测出两位码发生错误,但是不能对发生错误的两个码元纠错。但是,能够对只发生一个码元错误的码纠错。

1.3.3 其他编码

计算机中,通用的汉字编码采用两个字节来表示一个汉字;
我国颁布的国家标准《信息交换用汉字编码字符集 基本集》(GB2312-80),通常称为国标码,规定了汉字信息交换的基本图形字符及其二进制编码;
国标码和区位码是我国规定的计算机内部使用的图形字符码,是一种内部码;对于用键盘或其它方式(如光笔和声音)将汉字输入到计算机的汉字编码(通常称为汉字的输入编码),则不受此限制。

第二章 逻辑函数及其化简

2.1 逻辑函数基本运算与定律

2.1.1 基本逻辑运算

逻辑代数是用来处理命题之间逻辑关系的代数系统。在逻辑代数中,命题可以用逻辑变量代表;命题之间的逻辑关系,用逻辑函数表示。
二值逻辑,所有的事件只有两种可能:真和假。用数码1和0表示,1代表逻辑真,而0表示逻辑假。它们不具备数的性质,无大、小、正、负之分,仅仅表示真、假两个相反的逻辑状态。
逻辑代数又称布尔代数,开关代数。在这里,是一个由逻辑变量真假(或取值0,1 )、以及用“与”、“或”、“非”3种基本运算构成的代数系统。

逻辑代数的三种基本逻辑运算:非(NOT)、与(AND)、或(OR)

“若前提为真,结论则为假,若前提为假,结论反而为真”,这样的逻辑关系称为非逻辑

2.2 逻辑函数机器描述方式

2.3逻辑函数的化简

RAM:随机存储器,在正常工作条件下可以读取也可以写入,不需要特定的激励也可以写入。
ROM:只读存储器,在正常工作条件下只能读取不可以写入,只有在特定的激励才可以快速写入。
EEPROM:可擦除的只读存储器,是一种特殊的只读存储器,在正常工作条件下可以读取也可以写入,但写入速度慢。

  • 9
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值