تبلیغات
" /> باران الکترونیک - مطالب ابر MATLAB

(From Simulation to Implementation)

هدف

در بسیاری از کاربردها لازم است تا نرخ نمونه برداری سیگنال تغییر کند. در این پروژه هدف این است که نرخ نمونه برداری سیگنال را افزایش دهیم. این فرایند در MATLAB شبیه سازی و در DSP سری 5000 شرکت TI پیاده سازی می­شود. این کار را با  استفاده از upsampling، فیلتر پایین گذر و downsampling انجام می­دهیم. نمودار بلوکی پروژه در شکل 1 نشان داده شده است.

شکل 1: نمودار بلوکی پروژه 

مقدمه

در این پروژه یک سیگنال سینوسی با فرکانس KHz 5/1 که با نرخ  KHz‏‏8 نمونه برداری شده است را با استفاده از نرم­افزار MATLAB تولید می­کنیم. می­خواهیم نرخ نمونه برداری سیگنال سینوسی را به KHz‏ ‏6/9 افزایش دهیم. ابتدا مروری بر روابط ریاضی حاکم بر این فرایند می­کنیم. با استفاده از متلب فیلتر مناسب را طراحی می­کنیم سپس به شبیه سازی این فرایند می­پردازیم. در نهایت بعد از رسیدن به نتایج مطلوبمان، از کتابخانه پردازش سیگنال شرکت TI برای پیاده سازی این پروژه روی پردازنده DSP سری 5000 استفاده میکنیم.



نظرات()       

برنامه M-file برای تغییر نرخ نمونه برداری سیگنال

اکنون می­خواهیم با نوشتن چند خط برنامه متلب یک سیگنال سینوسی با فرکانس KHz 1/5 که با نرخ KHz‏‏8   نمونه برداری شده است را تولید می­ کنیم. سپس نرخ نمونه برداری سیگنال را به KHz‏ 9/6 افزایش میدهیم.

مقدار دهی اولیه برنامه

%% Initialization

up_sample = 6;

down_sample = 5;

Fs= 8000;                       % Sampling frequency

T = 1/Fs;                       % Sample time

L = 1000;                       % Length of signal

t = (0:L-1)*T;                  % Time vector

1) تولید سیگنال سینوسی با فرکانس ‏KHz‏ 5/1 و نرخ نمونه برداری ‏KHz‏‏8‏

%% Produce input: sin 1.5 KHz, sample rate 8000

x=round(2^15*sin(2*pi*1500*t));

i=find(x>2^15-1);

x(i)=2^15-1;

i=find(x<-2^15);

x(i)=2^15;

plot(1000*t(1:50),x(1:50))

title('Sin 1.5 KHz, Sample Rate : 8KHz')

xlabel('time (milliseconds)')

% Plot frequency of signal

NFFT = 2^nextpow2(L); % Next power of 2 from length of y

X = fft(x,NFFT)/L;

f = Fs/2*linspace(0,1,NFFT/2+1);

% Plot single-sided amplitude spectrum.

figure

plot(f,2*abs(X(1:NFFT/2+1)))

title('Single-Sided Amplitude Spectrum of x(t)')

xlabel('Frequency (Hz)')

ylabel('|X(f)|')

بقیه مقاله در ادامه مطلب


نظرات()       

پیاده سازی در DSP

در این قسمت از سیگنال سینوسی با فرکانس ‏KHz‏ 1/5 و نرخ نمونه برداری ‏KHz‏‏8‏ در نرم­افزار متلب تولید شده است ‏به عنوان ورودی برنامه C استفاده می­کنیم. همان طور که مشاهده کردیم بین هر دو نمونه 5 تا صفر اضافه می­کنیم تا نرخ نمونه برداری 6 برابر شود. سپس با استفاده فیلتر FIR و ضرایب فیلتر fixed-point که توسط برنامه متلب طراحی کردیم سیگنال ورودی را فیلتر می­کنیم. برای این منظور می­توانیم از فیلتر FIR که در کتابخانه پردازش سیگنال پردازنده DSP وجود دارد (شکل 8) استفاده کنیم. برای مثال می­توانیم از تابع fir برای این منظور استفاده کنیم.

شکل 8: بخشی از کتابخانه پردازش سیگنال

همان­طور که می­دانیم تعداد زیادی صفر به سیگنال اضافه شده است که ضرب کردن این سیگنال­ها در ضرایب فیلتر تاثیری روی خروجی سیگنال ندارد و فقط باعث افزایش بار پردازش بیخودی روی DSP می­شود. برای حذف کردن این صفرها در محاسبات از فیلتر درون­یابی که در این کتابخانه به نام firinterp وجود دارد استفاده می­کنیم. نحوه محاسبه این فیلتر به صورت زیر می­باشد:

در این رابطه r خروجی فیلتر، h ضرایب فیلتر و x ورودی فیلتر می­باشد. همان­طور که مشاهده می­کنید صفرهای اضافه شده به ورودی در محاسبات وارد نمی­شود و بار پردازشی به شدت کاهش می­یابد. تابع C این فیلتر به صورت زیر میباشد:

ushort oflag = firinterp (DATA *x, DATA *h, DATA *r, DATA *dbuffer , ushort nh, ushort nx, ushort I)

 

برای این که این تابع به درستی کار کند باید طول فیلتر مضرب صحیحی از l باشد و از سه برابر آن بیشتر باشد.



نظرات()       
آخرین پست ها