USRP实战——2.正交信号和傅里叶变换

时间:2021-12-14 14:42:25

1.前言

上一篇我们进行了x310母板和twinrx子板的硬件安装,开发环境配置,并实际采集了一段信号样本,x310给出的这些样本是正交信号(quadrature signal),也叫IQ信号

正交信号在现代通信系统中广泛应用,要掌握现代通信系统和软件无线电,必须对正交信号有正确和充分的理解。正交信号的概念还是有一点抽象,但熟悉之后,就能体会到正交信号的应用给现代通信系统中的信号处理带来的方便之处。

我不太相信能够通过网上的文章或xx百科理解正交信号。以我的经验看,网上的文章大多不成系统,抄来抄去,有的以讹传讹,误人子弟。

有人说用正交信号能够传输两路信号,能提高数据传输速率,或者提高了带宽利用率。这完全是扯淡。正交信号可以单独在发送端使用(正交调制),也可以在单独在接收端使用(正交解调),还可以发送接收都使用。假设原来在接收端使用模拟电路,现在接收端改成正交信号处理,发送端完全可以不做任何改变,你自己换了个接收机就能提高了传输速率?!

还有的人一说到正交信号就拿QPSK说事,好像正交信号就只用在QPSK上一样。说这话的人可能就是看着QPSK的原理框图跟正交信号的框图看起来差不多,其实上恐怕既不理解正交信号,也不理解QPSK。正交信号只是为了便于数字信号处理,可以用于任何调制方式,不但数字调制可以用,模拟调制也能用正交信号实现。

使用正交信号最根本也是最重要的考虑就是降低采样率,这样对AD、DA和DSP的要求就能降低到可以实现的程度。

要认真学习,还是得看书。读懂下面几本书的相关章节,基本就能对正交信号理解到位了。

  1. 信号与系统(第三版) 郑君里等 高等教育出版社
  2. 数字通信(第五版) John G.Proakis 电子工业出版社
  3. 数字信号处理(英文版第三版) Richard G.Lyons 电子工业出版社

鉴于正交信号与频谱以及傅里叶变换具有极其密切的关系,不理解傅里叶变换也不太可能理解正交信号。《信号与系统》这本书看完前三章,应该可以掌握傅里叶变换了。在此基础上可以看《数字通信》的2.1节和《数字信号处理》第八章,这两本书对正交信号都给出了精彩的讲解,且各有侧重,都不难接受。尤其是Richard G.Lyons的这本书,我觉得是针对数字信号处理这一主题讲述的最清晰最易懂的一本书了。

2.频域和傅里叶变换

我们用什么方式来表示一个信号?最直观也是最符合人的思维方式的方法是时域表示,说白了就是一个随时间变化的电压值。用公式写出来就是u(t),自变量是时间。把u(t)的图像画出来,就得到了信号的波形。时域表示最常见,也非常好理解,但也存在着其他表示信号的方式。

频域就是除了时域之外第二流行的信号表示方式。看电视的人在讲“频道”这个的时候,就是在使用信号的频域表示。在模拟电视时代,所有电视台的节目在同一条电缆上同时传输,而不同电视台的节目是在频域进行区分的。

频域的概念来源于傅里叶变换,下面直接给出傅里叶变换公式:

USRP实战——2.正交信号和傅里叶变换

从傅里叶正变换公式可以看出,如果知道了信号的时域函数f(t),就能得到一个新的函数F(w)(当然f(t)要满足狄利克雷条件,否则该积分没有结果)。新函数F(w)就是同一个信号的频域函数。而利用傅里叶反变换公式,我们可以求出特定频谱的信号的时域波形。

关于傅里叶变换的具体推导(一般是由傅里叶级数引出的)和重要性质请自行查阅相关教材,下面是几个容易忽略的性质。

  • F(w)的定义域为负无穷大到正无穷大的实数,自变量的物理意义就是频率。而F(w)的值一般情况下是一个复数。既然是复数,F(w)即可以在直角坐标系中表示,也就是实部和虚部。也可以在极坐标系中表示,也就是用幅度和相位。
  • 对某些F(w)应用傅里叶反变换公式,得到的f(t)是一个复函数,这要求我们对实信号的概念进行扩展。以后我们认为f(t)一般情况下是个复信号,常见的实信号只是虚部为零的特殊情况。
  • 注意傅里叶变换和傅里叶级数的区别。假设在时域信号中,t表示时间,单位为s,f(t)表示电压,单位为V。如果f(t)具有周期性,那么f(t)可以写成傅里叶级数累加的形式。画出其幅度谱,纵坐标就是各次谐波的系数,其单位也是V。而傅里叶变换F(w)的单位为V/s。这是因为傅里叶级数是离散的,而傅里叶变换是连续的。所以由傅里叶变换求出的函数,其准确名称应该是频谱密度。这也解释了为什么在画信号u(t)=cos(2*pi*f0*t)的频谱密度的图像时,一定画上箭头。箭头代表了在f0和-f0处是冲激函数,而不是一个点。

