مودم دیجیتال روی DSP؛ از شبیهسازی تا اجرای بلادرنگ
پیادهسازی یک مودم دیجیتال کامل (فرستنده و گیرنده) روی DSP: از مدل MATLAB تا کد C ممیز ثابت و اجرای بلادرنگ روی بُرد DSP/FPGA.
معرفی
این پروژه یک مودم دیجیتال کامل (بخش فرستنده و بخش گیرنده) است که برای یک سیستم ارتباطی ویژه ساخته شد و روی یک پردازندهی DSP بهصورت بلادرنگ اجرا میشود. مودم دادهی دیجیتال را به سیگنالی برای ارسال تبدیل میکند و در سمت گیرنده سیگنال دریافتی را دوباره به داده برمیگرداند.
بهدلیل ماهیت این پروژه، جزئیات فنی آن را اینجا نمینویسم و فقط کار و تواناییهای خودم را نشان میدهم. این پروژه بیشتر نرمافزاری است و تصویر محصول ندارد؛ تصاویر این صفحه بُرد DSP و FPGA است که آن را روی آن آزمایش کردم و دیباگر آن.
کار من چه بود
مدل MATLAB مودم را به من دادند (آن را خودم ننوشتم) و کار من این بود که آن را به C تبدیل کنم و به یک برنامهی واقعی روی DSP برسانم:
تبدیل به ممیز ثابت. DSP که استفاده کردم با اعداد صحیح سریعتر و کممصرفتر کار میکند. پس محاسبات مدل اعشاری MATLAB را به حسابی با عدد صحیح و ممیز ثابت بازنویسی کردم، طوری که دقت تا حد لازم حفظ شود.
برنامهنویسی C. فرستنده و گیرنده را از روی مدل MATLAB به C نوشتم؛ در مجموع حدود پانزده هزار خط. ابتدا روی کامپیوتر نوشتم و درستی را آنجا بررسی کردم و بعد به DSP بردم.
بهینهسازی برای DSP. برنامه باید در زمان واقعی اجرا شود. پس نحوهی کار با حافظه (حافظهی داخلی و خارجی)، انتقال داده با DMA، بافر دوتایی (پینگپنگ)، کش و بهینهسازی کامپایلر را مطالعه و اعمال کردم، و چند پیادهسازی مختلف از بخشهای اصلی را از نظر کلاک با هم مقایسه کردم.
آزمایش روی سختافزار. برنامه را روی یک برد توسعهی DSP و FPGA با دیباگر JTAG اجرا کردم، با فایلهای دادهی آزمایشی خروجی را با مدل مرجع مقایسه کردم و مصرف کلاک را اندازه گرفتم.
مدیریت نسخه و مستندات. چند نسخهی پیاپی نگه داشتم و یک گزارش فنی نوشتم که مبانی ممیز ثابت، کار با DSP، بهینهسازی و مصرف منابع را توضیح میدهد.
نمودار زیر مسیر کار را نشان میدهد.
نتیجهها
بهینهسازی کامپایلر بهتنهایی کلاک مصرفی کد فرستنده را برای یک دادهی آزمایشی بزرگ از حدود ۳٫۳ میلیارد به حدود ۰٫۵۳ میلیارد سیکل رساند، یعنی بیش از شش برابر سریعتر.
با همهی بهینهسازیها، پردازش هر فریم از حدود نیم درصد تا حدود نیمی از کلاک در دسترس را مصرف میکند، بسته به نوع فریم؛ یعنی برنامه با حاشیهی مناسب در زمان واقعی اجرا میشود.
مصرف حافظهی DSP هم بررسی شد و در حد قابل قبول است (کمتر از ۶۰٪ از حافظهی داخلی).
ابزار و مهارتها
پردازندهی DSP: TI TMS320C6455، با Code Composer Studio و دیباگر XDS200
زبانها: C و C++، MATLAB، و Python برای تحلیل
محاسبات ممیز ثابت و بهینهسازی بلادرنگ (EDMA، کش، حافظه، کامپایلر)
پردازش سیگنال و سیستمهای مخابراتی دیجیتال
تست و مقایسه با مدل مرجع، مستندسازی فنی
جمعبندی
پیادهسازی یک مودم دیجیتال کامل روی DSP، از مدل MATLAB تا برنامهی بلادرنگ روی سختافزار؛ نمونهای از کار در مرز پردازش سیگنال، برنامهنویسی سیستمهای نهفته و بهینهسازی.
از من حمایت کنید
اگر این نوشتهها به کارتان آمد، با یک حمایت کوچک به ادامهی آنها کمک کنید.
گالری
وبلاگ
مطالب مرتبط
دربارهی این پروژه سوالی دارید؟
اگر دربارهی این پروژه سوالی دارید یا پروژهای مشابه در دست دارید، خوشحال میشوم با من در ارتباط باشید.