概述
信号发生器的MATLAB仿真
目录
摘要........................................................................1
ABSTRACT................................................................. 2目录........................................................................3第一章 绪论................................................................1
1.1论文的立题背景及研究意义...............................................1
1.2 MATLAB仿真技术的发展及现状..........................................1
1.3信号发生器的发展及现状.................................................3
1.4论文的主要研究内容.....................................................4
第二章 信号发生器的理论部分................................................5
2.1信号发生器分类简介......................................................5
2.2常规信号...............................................................7
2.3本章小结..............................................................10
第三章 MATLAB的三种仿真办法.............................................11
3.1仿真基础原理..........................................................11
3.2三种仿真方法的简单实现................................................12
3.3基于Matlab 7.0的三种仿真方法比较.....................................15
3.4本章小结............................................................. 15
第四章 信号发生器的MATLAB仿真实现......................................16
4.1常规信号的Matlab仿真实现..............................................16
4.2线性调制系统Matlab仿真实现...........................................18
4.3AM信号发生的Simulink仿真实现......................................... 20
4.4本章小结............................................................. 23
第一章 绪论
1.1 论文的立题背景及研究意义
在现代声纳、雷达等通信系统测试与仿真中都需要高精度的任意的波形信号,任意波形信号的重构技术也是声学和语音信号合成等应用领域中的关键技术之一。不过声纳、雷达等通信系统研制过程中出于保密和成本等原因不可能长期做大量的外场实验,而更多情况下需要在实验室重构这些具有某一种特征的随机信号,进行系统测试、系统分析与半实物仿真研究。
而且,随着通信技术的发展,通信信号的种类越来越多,随着通信事业的发展,通信网络的数目也越来越多。如何截获敌方的通信信号,对其进行预测和干扰从而阻碍敌方正常通信,是通信对抗的主要研究内容。在通信对抗的研究中,为了模拟真实场景,通信信号发生器也是不可或缺的仪器。而市面上的通信信号发生器价格十分昂贵,功能也比较简单,因此开展任意波形的通信信号的高精度重构方法研究工作,具有重要的理论意义和实用价值。
在生成任意波形时域信号的过程中,分为硬件、软件两种设计方法。Matlab仿真属于通过软件编程实现。Matlab是矩阵实验室(Matrix Laboratory)的简称,是美国MathWorks公司出品的商业数学软件。MATLAB可以行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。图形用户界面(Graphical User Interface,简称GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受。Matlab自带了强大的GUI工具。Matlab仿真技术的出现也为研究产生任意波形的通信信号提供了有力的技术支持。
任意波形发生器不仅能产生正弦、余弦、方波、三角波和锯齿波等常见波形,而且还可以利用各种编辑手段,产生传统函数生器所不能产生的真正意义上的任意波形。如它能模拟诸如编码雷达信号、潜艇特征信号、磁盘数据信号、机械振动瞬变过程、电视信号以及各种各样的神经脉冲之类的波形。
1.2 信号发生器的发展及现状
在七十年代前,函数信号发生器能够提供正弦波、余弦波、方波、三角波等几种常用标准波形,产生其它波形时,需要采用较复杂的电路和机电结合的方法。这个时期的波形发生器多采用模拟电子技术,而且模拟器件构成的电路存在着尺寸大、价格贵、功耗大等缺点,并且要产生较为复杂的信号波形,则电路结构非常复杂。同时,主要表现为两个突出问题,一是通过电位器的调节来实现输出频率的调节,因此很难将频率调到某一固定值;二是脉冲的占空比不可调节。
在七十年代后,微处理器的出现,可以利用处理器A/D和D/A,硬件和软件使波形发生器的功能扩大,产生更加复杂的波形。这时期的波形发生器多以软件为主,实质是采用微处理器对DAC的程序控制,就可以得到各种简单的波形。
信号发生的主要实现方法根据实现思路可以分为模拟式和数字式,根据实现方法可以分为直接法、锁相法、直接数字法和混合法四种。
直接法是优点是速度快,相位噪声底,但结构复杂、杂散多。锁相法所采用的锁相频率合成技术在近年发展较快,应用也较广泛,但其频率转换速度不快,电路控制复杂,这使得该技术的应用受到了一定的限制。直接数字法是采用直接数字合成(DDS)的方法实现信号产生。该技术具有频率转换速度快、频率分辨率高、易于控制的突出特点。在信号发生的几种技术当中,直接数字合成技术出现得最晚,但近年来发展得最快。随着大规模集成技术和数模混合信号集成技术的发展,单片集成的DDS芯片纷纷出现,在应用领域内大有后来居上的势头。混合法则是指采用以上方法中的两种及两种以上的方法实现信号发生。
随着现代信息事业的发展,测试对象不断丰富,现代通信系统和电子系统对测试系统提出了越来越高的要求,进而对信号发生器也提出了更高的要求。我们将当前业内对信号发生部件的要求大致归纳为以下四点:(1)高频谱纯度、宽频带。 (2 ) 快速和多点频率捷变。(3 )系列化、模块化。(4 )小型化和工程化。
随着现代电子、计算机和信号处理等技术的发展,极大促进了数字化技术在电子测量仪器中的应用,使原有的模拟信号处理逐步被数字信号处理所代替,从而扩充了仪器信号的处理能力,提高了信号测量的准确度、精度和变换速度,克服了模拟信号处理的诸多缺点,数字信号发生器随之发展起来。
第二章 信号发生器的理论部分
2.1 常规信号
通信的根本任务是远距离传递信息,因此如何准确地传输数字信息是数字通信的一个重要组成部分。在数字传输系统中,其传输对象通常是二元数字信息,它可能来自计算机、电传打字机或其他数字设备的各种数字代码,也可能来自数字电话终端的脉冲编码信号。设计数字传输系统的基本考虑是选择一组有限的离散的波形来表示数字信息。这些离散波形可以是未经调制的不同电平信号,也可以是调制后的信号形式。由于未经调制的电脉冲信号占据的频带通常从直流和低频开始,因此称为数字基带信号。在某些有线信道中,特别是传输距离不太远的情况下,数字基带信号可以直接传送,我们称之为数字信号的基带传输。而在另外一些信道,特别是无线信道和光信道中,数字基带信号则必须经过调制,将信号频谱搬移到高频处才能在信道中传输,我们把这种传输称为数字信号的调制传输(或载波传输)。
调制的方法主要是通过改变余弦波的幅度、相位或频率来传送信息。其基本原理是把数据信号寄生在载波的上述三个参数中的一个上,即用数据信号来进行幅度调制、频率调制或相位调制。数字信号只有几个离散值,因此调制后的载波参数也只有有限个值,类似于用数字信息控制开关,从几个具有不同参量的独立振荡源中选择参量,为此把数字信号的调制方式称为“键控”。数字调制分为调幅、调相和调频三类,分别对应“幅移键控”(ASK)、“相移键控”(PSK)和“频移键控”(FSK)三种数字调制方式。除这些基本的以外,还可以采用各种多相位、多振幅和多频率的方案。但ASK、PSK和FSK这三种数字调制方式仍是最主要和最基本的,所以接下来要对这三种调制技术,以及上面提到的QAM调制技术分别进行介绍。
2.1.1 ASK信号
在幅度键控中载波幅度是随着调制信号而变化的。最简单的形式是载波在二进制基带信号1或0的控制下通或断,这种二进制幅度键控方式称为通一断键控(00K)。
(2-1)
其中,A为载波幅度,
为载波频率,
为二进制数字,
(2-2)
当二进制调制信号为1时,调制后信号为正弦波;当二进制调制信号为0时,调制后信号幅度为0。
在一般情况下,调制信号可以是具有一定波形形状的二进制序列(二元基带信号),即
(2-3)
其中,
为信号间隔,
为调制信号的时间波形,
同上。二进制幅度键控信号的一般时域表达式为
(2-4)
若二进制序列的功率谱密度为
,二进制幅度键控信号的功率谱密度为
,则有
(2-5)
由此可知二进制幅度键控信号的频谱宽度是二进制基带信号的两倍。
二进制幅度键控的调制器可以用一个相乘器来实现,如图2.1所示,对基带信号和载波进行乘法运算即可得到ZASK信号。对于通断键控信号来说,相乘器则可以用一个开关电路来代替,调制信号为1时开关电路导通,为0时开关电路切断。
图2.1 2ASK调制原理图
2.1.2 FSK信号
在二进制频移键控中载波频率随着调制信号1或0而变,1对应于载波频率
,0对应于载波频率
。二进制频移键控己调信号的时域表达式为
(2-6)
其中
,
,
是
的反码,有
(2-7)
在最简单也是最常用的情况下,
为单个矩形脉冲。由式(2-6)可知,二进制频移键控已调信号可以看成是两个不同载频的幅度键控已调信号之和,因此它的频带宽度是两倍基带信号带宽B与
之和,即
(2-8)
二进制频移键控的调制器可以采用模拟信号调制电路来实现,但更容易的实现方法是图2.10中的键控法,两个独立的载波发生器的输出受控于输入的二进制信号,按照1或O分别选择一个载波作为输出。
FSK方式实现起来比较容易,抗噪声和抗衰减性能好,稳定可靠,是中低速数据传输最佳选择。
图2.2 2FSK调制原理图
2.1.3 PSK信号
在PSK调制时,载波的相位随调制信号状态不同而改变。如果两个频率相同的载波同时开始振荡,这两个频率同时达到正最大值,同时达到零值,同时达到负最大值,此时它们就处于“同相”状态;如果一个达到正最大值时,另一个达到负最大值,则称为“反相”。一般把信号振荡一次(一周)作为360度。如果相差半个周期,我们说两个波的相位差180度,也就是反相。二进制相移键控中,载波的相位随调制信号1或0而改变,通常用相位0。和
来分别表示1或0。二进制相移键控已调信号的时域表达式为
(2-9)
(2-10)
若
为单个矩形脉冲,则有
(2-11)
其中,
=0或
。当码变化的时候,信号的相位有
的翻转。
式(2-9)所示BPSK信号与式(2-1)所示OOK信号相对比可知,BPSK信号是双极性非归零码的双边带调制,而OOK信号则是单极性非归零码的双边带调制。BPSK调制信号没有直流分量,因而是抑制载波的双边带调制。由此可见,BPS信号的功率谱与OOK信号的相同,只是少了一个离散的载频分量。这一结论也同样适用于基带信号为其他形式的BPSK信号。BPSK调制器可以采用相乘器,如图2.3所示。将二进制信息由单记性变为双极性后与载波相乘,即可得到已调信号。另外,也可以用相位选择器来实现,根据二进制信息选择载波的相位,也可得到已调信号。
图2.3 BPSK调制原理图
PSK相移键控调制技术在数据传输中,尤其是在中速和中高速的数传机2400bit/s-4800bit/s中得到了广泛的应用。应用较多的是二相和四相调相,即QPSK(Quadrature Phaseshift Keying),在卫星信道中传送数字电视信号时采用的就是QPSK调制方式,它可以看成是由两个ZPSK调制器构成的。输入的串行二进制信息序列经串一并变换后分成两路速率减半的序列,由电平转换器分别产生双极性二电平信号I(t)和Q(t),然后对载波Acos2
fct和Asin2
fct进行调制,相加后即可得到QPSK信号。四相相移调制是利用载波的四种不同相位差来表征输入的数字信息,是四进制移相键控。QPSK是在M=4时的调相技术,它规定了四种载波相位,分别为45度,135度,225度,275度。调制器输入的数据是二进制数字序列,为了能和四进制的载波相位配合起来,则需要把二进制数据变换为四进制数据,这就是说需要把二进制数字序列中每两比特分成一组,共有四种组合,即00,01,10,l1。QPSK中每次调制可传输2个信息比特,这些信息比特是通过载波的四种相位来传递的。
2.1.4 带限白噪声
白噪声是指功率谱密度在整个频域内均匀分布的噪声。严格地说,白噪声只是一种理想化模型,因为实际噪声的功率谱密度不可能具有无限宽的带宽,否则它的平均功率将是无限大,是物理上不可实现的,如图2.4。然而,白噪声在数学处理上比较方便,因此它是系统分析的有力工具。一般,只要一个噪声过程所具有的频谱宽度远远大于它所作用系统的带宽,并且在该带宽中其频谱密度基本上可以作为常数来考虑,就可以把它作为白噪声来处理。
白噪声具有频带宽、能量分布均衡、对被测系统干扰小的特点,在工程实际中,是一种使用十分广泛的信号。当然用任何方法都无法产生理想的无限带宽的白噪声,实际应用中是要求信号的频率特性在一定带宽内具有白噪声的频率特性,即带宽内各频率分量能量近似相等。工程应用和试验研究中,经常需要信号的带宽可调,并具有较好的低通特性,一般还要求产生的白噪声信号具有一定的输出功率。
图2.4 理想白噪声的功率谱密度和自相关函数
白噪声的实现可以通过单一的Logist方程进行,Logist方程见式(2-11)。Logist所产生的迭代混沌序列是平稳的随机过程,并且当参数K=4时,所产生的信号的统计特性和时频特性与白噪声一致,因此用Logist方程可以产生白噪声的理论成立。而且同时应用两个Logist方程可以改善白噪声的性能。
(2-12)
第三章 MATLAB的三种仿真办法
3.1 仿真基础原理
3.1.1 三种仿真方法简介
目前,计算机仿真已经成为解决工程实际问题的重要手段,Matlab软件是其中功能最为强大的仿真软件之一。目前利用Matlab进行系统性能仿真,主要有三种方法:其一是通过脚本程序的编写,实现相关系统仿真和性能分析;其二是利用Simulink模块库,通过鼠标拖拉的方式建立相关系统的仿真模型,对每个模块进行参数设置,以达到动态系统仿真和性能分析的目的;其三是利用图形用户界面GUI,创建各种菜单、按钮等可视化界面,通过函数回调等手段,实现人机交互的系统仿真及其性能分析。Matlab语言比较简单,脚本程序的编写也比较简单,很多语言结构和风格与常用的C语言非常相似,因此,对于初学者而言,是很容易上手的。
Simulink软件具有丰富的模块库,其中公共模块库共包含9个模块库:连续系统模块库、离散系统模块库、函数与表库、数学运算库、非线性系统模块库、信号与系统模块库、系统输出模块库、系统输人模块库、子系统模块库。除了公共模块库之外,Simulink中还集成了许多面向不同专业领域的专业模块库,如面向控制系统设计与分析的Control System Toolbox模块库、面向数字信号处理系统设计与分析的DSP Blockset模块库、专用于通信系统仿真的通讯模块库等。Simulink不但功能非常强大,而且还是一个开放性体系,可以支持用户开发模块来增强其自身的功能。
图形用户界面GUI(Graphics User Interface)是由各种图形对象,如图形窗口、图轴、菜单、按钮、文本框等构建的用户界面,是人机交流信息的T具和方法。在该界面内,用户可以根据界面提示完成整个工程,不必去了解工程内部是如何工作的。GUI设计可以以基本的Matlab程序设计为主,也可以鼠标为主利用GUIDE(Graphics User Interface Design Environment)工具进行设计。利用GUIDE设计图形用户界面时,可通过GUI应用属性设置编辑器来设置对句柄操作的响应,findobj命令可以获得所需对象的旬柄。GUIDE是—个专用于GUI程序设计的快速开发环境,使用者通过鼠标就能迅速地产生各种CUI控件,并随心所欲地改变它们的外形、大小及颜色等,从而帮助用户方便地设计出各种符合要求的图形用户界面。
本章将以线性模拟调制为例,来阐述基于Natlab7.0的三种系统仿真方法,最后在仿真分析的基础上,对三种仿真方法进行分析比较。
3.2.2 线性模拟调制原理
线性模拟调制主要有调幅(AM)、双边带(DSB)、单边带(SSB)和残留边带(VSB)等调制方式。其中VSB调制是介于SSB与DSB之间的一种折中方式。
由于基于Matlab 7.0的三种系统仿真,都需要了解系统数学模型,所以下面就对AM、DSB和SSB调制的数学模型进行分析。
AM调制的时域表示式:
(3-1)
DSB调制的时域表示式:
(3-2)
SSB调制的时域表示式:
(3-3)
式中,
为基带调制信号,均值为0;
为常数,表示叠加的直流分量;
为载波角频率;
为滤波器的时域传输函数。显然,DSB调制与AM调制相比,少了直流分量
。SSB调制只是DSB调制通过一个滤波器得到的,不同的滤波器得到不同的SSB信号。若是低通滤波器,则得到的是下边带信号LSB;若是高通滤波器,则得到的是上边带信号USB。
3.2 三种仿真的简单实现
3.2.1 基于Matlab的系统仿真
本文以线性模拟调制中的线性调制AM调制为例,通过脚本程序的编写,实现系统仿真和性能分析。
首先,编写Matlab脚本程序如下:
clear;
clf;
t=0:pi/10:40*pi;
Carrier=sin(t);
Mod_Sig=sin(t/20);
Dsb_am=Carrier.*(1+Mod_Sig);
plot(t,Carrier,t,Mod_Sig,t,Dsb_am);
title('Plot of carrier modulated by sinewave (dsb-am)');
xlabel('time');
ylabel('voltage');
grid on;
legend('carrier','baseband','modulated signal')
图3.1 基于脚本程序仿真的仿真结果
3.2.2 基于GUI的动态系统仿真及分析
Matlab 7.0通信工具箱提供了一个典型的通信系统通常所包括的信源、信宿、信道和发送接收处理部分,可以通过应用相应的函数实现相关通信功能的仿真。通过使用GUI,可以使不同功能的系统形成一个独立的界面,编写m函数实现界面上相应按钮的功能,使用函数回调功能实现界面和m函数之间的链接。调试成功的图形用户界面可以实现对不同仿真系统的运行、暂停或停止进行控制,通过滑动块或动态文本框等实时修改模块参数,形成一个完整的仿真体系。
仍然以线性模拟调制解调系统中的AM调制为例,设计图形用户界面,编写m函数,通过函数回调等功能,达到动态演示AM调制的目的。
此种仿真首先要建立基于GUI的仿真系统主界面,添加按钮、静态文本、坐标轴等来实现界面的可视化,然后通过编辑回调函数,调用回调函数,来实现分析仿真。
3.3 基于Matlab 的三种仿真方法比较
从上文的仿真范例可以看出,基于脚本程序编写的方法比较简单,只要掌握Matlab语言,就可以编辑一些简单的程序,实现一些仿真功能。但这种方法不直观,对于复杂系统的仿真对编程水乎有较高的要求。另外,这种仿真方法不直观,用户不了解功能系
而使用GUI进行的界面设计,具有人机交互功能,可以实时改变系统各个参数,进行动态仿真,并将仿真结果形象地展现m来。可以通过形象、对比式的演示,使用户能够从整体上认识和区别各种系统,容易理解、印象深刻。因此,这种方法常用于演示系统
的开发,如通信原理课程的实验教学等。
- 信号发生器的MATLAB仿真实现
4.1 常规信号的MATLAB仿真实现
理论论述介绍参见第二章,现在仅介绍用Matlab仿真实现常规数字信号的发生实现,现列举简洁的程序请单及运行结果如图一所示下:
clear all;
close all;
A=1;
fc=2; %2Hz
N_sample=8;
N=500; %码元数
Ts=1; %1Baud/s
dt=Ts/fc/N_sample; %波形采样间隔
t=0:dt:N*Ts-dt;
Lt=length(t);
%产生二进制信号源
d=sign(randn(1,N));
X=length((d+1)/2);
dd=zeros(fc*N_sample,X);
dd(1,:)=(d+1)/2;
dd=reshape(dd,1,fc*N_sample*X)
gt=ones(1,fc*N_sample); %NRZ波形
figure(1)
subplot(411); %输入NRZ信号波形(单极性)
d_NRZ=conv(dd,gt);
plot(t,d_NRZ(1:length(t)));
axis([0 10 0 1.2]);ylabel('输入信号');
%OOK信号
ht=A*cos(2*pi*fc*t);
s_2ask=d_NRZ(1:Lt).*ht;
subplot(412);
plot(t,s_2ask);
axis([0 10 -1.2 1.2]);ylabel('OOK');
%2PSK信号
d_2psk=2*d_NRZ-1;
s_2psk=d_2psk(1:Lt).*ht;
subplot(413);
plot(t,s_2psk);
axis([0 10 -1.2 1.2]);ylabel('2PSK');
%2FSK信号
sd_2fsk=2*d_NRZ-1;
s_2fsk=A*cos(2*pi*fc*t+2*pi*sd_2fsk(1:length(t)).*t);
subplot(414);
plot(t,s_2fsk);
axis([0 10 -1.2 1.2]);ylabel('t');ylabel('2PSK');
图4.1 OOK、PSK、FSK信号的仿真实现图
4.2 线性调制信号的MATLAB仿真实现
Matlab语言比较简单,脚本程序的编写也比较简单,很多语言结构和风格与常用的C语言非常相似,因此,对于初学者而言,是很容易上手的。
本文以线性模拟调制中的线性调制AM、DSB、SSB调制为例,通过脚本程序的编写,实现系统仿真和性能分析。理论介绍参考第三章。
close all;
clear all;
dt=0.001;
fm=1;
fc=10;
t=0:dt:5;
mt=sqrt(2)*cos(2*pi*fm*t);
%AM信号
A=2;
s_am=(A+mt).*cos(2*pi*fc*t);
figure;
subplot(311);
plot(t,s_am);hold on;
plot(t,A+mt,'r');
title('AM');xlabel('t');
%DSB信号
s_dsb=mt.*cos(2*pi*fc*t);
subplot(312);
plot(t,s_dsb);hold on;
plot(t,mt,'r');
title('DSB');xlabel('t');
%SSB信号
s_ssb=real(hilbert(mt).*exp(j*2*pi*fc*t));
subplot(313);
plot(t,s_ssb);
title('SSB');xlabel('t');
图4.2 AM、DSB、SSB信号的仿真实现图
最后
以上就是满意音响为你收集整理的信号发生器的-MATLAB仿真的全部内容,希望文章能够帮你解决信号发生器的-MATLAB仿真所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复