我们用指数形式的exp(-j*w*t)取代了三角形式的cos(w*t),因此引入了负频率。又为了求某些F(w)的傅里叶反变换,引入了复信号的概念。因为空中和电线里传播的都是实信号,负频率和复信号的概念初看起来有点难以理解。但只要熟悉之后,就能体会到这些概念给信号处理带来的好处。

3.带通信号的低通等效

掌握傅里叶变换之后,就可以讲清楚正交信号了。先把一些名词的含义明确一下,以免引起不必要的误解。

  • 消息信号:可以被人类理解的信息的内容。最常见的消息信号可能就是语音信号,其频谱范围一般为20Hz~20KHz。
  • 载波:某个频率的正弦电磁波。用3个参数可以完全确定一个载波,即幅度、频率和初始相位,其中最受关注的参数就是载波的频率。例如用于调频广播的载波,其频率在87MHz~108MHz范围内。
  • 已调信号:顾名思义就是调制后的信号,也是发送端最终发射的信号,空中传播的信号,接收端收到的最初信号。无线通信中已调信号是带通实信号。调制就是根据消息信号,对应的改变载波的某个参数,以实现频谱搬移的过程。常见的模拟调制方式有调幅(AM)和调频(FM),调幅就是根据消息信号改变载波的幅度,调频是根据消息信号改变载波的瞬时频率。同样的消息信号和载波,调制方式不同,产生的已调信号也不一样。例如消息信号为一段语音,载波频率为100MHz,分别用AM和FM调制。AM调制后,已调信号的频谱范围位于100MHz附近,且100MHz附近的频谱形状与原消息信号完全一致。FM调制后,已调信号的频谱范围也是位于100MHz附近,但是100MHz附近的频谱形状与原消息信号的频谱已经很不一样。以后我们会结合实际信号进行展示。

下图是某个已调信号的频谱示意图,其中实线表示幅度谱,虚线表示相位谱。由于已调信号是实信号,其频谱具有厄米特对称性,也就是幅度谱密度关于纵轴偶对称,相位谱密度关于纵轴奇对称。已调信号的频谱范围位于+f0和-f0附近,且只占据有限带宽,是一个实带通信号。

USRP实战——2.正交信号和傅里叶变换

现在把已调信号的频谱乘上一个单位阶跃函数,也就是说把已调信号频谱位于纵轴左侧的那一半抹掉,得到的新信号的频谱如下图所示。很明显,这个信号是一个复信号,因为其频谱没有对称性。这个信号称为解析信号(analytic signal),也叫预包络(pre-envelope)。

USRP实战——2.正交信号和傅里叶变换

再将解析信号乘上exp(-2*j*pi*f0),根据傅里叶变换的性质,这就是将解析信号的频谱左移f0。最终得到的信号频谱如下图所示。

USRP实战——2.正交信号和傅里叶变换

这个信号与已调信号的正频率部分有着相同的频谱形状,区别是其频谱范围位于0频附近,我们把这个信号称为已调信号的等效低通信号。由于其频谱没有对称性,等效低通信号也是一个复信号。

等效低通(lowpass equivalent)就是通常所说的正交信号(qudrature signal),也叫基带信号(baseband signal),还有的叫复基带信号、IQ信号、IQ数据等等。以后我们说到这些词的时候,都表示同一个意思。

正交信号的广泛应用是因为数字信号处理器和软件无线电的快速发展。得益于数字信号处理技术的灵活性,我们可以把AD之前的射频部分标准化,无论什么信号都下变频到正交信号,而真正的数据处理在微处理器中以软件的形式完成。这也是一部手机可以支持2G、3G、4G、wifi、GPS等多种无线通信*的原因。

usrp则更加极端。手机用的是专用嵌入式芯片,软件算法一般用各种硬件描述语言实现。usrp直接使用计算机的通用处理器,用c\c++语言完成算法。由于usrp看重通用性,那么射频前端就不会对某种应用进行优化,因此性能上可能不如专门的设备。另外由于通用处理器和操作系统一般不是实时处理系统,对于实时性要求很高的通信*可能无法满足要求。usrp大多用于算法验证和原型设计,对于无线电监测的应用也是很合适。

