卓迈文档网
当前位置 首页 >专题范文 > 公文范文 >

DSP原理及应用大作业5篇

发布时间:2022-08-17 18:45:03 来源:网友投稿

DSP原理及应用大作业5篇DSP原理及应用大作业 PDSP应用系统设计大作业 专 业: 电子与通信工程姓 名: 学 号: 标准文档文案大全题目一 一、线性调频((LFM)信号 为了提高下面是小编为大家整理的DSP原理及应用大作业5篇,供大家参考。

DSP原理及应用大作业5篇

篇一:DSP原理及应用大作业

DSP 应用系统设计大作业

  专

 业:

  电子与通信工程 姓

 名:

  学

 号:

 标准文档 文案大全 题目一

 一、线性调频( (LFM) 信号

 为了提高雷达的作用距离和距离分辨率,实际中通常采用宽脉冲发射以提高发射的平均功率,保证足够大的作用距离;而接收时采用相应的脉冲压缩算法获得窄脉冲,以提高距离分辨率,较好的解决了雷达作用距离与距离分辨率之间的矛盾。而获得大的频带信号,采取 LFM 信号调制,可以将信号频域展宽,同时也充分利用了雷达发射功率,扩大作用距离,接收时采用匹配滤波器(Matched Filter)压缩脉冲。

 线性调频(Linear Frequency Modulation)信号是指频率随时间而线性改变(增加或减少)的信号。线性调频信号 s(t)可表示为:

  22 ( )2( ) ( )cKj f t t ts t rectTe 

 -T/2<t<T/2

  (1.1)

 式中cf 为中心频率, ( )trectT为矩形信号,

  othersTt)Ttrect(, 021, 1

 (1.2)

  K=B/T,是调频斜率,可得信号的瞬时频率为 Kt tKtdtddtdwf f fc cii   2222121 

 -T/2<t<T/2

  (1.3)

 T 为线性调频信号的时宽,B 为带宽。可知瞬时频率呈线性变化,当 K>0 时,频率递增,K<0 则递减。

 将 1.1 式中的信号重写为:

  t f jce t S t s 2) ( ) ( 

  (1.4)

 式中,

  2( ) ( )j KttS t rect eT

  (1.5)

 是信号 s(t)的复包络,也即为零中频 LFM 信号。

 根据题目要求,可知波形数据采样频率 MHZ f s 20  ,取脉冲宽度 s T  120  ,则可以得知采样数据长度 2400   T f Ns,调制带宽为 MHZ B 6  。利用 Matlab

 标准文档 文案大全 生成所需调频信号,并生.dat 数据文件以便 VisualDSP++软件仿真调用。信号为复数信号,复数数据实部虚部交叉存储,奇数序列为实数序列,偶数序列为虚数序列。以下 Matlab 程序产生式(1.5)的零中频线性调频信号:

 clear all; T=120e-6;

  B=6e6;

 K=B/T;

  Fs=20e6;

 N=T*Fs; t=linspace(-T/2,T/2,N); St=exp(j*pi*K*t.^2);

  subplot(221),plot(t*1e6,real(St),"k"); title("零中频线性调频信号的实部"); xlabel("Time in us"),ylabel("real(St)"); grid on;axis([-30 30 -1 1]);

  subplot(222),plot(t*1e6,imag(St),"k"); title("零中频线性调频信号的虚部"); xlabel("Time in us"),ylabel("imag(St)"); grid on;axis([-30 30 -1 1]);

  freq=linspace(-Fs/2,Fs/2,N); subplot(223),plot(freq*1e-6,fftshift(abs(fft(St))),"k"); title("零中频线性调频信号的频谱"); xlabel("Frequency in MHz"),ylabel("S(f)"); grid on;axis tight;

  fi=K*t; subplot(224),plot(t*1e6,fi*1e-6,"k"); title("零中频线性调频信号的瞬时频率"); xlabel("Time in us"),ylabel("fi in MHZ"); grid on;axis tight;

  save input.dat -ascii St fd=fopen("input.dat","wt"); a=real(St); b=imag(St); for i=1:1:2400

 fprintf(fd,"%g\n",a(i));

 fprintf(fd,"%g\n",b(i)); end fclose(fd); 如图 1 所示为零中频线性调频信号各曲线图。

 标准文档 文案大全

 图 1 零中频线性调频信号各曲线图

 二、脉冲压缩原理

 脉冲压缩技术是指雷达发射出宽脉冲信号,在接收端回波宽脉冲信号通过处理后得到窄脉冲的实现过程。

 脉冲压缩器的设计实际上就是匹配滤波器的设计。匹配滤波可以在时域实现,也可以在频域实现。式 1.5 的零中频线性调频信号即为发射信号,根据匹配滤波理论,它的匹配滤波器时域脉冲响应为:

  ) ( ) (*t S t h  

  (2.1)

 将式(1.5)代入式(2.1) 得

  2) ( ) (Kt jeTtrect t h 

  (2.2)

  S(t)

 S0(t)

  图 2 零中频 LFM 信号的匹配滤波

 LFM 脉冲信号经匹配滤波器后的输出 S0(t)信号,当 t T  时,包络近似为辛克(sinc)函数。而此时压缩后的脉冲宽度:T0=1/B,LFM 信号的压缩前脉冲宽度 T 和压缩后的脉冲宽度 T0 之比通常称为压缩比 D,即 匹配滤波 h(t)

 标准文档 文案大全

 TBTTD  0

  (2.3)

 式(2.3)表明,压缩比也就是 LFM 信号的时宽频宽积。

 输出 S0(t)的最大副瓣电平为主瓣电平的 13.2dB,在多目标环境下,旁瓣会淹没附近较小的目标,从而引起目标丢失,所以通常引入加权函数(窗函数)对信号进行失配处理以抑制副瓣产生的消极影响,其副作用是输出信号的包络主瓣降低、变宽,即旁瓣抑制是以信噪比损失及距离分辨力变坏作为代价的。设时域加权函数为 w(t),加权函数可以选择海明窗、汉宁窗等。则加权后输出为:

    ) ( ) ( ) ( ) ( 0 t w t h t S t S   

 (2.4)

 频域实现实际上就是将时域的匹配滤波的时域卷积运算转到频域来运算(快速卷积算法)。因脉冲压缩的点数比较大时,频域 FFT 法的处理速度要比时域实现快很多,大大减少了运算量。

 用频域 FFT 法实现脉压的具体过程如图 3 如下:对信号 S(n)进行 FFT 变换得到 S(K),S(K)与发射信号 S(n)的 FFT 的复共轭 S*(K)相乘,然后再对乘积作IFFT 而获得时域脉压结果。由于 S*(K)可以预先算出存入 DSP 的 RAM 空间里,每次运算时,只需读出 RAM 中的数值即可进行运算。因此 S*(K)可以利用 Matlab直接生成。软件生成后在对脉压作加窗处理时,仅需将窗函数 W(K)与 S*(K)的乘积 H(K)=S*(K)·W(K)存入 RAM 中即可,不会额外增加存储量及运算量。用频域FFT 法实现高速数字脉冲压缩,文中的脉冲压缩就是基于图 3 的原理实现的。

  S(n)

  S(K)

 Y(K)

  y(n)

 H(K)

 图 3 频域脉冲压缩原理结构图

 为节省运算时间,所以将频域脉压系数 H(K)预先处理好。已知输入信号序列为零中频线性调频信号,根据题目要求在第二节已求出输入信号序列,因此根据公式易求出匹配滤波系数序列 h(n),但为保证利用 FFT 计算线性卷积不出现混叠失真,则循环卷积长度必须满足 L=N+M-1,其中 L 为卷积长度,N 和 M 分别为两卷积序列长度。根据 MATLAB 生成的输入数据可知 N 和 M 均为 2400 点,因此卷积长度,由于采用 FFT 进行计算,因此 L 必须为 2 的整数次幂,取最小值为8192。因此此设计中所有 FFT 和 IFFT 运算点数均为 8192 点。通过改变窗函数w(t),可以得到三组 H(k)序列文件,分别为矩形窗、汉宁窗和汉明窗,对应于文件 real.dat/imag.dat, real1.dat/imag1.dat, real2.dat/imag2.dat 三组文件,以便 VISUALDSP++软件仿真时进行导入。

 Matlab 生成 H(K)序列源代码如下:

 clear all; T=120e-6;

  B=6e6;

 FFT W(K) S*(K) IFFT

 标准文档 文案大全 K=B/T;

  Fs=20e6;

 N=T*Fs; t=linspace(-T/2,T/2,N); St=exp(j*pi*K*t.^2); N_fft=4096;

 %因采样数据长度 N 为 2400 则脉压 fft 点数 4096

  ht=conj(fliplr(St));

  %匹配滤波 h(t)

 wt0=boxcar(N); wt1=triang(N); wt2=hanning(N); wt3=hamming(N); wt4=blackman(N); beta=7.865; wt5=kaiser(N,beta); ht0=ht.*wt3";

  %这里默认加汉明窗函数 Ht=fft(ht0,N_fft);

  a=real(Ht); b=imag(Ht); save real.dat -ascii a fd=fopen("real.dat","wt"); for k=1:1:N_fft

  fprintf(fd, "%g\n", a(k));

 end;

  save imag.dat -ascii b fd=fopen("imag.dat","wt"); for k=1:1:N_fft

  fprintf(fd, "%g\n", b(k));

  %文本文件实际点数 N_fft*2 end;

 fclose(fd); 三、 VISUALDSP++ 脉压仿真

 3.1 线性调频信号序列输入 由 MATLAB 软件生成 LFM 信号序列,文件为 input.dat。文件中共 2400 个复数序列,其中偶数列为实数序列,奇数列为虚数序列,因此共 4800 个数据。下图为在 VISUALDSP++软件中导入 input.dat 文件并利用其画图功能画其波形:

 标准文档 文案大全

 图 3 零中频信号

 上半部为实部波形,下半部为虚部波形

 3.2 匹配滤波系数频域序列输入 由第二节计算可知,匹配系数 H(K)序列为 h(n)进行 4096 点 FFT 变换得到,因此 H(K)共有 4096 个复数序列,并且将实数序列与虚数序列分别存储成real.dat 和 imag.dat 两个文件。在第二节中利用 MATLAB 软件生成 H(k)序列已详 解 。

 根 据 矩 形 窗 、 汉 宁 窗 、 汉 明 窗 生 成 三 组 序 列 文 件 分 别real.dat/imag.dat,real1.dat/imag1.dat 和 real2.dat/imag2.dat 。

 利 用VISUALDSP++软件进行导入并画出波形图如下:

 图 4 矩形窗 H(k)序列

 上半部为实部波形,下半部为虚部波形

 标准文档 文案大全

 图 5 汉宁窗 H(k)序列

 上半部为实部波形,下半部为虚部波形

 图 6 汉明窗 H(k)序列

 上半部为实部波形,下半部为虚部波形 根据原理结构图可知,脉冲压缩共分为 FFT、复数乘法、IFFT 和模值衰减变换四个模块。其中 FFT 模块采用 VISUALDSP++软件中自带模块。而 IFFT 可采用如下方法求解,因

     1 0 ,) (1) (1) (1) (***10*10  N nK X FFTNKNK XNn xNkknNknNNkW XW

  (3.1)

 由式(3.1)可得,先将 X(K)取复共轭,然后直接调用 FFT 子程序进行 FFT运算,最后再取复共轭并乘以 1/N 得到序列 x(n)。这种方法虽然用了两次取共轭运算,但可以与 FFT 共用一子程序,提高了子程序利用率。

 四、结果分析

 4.1 输出结果 利用 VISUALDSP++软件设置断点功能画出各部分输出波形,波形图分别如下:

 标准文档 文案大全

 图 7

 零中频线性调频信号 8192 点 FFT 波形

 图 8

 矩形窗加权系数脉冲压缩压缩后波形

  图 9 矩形窗系数脉冲压缩后局部放大波形

 标准文档 文案大全

  图 10

 矩形窗脉冲压缩后衰减波形

  图 11

 汉宁窗压缩后波形

 图 12

 汉宁窗压缩后波形局部放大

 标准文档 文案大全

  图 13 汉宁窗脉压后衰减波形

 图 14

 汉明窗脉压后时域波形

  图 15

 汉明窗脉压后局部放大波形

 图 16

 汉明窗脉压后衰减波形

 标准文档 文案大全

 4.2加窗对脉压性能的影响 线性调频信号匹配滤波器输出端的脉冲,是经过压缩后的窄脉冲,输出波形具有辛克函数的性质,除了主瓣外还有时间轴上延伸的一串副瓣。靠近主瓣的第一副瓣最大,其值较主瓣峰值只得13.46dB,第二副瓣在降低4dB,以后依次下降。副瓣零点间的间隔为1/B。匹配滤波器输出的旁瓣太高是脉冲压缩雷达的缺点,实际使用中采用加窗的准匹配滤波器来改善副瓣的性能。实际应用中的匹配滤波器需要加窗,以实现旁瓣的抑制,但窗函数点数N固定时,也会导致主瓣的展宽,旁瓣的抑制和主瓣的展宽二者彼此矛盾,需要以实际需要折衷考虑,即在副瓣输出达到要求的情况下,应使主瓣的展宽及强度变化值最小。以下分析不同的窗函数对脉压结果(主瓣宽度和幅度增益)的影响。首先给出六种窗函数自身的性能:

 表1 六种窗函数的主要参数 窗函数类型

 主瓣宽度/rad

 旁瓣电平/dB

 过度带带宽/rad

 阻带最小衰减/dB

 矩形窗

 -13

 21

 三角窗

  -25

  25

 汉宁窗

  -31

  44

 汉明窗

  -41

  53

 布莱克曼窗

  -57

  74

 凯塞窗

 -57

  80

  根据时宽带宽积可以的到脉冲压缩比为40。原脉压前脉冲宽度为20us,对于20MHz的采样频率,对应采样点400,那么脉压后主瓣宽度采样点数为2*(400/40)=20点(主瓣宽度等于2倍的零点带宽)。下面考虑加窗对脉压结果增益(以主瓣最大增益为准)的影响和脉压后脉冲宽度(第一零点带宽为准)的影响。

 表2 加载六种窗函数后DSP脉压对脉冲宽度、增益的影响 窗函数类型

 脉冲主瓣宽度 (采样点数)

 脉冲增益 (主瓣最大增益)

 第一旁瓣增益(第一旁瓣最大增益)

 矩形窗

 20

 400

 83.5

 三角窗

 44

 200.5

 10.1

 汉宁窗

 40

 200.5

 5.4

 汉明窗

 38

 216.5

 3.1

 布莱克曼窗

 58

 165

 0.89

 凯塞窗

 54

 175.7

 0.85

  从表 2 可以得到结论:

 标准文档 文案大全 脉压可以提升脉冲的增益,幅度增益与原宽脉冲时宽有关。加窗可以有效地抑制副瓣,但是要以主瓣展宽和增益下降为代价。相对而言,一般情况下,选择汉明窗可以获得较好带宽和增益折衷。线性调频信号经过压缩处理接收后的信号幅度峰值是原来发射信号幅度峰值的(D为脉压比)倍,即输出脉冲峰值功率比输入脉冲峰值功率增大了D倍。在要求发射机输出功率一定的情况下,接收机输出的目标回波信号经过匹配滤波压缩处理,具有窄的脉冲宽度和更高的峰值功率,前者提高距离分辨率而后者符合探测距离远的战术要求,这充分体现了脉压体制独特的优越性。从反侦查的角度来说,脉压雷达比普通雷达具有更强的生存能力。由于线性调频信号的幅度和信噪比更小,有侦查方程可知,同等灵敏度的侦察机其侦查距离为原来的...

篇二:DSP原理及应用大作业

SP 原理及应用》 课程大作业内容与要求 1. LCD 显示(每人一个)

 1) 启动程序, 垂直显示“宁波理工 姓名学号“, 接着从下到上逐行移动, 直至全部消失

 2) 启动程序, 垂直显示“宁波理工 姓名学号“, 接着从左到右逐行移动, 直至全部消失

  3) 启动程序, 垂直显示“宁波理工 姓名学号“, 接着从上到下逐行移动, 直至全部消失

  4) 启动程序, 垂直显示“宁波理工 姓名学号“, 接着从右到左逐行移动, 直至全部消失

  5) 启动程序, 从上到下逐渐显示一三角形

  6) 启动程序, 显示一三角形 , 然后从上到下逐渐消失

 7) 启动程序, 按键盘实现一加法, 并在 LCD 显示

 8) 启动程序, 按键盘实现一乘法, 并在 LCD 显示

 9) 启动程序, 按键盘实现一除法法, 并在 LCD 显示

 10) 启动程序, 按键盘实现一阶乘法, 并在 LCD 显示

  2. LED 显示(每人一个)

 1) 用键盘按键并且显示数字 0-9

 2) 启动程序, 从 0-9 自动跳变, 回车停止

 3) 启动程序, 从 9-0 自动跳变, 回车停止

  3. 蜂鸣器使用 1) 演奏两首乐曲, 用数字键盘 1 切换, 2 暂停

  4. 循环队列的使用: 1) 建立一个长度为 5 的键盘缓冲区,能够记录最近 5 次的键盘输入信号

 2) 建立一个密码锁, 启动程序, LCD 显示“请输入密码“, 输入四位密码, 蜂鸣器响

  3)

 5. IIR 滤波器设计 1) 带通

  2) 低通 3) 高通

  6. FIR 滤波器设计 1) 带通 2) 低通 3) 高通

 7. FFT 滤波器设计

 1) 带通

 低通

 高通

 2)

  3)

  ---------------------------------------------------------------------------------------------------------------- 1. 启动后, LCD 显示“Let’s Begin”; 同时开始播放一段轻松的乐曲(用蜂鸣器); 开发板上 LED 灯:

 全灭;

 接下去系统只接受按 0 操作, 按 0 时, LCD 显示“欢迎进入系统 浙江大学宁波理工学院”

 对于按其他键时的操作, 均在 LCD 提示“请按 0 开始 ” ;

 开始进入本系统:

 1, 2, 3 入门级演示; 4, 计算器功能; 5, 电子琴功能; 6, 音2. 频原声(加延时); 7, 音频低通; 8, 音频高通; 9, 音频带通; 0, 个人特色; Enter,回复本界面; ”, 同时换一种音乐播放(用音频输出); ”

 按 1。

 点阵显示:

 左上角 1, 说明当前是 1 状态, 下面很大的两个粗体 1, 同时从右向左循环滚动; 蜂鸣器:

 循环播放乐音 1; 8× 8LED 点阵:

 闪烁“1”, 周期为1s; 交通灯:

 在状态一下工作(同学自己设计); 开发板上 LED 灯:

 D3 亮, 其余灭; 在状态 1 下, 按 Del 键返回上层菜单, 即回到状态 0;

 按 2。

 点阵显示:

 左上角 2, 说明当前是 2 状态, 下面很大的两个粗体 2, 同时从右向左循环滚动; 蜂鸣器:

 循环播放乐音 2; 8× 8LED 点阵:

 闪烁“2”, 周期为1s; 交通灯:

 在状态二下工作(同学自己设计); 开发板上 LED 灯:

 D4 亮, 其余灭; 在状态 2 下, 按 Del 键返回上层菜单, 即回到状态 0;

 按 3。

 点阵显示:

 左上角 3, 说明当前是 3 状态, 下面很大的两个粗体 3, 同时从右向左循环滚动; 蜂鸣器:

 循环播放乐音 3; 8× 8LED 点阵:

 闪烁“3”, 周期为1s; 交通灯:

 在状态三下工作(同学自己设计); 开发板上 LED 灯:

 D3、 D4 亮,其余灭; 在状态 3 下, 按 Del 键返回上层菜单, 即回到状态 0;

 按 4, 进入计算器模式; 要求完成两个数的加减乘除操作, 主要是乘除法, 要求用汇编语言实现定点数的加减乘除; 开发板上 LED 灯:

 D5 亮, 其余灭;

 i. 先输入一个数, 然后输入一个四则符号, 再按一个 Enter 键, 如果中间有任何错误, 则从 0 开始 ii. 每输入一个符号在 LCD 上显示出来 iii. 按 Enter 之后, 在 LCD 上显示结果, 接下来如果按数字键则开始下一个运算;如果按 del 键则退出计算器模式, 到开始状态; 如果按四则运算键, 则当前数为第一操作数, 开始新的运算; 如果按 Enter, 则当前操作数变为 0, 开始新的计算(此时需要输入两个操作数);

 按 5, 进入电子琴功能, 能够出来 1, 2, 3, 4, 5, 6, 7, 8(1 的高八度音), 按Del 键时退出电子琴模式; 开发板上 LED 灯:

 D3、 D5 亮, 其余灭;

 按 6。

 LCD 显示“请接音频输入口 1 和音频输出口 1”, 此时在音频输入口接入音源, 输出口接音箱, 要求能够播放音乐声音, 对于输入音频采用 16bit 采样, 采样速率达 44.1kHz。

 开发板上 LED 灯:

 D4、 D5 亮, 其余灭; 在状态 7 下, 按 1 则延时 20ms, 按 2 则延时 40ms, 按 0 不延时 按 7。

 LCD 显示“音频低通效果”, 音频接口和采样同上, 要求进行低通滤波, 截至带宽为 3.4kHz(上限频率最好可调, 用开发板上的开关控制); 开发板上 LED灯:

 D5、 D4、 D3 亮, 其余灭;

 10. 按 8。

 LCD 显示“音频高通效果”, 其余同上, 设计一个数字高通滤波器, 下限频3. 4. 5. 6. 7. 8. 9.

 率为 4KHz。(下限频率最好可调, 用开发板上的开关控制); 开发板上 LED 灯:D6 亮, 其余灭;

 11. 按 9。

 LCD 显示 “音频信号” 带通效果, 其余同上, 主要是设计一个带通滤波器(最好能够控制带宽的上下限)。

 开发板上 LED 灯:

 D6、 D1 亮, 其余灭;

 12. 按 0, 进入个人特色展示去。

 LCD 显示“请大家看我的”, 下面由大家自己发挥。开发板上 LED 灯:

 D3-D10 全亮, 其余灭;

 13. 要求能够脱离仿真器运行程序; 以上各种功能可以任选两种选择组合

 大作业要求:

  1) 要求每人能够演示程序;

 要求每人上缴一份大作业 PPT, 题目可从上述选取, 或经教师同意题目亦可;

 大作业报告要求:

 题目, 班级, 学号;

 前言 总体功能说明, 最好用框图说明总体功能, 及其操作说明;

 2) 3) iv. v. vi. vii. 下面起说明每个模块的相关功能, 主要包括:

 主要硬件电路, 程序设计主要方法和流程, 具体参数设计的基本原理(主要是数字滤波器部分)

 等 总结和展望 大作业评分规则,

 视难易程度得分从 1-5 分, 相同内容大作业实行速度奖励, 坚决打击抄袭。

 viii. 4)

