DSP试验 大作业Word下载.docx
- 文档编号:21254373
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:18
- 大小:1.62MB
DSP试验 大作业Word下载.docx
《DSP试验 大作业Word下载.docx》由会员分享,可在线阅读,更多相关《DSP试验 大作业Word下载.docx(18页珍藏版)》请在冰豆网上搜索。
脉冲压缩处理将发射的宽脉冲信号压缩成窄脉冲信号,它既可以发射宽脉冲以提高平均功率和雷达的检测能力,又能保持窄脉冲的距离分辨率。
本实验中是对线性调频脉冲信号的压缩处理,是通过在发射的长脉冲上加上频率调制,并通过匹配滤波器接收机来压缩接受到的信号,其过程如下图所示:
图1LFM脉冲压缩处理框图(频率域)
3.3MTI(动目标显示)原理
MTI是指利用用杂波抑制滤波器来抑制各种杂波,提高雷达信号的信杂比,以利于运动目标检测的技术。
实验中使用的是单延迟对消器,其原理如下图所示:
图2单延迟线对消
3.4MTD(动目标检测)原理
MTD是一种利用多普勒滤波器组来抑制各种杂波,以提高雷达在杂波背景下检测运动目标能力的技术。
四实验步骤
以下是该实验中设定的几个参数
BandWidth=2.0e6------------------------------------------------------------------带宽
TimeWidth=42.0e-6----------------------------------------------------------------脉宽
Fs=2.0e6---------------------------------------------------------------------------采样率
PRT=240e-6---------------------------------------------------------------脉冲重复周期
TargetDistance=[30008025802512000]----------------------------------目标距离
TargetVelocity=[500-120225]----------------------------------------------目标速度
假设接收到的回波数是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=[300080258025,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.2MTI
图2(a)MTI三维图
图2(b)MTI正面图
在实验中做的是单延迟对消MTI,即相邻两个脉冲做差,最后只剩下15个脉冲,对于静止目标,两次回波相差不大,互相抵消,回波2此时只剩下目标3的回波;
由于MTI滤波器幅频响应特点的影响,目标1和目标3的回波幅度减小大于目标4的回波幅度的减小,所以出现上图的幅度现象;
另,由于随机噪声的影响,各次脉冲的幅度有一定的起伏。
5.1.3MTD
图3(a)MTD三维图
对图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,可满足试验要求。
结果如下图:
图4解多普勒模糊
此时目标4的速度V=228.8,存在一定的误差,但较原参数已有很大的改善。
以上方法在仿真实验中可以解决存在的问题,然而在实际中由于目标的速度是未知的,所以上述方法显然是不可行的。
实际中为了解决多普勒模糊,采用两种脉冲重复频率,即
和
来解决多普勒模糊,且选择
,使得它们相互成质数,一种选择是使
,在所希望的一个脉冲重复间隔(
)周期内,两个脉冲重复频率
只在某一个位置上重合,此时:
如果
,则
,如果
,且真实多普勒为
,最后,如果
,此时,可能发生盲多普勒,可用第三种脉冲重复频率加以解决。
5.2DSP结果与Matlab结果对比,误差分析。
图5频域脉压的相对误差
图6MTI数据的相对误差
图7MTD数据的相对误差
从上面的图中可以看出,MATLAB和DSP的相对误差均在10-4之内,误差在可以接受的范围内。
这样的误差可能是由于算法和不同字长的舍入造成的误差。
六实验思考题及心得
6.1MTI结果中看不到静止目标
答:
MTI中利用相邻脉冲差值来检测目标,当目标静止时,两次回波的幅度和相位变化不大(杂波的影响),相差后几乎为零,所以MTI结果中看不到静止的目标。
6.3MTD速度/多普勒通道的含义
不同的多普勒通道对应着不同的速度,目标速度的不同,导致多普勒频移不同,落到不同的多普勒通道。
6.2速度模糊
如果目标的多普勒频移不超过单个滤波器带宽的一半,即
,多普勒滤波组就可以分辨出目标的多普勒频移,否则就会产生多普勒模糊。
也就是说,雷达发射脉冲的重复频率PRF不能低于目标最大多普勒频移的2倍,否则雷达无法分辨目标的多普勒信息
练习五、编写C程序,建立磁盘文件,练习读写数据
在VisualDSP4.5中学习并掌握对磁盘文件的读写,并对数据进行简单的运算。
二实验内容
2.1编写C程序,产生1000个随机浮点数(随机类型和参数自行确定),建立一个磁盘文件,把所有随机数依序、按照相应格式写入文件。
2.2关闭文件,再打开此文件,从文件中把数据读入,计算其均值、方差,并写入另一个文件中。
3.1随机数的产生
利用rand()产生所需要的数据;
3.2磁盘文件的读写
运用格式化文件输入、输出函数:
intfprintf(FILE*stream,constchar*format,/*args*/...);
intfscanf(FILE*stream,constchar*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板的性能比较
对比程序在仿真环境下和EZKIT板上的执行性能,并分析原因。
2.1把练习二改为执行5次、10次,在软仿真环境下运行,并用记录执行的时间;
2.2在EZKIT板上执行此程序,记录执行时间。
运用VisualDSP中的linearprofiling窗口观察并记录程序在仿真环境和EZKIT板上执行的时间。
4.1修改练习二的程序,在程序中加入控制次数的for循环,以控制程序执行5次、10次。
4.2编译成功后,打开VisualDSP的linearprofiling窗口观察并记录程序在仿真环境下的执行时间,通过tool/linearprofiling打开linearprofiling窗口。
4.3生成LDF文件,点击\tools\expertlinker\creatLDF,按照默认选项,依次选择1:
文件保存的路径(与原工程一致)、projecttype选择assembly;
2:
选择单处理器(singleprocess),其余默认;
3,finish。
4.3在断电情况下连接EZKIT板,创建EZKITsession,并将上述LDF文件导入DSP中,运行程序,在linearprofiling窗口中观察并记录程序执行的时间。
结果:
硬件平台
5次64点DFT耗时0.94ms
10次64点DFT耗时1.88ms
软件平台
5次64点DFT耗时16s
10次64点DFT耗时33s
讨论:
软件仿真比硬件仿真慢,原因主要有两个方面:
第一,软件仿真是在计算机上模拟程序在DSP上的运行,这就需要一定的系统开销,同时计算机内部的数据传输叫DSP中复杂,这也造成了系统开销;
第二,DSP内部存在专用的硬件算法器,如乘累加,在计算机上是不存在这样的结构的。
练习七、用ADSP_TS201EZ-KIT板实现定时器
利用ADSP-TS201EZ-KIT板上的硬件资源,通过对板上A、B两个DSP的FLAG指示灯进行编程,来完成定时器的操作。
编译讲义上的程序到没有错误,观察FLAG灯的亮灭,并分析。
利用ADSP-TS201EZ-KIT板上的定时器timer1,产生中断,在中断服务子程序中实现对FLAG的控制
4.1连接硬件
首先给EZ-KIT板加电,可以看到板上的FLAG灯在闪,板上的power灯(绿色)持续亮一段时间,RESET灯(红色)持续亮一段时间又熄灭。
接下来板子上的USB_monitor灯一直亮。
4.2打开VisualDSP++,选择Session/SelectSession/ADSP_TS201SEZ_KITLiteviaDebugAgent,选择ADSP-TS201EZ-KITsession。
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。
加法完成后程序停止,此时在VisualDSPMermoy中察看计算结果是否正确。
根据如下代码提示部分完成程序的编写:
voidmain(void)
{
initial();
//初始化寄存器函数
//irq0_isr()外部IRQ0中断服务子程序,在子程序中断中置en标志位
interrupt(SIGIRQ0,irq0_isr);
while
(1)
{
while(标志位==1)
result[n]=input1[n]+input2[n];
//实现加法运算;
en=0;
//设置标志位为0;
n++;
}
if(n==N+1)//数组长度
break;
//跳出最外层while循环;
}
}
voidinitial()
//配置系统配置寄存器SYSCON外部总线接口寄存器
__builtin_sysreg_write(__SYSCON,0x279e7);
__builtin_sysreg_write(__INTCTL,0x0);
//设置外部中断触发方式为边沿触发,关闭定时
}
实验二
设置可编程I/O的输入,在程序中查询FLAG灯的变化状态,加断点观察中断产生的时间间隔。
1、设置FLAG输入,本实验以FLAG1为例,如图2所示:
图2FLAG1输入
2、编写如下程序
initial();
while
(1)
{
//查询flag
flag1=__builtin_sysreg_read(__SQSTAT);
//SQSTAT程序控制状态寄存器
flag1=flag1&
0x00020000;
while(flag1!
=0x00000000)
{
flag1=__builtin_sysreg_read(__SQSTAT);
flag1=flag1&
}
=0x00020000)
}
while
(1)
{
inti=0,k=0;
for(i=0;
i<
10000;
i++)
i=0;
k=i;
}
__builtin_sysreg_write(__INTCTL,0x0);
//设置外部中断触发方式为边沿触发
__builtin_sysreg_write(__FLAGREG,0);
//清除所有FLAG设置
三实验结果
3.1中断响应
图3(c)计算结果
实验中进行的是21个数据的加和的简单操作,周期数是211350-896=210454≈21×
10000。
3.2标志查询
图4(a)程序执行前
图4(b)程序执行后
程序运行的周期数为5977-865=5112≈0.5×
10000
四实验思考题
实验一中为什么设触发方式为边沿触发?
为什么flag查询的时候时间正好是外部中断的一半?
边沿触发在一个时钟周期内只可能触发中断一次,如果是电平触发的话,有可能在中断服务程序执行结束后,电平仍为有效电平,重新触发,所以实验一中选择边沿触发,在一个时钟周期内只可靠的触发一次。
flag查询时,就存在一次查询结束后电平依然为有效电平的情况,所以在一个时钟周期内查询了两次,所以最终flag查询的时间正好是外部中断的一半。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP试验 大作业 DSP 试验 作业