1. 信号系统基础:信号的定义与分类
各位同学,咱们今天聊聊信号系统的基础。说实话,我做了十几年汽车电子,每天跟各种信号打交道——从传感器采集的电压信号,到CAN总线上跑的报文,再到ECU里处理的数字量。信号这东西,说白了就是信息的载体。你踩一脚油门,节气门位置传感器就输出一个电压变化,这就是信号。
1.1 信号的定义
信号,在数学上定义为一个或多个自变量的函数。但在咱们工程师眼里,信号就是携带信息的物理量。比如温度传感器输出的电压,随着温度变化而变化,这个电压就是信号。
我个人习惯把信号分成两大类来看:连续信号和离散信号。这个分类标准很简单——看自变量(通常是时间)是否连续。
1.2 连续信号与离散信号
连续信号:自变量在某个区间内连续取值。比如模拟温度传感器输出的电压,每一时刻都有对应的值。我在项目中遇到过,某款发动机的冷却液温度传感器,输出0-5V的模拟电压,对应-40°C到130°C。这就是典型的连续信号。
离散信号:自变量只在某些离散时刻有定义。比如ECU每隔10ms采样一次温度值,得到的就是离散信号。你想想看,MCU不可能处理无限连续的数据,必须采样成离散的才能算。
重要概念:连续信号和离散信号的区别在于自变量(时间)是否连续,而不是幅值是否连续。这一点很多初学者会搞混。
1.3 模拟信号与数字信号
这个分类看的是幅值。模拟信号的幅值连续变化,数字信号的幅值只有有限个离散值(通常是0和1)。
| 类型 | 自变量 | 幅值 | 举例 |
|---|---|---|---|
| 连续模拟信号 | 连续 | 连续 | 麦克风输出 |
| 连续数字信号 | 连续 | 离散 | 数字时钟输出 |
| 离散模拟信号 | 离散 | 连续 | 采样保持输出 |
| 离散数字信号 | 离散 | 离散 | ADC转换结果 |
嗯,这里要注意:我们常说的「数字信号」通常指离散数字信号。ADC就是把连续模拟信号变成离散数字信号的过程。我曾经调试过一个ADC采样异常的问题,折腾了两天才发现是参考电压纹波太大——这就是模拟域的问题影响到了数字域。
1.4 信号的基本运算
信号处理离不开运算。我总结一下最常用的五种基本运算:加、乘、平移、反转、尺度变换。这些在汽车电子里天天用。
1.4.1 加法运算
两个信号相加,对应时刻的值相加。比如在主动降噪系统里,麦克风采集的噪声信号和反相噪声信号相加,就抵消了。公式很简单:y(t) = x₁(t) + x₂(t)。
实战经验:在嵌入式系统里做信号加法,要注意数据类型的溢出。我曾经在16位定点DSP上做音频信号叠加,没做饱和处理,结果信号一大了就出现削波失真。后来加了饱和限幅,问题解决。
1.4.2 乘法运算
乘法在信号处理里太重要了。调制、解调、加窗,都离不开乘法。公式:y(t) = x₁(t) × x₂(t)。
举个例子,在汽车钥匙的RF接收端,本振信号和接收到的ASK信号相乘,就能解调出基带数据。这就是乘法在通信里的典型应用。
1.4.3 平移运算
平移就是信号在时间轴上的移动。左移是超前,右移是延迟。公式:y(t) = x(t - t₀),t₀>0时信号右移(延迟)。
在汽车电子里,信号延迟无处不在。传感器信号经过滤波电路会有群延迟,CAN报文传输有总线延迟。我记得有一次做ABS轮速信号处理,发现左右轮速信号有相位差,排查了半天才发现是左右传感器滤波电路的RC常数不一样导致的延迟差异。
1.4.4 反转运算
反转就是把信号沿纵轴翻转。公式:y(t) = x(-t)。这个运算在信号相关分析里经常用到。
你想想看,做匹配滤波的时候,需要把参考信号反转后再和输入信号做卷积。我在做超声波倒车雷达时,就用到了这个原理来检测回波。
1.4.5 尺度变换
尺度变换分两种:时间尺度和幅值尺度。
- 时间尺度:
y(t) = x(at),a>1时信号被压缩,0<a<1时信号被展宽 - 幅值尺度:
y(t) = A·x(t),A是增益系数
在汽车电子里,幅值尺度变换太常见了。传感器信号经过运放放大,就是幅值尺度变换。时间尺度变换在语音信号处理里用得比较多,比如变声算法。
避坑指南:我曾经在做一个发动机爆震检测项目时,把时间尺度变换和采样率变换搞混了。时间尺度变换改变的是信号本身的频率成分,而采样率变换只是改变了采样点的密度。这两个概念一定要分清楚。
1.5 小结
这一节咱们讲了信号的定义和分类,还有五种基本运算。说白了,信号就是信息的载体,分类看自变量和幅值是否连续。基本运算就是加、乘、平移、反转、尺度变换这五种。
下一节咱们要讲信号的能量和功率,还有正交分解。这些是后面分析信号系统的数学工具,打好基础很重要。
对了,课后可以自己画个正弦波,分别做一下平移、反转和尺度变换,看看波形怎么变。动手做一遍,比看十遍都管用。