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

 

 

کار یک مهندس پردازش سیگنال دیجیتال یا همان DSP، در نهایت طراحی و پیاده سازی الگوریتمهای خاص DSP‌ است. اولین گام در انتخاب یک الگوریتم، مثلا برای طراحی فیلتر، تصمیم گیری بین روشهای FIR و IIR‌ است که به ترتیب فیلتر با پاسخ ضربه محدود و نامحدود است. سپس باید کمی عمیق تر شده و به جزییات پیاده سازی سطح بالا همچون استفاده از تقارن در فیلتر FIR برای کاهش پیچیدگی، توجه کرد. زمانیکه الگوریتم به طور دقیق مشخص میشود، گام بعدی، تست و شبیه سازی الگوریتم توسط یک زبان برنامه نویسی سطح بالا همچون MATLAB است.

پس از تایید الگوریتم انتخاب شده، به فاز بعدی که همان پیاده سازی عملی است وارد میشویم. در این مرحله انتخاب پلتفرم مناسب باید صورت گیرد که معمولا کار دشواری است. پلتفرمهای رایج به ترتیب کاهش سطح پیچیدگی محاسباتی به شرح زیر است:

۱- پردازشگر یا میکروکنترلر با کاربرد عام (GPP)

۲- پردازشگر با کاربرد خاص (ASP) همچون DSPهای معمول

۳- آرایه های گیت قابل برنامه ریزی میدانی (FPGA)

۴- مدار مجتمع با کاربرد خاص (ASIC)

 

هر پلتفرم مجموعه روشهای طراحی متفاوتی دارد. از طرفی، تمامی پلتفرمها، یک گام اولیه طراحی مشترک دارند که همان توصیف مراحل مختلف الگوریتم به صورت یک شبه کد به شکل برنامه حلقه تو در تو یا NLP است. این NLP‌ همان ترکیب حلقه های for‌ در برنامه نویسی است. شبه کد مورد نظر، به سرعت قابل نگاشت به یک زبان برنامه نویسی سطح بالا همچون C++/Cاست. در صورتیکه از پلتفرم GPP‌ استفاده شود، این مرحله نگاشت تمام آن چیزی است که برای پیاده سازی لازم است انجام شود. در ASP با مجموعه دستورهای ارتقا یافته، استفاده از NLP در کنار گراف وابستگی (DG) میتواند به بهبود عملکرد کلی آن کمک کند.

اگر قدرت عملکرد بالاتری مد نظر باشد، مهندسین از ASIC یا FPGA‌ استفاده خواهند کرد. در اینجا، روش طراحی نسبت به سایر پلتفرمها به دلیل وابستگی به زبانهای سطح پایین توصیف کننده سخت افزار (HDL) همچون Verilog و VHDL، پیچیده تر است. مزیت اصلی این پلتفرمها، بهره گیری از موازی سازی در ساختار طراحی است که عملکرد را به شدت بهبود میدهد. برای این کار معمولا ساختار گراف جریان داده (DFG) استفاده میشود. ساختار DFG الگوریتم را به صورت شبکه ای از واحدهای عملیاتی (FU) که هسته داخلی NLP‌ هستند، توصیف میکند. در چنین ساختاری، به لحاظ طراحی یک فاصله و شکاف بین توصیف NLP و HDL احساس میشود که از چالشهای اصلی است.

یک رویکرد طراحی جدید برای پوشاندن این فاصله روشی تحت عنوان مدلسازی سطح تراکنش (TLM) است. به طور خلاصه، در این روش مفهوم “چه کاری انجام شود” به جای “چگونه انجام شود” در نظر گرفته میشود. یک زبان برنامه نویسی منبع باز مشهور تحت عنوان systemC وجود دارد که یک کلاس ++C با اجزا توصیف کننده سخت افزار است. به کمک systemC، به راحتی میتوان کد ++C که برای NLP‌ نوشته شده است را به کدی تغییر داد که میتواند سخت افزار را به خوبی توصیف کند. با این روش توصیفی جدید، شبیه سازی سخت افزاری با جزییات و سرعت بسیار بالاتر نسبت به شبیه سازی HDL‌ قابل انجام است. همچنین، این روش دید مناسبی نسبت به شاخصهای سطح بالای پیاده سازی سخت افزاری ارائه میکند که یک نمونه آن میتواند نقطه شروع اولیه مناسب برای توسعه کد HDL در پیاده سازی سخت افزاری واقعی، باشد.

 

در مجموع، میتوان گفت که روش طراحی جامع برای اکثر پلتفرمها به شکل زیر است:

NLP(C/C++) -> DFG -> TLM(SystemC) -> HDL(Verilog/VHDL)

و معمولا این ترتیب در پیاده سازی عملی در نظر گرفته میشود.

 

 

 

 

 

منبع: www.dsprelated.com