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

آشنایی با کتابخانه پردازش سیگنال دیجیتال ARM  سریهای Cortex در  Keil 5

مرجع :
AN4841
Digital signal processing for STM32 microcontrollers using CMSIS


تدوین: دکتر رحیم زاده رفوعی


مقدمه:

در این مقاله اشاره ای به کتابخانه پردازش دیجیتال سیگنال (ِDSP ) می کنیم که کمپانی ARM   آن را بااستفاده از نرم افزار Keil  برای ما موجود ساخته است.

با استفاده از این کتابخانه می توان فیلتر های دیجیتال ساخت مثل FIR  و IIR که خارج ار بحث این مقاله است. ما در این مقاله اشاره ی کوتاهی به تبدیل سریع  سری فوریه( FFT) می کنیم یکی از کاربردهای آن تبدیل سیگنال آنالوگ به حوزه فرکانس می باشد.

اشاره ای می کنیم به :

  1. متغیر های شناور مورد استفاده در این کتابخانه Floating point
  2. متغیر های ثابت مورد استفاده در این کتابخانه Fix point
  • متغیر های شناور:

این روشی برای نشان دادن اعداد حقیقی می باشد ( FLOAT)

برای مثال (CORTEX- M4) با دقت تکی (Single Precision) از یک ساختار 32  بیتی استفاده می شود 8  بیت آن برای توان و 23 بیت آن برای کسر استفاده می گردد لطفا به شکل ها توجه فرمایید.

محاسبه ی اعداد مورد نظر بصورت      Single Precision  و  Double Precision    به ترتیب بصورت ذیل می باشد:

  • متغیر های ثابت:    

متغیر های ثابت برای نشان دادن اعداد صحیح و ممیز اعشار آن ها طبق شکل زیر برای مثال از 24  بیت برای اعداد صحیح و 8 بیت باقیمانده برای کسر آن استفاده می گردد.

متغیر های ثابت موجود در تما سری های CORTEX-MX به صورت 8  و 16 و 32 بیتی موجود می باشند. بیشتر ساختار های مورد استفاده در عملیات پردازش سیگنالQ7  وQ15  وQ32  می باشند که شامل بیت های کسری می باشند که اعداد بین 0/1- و 0/1+ را نشان دهند. برای به دست آوردن عدد مورد نظر در ساختار Q15  از فرمول زیر استفاده کنید.

محدوده قابل پشتیبانی Q15  برای اعداد صحیح بین

-32768  یا  +32768 می باشد.

لطفا به جدول مقایسه اعداد شناور و ثابت توجه کنید.

تبدیلات یا همان Transforms 

تبدیل  در این مقاله معنای یک تابعی می باشد که اطلاعات را از حوزه ای به حوزه ی دیگر تبدیل می کند.

تبدیل سری فوریه یا FFT تبدیل می باشد که سیگنال را از حوزه ی زمان به حوزه ی فرکانس می برد.

کتابخانه CMSIS  همراه با  firmware  های ST  داخل پوشه \driver \CMSIS  موجود می باشند.

اگر بخواهیم مثالی از FFT بزنیم می توانیم سیگنال پیش فرضی را از جدول lookup تولید کرده و از طریق DMA  به خروجی DAC  بفرستیم .

سپس سیگنال را از طریق یکی از کانال های ADC گرفته که می توان دوباره از DMA  هم استفاده کرد.

می توان فرکانس سیگنال ورودی را با استفاده از یکی از شمارنده ها ( Timer) تغیر داد.

سپس آماده سازی FFT برای پردازش انواع مختلف اطلاعات به صورت شناور 32 بیتی یا Q15  و Q31  بعداز آن پردازش FFT  و محاسبه اندازه اعداد موهوی وپیدا کردن بیشترین مقدار آنها و حتی می توان آن ها را روی LCD  هم نمایش داد.

لطفا به نمونه کد زیر که شامل آماده سازی و انجام FFT  با استفاده از کتابخانه DSP  که متعلق به      ARM   سری    CORTEXمی باشد توجه کنید.

 

طول FFT  یا اصطلاحات FFT –length  می توان بر حسب اختیار متغیر باشد که  میتوان از طول , 1024  256  یا 64  بیتی استفاده کرد.