usrp x310输出的也是正交信号。通信工程师通常把正交信号的实部称为同相部分(in-phase),虚部称为正交部分(qudrature)。我们上一章通过x310采集到的文件,在计算机中按照如下格式存储:I1-Q1-I2-Q2-I3-Q3......,其中I1指第一个样本的同相,Q1指第一个样本的正交,后面以此类推。I和Q都占用两字节,所以每个样本为4字节。以后我们进行的各种SDR信号处理,都是对等效低通进行操作。usrp存储的是纯样本数据,不包含射频频率和采样率等元数据信息。最好在文件名中把这些信息标注清楚,否则过一段时间自己都记不清当初采的是个啥信号。

4.正交解调

上一节从频域对等效低通(复基带信号)的概念进行了说明。带通实信号和等效复信号含有同样的信息,而后者的采样率远远低于前者。从带通实信号得到复基带信号的过程就是所谓的正交解调,也叫下变频;从复基带信号得到带通信号(也叫中频信号)的过程就是所谓的正交调制,也叫上变频。在有的文献中正交解调和正交调制还有其他含义,本文中这两个术语只表示带通实信号和复基带信号之间的转换。

本节我们只讨论正交解调,关于正交调制可以查看文献1和2的相关章节。下面的两种方法分别在文献[2]的2.1节和文献[3]的第八章进行了讨论。这两种方法我们都给出了复数形式和实数形式的原理框图,复数形式在概念上更清晰(前提是对傅里叶变换有好的理解),但由于一般的程序设计语言不支持直接对复数进行运算(Matlab和Python都可以直接支持复数),所以还给出了实数形式的实现过程。

4.1 希尔伯特变换方法

文献[2]的方法与上一部分中等效低通的概念推导完全一致。文献[2]给出了这种方法的复数形式(左)和实数形式(右)的框图。

USRP实战——2.正交信号和傅里叶变换

对已调信号进行希尔伯特变换,乘j后与原已调信号相加,得到解析信号。再进行混频,即得到正交信号。

4.2 低通滤波方法

希尔伯特变换方法是先去掉了负频率部分的频谱,在进行频谱平移。而低通滤波方法是先进行频谱平移,再滤出需要的部分(就是低通部分),两种方法得到的最终结果是一致的。下面先给出复数形式的框图和各个步骤的信号频谱。

USRP实战——2.正交信号和傅里叶变换

接下来给出实数形式的框图。根据是在数字域还是模拟域实现,实数形式还可以再细分成两种。

下面先给出了用模拟器件进行实现的框图,需要两套乘法器,低通滤波器和AD。这种方法需要保持两路信号的参考信号同频且90度的相位差(高精度的相位差工程上比较难实现),还要保证低通滤波器和AD具有相同的工作参数,否则容易造成IQ不平衡。

USRP实战——2.正交信号和傅里叶变换

这种方法的好处在于可以降低AD采样率的要求。对正交信号的采样率只需对带通实信号的采样率的一半。例如usrp子板ubx的接收带宽为160MHz,为了达到这个带宽,直接采样最少采样率要320MHz,为了好的接收效果,最好再有1.25倍的富余,所以直接采样需要400MHz的采样率。而x310的AD芯片(德州仪器ADS62P48,双通道,最高采样率210MHz,采样精度14bit)无法满足直接采样的要求,但是能够满足正交采样的要求。在保证接收效果的前提下,160MHz也是x310支持的最高接收带宽了。

来看看ubx的系统框图中接收通道的最后一段,可见ubx在子板上就使用模拟器件完成了正交信号的生成。

USRP实战——2.正交信号和傅里叶变换

刚才讨论了模拟域实现。如果先对已调信号直接采样,则可以在数字域中完成正交解调过程。这种方法可以避免上述的IQ不平衡的问题,不过这样AD采样率减半的好处不再成立。框图如下。

USRP实战——2.正交信号和傅里叶变换

twinrx就是使用了这种方法。twinrx是一个双接收通道的子板,每个通道带宽为80MHz。下面给出了twinrx的系统框图的部分。框图画出了一个接收通道的最后一段。

x310的AD芯片的两个采样通道分别对twinrx的两个接收通道进行采样,然后在x310中的fpga中经过数字混频、滤波、抽取插值等运算,产生正交信号。顺便说一下,我们可以看到twinrx的二段中频(IF2)中心频率为150MHz,带宽为80MHz,有效频带内最高频为190MHz。200MHz的采样率不能满足低通采样定理,但能够满足带通采样定理,详细请看文献[3]第二章。

USRP实战——2.正交信号和傅里叶变换


至此我们已经讲清楚了复基带信号和正交解调,下面终于要探索现实世界的真实信号了,我们将从最简单的模拟调制信号入手。