一、什么样的信号是数字信号
在上期模拟信号文章的最后,我们向大家提了一个问题:方波脉冲信号是模拟信号还是数字信号?
![](https://i-blog.csdnimg.cn/blog_migrate/8a1a3280a5cfdb0de303de72e3508d65.png)
其实它是什么信号要看它是怎样表示的,以这个方波举例,当方波从信号发生器中发射出来,它是一个模拟信号。当我们根据它的高低电平,把这个方波划分为1和0的时候,它就成为了数字信号。
![](https://i-blog.csdnimg.cn/blog_migrate/929a7a1dc868fb65c720116d6cd1a213.png)
那么一个模拟信号是怎样转化为数字信号的呢?
大家已经知道模拟信号在时间及幅度值上均是连续的。
![](https://i-blog.csdnimg.cn/blog_migrate/c603583070308b8c0261255598c00052.png)
而与其对应的数字信号在时间及幅度值上都是离散的。
![](https://i-blog.csdnimg.cn/blog_migrate/71908a014146138440866bc8c49079bd.png)
自然界中当然不存在这样的数字信号,所以只有经过人为加工,才能使信号离散化。加工的具体过程就是:采样、量化、编码,模拟信号只有经过这三个步骤的处理才会被认定为数字信号。(采样、量化、编码的过程我们会在后面的文章中叙述,这里先行略过。)
![](https://i-blog.csdnimg.cn/blog_migrate/016bac7de1c2ac6067b29c20850aad35.png)
二、0、1的判断标准
虽然转换后的数字信号只有“0”、“1”两种状态,但它仍是以电压电流的形式运行在电路当中。所以我们就需要一些标准来判断数字信号是“0”还是“1”。例如TTL电路,它是晶体管-晶体管逻辑电路(Transistor-Transistor Logic)的缩写,这里的晶体管是指双极性晶体管(BJT),也就是三极管。
![](https://i-blog.csdnimg.cn/blog_migrate/5c1518be660ed3c9af4747d2b480b116.png)
TTL电平信号规定,+5V等价与“1”(高电平),0V等价于“0” (低电平)。这样的数据通信及电平规定方式,被称作TTL信号系统。不过在具体应用中,高低电平的判断是一个范围值。以电路中使用5V电源为例,当输出电压大于等于2.4V时,表示“1”;小于等于0.5V时,表示“0”。当输入电压大于等于2.0V时,表示“1”;小于等于0.8V时,表示“0”。
![](https://i-blog.csdnimg.cn/blog_migrate/561c7963862c7f0907aab0000603510a.png)
但是为了改善噪声容限、减小功耗、提高运行速度,就将电压砍掉了一部分,于是就有了LVTTL电路。它又分为3.3V、2.5V以及更低电压的LVTTL(Low Voltage TTL)。
![](https://i-blog.csdnimg.cn/blog_migrate/fb556dae6375bf1b31b63d48c4bbadc0.png)
以3.3V LVTTL为例,它的电源是3.3V;输出的高电平大于等于2.4V,低电平小于等于0.4V;输入的高电平大于等于2V,低电平小于等于0.8V。如果电压值在0.4V到2.4V之间,是不确定的状态,电路不能清楚的判断它是高电平还是低电平。这样的情况在电路中是不应该出现的。
![](https://i-blog.csdnimg.cn/blog_migrate/a9f035df2e7cdbf50ed7aa5601fbb95d.png)
三、数字电路
现在我们已经大致清楚了数字信号的产生以及在电路中如何传输,但它只有“0”和“1”两种状态,怎么才能将其应用于实际生活,解决复杂问题呢?这就要依靠数字电路了,它是一种用数字信号完成对数字量进行算术运算和逻辑运算的电路。
![](https://i-blog.csdnimg.cn/blog_migrate/0d73669b864bab32f4c03ccab8648d64.png)
可以分为组合逻辑电路和时序逻辑电路两大类。
![](https://i-blog.csdnimg.cn/blog_migrate/1015df47f8e70bd6ce229234291878b3.png)
1、组合逻辑电路
组合逻辑电路由逻辑门构成,所以先介绍几种简单的门电路以便于大家理解。逻辑门可以分为与门、或门、非门、与非门和或非门等多种逻辑门。
![](https://i-blog.csdnimg.cn/blog_migrate/cb1bae55d5d8bc564c1956ce6dc3602b.png)
与门的符号表示如下图所示,将A、B作为与门的两个输入,Y作为输出。就可以写出它的真值表。(真值表通俗来说就是将各种输入信号状态与对应的输出信号汇聚到一张表格中。它有很更重要的作用,但这里就不展开说明了。)
![](https://i-blog.csdnimg.cn/blog_migrate/d1563e2ddc8ebc92b2b2854a86c9e5b2.png)
其含义是:只有输入A、B均是1,输出Y才是1。
非门的符号及其真值表如下图所示。
![](https://i-blog.csdnimg.cn/blog_migrate/c6db5ab36bc71c0dc292a1b8ce8163d6.png)
其含义是:对输入状态取反。
接下来我们就可以用这两种逻辑门构建一个组合逻辑电路。如下图所示:(图像中的符号其实就是与门和非门的结合,非门被简化为一个小圆圈,这样的画法也可以延伸到其他的电路图像中。)
![](https://i-blog.csdnimg.cn/blog_migrate/036fb93c2eb02278d62ea7ceabf4a473.png)
假设将A、B、C置为0、1、0。经过与非门(与门加非门)后输出1、1、1,再经过一个与非门后,输出Y=0。遍历输入信号的所有可能,就可以列出此电路的真值表。
![](https://i-blog.csdnimg.cn/blog_migrate/5a3e9556b0b13b23ca67466ed7de45c4.png)
通过真值表可以看出,当输入A、B、C中只有一个1或没有1时,Y输出0。当输入有两个或两个以上的1时,Y输出1。这就是将这个电路称为判决电路的原因。在这个电路中,A、B、C三个输入经过4个与非门后得到了输出Y。整个电路从左至右依次进行,没有输出回流到某一级的输入中,也就是没有反馈。所以我们可以说,在这个电路中,任一时刻的输出状态只决定于该时刻各输入状态的组合,而与电路的原状态无关。像这样的电路就是组合逻辑电路,其中没有记忆单元,没有反馈电路。
![](https://i-blog.csdnimg.cn/blog_migrate/6d4021a3271167311bc8850ecf488a3d.png)
这也是组合逻辑电路与时序逻辑电路的主要区别。下面为大家列举两个常见的较为复杂的组合逻辑电路。
编码器电路,在数字电路中用二进制代码表示有关的信号称为二进制编码。实现编码操作的电路就是编码器。如图所示是一个8线-3线优先编码器(74LS148),及其符号表示。
![](https://i-blog.csdnimg.cn/blog_migrate/13a41eeb63105a9b9db0c114cf2f0076.png)
数据选择器又称多路选择器(MUX)。每次在地址输入的控制下,从多路输入数据中选择一路输出。
![](https://i-blog.csdnimg.cn/blog_migrate/e5858964a29031b1b7c673bf1b2d6f66.png)
这是一个集成双4选1数据选择器74HC153及其符号表示。
![](https://i-blog.csdnimg.cn/blog_migrate/69bf0e210126f1587fd73ab40b06540e.png)
虽然这些电路执行的逻辑运算很复杂,但是最终也是以高低电平的形式输出,那么使用采集卡的DI端口就可以检测它们的状态。依托计算机强大的计算能力,可以进行复杂的数字运算。
![](https://i-blog.csdnimg.cn/blog_migrate/34c93205ef9ca44bb163bd773baedd4c.png)
运算结果由DO输出相应的高低电平,从而控制外部设备。
![](https://i-blog.csdnimg.cn/blog_migrate/aab2f29a08154de59d6cb9ae90f616fd.png)
当然,这些I/O端口也可以发出一串脉冲信号,这就与时序逻辑电路有关了。
![](https://i-blog.csdnimg.cn/blog_migrate/afa0548955048f42773b478f2c9eea24.png)
2、时序逻辑电路
时序逻辑电路的特点是任一时刻的输出信号不仅取决于该时刻的输入信号,而且还取决于电路原来的状态。它由组合逻辑电路和存储电路组成。
![](https://i-blog.csdnimg.cn/blog_migrate/fb5623b413fc48def2aec4ddc99a7ccf.png)
组合逻辑电路与我们之前介绍的一致。而存储电路实质上是由触发器构成。所以我们先来看看触发器是怎样工作的。
触发器是构成时序逻辑电路的基本单元。它是一种具有记忆功能,能储存1位二进制信息的逻辑电路。
![](https://i-blog.csdnimg.cn/blog_migrate/3bfe4d67cfc2156d657c841f64c572a6.png)
这里介绍一种基本RS触发器。它的电路结构如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/56bcb8c9feb1ad0c7791c756dce8440a.png)
可以看出,与非门的输出(“&”表示与)被传送到了另一个与非门的输入中,这就是电路中所说的反馈。它的工作流程依照我们分析组合逻辑电路时的分析方法就可以。当R(非)=1,S(非)=0,Q置1;当R(非)=0,S(非)=1,Q与Q(非)保持之前状态不变;当R(非)=0,S(非)=1,Q置0。
![](https://i-blog.csdnimg.cn/blog_migrate/4418471d370b3909e28a732e98e32a75.png)
如果我们在电路中增加了一个同步信号也叫做时钟信号(CP)时,就可以得到这样的电路及时序图:
![](https://i-blog.csdnimg.cn/blog_migrate/d2ef54490a813d7791ebfa08de483b26.png)
当CP=0时,S(非)=R(非)=1,触发器保持原来状态不变。当CP=1时,工作情况与基本RS触发器相同。
同组合逻辑电路一样,由基本的RS触发器可以构成很多复杂的触发器以及由它们产生的各种时序逻辑电路。这些内容就不再为大家列举了。那么时序逻辑电路又能完成什么样的工作呢?
四、总线
我们都知道,计算机自身是不会产生信息的,需要通过鼠标、键盘等设备向计算机传递消息。这些设备所使用的总线协议就和时序逻辑电路息息相关了。
![](https://i-blog.csdnimg.cn/blog_migrate/2f4bf8d103c6b9b499a3aa6345f9b140.png)
不过总线又是什么呢?
简单来说,总线就是连接计算机各个功能模块的一条通信主干线。只要器件间想要建立连接,就要通过这条线路。
![](https://i-blog.csdnimg.cn/blog_migrate/2f6729ec9a5a5aa16395acc4107ffa61.png)
当器件A与器件B通讯后,其他器件想要通讯就只能等待A与B通讯完成或是打断它们之间的通信。下面我们就为大家介绍几种常见的总线。
![](https://i-blog.csdnimg.cn/blog_migrate/c1d555e5712f12bc66f15ddac537ca99.png)
1、USB总线
USB总线是英文Universal Serial Bus(通用串行总线)的缩写,用于规范电脑与外部设备的连接和通讯。它已经成为大量计算机和智能设备的标准扩展接口和必备接口之一。
![](https://i-blog.csdnimg.cn/blog_migrate/229cec9d1a00bcb64422e6d3dc014450.png)
其引脚定义如图:
![](https://i-blog.csdnimg.cn/blog_migrate/3a86f442a0e0049c9ae0c374d787cfab.png)
USB是一种异步串行总线。它传输数据主要依靠两根差分模式传输的信号线D+和D-。
![](https://i-blog.csdnimg.cn/blog_migrate/f62af911130d76b4657b6c262723b3ba.png)
主机发送或接受的信息均由这两根数据线传输,而且差分信号状态并不直接代表数据状态。因为USB使用的是NRZI编码方式,这种编码方式较为复杂,我们之后有机会在为大家介绍。总之,USB总线通过一些列的协议标准,使总线上的设备能够完成通信。
2、232总线
工业设备则大量使用232总线,它是常用的串行通信接口标准之一,其全名是“数据终端设备(DTE)和数据通信设备(DCE)之间串行二进制数据交换接口技术标准”。
![](https://i-blog.csdnimg.cn/blog_migrate/e3e95c51594eec9ab9f480900df5aec7.png)
先来看看它的接口形态,公头是带有针脚的一端,母头是带有孔座的一端。
![](https://i-blog.csdnimg.cn/blog_migrate/4e133c5295cf4e85ee5b8011753b0a50.png)
各引脚的定义如下图所示:
现在,在工业控制中一般只使用RS232的三个接口。
![](https://i-blog.csdnimg.cn/blog_migrate/c5d76afa32e8ab12fcacd9269b90ea53.png)
我们按照UART串口协议传输0100 1011。便可得到如下时序图:
![](https://i-blog.csdnimg.cn/blog_migrate/c2e3c27c17a670fe0226f6f98d9c5e82.png)
起始与停止位各占一位,数据以负逻辑,由高位到低位发送。在时序图中大家可以看到,高电平的电压比较高,可达15V。与TTL电平不兼容,不能直接连接到TTL电路上,而且232总线只能进行点对点的通信,很不方便。所以在RS-232的基础上又发展出了许多种通信接口,RS-485就是其中之一,它被广泛用于数据采集和控制应用中。
![](https://i-blog.csdnimg.cn/blog_migrate/9037eda98a9866132b63ce0b85b4e006.png)
3、RS-485总线
RS-485总线使用差分模式传输数据(A、B总线),有较强的抗干扰能力。同时传输距离长,可达1200米。并且在A、B总线上可以挂载多个设备。
![](https://i-blog.csdnimg.cn/blog_migrate/38c658f1045c2ccdc3ede5d2f9f3c236.png)
其内部结构如图:
![](https://i-blog.csdnimg.cn/blog_migrate/20e550817f1ac5c5f5615525d5788053.png)
A、B为总线,R为接收器输入,RE为接受器使能信号;DE为发送器使能信号,D为发送器输出。
当它要发送数据时,DE要变成高电平,这样A、B总线发送的数据才是正确的。
![](https://i-blog.csdnimg.cn/blog_migrate/7be4244d62b4f787d22b142ca33796d1.png)
4、I2C总线
下面我们介绍另一类总线协议。I2C总线是由Philips公司开发的一种简单、双向二进制同步串行总线。
![](https://i-blog.csdnimg.cn/blog_migrate/405c2e4dcb53d68a640e922bd84e593d.png)
因为它只需要两根线,而且传输速度比较慢,所以方便实现。但是这些特点也使得I2C总线不适用于长距离传输,而多用于芯片间的信息传递。
![](https://i-blog.csdnimg.cn/blog_migrate/23f538726bce2f577970cabd148cacc8.png)
其物理层的连接如图:
![](https://i-blog.csdnimg.cn/blog_migrate/4909dc8344ee6d90442a847e6ec13076.png)
其中SCL总线负责传递时钟信号,SDA总线传递数据信息。I2C总线传输数据时的时序图是这样的:
![](https://i-blog.csdnimg.cn/blog_migrate/493a681451cd4a36ac078fac92e8de4d.png)
处于空闲状态时,SCL和SDA均保持高电平;发送信号时,SDA由高电平转换为低电平,SCL保持高电平;发送停止信号时,SDA由低电平转换为高电平,SCL保持高电平。可以看到只有SCL为低电平时,SDA才能变换。当SCL保持高电平时,SDA上的电平是不能任意变化。
5、SPI总线
SPI总线是串行外设接口(Serial Peripheral Interface)的缩写。它是一种4线总线,只占用芯片的4个管脚,节约了芯片管脚,而且硬件功能很强。所以在越来越多的芯片上都集成了这种通信协议。
![](https://i-blog.csdnimg.cn/blog_migrate/d323207f6104beb71d0e97fbecb482c1.png)
它的四根总线分别是MISO:主设备数据输入,从设备数据输出;MOSI:主设备数据输出,从设备数据输入;SCLK,时钟信号,由主设备产生;NSS:从设备使能信号,由主设备控制。
![](https://i-blog.csdnimg.cn/blog_migrate/30045ea728f2eac0ad265f7d74b1deaf.png)
由于SPI是一种同步信号,数据的输出和采集总是跟随时钟信号的变化而进行的。以CPOL=1,CPHA=1为例,可以画出这样时序图:
![](https://i-blog.csdnimg.cn/blog_migrate/5fb51ef6dc230e538c19c3c8404ef02f.png)
CPOL=1表示时钟是高电平时处于空闲;CPHL=1表示数据的输出在一个时钟周期的第一个沿上,也就是图中时钟信号的下降沿是设备输出。推想而知,CPOL和CPHL都有0、1两种取值,所以SPI总线有四种工作状态,这里只列举了其中的一种。
![](https://i-blog.csdnimg.cn/blog_migrate/8d5ba36d1205a64e2dc903d57a9c63c5.png)
总线的类型有很多,我们可以将它们大致分为两类:USB总线、232总线、485总线的传输距离相对而言比较长,所以用来建立各设备之间的信息传递。而I2C总线和SPI总线的传输距离相对较短,主要是完成电路板上的各种芯片以及处理器间的通讯。
![](https://i-blog.csdnimg.cn/blog_migrate/0b6c46cda3bd04401d7e98feaea89f1c.png)
同时需要注意:虽然总线上的数据以电压的形式表现出来,但传输过程中有很多因素需要考量,比如传输的速率、高低电平的范围、译码规则等等。因此用采集卡采集总线上的数字信号,需要复杂的编程逻辑,甚至需要一些电路调整,所以这并不是一个好的方案。不过,正如前面提到的,我们可以使用采集卡的DO端口输出脉冲序列、模拟PWM信号、控制步进电机等等。用DI端口采集连续变化的数字波形进行数据分析。
![](https://i-blog.csdnimg.cn/blog_migrate/6f35ab3f4c35caa48b0a09b7b442561e.png)
以上就是文章的全部内容,如果大家想要对数据采集卡做更加深入的了解,欢迎访问思迈科华官网:smacq.cn。文章的视频内容可点击下方链接跳转。