初次接触DSP芯片,第一步,我先了解了它的基础信息。DSP芯片,也称数字信号处理器,是一种特别适合于进行数字信号处理运算的微处理器,其主要应用是实时快速地实现各种数字信号处理算法。根据数字信号处理的要求,DSP芯片一般具有如下主要特点:
(1)在一个指令周期内可完成一次乘法和一次加法;
(2)程序和数据空间分开,可以同时访问指令和数据;
(3)片内具有快速RAM,通常可通过独立的数据总线在两块中同时访问;
(4)具有低开销或无开销循环及跳转的硬件支持;
(5)快速的中断处理和硬件I/O支持;
(6)具有在单周期内操作的多个硬件地址产生器;
(7)可以并行执行多个操作;
(8)支持流水线操作,使取指、译码和执行等操作可以重叠执行。
第二步,了解硬件。我查找了一些关于硬件的文件资料,还有一些基本实验程序,先看懂基本程序里涉及的一些硬件配置及初始化程序,并针对不懂的地方上网查阅资料。
第三步,算法的选择。在网上搜集资料的时候,我们发现G.711 标准下的A 律和μ律更加常用,有丰富的例程,但实现方式各异。多方面考虑后,慢慢形成了自己的思路。指示灯的程序比较简单,则直接调用基本程序。
第四步,连接硬件调试。连接后曾迟迟不能得到实验效果,幸运的是,更换实验箱和音频线后问题解决了。
DSP技术涉及硬件、软件、C语言、汇编语言等众多领域,所以要在很短的时间内将DSP技术学懂,学通是不可能的。我们的课程设计也仅仅是使我们对DSP这项新技术有个比较基础的了解。在完成DSP课设的过程中,我收获很多,例如实验编程时要多思考,每一步编程不能只考虑其本身的功能,还要考虑其他如数据存储分配、数据类型是否匹配等问题,一定要细心,虽然发现错误一般能够修正,但这降低了设计的效率,应该尽量避免。
总得来说,这是一次令我收获感触颇多的课设,感谢老师悉心传授知识和同学的信任与鼓励。
第二篇:实验二DSP
实验二:时域采样与频域采样
%% 时域采样理论验证程序
Tp=64/1000; %观察时间Tp=64微秒
%产生M长采样序列x(n)
% Fs=1000;T=1/Fs;
Fs=1000;T=1/Fs;
M=Tp*Fs;n=0:M-1;
A=444.128;alph=pi*50*2^0.5;omega=pi*50*2^0.5;
xnt=A*exp(-alph*n*T).*sin(omega*n*T);
Xk=T*fft(xnt,M); %M点FFT[xnt)]
yn='xa(nT)';subplot(3,2,1);
stem(xnt); %调用自编绘图函数stem绘制序列图
box on;title('(a) Fs=1000Hz');
k=0:M-1;fk=k/Tp;
subplot(3,2,2);plot(fk,abs(Xk));title('(a) T*FT[xa(nT)],Fs=1000Hz');
xlabel('f(Hz)');ylabel('幅度');axis([0,Fs,0,1.2*max(abs(Xk))])
%============================================================== %%
% Fs=300;T=1/Fs;
Fs=300;T=1/Fs;
M=Tp*Fs;n=0:M-1;
A=444.128;alph=pi*50*2^0.5;omega=pi*50*2^0.5;
xnt=A*exp(-alph*n*T).*sin(omega*n*T);
Xk=T*fft(xnt,M); %M点FFT[xnt)]
yn='xa(nT)';subplot(3,2,3);
stem(xnt); %调用自编绘图函数stem绘制序列图
box on;title('(a) Fs=300Hz');
k=0:M-1;fk=k/Tp;
subplot(3,2,4);plot(fk,abs(Xk));title('(a) T*FT[xa(nT)],Fs=300Hz');
xlabel('f(Hz)');ylabel('幅度');axis([0,Fs,0,1.2*max(abs(Xk))])
%%============================================================ % Fs=200;T=1/Fs;
Fs=200;T=1/Fs;
M=Tp*Fs;n=0:M-1;
A=444.128;alph=pi*50*2^0.5;omega=pi*50*2^0.5;
xnt=A*exp(-alph*n*T).*sin(omega*n*T);
Xk=T*fft(xnt,M); %M点FFT[xnt)]
yn='xa(nT)';subplot(3,2,5);
stem(xnt); %调用自编绘图函数stem绘制序列图
box on;title('(a) Fs=200Hz');
k=0:M-1;fk=k/Tp;
subplot(3,2,6);plot(fk,abs(Xk));title('(a) T*FT[xa(nT)],Fs=200Hz'); xlabel('f(Hz)');ylabel('幅度');axis([0,Fs,0,1.2*max(abs(Xk))])
%% 2 频域采样理论的验证程序清单
figure
%频域采样理论验证程序=
M=27;N=32;n=0:M;
%产生M长三角波序列x(n)
xa=0:floor(M/2); xb= ceil(M/2)-1:-1:0; xn=[xa,xb];
Xk=fft(xn,1024); %1024点FFT[x(n)], 用于近似序列x(n)的TF X32k=fft(xn,32) ;%32点FFT[x(n)]
x32n=ifft(X32k); %32点IFFT[X32(k)]得到x32(n)
X16k=X32k(1:2:N); %隔点抽取X32k得到X16(K)
x16n=ifft(X16k,N/2); %16点IFFT[X16(k)]得到x16(n)
subplot(3,2,2);stem(n,xn,'.');box on
title('(b) 三角波序列x(n)');xlabel('n');ylabel('x(n)');axis([0,32,0,20]) k=0:1023;wk=2*k/1024; %
subplot(3,2,1);plot(wk,abs(Xk));title('(a)FT[x(n)]');
xlabel('\omega/\pi');ylabel('|X(e^j^\omega)|');axis([0,1,0,200])
k=0:N/2-1;
subplot(3,2,3);stem(k,abs(X16k),'.');box on
title('(c) 16点频域采样');xlabel('k');ylabel('|X_1_6(k)|');axis([0,8,0,200]) n1=0:N/2-1;
subplot(3,2,4);stem(n1,x16n,'.');box on
title('(d) 16点IDFT[X_1_6(k)]');xlabel('n');ylabel('x_1_6(n)');axis([0,32,0,20]) k=0:N-1;
subplot(3,2,5);stem(k,abs(X32k),'.');box on
title('(e) 32点频域采样');xlabel('k');ylabel('|X_3_2(k)|');axis([0,16,0,200]) n1=0:N-1;
subplot(3,2,6);stem(n1,x32n,'.');box on
title('(f) 32点IDFT[X_3_2(k)]');xlabel('n');ylabel('x_3_2(n)');axis([0,32,0,20])