篇三:DSP原理及应用大作业

1

 于 基于 CCS 的 的 简单的定点 P DSP 程序

  一、 实验要求 1、自行安装 CCS3.3 版本,配置和运行 CCS 2、熟悉 CCS 开发环境,访问读写 DSP 的寄存器 AC0-AC3, ARO-AR7, PC, T0-T3

 3、结合 C5510 的存储器空间分配,访问 DSP 的内部 RAM

 4 、 编 写 一 个 最 简 单 的 定 点 DSP 程 序 , 计 算 下 面 式 子 y=0.1*1.2+35*20+15*1.6 5、采用定点 DSP 进行计算,确定每个操作数的定点表示方法, 最后结果的定点表示方法,并验证结果 6、对编写的程序进行编译、链接、运行、断点执行、单步抽 并给出map 映射文件 二、实验原理 DSP 芯片的定点运算---Q 格式(转) 2008-09-03 15:47

 DSP 芯片的定点运算

  1.数据的溢出:

  1>溢出分类:

 上溢(overflow):

 下溢(underflow)

  2>溢出的结果:

 Max

 Min

 Min Max unsigned char 0 255 signed char -128 127 unsigned int 0 65535 signed int

 -32768

 32767

 上溢在圆圈上按数据逆时针移动;下溢在圆圈上顺时钟移动。

 例 :

 signed int :

 32767+1 = - 32768 ; -32768-1 = 32767

 unsigned char:255+1=0;

 0-1=255

 3>为了避免溢出的发生,一般在 DSP 中可以设置溢出保护功能。当发生溢出时,自动将结果设置为最大值或最小值。

  2.定点处理器对浮点数的处理:

  1>定义变量为浮点型(float,double),用 C 语言抹平定点处理器和浮点处理器 的区别,但是程序的代码庞大,运算速度也慢。

 2>放大若干倍表示小数。比如要表示精度为 0.01 的变量,放大 100 倍去运算, 运算完成后再转化。但是这个做法比较僵硬,如要将上面的变量重新定义成 0.001 精度,又需要放大 1000 倍,且要重新编写整个程序,考虑溢出等问题。

 3>定标法:Q 格式:通过假定小数点位于哪一位的右侧,从而确定小数的精度。

 Q0:小数点在第0位的后面,即我们一般采用的方法 Q15 小数点在第 15 位的后面,0~14 位都是小数位。

 转化公式:Q=(int)(F×pow(2,q))

  F=(float)(Q×pow(2,-q))

 3. Q 格式的运算

  1>定点加减法:须转换成相同的 Q 格式才能加减

 2>定点乘法:不同 Q 格式的数据相乘,相当于 Q 值相加

 3>定点除法:不同 Q 格式的数据相除,相当于 Q 值相减

 4>定点左移:左移相当于 Q 值增加

 5> 定点右移:右移相当于 Q 减少

 4.Q 格式的应用格式

  实际应用中,浮点运算大都时候都是既有整数部分,也有小数部分的。所以要选择一个适当的定标格式才能更好的处理运算。一般用如下两种方法:

 1> 使用时使用适中的定标,既可以表示一定的整数复位也可以表示小

 数复位,如 对于 2812 的 32 位系统,使用 Q15 格式,可表示-65536.0~65535.999969482 区间内的数据。

 三 、 实验步骤 1. 双击 ,启动 CCS 的仿真平台的配着选项。选择 C5410 Device Simulator。

 2.点击 project 菜单栏的 new 选项,新建一个 LAB 的工程注意存储的路径。

 3. 把下图中用到的文件拷到工程文件目录的文件路径下。

  4.在 ccs 平台中将用到的程序导入到平台中,点击 project—>add

 file to project。选择多个文件时,可以按住 ctrl 键。

 5.将程序中的 start 改为_main,INT_2 改为_int_2。然后点击保存。

 源程序代码 ***************************************************** * example.asm y=0.1*x1.2+35*20+15*x1.6

  * ***************************************************** .title “example.asm”

  ;为汇编源程序取名 .mmregs

 ;定义存储器映象寄存器 STACK

  .usect

 “STACK”,10h

  ;分配 10 个单元的堆栈空间 .bss

 a,4

 ;为系数 a 分配 4 个单元的空间

 .bss

 x,4

  ;为变量 x 分配 4 个单元的空间 .bss

 y,1

 ;为结果 y 分配 1 个单元的空间 .def

  _c_int00

  ;定义标号_c_int00

 .data

  ;定义数据代码段 table:

 .word

 1,2,3,4

  ;在标号 table 开始的 8 个单元中

  .word

  8,6,4,2

 ;为这 8 个单元赋初值 .text

 ;定义文本代码段 _c_int00 : STM

 #0,SWWSR

  ;软件等待状态寄存器置 0,不设等待 STM

  #STACK+10h,SP

 ;设置堆栈指针初值 STM

  #a,AR1

  ;AR1 指向 a 的地址

 RPT

 #7

  ;从程序存储器向数据存储器

 MVPD

 table,*AR1+

 ;重复传送 8 个数据

 CALL

 SUM

  ;调用 SUM 实现乘法累加和的子程序 end:

  B

  end

  ;循环等待

 SUM:STM

 #a,AR3

  ;将系数 a 的地址赋给 AR3 STM

 #x,AR4

 ;将变量 x 的地址赋给 AR3 RPTZ

 A,#3

 ;将 A 清 0,并重复执行下条指令 4 次 MAC

 *AR3+,*AR4+,A

  ;执行乘法并累加,结果放在 A 中 STL

 A,@y

 ;将 A 的低字内容送结果单元 y

 RET

  ;结束子程序

  .end

 ;结束全部程序

 Map 文件 *****************************************************************************

 TMS320C55x COFF Linker PC Version 3.83

  ****************************************************************************** >> Linked Mon May 31 11:03:33 2010

 OUTPUT FILE NAME:

  <lab4a.out> ENTRY POINT SYMBOL: "_main"

 address: 0000e000

  MEMORY CONFIGURATION

 name

 origin

 length

 used

 attr

 fill

 ----------------------

 --------

 ---------

 --------

 ----

 -------- PAGE

 0: EPROM

  0000e000

  00000100

 0000001d

 RWIX

 vecs

 0000ff80

  00000004

 00000000

 RWIX

 PAGE

 1: SPRAM

  00000060

  00000020

 0000000b

 RWIX

 DARAM

  00000080

  00000100

 0000001a

 RWIX

  SECTION ALLOCATION MAP

  output

 attributes/ section

  page

 origin

 length

  input sections --------

 ----

 ----------

 ----------

  ---------------- .text

 0

 0000e000

 0000001d

 0000e000

 0000001d

  LAB4A.obj (.text)

 .bss

  1

 00000060

 0000000b

  UNINITIALIZED 四、心得体会

  经过这次实验,我更加熟悉 CCS 开发环境,访问读写 DSP 的寄存器AC0-AC3, ARO-AR7, PC, T0-T3 。

  实验 2

  S CCS 下的 T FFT 算 法程序设计

 一、

 实验目的

 CCS 下的 FFT 算法程序设计 二、

 实验要求

 提供一个 CCS 下的 C 语言例程,在 CCS 下,仿照例程,任选雨中FIR 滤波、IIR 滤波、FFT 算法,采用 C 语言完成代码的编写、编译、链接、下载和运行,输入数据,滤波器系数任选,并给出运算结果。

 1)目的 2)工程文件的构成,并附图 3)打印源代码 4)打印编译成功的信息 5)打印 map 文件 6)程序下载的截图过程 三)

 运行结果

 三、

 实验步骤

 1、在 ccs 平台中将用到的程序导入到平台中,点击 project—>add

 file to project。选择多个文件时,可以按住 ctrl 键。

  2.将所有的程序段中的 start 改为_main,将 fft.Asm 中的 K_FFT_SIZE

 .set

 32

  ;N K_LOGN

 .set

 5

 ;LOG(N) 改为 K_FFT_SIZE

 .set

 64

  ;N K_LOGN

 .set

 6

 ;LOG(N) 3、对源文件进行编译 (注意先对每个.asm 文件先进行编译,以防止程序有错误),没有错误时进行链接 。

 4.点击菜单 fileload program。装载.out 文件

 四、

 实验结果

 五、

 源程序代码

 ***************************************************************** 函数原型:void FFT(struct compx *xin,int N)

 函数功能:对输入的复数组进行快速傅里叶变换(FFT)

 输入参数:*xin 复数结构体组的首地址指针,struct 型

 ***********************************************************

 ******/ void FFT(struct compx *xin) {

 int f,m,nv2,nm1,i,k,l,j=0;

 struct compx u,w,t;

 nv2=FFT_N/2;

 //变址运算,即把自然顺序变成倒位序,采用雷德算法

 nm1=FFT_N-1;

 for(i=0;i<nm1;i++)

  {

 if(i<j)

 //如果 i<j,即进行变址

 {

 t=xin[j];

  xin[j]=xin[i];

 xin[i]=t;

 }

  k=nv2;

 //求 j 的下一个倒位序

 while(k<=j)

  //如果 k<=j,表示 j 的最高位为 1

  {

 j=j-k;

  //把最高位变成 0

  k=k/2;

  //k/2,比较次高位,依次类推,逐个比较,直到某个位为 0

 }

 j=j+k;

  //把 0 改为 1

  }

 {

  int le,lei,ip;

 //FFT 运算核,使用蝶形运算完成 FFT 运算

 f=FFT_N;

 for(l=1;

 (f=f/2)!=1;l++)

  //计算 l 的值,即计算蝶形级数

 ;

  for(m=1;m<=l;m++)

  // 控制蝶形结级数

 {

 //m 表示第 m 级蝶形,l 为蝶形级总数 l=log(2)N

 le=2<<(m-1);

 //le蝶形结距离,即第 m 级蝶形的蝶形结相距 le 点

  lei=le/2;

  //同一蝶形结中参加运算的两点的距离

 u.real=1.0;

  //u 为蝶形结运算系数,初始值为 1

 u.imag=0.0;

  w.real=cos(PI/lei);

  //w 为系数商,即当前系数与前一个系数的商 w.imag=-sin(PI/lei);

  for(j=0;j<=lei-1;j++)

 //控制计算不同种蝶形结,即计算系数不同的蝶形结

  {

  for(i=j;i<=FFT_N-1;i=i+le)

 //控制同一蝶形结运算,即计算系数相同蝶形结

 {

  ip=i+lei;

  //i,ip 分别表示参加蝶形运算的两个节点

 t=EE(xin[ip],u);

 //蝶形运算,详见公式

  xin[ip].real=xin[i].real-t.real;

  xin[ip].imag=xin[i].imag-t.imag;

  xin[i].real=xin[i].real+t.real;

  xin[i].imag=xin[i].imag+t.imag;

  }

  u=EE(u,w);

  //改变系数,进行下一个蝶形运算

  }

  }

 }

  }

  M Mp ap 文件

 ******************************************************************************

 TMS320C55x COFF Linker PC Version 3.3

  ******************************************************************************

 >> Linked Sat May 30 23:48:27 2015

 OUTPUT FILE NAME:

  <lab.out> ENTRY POINT SYMBOL: "_main"

 address: 0000e000

  MEMORY CONFIGURATION

 name

 origin

 length

 used

 attr

 fill

 ----------------------

 --------

 ---------

 --------

 ----

 -------- PAGE

 0: EPROM

  0000e000

  00000100

 00000019

 RWIX

 PAGE

 1: SPRAM

  00000060

  00000020

 0000000a

 RWIX

 DARAM

  00000080

  00000100

 00000000

 RWIX

  SECTION ALLOCATION MAP

 output

 attributes/ section

  page

 origin

 length

  input sections --------

 ----

 ----------

 ----------

  ---------------- .text

 0

 0000e000

 00000012

 0000e000

 00000012

  LAB2B.obj (.text)

 .data

 0

 0000e012

 00000005

 0000e012

 00000005

  LAB2B.obj (.data)

 .vectors

  0

 0000e017

 00000002

 0000e017

 00000002

  VECTORS.obj (.vectors)

 .bss

  1

 00000060

 0000000a

  UNINITIALIZED

  00000060

 0000000a

  LAB2B.obj (.bss)

  GLOBAL SYMBOLS: SORTED ALPHABETICALLY BY Name

 address

 name --------

  ---- 00000060

  .bss 0000e012

  .data 0000e000

  .text 00000060

  ___bss__ ffffffff

  ___cinit__ 0000e012

  ___data__ 0000e017

  ___edata__ 0000006a

  ___end__ 0000e012

  ___etext__ ffffffff

  ___pinit__ 0000e000

  ___text__ 00000000

  __lflags UNDEFED _c_int00 0000e000

  _main ffffffff

  cinit 0000e017

  edata 0000006a

  end 0000e012

  etext ffffffff

  pinit

  GLOBAL SYMBO...

