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

آشنایی با کتابخانه پردازش سیگنال دیجیتال ARM سریهای Cortex در Keil 5
مرجع :
AN4841
Digital signal processing for STM32 microcontrollers using CMSIS
تدوین: دکتر رحیم زاده رفوعی
مقدمه:
در این مقاله اشاره ای به کتابخانه پردازش دیجیتال سیگنال (ِDSP ) می کنیم که کمپانی ARM آن را بااستفاده از نرم افزار Keil برای ما موجود ساخته است.
با استفاده از این کتابخانه می توان فیلتر های دیجیتال ساخت مثل FIR و IIR که خارج ار بحث این مقاله است. ما در این مقاله اشاره ی کوتاهی به تبدیل سریع سری فوریه( FFT) می کنیم یکی از کاربردهای آن تبدیل سیگنال آنالوگ به حوزه فرکانس می باشد.
اشاره ای می کنیم به :
- متغیر های شناور مورد استفاده در این کتابخانه Floating point
- متغیر های ثابت مورد استفاده در این کتابخانه 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 بیتی استفاده کرد.
نظر بدهید