DSP试验大作业(精)

DSP试验大作业(精)
DSP试验大作业(精)

DSP实验课程序设计报告

学院:

学号:

姓名:

指导教师:

DSP实验课大作业设计

一实验目的

在DSP上实现线性调频信号的脉冲压缩、动目标显示(MTI)和动目标检测(MTD,并将结果与MATLAB上的结果进行误差仿真。

二实验内容

2.1 MATLAB仿真

设定带宽、脉宽、采样率、脉冲重复频率,用MATLAB产生16个脉冲的LFM,每个脉冲有4个目标(静止,低速,高速),依次做

2.1.1脉压

2.1.2 相邻2脉冲做MTI,产生15个脉冲

2.1.316个脉冲到齐后,做MTD,输出16个多普勒通道

2.2 DSP实现

将MATLAB产生的信号,在visual dsp中做脉压,MTI、MTD,并将结果与MATLAB作比较。

三实验原理

3.1 线性调频

线性调频信号是指频率随时间而线性改变(增加或减少的信号。本实验中用的是线

性调频矩形脉冲信号,其表达式可写为:

其中信号的复包络为

T为脉冲宽度,为调频斜率,B为调频带宽,也称频偏。

3.2脉冲压缩原理

脉冲压缩处理将发射的宽脉冲信号压缩成窄脉冲信号,它既可以发射宽脉冲以提高平均功率和雷达的检测能力,又能保持窄脉冲的距离分辨率。

本实验中是对线性调频脉冲信号的压缩处理,是通过在发射的长脉冲上加上频率调制,并通过匹配滤波器接收机来压缩接受到的信号,其过程如下图所示:

图1 LFM脉冲压缩处理框图(频率域)

3.3 MTI(动目标显示)原理

MTI是指利用用杂波抑制滤波器来抑制各种杂波,提高雷达信号的信杂比,以利于运动目标检测的技术。

实验中使用的是单延迟对消器,其原理如下图所示:

图2 单延迟线对消

3.4 MTD(动目标检测)原理

MTD是一种利用多普勒滤波器组来抑制各种杂波,以提高雷达在杂波背景下检测运动目标能力的技术。

四实验步骤

以下是该实验中设定的几个参数

BandWidth=2.0e6------------------------------------------------------------------带宽

TimeWidth=42.0e-6----------------------------------------------------------------脉宽

Fs=2.0e6---------------------------------------------------------------------------采样率

PRT=240e-6---------------------------------------------------------------脉冲重复周期

TargetDistance= [3000 8025 8025 12000] ----------------------------------目标距离

TargetVelocity= [50 0 -120 225] ----------------------------------------------目标速度

假设接收到的回波数是16个,噪声为高斯随机噪声。

4.1 在MATLAB中产生线性调频信号。

4.2 根据目标距离得出目标回波在时域的延迟量,根据目标速度得出多普勒相移,从而在MATLAB中产生4个目标的16个回波串(接收到的回波含噪声)。

4.3 由匹配滤波理论产生对应于目标回波的滤波系数(脉压系数),在时域中做线性卷积,实现匹配滤波(时域脉压);在频域中做回波信号和脉压系数的FFT,点乘后作逆FFT,实现频域脉压。两者进行比较,讨论其差别。

4.4 对16个去暂态点后的脉冲串按接收顺序进行排列,用一次相消器(一种滤波方式)实现MTI。

4.5做16通道的FFT,实现MTD。

4.6 在DSP中对MATLAB产生的回波数据和脉压系数进行处理,实现频域脉压。导入DSP的回波数据为时域数据,而脉压系数为频域数据。将导入DSP的时域回波数据进行一次FFT 变换到频域,然后将其与频域脉压系数进行点积,得到频域脉压结果。对该结果再做一次IFFT,将频域转换成时域。在

这一步中需要调用库函数fft_flp32.asm。该子程序可实现8192点复数的FFT功能。由于C语言中无法实现复数运算,因此,对8192个复数按照实部虚部交替的顺序进行重排列,用长度为16384的数组来存放时域回波数据。频域相乘后,做乘积结果的IFFT,得到脉压结果。做IFFT,仍需调用库函数fft_flp32.asm,此时要通过FFT子程序实现IFFT的功能,要对频域的数据进行处理,才能达到这一目的。

4.7 对脉压后的数据按照脉冲号重排,相邻序列的数据相减(滑动对消),实现MTI。

4.8 调用子程序fft_16.asm,做16通道FFT,实现MTD。入口参数为16通道的脉压数据。

五实验结果及讨论

5.1脉压、MTI、MTD结果分析:

5.1.1脉压

图2 脉压

结果如图所示(修改程序,使横轴表示目标距离,以便分析),试验初试是设置的目标距离参数为TargetDistance= [3000 8025 8025,12000],现在图中只看到三个目标分别是(300,41.94)、(8025,122.7)、(12000,84.74),因为目标2和目标3的距离参数相同,即使距离参数不同,在小

于雷达的距离分辨力的情况下依然不能分辨。对于幅度sqrt(SigPower(k= [1,1,0.5,1],目标1的回波由于雷达闭锁的影响,幅度较低;目标2和目标3的回波叠加在一起,且由于相位的影响,两个回波同相叠加而增强或者反相抵消而减弱,所以在16个回波中目标2和目标3的回波的和幅度有时增强,有时减弱;目标4回波的幅度是一般情况。

5.1.2 MTI

15

020406080100120140160180MTI

图2(a MTI 三维图

图2(b MTI正面图

在实验中做的是单延迟对消MTI,即相邻两个脉冲做差,最后只剩下15个脉冲,对于静止目标,两次回波相差不大,互相抵消,回波2此时只剩下目标3的回波;由于MTI滤波器幅频响应特点的影响,目标1和目标3的回波幅度减小大于目标4的回波幅度的减小,所以出现上图的幅度现象;另,由于随机噪声的影响,各次脉冲的幅度有一定的起伏。

5.1.3 MTD

8

0200400600800100012001400MTD

图3(a MTD 三维图

图3(c MTD Y-Z View

对图3中的幅度分析,MTD 中的目标的幅度是由不同脉冲相干积累得到,同时由于FFT 存在频谱泄漏,主瓣展宽等,所以结果中目标的幅度近似为脉压的16倍。对图3进行多普勒和时延分析,可以看图目标1的距离和速度都已经测出,目标2和目标3由于速度不同,落在了

不同的FFT通道,从而区分出来。在该实验参数的设置下目标4的速度-174.16m/s,这显然是和实际不符的,即速度出现了模糊,究其原因为在该实验参数下的测速范围是-199~199m/s,超出这个范围将会产生

速度模糊(多普勒模糊)。

本实验雷达的多普勒分辨率为

对应的径向速度为:

其中,N=

TotalNumber=SampleNumber*PulseNumber=7680,在PulseNumber不变的情况下,更改PRT可以改变SampleNumber,进而改变雷达的测速范围,下面将更改

PRT为150e-6,此时,

,测速范围为-318~318m/s,可满足试验要求。结果如下图:

8

0200400600800100012001400图4 解多普勒模糊

此时目标4的速度V=228.8,存在一定的误差,但较原参数已有很大的改善。

以上方法在仿真实验中可以解决存在的问题,然而在实际中由于目标的速度是未知的,所以上述方法显然是不可行的。实际中为了解决多普勒模糊,采用两种脉冲重复频率,

即和来解决多普勒模糊,且选择和,使得它们相互

成质数,一种选择是使,在所希望的一个

脉冲重复间隔()周期内,两个脉冲重复频率和

只在某一个位置上重合,此时:如果,则

,如果,则,且真实多普勒

为,最后,如果,则,此时,可能发生盲多普勒,可用第三种脉冲重复频率加以解决。

5.2 DSP结果与Matlab结果对比,误差分析。

图5 频域脉压的相对误差

图6 MTI数据的相对误差

图7 MTD数据的相对误差

从上面的图中可以看出,MATLAB和DSP的相对误差均在10-4之内,误差在可以接受的范围内。这样的误差可能是由于算法和不同字长的舍入造成的误差。六实验思考题及心得

6.1 MTI结果中看不到静止目标

答:MTI中利用相邻脉冲差值来检测目标,当目标静止时,两次回波的幅度和相位变化不大(杂波的影响),相差后几乎为零,所以MTI结果中看不到静止的目标。

6.3 MTD速度/多普勒通道的含义

答:不同的多普勒通道对应着不同的速度,目标速度的不同,导致多普勒频移不同,落到不同的多普勒通道。

6.2 速度模糊

如果目标的多普勒频移不超过单个滤波器带宽的一半,即,多普勒滤波组就可以分辨出目标的多普勒频移,否则就会产生多普勒模糊。也就是说,雷达发射脉冲的重复频率PRF不能低于目标最大多普勒频移的2倍,否则雷达无法分辨目标的多普勒信息

练习五、编写C程序,建立磁盘文件,练习读写数据

一实验目的

在VisualDSP4.5中学习并掌握对磁盘文件的读写,并对数据进行简单的运算。

二实验内容

2.1 编写C程序,产生1000个随机浮点数(随机类型和参数自行确定),建立一个磁盘文件,把所有随机数依序、按照相应格式写入文件。

2.2 关闭文件,再打开此文件,从文件中把数据读入,计算其均值、方差,并写入另一个文件中。

三实验原理

3.1随机数的产生

利用rand(产生所需要的数据;

3.2 磁盘文件的读写

运用格式化文件输入、输出函数:

int fprintf(FILE *stream, const char *format, /*args*/ ...;

int fscanf(FILE *stream, const char *format, /* args */...;

3.3 均值、方差

四实验步骤

4.1 熟悉实验原理

4.2 编写C程序

4.3 仿真、调试程序,直至程序满足实验要求

五实验结果及讨论

5.1产生的随机数据和从外部文件中调入所产生的数据

图1 数据对比

5.2 均值和方差

图2 均值和方差

六实验思考题及心得

6.1此练习中,计算机和DSP各自起什么作用?如果DSP脱离计算机,此程序还能运行吗?

答:在此练习中,计算机提供文件存储的磁盘空间,DSP向计算机磁盘写入或读出数据,并进行运算;在此过程中DSP需要借助计算机的磁盘完成功能,因此,DSP脱离计算机后该程序将无法正常运行。

练习六、调试器和EZ-KIT板的性能比较

一实验目的

对比程序在仿真环境下和EZ KIT板上的执行性能,并分析原因。

二实验内容

2.1把练习二改为执行5次、10次,在软仿真环境下运行,并用记录执行的时间;

2.2 在EZ KIT板上执行此程序,记录执行时间。

三实验原理

运用VisualDSP中的linear profiling窗口观察并记录程序在仿真环境和EZ KIT板上执行的时间。

四实验步骤

4.1 修改练习二的程序,在程序中加入控制次数的for循环,以控制

程序执行5次、10次。

4.2 编译成功后,打开VisualDSP的linear profiling窗口观察并记录程序在仿真环境下的执行时间,通过tool/linear profiling打开

linear profiling窗口。

4.3生成LDF文件,点击\tools\expert linker\creat LDF,按照默认

选项,依次选择1:文件保存的路径(与原工程一致)、project type选择assembly;2:选择单处理器(single process),其余默

认;3,finish。

4.3 在断电情况下连接EZ KIT板,创建EZ KIT session,并将上述LDF文件导入DSP中,运行程序,在linear profiling窗口中观

察并记录程序执行的时间。

五实验结果及讨论

结果:

硬件平台5次64点DFT耗时

0.94ms 10次64点DFT耗时

1.88ms

软件平台5次64点DFT耗时 16s 10 次64点DFT耗时

33s

讨论:软件仿真比硬件仿真慢,原因主要有两个方面:第一,软件仿真是在计算机上模拟程序在DSP上的运行,这就需要一定的系统开销,同时计算机内部的数据传输叫DSP中复杂,这也造成了系统开销;第二,DSP内部存在专用的硬件算法器,如乘累加,在计算机上是不存在这样的结构的。

练习七、用ADSP_TS201 EZ-KIT板实现定时器

一实验目的

利用ADSP-TS201 EZ-KIT板上的硬件资源,通过对板上A、B两个DSP 的FLAG指示灯进行编程,来完成定时器的操作。

二实验内容

编译讲义上的程序到没有错误,观察FLAG灯的亮灭,并分

析。

三实验原理

利用ADSP-TS201 EZ-KIT板上的定时器timer1,产生中断,在中断服

务子程序中实现对FLAG的控制

四实验步骤

4.1 连接硬件

首先给EZ-KIT板加电,可以看到板上的FLAG灯在闪,板上的power灯(绿色)持续亮一段时间,RESET灯(红色)持续亮一段时间又熄灭。接下来板子上的USB_monitor灯一直亮。

4.2 打开VisualDSP++,选择Session/Select Session/ADSP_TS201S EZ_KIT Lite via Debug Agent,选择ADSP- TS201 EZ-KIT session。

4.3 打开工程,编译链接该工程,没有错误后运行程序。观察并记录结果。

4.4 通过改变中断服务程序xr4的值,可以看到灯闪亮的速度在变化。

五实验思考题及心得

5.1 灯的闪灭是通过什么来控制的?

答:灯的闪灭是通过中断服务函数控制的,每次中断到来时,利用异或取反,使FLAG灯的状态改变,从而控制灯的闪灭。

5.2 代表秒的灯闪一次,定时器发生了多少次中断?

答:代表秒的灯闪一次,定时器发生了10次中断。

练习九、中断响应、标志查询

一实验目的

1.1 模拟产生外部中断和可编程I/O(Flag0~3);

1.2 学会使用中断服务子程序及查询方式;

1.3 熟练使用断点调试。

二实验内容及步骤

实验一

1、添加外部中断,以IRQ0为例。如图1所示。

图1 外部中断 IRQ

2、编写C语言程序,在主程序中以查询标志位en的方式进行加法计算,en 为1则开始进行加法运算(data1[n]+data2[n]),在中断服务子程序中加入断点观察每次进入中断服务子程序的指令周期间隔。数组data1和data2,每个长度20(这个可以自己设定),用include函数将外部“.dat”文件包含进来。在中断服务子程序中设置标志位en为1。加法完成后程序停止,此时在VisualDSP Mermoy中察看计算结果是否正确。

根据如下代码提示部分完成程序的编写:

void main(void

{

initial(; //初始化寄存器函数

// irq0_isr( 外部IRQ0中断服务子程序,在子程序中断中置en标志位

interrupt(SIGIRQ0,irq0_isr;

相关主题
相关文档
最新文档