篇四:DSP原理及应用大作业

P 大作业(哈工程)

 DSP 原理与应用

  学号:

  姓名:

  日期:2017 年 5 月 23 日星期二

  1. DSP 的生产厂商主要有哪些?分别有什么系列?

  答:

  ① 德州仪器公司(最有名的 DSP 芯片厂商)。TI 公司在市场上主要的三个系列产品:

  (1)面向数字控制、运动控制的 TMS320C2000 系列,主要包括TMS320C24x/F24x、TMS320LC240x/LF240x、TMS320C24xA/LF240xA、TMS320C28** 等;

  (2)面向低功耗、手持设备、无线终端应用的 TMS320C5000 系列,主要包括 TMS320C54x、TMS320C54**、TMS320C55x 等;

  (3)面向高性能、多功能、复杂应用领域的 TMS320C6000 系列,主要包括 TMS320C62**、TMS320C64**、TMS320C67** 等。

  ② 美国模拟器件公司。其主要的系列:

  (1)定点 DSP 芯片有 ADSP2101/2103/2105、ADSP2111/2115、ADSP2126/2162/2164、ADSP2127/2181、ADSP-BF532 以及 Blackfin 系列;

  (2)浮点 DSP 芯片有 ADSP21000/21020、ADSP21060/21062,以及虎鲨 TS101、TS201S。

 ③ Motorola 公司(发布较晚)。其主要的系列包括:

  (1)定点 DSP 处理器 MC56001;

  (2)与 IEEE 浮点格式兼容的的浮点 DSP 芯片 MC96002;

  (3)DSP53611、16 位 DSP56800、24 位的 DSP563XX 和 MSC8101 等产品。

 ④ 杰尔公司。主要系列有:

  嵌入式 DSP 内核的 SC1000 和 SC2000 系列,主要面向电信基础设施、移动通信、 多媒体服务器及其它新兴应用。

  2. 浮点 DSP 和定点 DSP 各自有什么特点?

  答:

  浮点 DSP 和定点 DSP 在宏观上有很大的特点区别,包括动态范围、速度、价格等等。

  (1)动态范围:定点 DSP 的字长每增加 1bit,动态范围扩大 6dB。16bit字长的动态范围为 96dB。程序员必须时刻关注溢出的发生。例如,在作图像处理时,图像作旋转、移动等,就很容易产生溢出。这时,要么不断地移位定标,要么作截尾。前者要耗费大量的程序空间和执行时间,后者则很快带来图像质量的劣化。总之,是使整个系统的性能下降。在处理低信噪比信号的场合,例如进行语音识别、雷达和声纳信号处理时,也会发生类似的问题。

  32bit 浮点运算 DSP 的动态范围可以作到 1536dB,这不仅大大扩大了动态范围,提高了运算精度,还大大节省了运算时间和存储空间,因为大大减少了定标,移位和溢出检查。

  由于浮点 DSP 的浮点运算用硬件来实现,可以在单周期内完成,因而

 其处理速度大大高于定点 DSP。这一优点在实现高精度复杂算法时尤为突出,为复杂算法的实时处理提供了保证。

  32bit 浮点 DSP 的总线宽度较定点 DSP 宽得多,因而寻址空间也要大得多。这一方面为大型复杂算法提供了可能、因为省的 DSP 目标子程序已使用到几十 MB 存储器或更多;另一方面也为高级语言编译器、DSP 操作系统等高级工具软件的应用提供了条件。DSP 的进一步发展,必然是多处理器的应用。新型的浮点 DSP 已开始在通信口的设置和强化、资源共享等方面有所响应。

  (2)

 在硬件和软件上的区别

  在硬件结构上最大的不同之处在于数据存储结构方面。浮点 DSP 用户不必知道如何存储数据,而应用定点 DSP 时就需了解数据存储数据格式,必须对数据格式作一些转换。浮点 DSP 处理器具有浮点/整数乘法器,整数/浮点算术逻辑运算单元 ALU,适合存放扩展精度的浮点结果的寄存器等。

  主要有浮点 DSP 编程的特点以及注意事项;定点 DSP 进行浮点运算时的定标,移位,检测溢出操作。比较两个浮点数时,不要使用==来判断是否相等。即使比较两个相等的数,还是可能有微小的舍入差别。

  3. 针对 TI 公司的 C6000 系列,说一下 CACHE、EDMA、EMIF 的概念和用途。

 答:

  EMIF: 外部存储器接口(EMIF)是 TMS、DSP 器件上的一种接口,具体可以分为 EMIFA 和 EMIFB。一般来说,EMIF 可实现 DSP 与不同类型存储器(SRAM、Flash RAM、DDR-RAM 等)的连接。一般 EMIF 与 FPGA 相连,从

 而使 FPGA 平台充当一个协同处理器、高速数据处理器或高速数据传输接口。设计接口提供了一个 FPGA 块至 RAM 的无缝连接。在读/写、FIFO 或存储器模式中,双端口块 RAM 的一侧被用来实现与 DSP 的通信。另一侧用于实现与内部 FPGA 逻辑电路或平台-FPGA 嵌入式处理器的通信。

  EDMA: 增强型直接内存存取(EDMA)是数字信号处理器(DSP)中用于快速数据交换的重要技术,具有独立于 CPU 的后台批量数据传输的能力,能够满足实时图像处理中高速数据传输的要求。通过灵活控制 EDMA 不仅能够提高图像数据的传输效率,而且能够充分发挥 DSP 的高速性能。

  CACHE:CACHE 高速缓冲存储器一种特殊的存储器子系统,其中复制了频繁使用的数据以利于快速访问。存储器的高速缓冲存储器存储了频繁访问的 RAM 位置的内容及这些数据项的存储地址。当处理器引用存储器中的某地址时,高速缓冲存储器便检查是否存有该地址。如果存有该地址,则将数据返回处理器;如果没有保存该地址,则进行常规的存储器访问。因为高速缓冲存储器总是比主 RAM 存储器速度快,所以当 RAM 的访问速度低于微处理器的速度时,常使用高速缓冲存储器。

  4. DSP 的 PCB 设计属于高速信号设计,高速信号设计需要考虑什么问题? 答:

  (1)考虑电源和地的去耦

  随着 DSP 工作频率的提高,DSP 和其他 IC 元器件趋向小型化、封装密集化,通常电路设计时考虑采用多层板,建议电源和地都可以用专门的一层,且对于多种电源,例如 DSP 的 I/O 电源电压和内核电源电压不同,可以用两个不同的电源层,若考虑多层板的加工费用高,可以把接线较多或

 者相对关键的电源用专门的一层,其他电源可以和信号线一样布线,但要注意线的宽度要足够。

  无论电路板是否有专门的地层和电源层,都必须在电源和地之间加一定的并且分布合理的电容。为了节省空间,减少通孔数,建议多使用贴片电容。可把贴片电容放在 PCB 板背面即焊接面,贴片电容到通孔用宽线连接并通过通孔与电源、地层相连。

  考虑电源分布的布线规则。

  分开模拟和数字电源层。

  高速高精度模拟元件对数字信号很敏感。例如,放大器会放大开关噪声,使

  之接近脉冲信号,所以在板上模拟和数字部分,电源层一般是要求分开的。

  (2)隔离敏感信号

  有些敏感信号(如高频时钟) 对噪声干扰特别敏感,对它们要采取高等级隔离措施。高频时钟(20MHz 以上的时钟,或翻转时间小于 5ns 的时钟)必须有地线护送,时钟线宽至少 10mil,护送地线线宽至少 20mil,高频信号线的保护地线两端必须由过孔与地层良好接触,而且每 5cm 打过孔与地层连接;时钟发送侧必须串接一个 22Ω~220Ω的阻尼电阻。可避免由这些线带来的信号噪声所产生的干扰。

  (3)硬件抗干扰设计:

  硬件抗干扰效率高,在系统复杂度、成本、体积可容忍的情况下,优先选用硬件抗干扰设计。常用的硬件抗干扰技术可归纳为以下几种:

 硬件滤波:RC 滤波器可以大大削弱各类高频干扰信号。如可以抑制“毛刺”干扰。

  合理接地:合理设计接地系统,对于高速的数字和模拟电路系统来说,具有一个低阻抗、大面积的接地层是很重要的。地层既可以为高频电流提供一个低阻抗的返回通路,而且使 EMI、RFI 变得更小,同时还对外部干扰具有屏蔽作用。PCB 设计时把模拟地和数字地分开。

  屏蔽措施:交流电源、高频电源、强电设备、电弧产生的电火花,会产生电磁波,成为电磁干扰的噪声源,可用金属壳体把上述器件包围起来,再接地,这对屏蔽通过电磁感应引起的干扰非常有效。

  光电隔离:光电隔离器可以有效地避免不同电路板间的相互干扰,高速的光电隔离器常用于 DSP 和其他设备(如传感器、开关等) 的接口。

  (4)软件抗干扰设计

  软件抗干扰有硬件抗干扰所无法取代的优势,在 DSP 应用系统中还应充分挖掘软件的抗干扰能力,从而将干扰的影响抑制到最小。下面给出几种有效的软件抗干扰方法。

  数字滤波:模拟输入信号的噪声可以通过数字滤波加以消除。常用的数字滤波技术有:中值滤波、算术平均值滤波等。

  设置陷阱:在未用的程序区内设置一段引导程序,当程序受干扰跳到此区域时,引导程序将强行捕获到的程序引导到指定的地址,在那里用专门程序对出错程序进行处理。

  指令冗余:在双字节指令和三字节指令后插入两三个字节的空操作指令 NOP,可以防止当 DSP 系统受干扰程序跑飞时,将程序自动纳入正轨。

 设置看门狗定时:如失控的程序进入“死循环”,通常采用“看门狗”技术使程序脱离“死循环”。其原理是利用一个定时器,它按设定周期产生一个脉冲,如果不想产生此脉冲,DSP 就应在小于设定周期的时间内将定时器清零;但当 DSP 程序跑飞时,就不会按规定把定时器清零,于是定时器产生的脉冲作为 DSP 复位信号,将 DSP 重新复位和初始化。

  (5)电磁兼容性设计

  电磁兼容性是指电子设备在复杂电磁环境中仍可以正常工作的能力。电磁兼容性设计的目的是使电子设备既能抑制各种外来干扰,又能减少电子设备对其他电子设备的电磁干扰。在实际的 PCB 板中相邻信号间或多或少存在着电磁干扰现象即串扰。串扰的大小与回路间的分布电容和分布电感有关。解决这种信号间的相互电磁干扰可采取以下措施:

  选择合理的导线宽度:由于瞬变电流在印制线条上产生的冲击干扰主要是印制导线的电感成分引起的,而其电感量与印制导线长度成正比,与宽度成反比。所以采用短而宽的导线对抑制干扰是有利的。时钟引线、总线驱动器的信号线常有大的瞬变电流,其印制导线要尽可能短。对于分立元件电路,印制导线宽度在

  1.5mm 左右即可满足要求;对于集成电路,印制导线宽度在 0. 2mm~1. 0mm 之间选择。

  采用井字形网状布线结构:具体做法是在PCB印制板的一层横向布线,紧挨着的一层纵向布线。

  (6)散热设计

  为有利于散热,印制板最好是自立安装,板间距应大于 2cm,同时注

 意元器件在印制板上的布排规则。在水平方向,大功率器件尽量靠近印制板边沿布置,从而缩短传热途径;在垂直方向大功率器件尽量靠近印制板上方布置,从而减少其对别的元器件温度的影响。对温度较敏感的元器件尽量布放在温度比较低的区域,而不能放在发热量大的器件的正上方。

  5. 自己设定参数,用 C 语言编写一段低通滤波器的程序,并指明,在RF5 框架中,此程序如何嵌入其中。

  答:程序如下:

  #include <stdio.h>

  #include <math.h>

  #define true 1

  #define false 0

  #define n 8

  #define bufsize 100

  int in_buffer[bufsize];

  int out_buffer[bufsize];

  static int processing(int *input, int *output);

  static void dataio(void);

  static long round(long a);

  void main()

  {

  int *input = &in_buffer[0];

  int *output = &out_buffer[0];

 puts("the 1st experiment started\n");

  while(true)

  {

  dataio();

  processing(input, output);

  dataio();

  }

  }

  static int processing(int *input, int *output)

  {

  int i,size = bufsize;

  short **0,x,y;

  short z[n]={0,0,0,0,0,0,0,0};

  short

  w[2*n+1]={101,4356,810,8192,2835,3403,5670,2517,7088,605,5670,193,2835,21,810};

  long y0,z0;

  while(size--){

  **0=*input++;

  x=**0*6;

  z0=(long)x<<15;

 y0=0;

  for(i=0;i<n;i++)

  {

  z0-=(long)w[2*i+1]*(long)z[i];

  y0+=(long)w[2*i+2]*(long)z[i];

  }

  y0+=(long)w[0]*(z0>>15);

  y0=round(y0);

  for(i=n-1;i>0;i--)

  z[i]=z[i-1];

  z0=round(z0);

  z[0]=(short)(z0>>15);

  y=(short)(y0>>15);

  *output++ =y;

  }

  return(true);

  }

  static void dataio()

  {

  return;

  }

  static long round(long a)

 {

  long x3;

  x3=a&(0xffff0000);

  return x3;

  }

  6. 利用视频的 FVID 驱动编写一段视频驱动的程序。

  答:程序如下:

  //gioAttrs.nPackets = 8;

  //gioAttrs.timeout

 = SYS_FOREVER;

  self->hGioVpfeCcdc = FVID_create ( "/VPFE0", IOM_INOUT)

  result=FVID_control

  for (i=0; i<LOCAL_PRIMER_FRAME_CNT && status == 0; i++)

  {pspFramePtrNew=LOCAL_allocPspFrame(hBlock);

  numBytes = self->bytesPerFrame;

  p = pspFramePtrNew->frameBufferPtr;

  for(i=0;i< numBytes / sizeof; i++)

  APP_SYSTEM_cacheWbInv;

  result = FVID_queue;

  APP_SYSTEM_ASSERT(result == 0, "FVID_queue()failed");

  }

  msgPtr->processedFlag = 1;

  return status;

 self->hGioVpfeCcdc= FVID_create("/VPFE0", IOM_INOUT)

  for (i=0; i<LOCAL_PRIMER_FRAME_CNT && status == 0; i++)

  {pspFramePtrNew=LOCAL_allocPspFrame(hBlock,null);numBytes self->bytesPerFrame;

  p = pspFramePtrNew->frameBufferPtr;

  for(i=0;i< numBytes / sizeof; i++)

  APP_SYSTEM_cacheWbInv;

  result = FVID_queue;

  APP_SYSTEM_ASSERT(result==IOM_COMPLETED ,

  "FVID_queue() failed");

  ATM_inci(&self->driverFrameCnt);

  }

  msgPtr->processedFlag = 1;

  return status;

  =

