فرض کنید در یک پروژه پردازش سیگنال دیجیتال (DSP) قرار است عبور انواع هواپیماها (جت جنگنده و یا مسافربری و …) را با پردازش صدای محیط تشخیص دهید.
اولین کاری که باید انجام دهیم این است که ورودی صدا را بگیریم.
میکروفونی که ما در کارگاه و دوره های طراحی سخت افزار از آن استفاده می کنیم، یک نمونه از میکروفون های شرکت MEMS است که قابلیت سمپل برداری از صدا تا ریت 50 کیلوسمپ بر ثانیه را دارد.
ریت 50 کیلوسمپل بر ثانیه، به معنای ضبط صدا تا فرکانس 25 کیلوهرتز می باشد (طبق قانون نایکوئیست).
همان طور که می دانید فرکانس 25 کیلوهرتز خارج از محدوده ی شنوایی انسان و فراصوت است.
پس همه صداهایی که با گوش شنیده می شود، با میکروفون ما نیز قابل ضبط خواهد بود.
نکته قابل توجه آنکه در این میکروفون دونوع فیلتر آنالوگ و دیجیتال به کار رفته است که فیلتر آنالوگ صداهای بالاتر از 25 کیلوهرتز را دمپ می کند و فیلتر دیجیتال متغیر است!
یکی از مباحث مهم در حوزه پردازش سیگنال دیجیتال، هارمونیک های اصلی است.
هارمونیک های اصلی صدای موتورهای جت در فرکانس های 80 تا 460 هرتز می باشد که جهت تشخیص آنها باید به رفتار سیگنال در حوزه ی فرکانس در این محدوده توجه کرد.
با توجه به بالاترین فرکانس مورد نیاز در پروژه (460 هرتز) سمپل برداری تا مقدار 2*460 که می شود 920 سمپل بر ثانیه است، کافیست.
کاهش داده برداری با میکروفون نهایتا تا 16 کیلوسمپل بر ثانیه ممکن است اما جهت کاهش پهنای باند تا محدوده ی 80 تا460 چه باید کرد؟
اشتباه رایجی که در اینجا رخ می دهد، کاهش ریت سمپل برداری بدون استفاده از فیلتر است که دلیل آن را در کارگاه FPGA به کارآموزان به صورت مفصل توضیح خواهیم داد.
جهت کاهش پهنای باند در کارگاه فیلترهای دیجیتال FIR را طراحی خواهیم کرد و سپس به الگوریتم تشخیصی خاص این پروژه (به نام oxor) می پردازیم.
جهت داده برداری از میکروفون نیز اینترفیس I2S را در FPGA پیاده سازی خواهیم کرد.
میکروفون ها صدا را به صورت استریو (دو کانال چپ و راست) ضبط می کنند.
هرچند میکروفون مورد نظر ما قابلیت ضبط صدا به صورت استریو را داراست و با 0 یا 1 شدن یکی از پایه ها میکروفون میتوان کانال چپ یا راست بودن را تعیین کرد، اما در این پروژه ما چون نیازی به ضبط صدا به صورت استریو نداریم، از این قابلیت صرف نظر می کنیم.
پس از آنکه پردازش سیگنال دیجیتال در حوزه فرکانس انجام شد و پهنای باند خاصی از آن جدا شد، سیگنال دیجیتال در یک حافظه ی FIFO قرار می گیرد، همانطور که از اسم این حافظه مشخص است، اولین ورودی در آن اولین خروجی نیز خواهد بود که انتخاب خوبی جهت پردازش های بعدی خواهد بود.
پس از آن که سیگنال در حافظه ی FIFO ذخیره شد، با هر لبه ی کلاک می توانیم یک سمپل از صدا را در خروجی این حافظه برداشته و به پردازش سیگنال دیجیتال مورد نظر در حوزه زمان بپردازیم، تا در نهایت تشخیص وجود و یا عدم وجود موتور جت در محیط بپردازیم.
جهت برآورده کردن پیش نیازها در این پروژه به اصول پردازش سیگنال دیجیتال می پردازیم و آنها را ابتدا در نرم افزار متلب پیاده سازی می کنیم.
سپس به پیاده سازی در سخت افزار می پردازیم.
همچنین جهت طراحی فیلتر های دیجیتال نیز ابتدا آن را در متلب پیاده سازی خواهیم کرد و سپس به پیاده سازی آن در سخت افزار خواهیم پرداخت.