DSP;
در مهندسی یا بهتر است بگوییم که در همه کارها وقتی قصد انجام کاری را داشته باشیم به طور معمول چندین ابزار مختلف در اختیار ما قرار دارد (حالا اینکه بعضی وقت ها همون یک ابزار هم برای انجام کار به سختی پیدا میشود بماند…)
حالا ما به صورت خیلی ابتکاری قصد داریم این ابزارها را به سه دسته تقسیم کنیم:
- ابزارهایی که مناسب پروژه مورد نظر نیستند.
- ابزارهایی که مناسب پروژه مورد نظر هستند.
- ابزارهایی که مناسب پروژه مورد نظر هستند و مشخصا برای این پروژه بهینهسازی و توسعه داده شدهاند.
(DSP (Digital Signal Processor: این ابزار نوعی پردازنده میباشد که مشخصا برای پردازش سیگنالهای دیجیتال ساخته شده است. البته توجه شود که Digital Signal Processor با Digital Signal Processing اشتباه گرفته نشود، در واقع باید بگوییم که اولی ابزاری است که برای پیشبرد اهداف تئوریهای دومی ساخته شده است ولی هر دو به صورت اختصار با DSP شناخته میشوند. تا اینجا متوجه شدیم که اگر بخواهیم پردازش سیگنال انجام بدهیم بهتر است که از این نوع پردازندهها استفاده کنیم البته پارامترهای دیگری مانند سرعت نیز وجود دارد که گاها باعث میشوند حتی اگر بخواهیم پردازش سیگنال انجام بدهیم سراغ ابزارهای دیگری برویم تا نیازمان برآورده شود، که ما در اینجا قصد نداریم در مورد این مقوله صحبت کنیم. در ادامه قصد داریم بیشتر در مورد تفاوت با سایر پردازندهها و کاربردهای DSP صحبت کنیم.
تمرکز DSP بیشتر بر روی اجرای عملگرهای پایهای ریاضی به خصوص ضرب می باشد به این نحو که در این پردازندهها چندین ضربکننده از قبل آماده شده و به صورت بهینه وجود دارد. خب مسلما وقتی ما در پروژهای نیاز به عملیات پردازش سیگنال یا ضربکننده داریم بهتر است که از DSP استفاده کنیم چون میدانیم که یک تیم حرفهای از یک شرکت معتبر قبلا این ضربکنندهها را به صورت سختافزاری برای ما طراحی کرده است و تنها کاری که ما انجام میدهیم این است که باید این ضرب کنندهها را در جای مناسب مقداردهی کنیم و به کار بگیریم. حالا همین نتایج را مقایسه کنید با زمانی که ما بخواهیم از پردازنده دیگری استفاده کنیم و این ضرب کنندهها را با استفاده از کد و حافظههای داخلی توصیف کنیم (توجه شود که تنها راه نیز همین می باشد چون هیچ سختافزاری برای این کار وجود ندارد و ما باید عملیات مورد نظرمان را با کد توصیف کنیم)، در بهترین حالت یعنی زمانی که هم کد ما حرفهای باشد هم از حافظهها به نحو احسنت استفاده کرده باشیم میتوان گفت که بهتر است از DSP استفاده کنیم، چرا؟ به این دلیل که وقتی ما از DSP استفاده میکنیم مطمئن هستیم تا جای ممکن سختافزار ضربکننده جوری در تراشه طراحی و قرار داده شده است که کمترین تاخیر انتشار وجود داشته باشد ولی از بابت اینکه کدی که در پردازنده دیگر نوشتیم نیز اینقدر بهینه باشد و کمترین تاخیر انتشار را داشته باشد مطمئن نیستیم چون ما به صورت کامل بر الکترونیک و سخت افزاری که کد ما در آن جای خواهد گرفت اشراف کامل نداریم و سازنده نیز این نوع از پردازنده را مشخصا برای کار ما طراحی نکرده است.
ما تنها در صورتی که DSP نتواند سرعت مورد نیازی که برای پروژه در نظر گرفته شده است را برآورده کند از دیگر ابزارها استفاده میکنیم، که این ابزارها پردازنده نیستند بلکه یک سختافزار خامی است که قابلیت انعطاف دارد و با استفاده از کد قابل تغییر میباشد و به صورت موازی کار می کند و همانطوری که قبلا گفتیم قصد پرداختن دقیق به این موضوع را نداریم (می دانم که الان دارید با خودتان فکر میکنید که اسم این ابزاری که میگوییم موازی کار میکند چی هست فقط در همین حد بدانید که اسم این ابزار FPGA).
شاید برای شما مفید باشد: آموزش FPGA
از نکات قابل اهمیت دیگری که میتوان بیان کرد این است که وقتی ما بر روی یک برد چندین تراشه داریم که کارهای مختلف را انجام میدهند، مثلا از عملیات بیتی سطح پایین گرفته تا عملیات سطح بالا مانند کار با سیستمعامل و امثالهم، بهتر این است که الگوریتمهای پیچیده ریاضی را با استفاده از DSP انجام دهیم.
در کارهای پردازش سیگنال عموما ما با محاسبات اعشاری سر و کار خواهیم داشت که انجام این عملیات با ابزار DSP بسیار راحتتر خواهد بود. در اینجا شایان ذکر است که بگوییم قسمت اعشار فقط و فقط در ذهن ماست و تفسیری که ما از چندین بیت داریم و نحوه استفاده از حافظهها و مقدار ارزشدهی به هر بیت خاص است وگرنه چیزی به اسم اعشار در سخت افزار یا حافظههای داخلی نهفته نیست. مثلا فرض کنید یک بایت که بیت های آن با مقادیر خاصی پر شده باشد میتواند ارزش یک عدد صحیح را داشته باشد یا ارزش یک عدد اعشاری، بستگی به اینکه ما این بایت را چگونه تفسیر کنیم میتواند ارزش متفاوتی داشته باشد بدون تغییر در مقادیر بیتها.
از جمله کاربردهای DSP میتوان به پردازش صوت و تصویر، و ارتباطات دور برد (مخابراتی) و عموم کارهای یک میکروکنترلر مثل کنترل وسایل خانگی، کنترل ادوات صنعتی را میتوان انجام داد.
در تصویر زیر نمایی از کاربردهای مختلف DSP را نیز مشاهده میکنید.
هدف ما در این مقاله بیشتر آشنایی با ماهیت DSP و اینکه چه زمانی و در چه نوع پروژههایی از این نوع پردازنده ها استفاده میکنیم بود و قصد پرداختن به جزئیات منابع داخلی و نحوه استفاده از آن را نداشتیم. امیدوارم که از این مقاله خوشتان آمده باشد و کمکی باشد برای اینکه بدانید چه زمانی، از چه ابزاری برای کارتان استفاده کنید.
سلام
ممنون از مطلب خوب شما
در پناه حق موفّق باشید
سلامت باشید
مثل همیشه عالی وروان ممنون ازتیم سیسوگ
خواهش میکنم دوست عزیز
سلام لطفا اموزش های dsp رو شروع کنین خیلی ممنون میشم.
سعی میکنیم در دستور کار قرار بدیم 🙂
آره. ممنون میشیم. مثل آموزش های آرم که خوب هستن جاشون خالیه تو سیسوگ
سلام
ممنون از مطلب خوبتون
پس DSC Digital Signal Controll چی هست؟
چه فرقی با DSP ها دارن؟
سلام. DSC ترکیبی از میکروکنترلرها و DSP ها است، معمولا با استفاده از زبان C برنامهریزی میشوند، گرچه با زبان اسمبلی هم این کار قابل انجام است. واحدهایی مانند (multiply–accumulate (MAC که در اکثر DSP ها وجود دارد در DSC نیز وجود دارد و یک سری واحدهای مشابه دیگر. معمولا DSC چیزی نیست که جدای از DSP باشد، ولی خب بعضی شرکتها نامی جداگانه برایش در نظر گرفتند. این بردها با نام بردهای هایبریدی نیز شناخته میشوند که یکی از دوستان بنده چند وقت پیش پروژهای را با استفاده از FPGA و همین بردهای هایبریدی انجام دادند. به این نحو که قسمت پیچیده الگوریتم را با برد هایبریدی و قسمت ساده الگوریتم که نیاز به سرعت بالا بود را با FPGA انجام دادند.