篇五:DSP原理及应用大作业

成像跟踪系统中基于 DSP 伺服单元控制研究 (专业:

 通信与信息系统

 姓名:

 学号:

 201111768)

  摘

 要:

 本文阐述了 光电成像跟踪系统原理与组成以及光电成像跟踪系统的设计和实现, 重点介绍了 基于 DSP 芯片的实现二维转台的实时控制设计, 二者之间通过 RS232通信协议进行命令和数据的通讯。

 结合转台驱动元件――步进电机的矩频特性, 对二维转台采用自适应控制对目 标跟踪检测, 实现了 对目标的高精度实时控制。

 关键词:

 光电成像跟踪 DSP 伺服单元 自适应控制 二维转台 0 引言 光电成像技术是适应信息社会的需要而迅速发展的一门 新技术分支学科, 利用 光电成像技术可在全黑的夜空不用 照明能像白天一样看清周围景物; 可利用景物本身在常温下的辐射能获得可见的图像信息; 可通过视频信号的转换来完成图像的传输、 存贮以及处理等功能。

 随着光电编码技术、 电视摄像技术、 热成像技术、 红外技术和数字图像处理技术的不断进步, 光电成像跟踪技术自二十世纪六十年代以来, 得到了 极大的发展,

 在导弹制导、 火炮控制、 天文观测(空间飞行体和星体跟踪)、 靶场测量、 武器控制、 航天航空等领域有着极其广泛的应用究中也有很多用途, 如印刷包装中目 标定位, 工业检测、 安防监控等。

 [1]。

 此外, 光电成像跟踪技术在工业及科学研1 光电成像跟踪系统总体设计 实时光电成像跟踪系 统的主要任务是从目 标的图像序列中 检测运动信息, 估计运动及参数并给出伺服机构控制算法, 从而使光电成像跟踪系统准确跟踪目 标或目 标特征的运动轨迹。

 1. 1 光电成像跟踪系统工作原理 光电成像跟踪系统通常是由探测系统及伺服机构联合组成的。

 探测系统提供测量信息, 伺服机构完成对目 标的跟踪, 结构如图-1 所示。

  图-1 光电成像跟踪系统架构 探测器安装在承载转台上, 探测器输出的电视制式的信号(含有图像和同探测系统

  伺 服 单 元 探测器 图像采集 与处理设备 运动控制设备 转台设备 监视器

 步、 行场消隐信号) 一路送到监视器上进行实时监视, 另一路经过视频预处理, A/D 变换后送入图像处理单元进行图像处理, 图像处理单元首先形成一个检测(波门) 窗口 , 然后在窗口 中检测、 识别、 提取出目 标图像信号, 进行目 标跟踪处理, 确定出目 标在当前帧观测图像中的精确坐标, 送至承载转台控制模块, 经过控制模块的转换计算得到目 标相对于探测器瞄准线的偏差量, 控制模块根据偏差量输出相应控制信号使承载转台转动, 带动转台上的探测器转动, 使目 标始终处于探测器视场中心。

 1. 2 光电成像跟踪系统转台介绍 本文以 O 型精密电控旋转台 RSA200 为例进行介绍。

 二维电控旋转台示意图-2 所示,

 二维转台原理框图如图-3 所示。

  图-2 二维电控旋转台示意图

 图-3 二维转台原理框图 1. 3 转台控制设备连接结构 转台跟踪控制设备是实现对转台随动控制的核心部件。

 它的主要任务是接收上位机(PC 计算机)

 的方位和俯仰的位置指令, 实时读取方位和俯仰两个光电编码器的测角 读数, 按一定的控制算法进行运算, 得出方位和俯仰电机的控制指令值, 送到驱动器, 由驱动器驱动电机转动, 从而实现方位和俯仰电机的位置随动控制; 另外, 跟踪控制设备还接受并执行上位机(PC 计算机)

 的指令, 对方位和俯仰驱动器的状态进行监控, 并将监控结果发送给探测系统。

 本系统采用基于数字信号处理器(DSP) 的伺服控制卡。

 数字信号处理器(DSP) 专为信号处理而设计, 是解决实时处理要求的单片可编程处理芯片。它使用灵活, 在用于实现数据量大、 计算复杂、 实时性要求高的信号处理任务时, 与一般微处理器相比, 其速度更快、 效率更高。

 DSP 强大的运算功俯仰/方位测角信号 光电 编码器 脉冲信号 方向信号 俯仰/方位 运动控制器 俯仰/方位 驱动器 俯仰/方位 步进电机

 能, 使其在伺服控制中得到了 越来越广泛的应用。

 许多公司研制了 以 DSP 为微处理器的伺服控制卡, 这些卡一般以 PC 机为硬件平台, 以 DOS 或 WINDOWS为软件平台, 使用很方便, 一般构成如图-4 所示。

  图-4 运动控制器的一般构成图 总线接口 用于与上位机连接, 实现上下位机的通信; MCU 或 DSP 实现对执行机构的实时控制; 脉冲发生器用 于产生控制步进电机驱动器的脉冲信号; 反馈输入是指实现闭环控制时, 检测装置的输出; I/O 接口 用 于限位开关、 原点开关等信号的输入以及外部使能等信号的输出。

 1. 4 光电成像跟踪系统总体方案 基于 DSP 的光电成像跟踪系统选用上位 PC 机加基于 DSP 的控制系统的两级控制模式, 上位机除了 负责系统的光电图像处理之外, 还要完成系统的综合管理、 人机交换和 DSP 的通信等。

  图-5 光电成像跟踪系统总体结构框图 本系统采用 CCD 光电探测器作为光电成像元件, CCD 摄像头安装在二维跟踪转台上, CCD 摄像头输出的电视制式的图像信号传给计算机(PC 机), 由PC 机图像处理单元完成图像预处理、 目 标检测, 提取出被跟踪目 标, 确定出目 标在当前帧观测图像中的精确坐标, 经过串行口 下传给下位机 DSP 控制系PC 机图像处理单元 CCD 光电 探测器 光

 电 图像采集 光电图像 预处理 光

 电 目标检测

 二

 维 电控旋转台

 DSP 处理器 驱动器 光电编码器 总线接口

  MCU 或 DSP 最小系统 I/O 接口 反馈 输入 调频脉 冲发生 模块 步进电机 驱动器

 统, DSP 控制系统计算得到目 标相对于摄像头瞄准线的偏差量, 输出控制信号控制转台步进电机转动以带动转台上的 CCD 摄像头转动, 使目 标始终处于视场中心。

 光电成像跟踪系统总体结构方案如图-5 所示。

 PC 机图像处理单元在光电成像跟踪系统中主要实现图像数据采集、 存储与实时处理, 主要完成以下任务:

 采集、 存储光电图像, 并进行校正; 实现光电目 标的实时检测; 输出目 标与探测器光轴的偏差; 实时录取侦察过程的视频录像, 采集重要的光电图像; 完成系统故障自检。

 基于 DSP 处理器的二维转台的实时控制系统, 它接受传送过来的指令和数据并对转台电机的驱动电源进行具体的控制, 实现复杂的运动控制算法,完成对转台各种运动状态的实时控制, 主要实现对转台测角 系统的实时监控和测角数据的读取、 处理以及转台数据的及时回传等工作[10]。

 2 系统硬件设计 系统硬件平台是完成运动目 标自 动检测与跟踪的重要保证, 通过对实验场景的分析以及目 标检测和跟踪算法的研究, 根据性能要求和实验室设备条件, 本文设计研制了 一套硬件平台:

 采用 DSP 实验系统作为转台控制系统主要的硬件处理器; 选定了 用于获取图像的 CCD 摄像机、 图像采集卡和二维精密电控旋转台; 以及转台步进电机驱动器、 光电编码器、 光电耦合器等; 图像输出设备采用了 实验室里己有的显示器。

 本章将对本系统主要的硬件部分的构成及功能做详细的介绍。

 2. 1 基于 DSP 的转台控制系统功能分析 根据系统要求, DSP 运动控制系统的主体部分如图-6 所示。

  图-6 基于 DSP 的转台控制系统功能模块 (1)

 RS232 串口 单元:

 通过串行通信接口 (SCI)

 从上位 PC 机读取控制指令, 以及向上位 PC 机发送测角信号。

 (2)

 电源单元:

 为步进电机驱动器以及光电编码器提供直流电源。

 (3)

 I/O 单元:

 该模块主要采集光电编码器测角信号。

 (4)

 电机控制接口 :

 由该接口 输出控制脉冲信号和方向信号给步进电机驱动模块。

 DSP TMS 320LF 2407 RS232 串口单元 电源单元 上位机 驱动 模块 被控 电机 光电 编码器 I/O 单元 光电 隔离 模块 电机 控制接口

 (5)

 光电隔离模块:

 对光电编码器测角信号与 DSP 检测模块进行光电隔离。

 (6)

 驱动模块:

 由电机驱动器组成, 负责把控制脉冲和方向信号转换成各电机转角和方向控制信号。

 2. 2步进电机及其工作原理 在电动执行机构中, 有直流电机、 交流电机、 步进电机和直接驱动电机等实现旋转运动的电动机, 以及实现直线运动的直线电机。

 目 前在光电成像跟踪系统转台的运动控制中较为常用的电机有直流伺服电机、 交流伺服电机和步进电机。

 本系统二维电控旋转台的俯仰轴和方位轴运动的驱动元件都是混合式步进电机。

 步进电机是一种将电脉冲信号转换为角 位移或直线运动的执行机构, 由步进电机及其功率驱动装置构成一个开环的定位运动系统。

 当步进驱动器接收到一个脉冲信号, 它就驱动步进电机按设定的方向转动一个固定的角 度即步距角 。

 脉冲输入越多 , 电机转子转过的角 度就越多 , 输入脉冲的频率越高, 电机的转速就越快。

 因此可以通过控制脉冲个数来控制角位移量, 从而达到准确定位的目 的, 同时可以通过控制脉冲频率来控制电机转动的速度,从而达到调速的目 的。

 步进电机的种类根据自身的结构不同, 可分为常用 三大类:

 反应式(也称磁阻式)、 永磁式、 混合式。

 其中混合式步进电机兼有反应式和永磁式的优点, 它的应用也越来越广泛。

 2. 3 步进电机运动控制系统及其运动控制器 步进电机控制系统主要由步进电机运动控制器、 环行分配器、 功率放大器、 步进电机组成如图-7 所示。

  图-7 步进电机控制系统结构图 步进电机运动控制器是运动控制系统的核心部分, 它根据驱动器的要求为其提供控制信号, 包括:

 脉冲信号、 方向信号、 方式信号。

 脉冲信号用以控制电机的速度, 方向信号用 以控制电机的转向, 而方式信号用来控制电机的控制模式则是:

 依据电机的特性和运动的需要, 正确地发出各种控制信号, 即为了 使[22]。

 对于控制步进电机的运动控制器的设计, 必须把握的一个原步 进 电 机 运 动 控 制 器

 脉冲信号 方向信号 方式信号 步进电机 环 形 分 配 器 功 率 放 大 器 步 进 电 机 驱 动 器

 步进电机精确定位, 运动控制器在任何时候必须保证发出正确的脉冲数, 特别是系统启动和停止时。

 如果要求步进电机运行的速度小于电机的极限起动频率, 则步进电机可以按要求的速度直接起动, 运行至终点后可立即停发脉冲串而令其停止。

 但在一般情况下, 步进电机的极限起动频率是很低的, 而要求的速度往往较高。

 如果步进电机以要求的速度直接起动, 因为该速度已超过极限起动频率而不能正常起动, 可能发生丢步或根本不运行的情况。

 电机运行起来之后,如果到达终点时立即停发脉冲串, 令其立即停止, 则因为电机的惯性原因,会发生冲过终点的现象。

 这些情况的产生是由步进电机的频率特性曲线决定的。

 如果转子的加速度慢于步进电机的旋转磁场, 即低于换相速度, 则输入电机的电能不足, 在步进电机中产生的同步力距无法令转子速度跟随定子磁场的旋转速度, 从而引起失步或不运转。

 为了 解决这个问题, 一般采取一个“加速一恒速—减速—停止” 的运行过程本系统方位轴和俯仰轴步进电机的运动控制由基于 DSP 系统产生 PWM 脉冲信号和方向信号来控制步进电机, 并通过改变 PWM 脉冲信号频率实现步进电机的变速控制过程, 即升速时, 使 PWM 脉冲串逐渐加密; 减速时, 使脉冲串逐渐稀疏, 加减速控制多数采用软件来实现, 这样给系统带来很大的灵活性。

 步进电机主要用 于开环控制系统中, 在该系统中没有位置检测环节, 其精度主要取决于步进电机的步距角和传动链的精度, 因此精度不高。

 但因为其结构简单, 控制比较容易实现, 同时步进电机的细分技术的应用 , 使系统的定位精度明显提高, 因此该系统得到了 广泛的应用。

 [13]。

 3 系统的软件设计与实现

 完整、 可靠的、 符合系统性能要求的硬件电路设计是DSP应用 系统设计的前提条件, 而完善的软件设计则是发挥硬件资源潜能, 最终达到系统指标不可或缺的必要条件。

 在前一章中主要介绍了 系统的硬件平台, 本章将主要介绍系统的软件设计和实现工作。

 3. 1 主程序设计 主程序是控制程序的核心, 主要完成系 统的初始化( SCI 串 行通信接口 、 I/O 口 、 定时器等的初始化), 各标志位的置位与复位, 计数器周期寄存器初值的计算, 设置中断标志, 接收光电编码器信号, 系统自 检、 中断配置等功能机下传数据的接收, 并依据控制算法将接收数据转换成 PWM 的脉冲的生成和步数计数。

 主程序设计流程如图-8 所示。

 [28]。

 主程序完成初始化后, 进入循环等待中断, 中断程序完成对上位

  图-8 主程序流程图 3. 2 系统初始化设置 程序开始运行时要进行初始化, 只有正确的初始化各寄存器, 系统才能正确中断和读写数据禁止所有可屏蔽中断, 并将中断标志位清零; 设置 CLKOUT=4*CLKIN=40M, 并且使能 EVA、 SCI 外设void sys_ini()

 [29]。

 系统初始化函数 void sys_ini() 完成了 以下工作:[7]。

 初始化设置如下:

 {

  asm(" setc INTM") ;

  /*关总中断*/

  asm(" clrc SXM") ;

 /*抑制符号位扩展*/

  asm(" clrc OVM") ;

 /*累加器中结果正常溢出*/

  asm(" clrc CNF") ;

 /*B0 被配置为数据存储空间*/

  * SCSR1=0X0005;

 /*CLKIN=10M, 4 倍频, 使能 EVA 模块*/

  * WDCR=0X00E8;

  /*关看门狗*/

  WSGR=0X0600;

  /*io, ram, program 都设为 0 等待读写*/

  * IMR=0X0002;

 /*禁止所有中断*/

  * IFR=0XFFFF;

 /*清除全部中断标志*/

 }

  Y Y 上传数据?

 N 上传数据 N Y N 系统锁定 串 口 发送故障信息关中 断等待系 统复位启 动 、 停止控制 程序系统初始化 正确获取参数?

 串口...

推荐访问:DSP原理及应用大作业 作业 原理 DSP

Top