تبلیغات
باران الکترونیک - تغییر نرخ نمونه برداری سیگنال (طراحی در ‏MATLAB، پیاده سازی در ‏DSP‏)‏ قسمت سوم

پیاده سازی در 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 باشد و از سه برابر آن بیشتر باشد.


 برنامه C در نرم ­افزار CCS

#include <tms320.h>

#include <dsplib.h>

 

#include "sin1k5.dat"

#include "coef.h"

 

#define NX 128

#define NH 240

#define L  6

#define D  5

#pragma DATA_SECTION (db,".dbuffer")

DATA x[NX];

DATA db[(NH/L)+1];

DATA y[NX*L];

DATA y_d[NX*L/D];

DATA  *dbptr = &db[0];

 

int main(void) {

       short i,j;

       for (i = 0; i < NX * L; i++) y[i] = 0;      /* clear output buffer (optional) */

       for (i = 0; i < (NH / L) + 1; i++) db[i] = 0;/* clear delay buffer (a must) */

 

       while(1)

       {

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

                     {

                           x[i]=input[j++];/*Get a buffer of samples*/

                           if(j==1000)

                                  j=0;

                     }

              firinterp(x, h, y, dbptr, NH, NX, L);

 

              for (i=0,j=0; i<NX*L; i+=D,j++)

                           y_d[j] =  y[i];

       }

 

 

 

       return 0;

}

 

اضافه کردن کتابخانه پردازش سیگنال به پروژه

به قسمت Properties پروژه بروید و کتابخانه پردازش سیگنال را به صورت زیر به آن اضافه کنید.

شکل 9: اضافه کردن کتابخانه

محل جست و جوی هدر فایل­های پردازش سیگنال را به صورت زیر در تنظمات پروژه وارد کنید:

شکل 10: اضافه کردن مسیر فایل­های include


نتایج

بعد از اجرا کردن برنامه CCS خروجی ­های برنامه را با استفاده از پنجره Gragh نرم ­افزار رسم نمودیم که در شکل زیر نشان داده شده است.

شکل 11: خروجی برنامه DSP

منابع

[1] The ups and downs of arbitrary sample rate conversion, Ivar Løkken.

[2] TMS320C55x DSP Library Programmer’s Reference, SPRU422.

دانلود

سرور 1

دانلود فایل PDF

دانلود برنامه MATLAB و پروژه CCS5

سرور 2

دانلود فایل PDF

دانلود برنامه MATLAB و پروژه CCS5


نظرات()   
   
 
لبخندناراحتچشمک
نیشخندبغلسوال
قلبخجالتزبان
ماچتعجبعصبانی
عینکشیطانگریه
خندهقهقههخداحافظ
سبزقهرهورا
دستگلتفکر
آخرین پست ها