این گزارش ابتدا مروری بر DSPهای خانوادهی TMS خواهد داشت و سپس به معرفی DSP سری TMS320F2812 میپردازد.
در جهانی که به سوی دیجیتالی شدن پیش میرود DSPها بسان تولدی نو در این حرکت می باشند. اگر چه بیشتر اصول ابتدایی DSPها در دهههای 50 و 60 میلادی حاصل آمدند، ولی قبل از دههی 80 میلادی، این تراشهها فقط در صنایع هوافضا و تجهیزات نظامی کاربرد داشتند. این امر به علت گرانی و حجیم بودن محاسبات داده و غیر قابل اعتماد بودن آنها بود؛ تا اینکه در سال 1982 شرکت TI(Texas Instruments) اولین DSP در خانوادهی TMS320 با ممیز ثابت را با نام TMS32010 معرفی کرد که در این سال مجلهی Electronic Products لقب تولید سال را به این تراشه هدیه کرد.
امروزه با وجود اینکه در بسیاری از موارد انواع دیگر پردازنده ها سرعتی برابر و حتی بیشتر از پردازنده های DSP دارند، در اغلب موارد ترجیح داده میشود که از این پردازنده ها استفاده شود. علت این امر راندمان بالا, توان مصرفی کم, قیمت مناسب و ابزارهای توسعه پیشرفته این پردازنده ها میباشد.
امروزه خانوادهی TMS320 شامل نسلهای بسیاری میباشد که امکان انتخاب گستردهای را فراهم می آورد به گونهای که مطابق هر نیاز یک پروسسور با کاربرد خاص در اختیار کاربر قرار می گیرد. DSPهای امروزی به دو گروه ممیز ثابت و ممیز شناور تقسیم بندی میشوند که DSPهای ممیز ثابت سریعتر و ارزانتر هستند ولی از نظر دقت در برنامهنویسی مشکلتر می باشد و باید دقتهای لازم از جهتِ سرریز شدن و مقیاس کردن به عمل آورد، که این عمل را معمولاً با شیفت مناسب به سمت راست کنترل میکنند. DSPهای ممیز شناور به علت نرمالیزه شدن اتوماتیک مانتیس، بریدن وگرد کردن اعداد، خطای کلی کمتری خواهند داشت. DSPهای TI شامل خانوادههای C4x و C3x (ممیز شناور) C1x ، C2x، C2xx، C5x و C54x (ممیز ثابت) و سرهای C8x (چند پردازندهای) می باشد. نسل جدید DSPهای این شرکت شامل سریهای “TMS320C6x” با کارایی و قابلیتهای بسیاری می باشند.
در ذیل به بررسی مختصر هر نسل میپردازیم.
TMS320C6000:
این گروه از نظر سرعت و عملکرد، با کارایی بالا و نیز به منظور سهولت در استفاده از برنامهنویسی زبانهای سطح بالا بهینهسازی شده است. این گروه به نسلهای ممیز ثابت C62x و C64x و ممیز شناور C67x تقسیم میشوند.
TMS320C5000:
این گروه برای تجارت دیجیتالی و کاربردهایی که مشکل باطری دارند بهینهسازی شده است. به عنوان مثال TMS320C55x و TMS320C54x برای محصولات قابل حمل و شخصی مثل پخشصوت دیجیتالی، گیرندههای GPS، تجهیزات پزشکی قابل حمل، موبایلها و دوربینهای دیجیتالی کاربرد دارند. هر دو DSP این گروه ممیز ثابت میباشند.
TMS320C2000:
تراشههای این گروه از دو سری C24x و C28x تشکیل شده است که برای صنعت کنترل دیجیتالی بالاترین سطح تجمع روی یک تراشه و قابلیتهای محاسباتی قدرتمند را فراهم میآورند. نسل TMS320C24x قدرت و کنترل مفیدی را ارائه می دهد که طراح را قادر میسازد، سیستمهای کنترل پیشرفته با قیمت مناسب و کارایی بالا را پیادهسازی کند.
معرفی تراشهی TMS320F2812
این تراشهها، کنترل کنندههای دیجیتالی قابل برنامهریزی، با واحد پردازش مرکزی (CPU) از خانواده C28x DSP به عنوان هستهی (Core) پردازنده میباشند. F2812، یک واحد پردازش مرکزی قوی را با ابزارهای جانبی (Peripherals) و حافظه روی تراشه (On-Chip Memory) ترکیب کرده است و به صورت یک تراشه سیلیکونی یک پارچه می باشد. با استفاده از هسته DSP و ابزارهای جانبی کنترلی روی تراشه، طراحان توانایی طراحی کم حجم و مقرون به صرفه سیستمهای کنترلی را خواهند داشت.
کنترلکنندههای F2812 توانایی عملکرد با سرعت 150 میلیون دستور در ثانیه (MIPS) را دارند. سرعت بالای پردازش در C28x CPU، این امکان را برای کاربران فراهم می آورد که به جای بدست آوردن تقریبی پارامترها از جدول های ذخیره شده درون حافظه، آنها را به صورت بلادرنگ (Real Time) محاسبه نمایند. این عملکرد سریع در پردازش پارامترهای کنترلی، برای کاربردهایی از قبیل فیلترها یا الگوریتمهای کنترلی که باید حجم بالایی از محاسبات با سرعت انجام شود، بسیار مناسب است.
کنترلکنندههای F2812 دارای ابزارهای جابنی کنترلی متعددی روی برد میباشد. با استفاده از ابزارهای جابنی F2812، هر نیاز کنترلی دیجیتال را میتوان به صورت مجازی برطرف کرد. گسترده کاربرد این ابزارهای جابنی از تبدیل آنالوگ به دیجیتال تا تولید مدولاسیون عرض پالس (PWM) میباشد. ابزارهای جابنی ارتباطی، ارتباط با ابزارهای خارجی، کامپیوترهای شخصی و سایر پردازندههای DSP را ممکن میسازد. معرفی مختصری از ابزارهای جابنی متعدد در F2812 در زیر آورده شده است.
· دو مدیر رویداد (Event Managers) EVA و EVB: مدیر رویداد یکی از پرکاربردترین ابزارهای جانبی در کنترل دیجیتالی موتورها می باشد. هر مدیر رویداد از بلوک های عملکردی که شامل تایمرها، مقایسهگرها و واحدهای کپچر (Capture Units) برای تریگر کردن یک رویداد، مدارات منطقی PWM، مدارات پالس انکدر متعامد (Quadrature-Encoder Pulse (QEP) Circuit) و منطق وقفه تشکیل شده است.
· تایمرهای همه منظوره (General-Purpose (GP) Timers): یک تایمر همه منظوره (GP) یک شمارنده ساده 16 بیتی است که ممکن است به صورت بالا شمار (Up Counter)، پایینشمار (Down Counter) یا پیوسته بالا و پایینشمار (Continuously Up and Down Counter) پیکربندی شود. در هر EV دو تایمر GP وجود دارد: تایمر 1 و 2 مربوط به EVA و تایمر 3 و4 مربوط به EVB.
· مبدل آنالوگ به دیجیتال (ADC): از ADC روی F2812 به منظور نمونهبرداری از یک سیگنال آنالوگ خارجی و تبدیل آن به اعداد دیجیتال استقاده می شود. از نمونه کاربردهای ADC میتوان به نمونهبرداری سیگنال کنترل برای استفاده در یک الگوریتم فیلتر و یا کنترل یک موتور اشاره کرد.
· واسط پیشرفته کنترلکننده شبکه محلی (Enhanced Controller Area Network (eCAN) Interface): ماژول eCAN برای ارتباط سریال چند اربابه (Multi-master) بین سخت افزاری خارجی مورد استفاده قرار میگیرد. گذرگاه eCAN دارای سطح امنیت داده بالایی میباشد و برای عملکرد در محیطهای نویزی از قبیل یک اتومبیل یا محیطهای صنعتی که نیاز به ارتباط قابل اطمینان و امنی دارند، مناسب است.
· واسط جانبی سریال (Serial Peripheral Interface (SPI)): درگاه SPI، یک درگاه ارتباط همزمان (Synchronous Serial I/O Port) میباشد که به صورت گستره برای ارتباط بین DSP و ابزارهای خارجی و یا یک DSP دیگر استفاده میشود. استفاده مرسوم SPI شامل ارتباط با ثباتهای جابجایی (Shift Registers) خارجی، راهاندازهای نمایشگر (Display Drivers) و مبدلهای آنالوگ به دیجیتال می باشد.
· واسط ارتباطی سریال (Serial Communications Interface (SCI)): درگاه SCI، یک درگاه سریال غیرهمزمان (Asynchronous Serial Port) است که ارتباط دیجیتال سریال غیرهمزان (UART) بین CPU و سایر ابزارهای غیرهمزمان را که از قالب استاندارد NRZ (Non-Return-To-Zero) استفاده می کنند، برعهده دارد.
· پایههای دو طرفه دیجیتال ورودی/خروجی همه منظوره (General Purpose I/O (GPIO) Pins): به دلیل محدود بودن پایههای F2812، بسیاری از پایهها وظیفه اولیه و وظیفه ثانویه GPIO را مالتیپلکس (Multiplex) میکنند. در اکثر موارد وظیفه دوم پایهها، ورودی/خروجی همه منظوره میباشد.
· تایمر نگهبان (Watchdog Timer): ابزار جانبی تایمر نگهبان، عملکرد صحیح نرمافزار و سخت افزار را بررسی میکند و زمانی که شمارنده داخلی آن سرریز (Overflow) شود، سیستم را دوباره راهاندازی (Reset) می کند. تایمر WD در صورتی که فعال شده باشد، برای یک مدت زمان خاص عمل شمارش را انجام می دهد. برای اینکه دوباره راهاندازی ناخواسته اتفاق نیفتد، لازم است که کاربران تایمر WD را به صورت متناوب دوباره راهاندازی کنند. اگر بنا به دلایلی CPU مشکل پیدا کند، تایمر نگهبان سیستم را دوباره راهاندازی می کند.
· درگاه گروه عمل تست اتصال (JTAG): درگاه JTAG روشی استاندارد برای اتصال کامپیوترهای شخصی با کنترلکنندههای DSP و انتقال برنامه، فراهم میآورد. امولاتور (Emulator) مناسبی مانند XDS510PP، اتصال بین ماژول JTAG روی F2812 و کامپیوتر شخصی را ممکن میسازد. ماژول JTAG این امکان را برای کامپیوتر فراهم می سازد که در حین اجرای Code Composer Studio، روی پردازنده DSP کنترل کامل داشته باشد.
هسته C28x DSP قلب کنترلکننده F2812 است. این هسته یک پردازنده ممیز ثابت (Fixed-Point) 32 بیتی است. یعنی با اعداد دودویی 32 بیتی کار میکند. C28x را میتوان مانند پردازنده مرکزی در یک کامپیوتر شخصی تصور کرد. هسته C28x مجموعه دستورات خاص خود را به صورت رهنمودها (Mnemonic) و دستورات اسمبلی دارد. با استفاده از CCS و کامپایلر (Compiler) مربوطه، کاربران میتوانند کد را به هر یک از زبانهای C یا اسمبلی بنویسند. اما برای نوشتن برنامههای بهینه با اجرای سریع، بهتر است کد به زبان اسمبلی نوشته شود.
هسته DSP همانند بسیاری از پردازندهها، شامل چندین زیربخش است، که برای انجام عملیات ریاضی روی اعداد دودویی 32 بیتی لازم هستند. در زیر لیستی از زیربخشهای مختلفی که در هسته C28x یافت میشود، آورده شده است:
· یک واحد 32 بیتی منطق ریاضی (ALU): C28x عملیات ریاضی مکمل دو را با استفاده از واحد 32 بیتی منطق ریاضی انجام میدهد. ALU از کلمههای 32 بیتی استفاده میکند. علاوه بر عملیات ریاضی، ALU میتواند عملیات جبر بولی را نیز انجام دهد.
· یک انباره (Accumulator) 32 بیتی: انباره، خروجی ALU را ذخیره میکند و به عنوان یکی از ورودیهای ALU نیز میباشد (تعداد زیادی از دستورالعملهای ریاضی، عملیات را روی اعداد ذخیره شده درون انباره و اعداد ذخیره شده در مکانهای دیگر حافظه انجام می دهند). طول انباره 32 بیت است و به دو بخش که هر کدام شامل 16 بیت است، تقسیم میشود. برخی از دستورات زبان اسمبلی امکان ذخیره کلمههای بالا و پایین انباره در حافظه داده را فراهم میآورند.
· شیفتدهنده (Barrel Shifter): این شیفتدهنده امکان تغییر مقیاس، استخراج بیت مورد نظر، عملیات ریاضی گسترده و جلوگیری از سرریز را فراهم میسازد. این شیفت دهنده، دستورالعملهای ممکن را جهت شیفت داده تا حدود 16 بیت به راست و چپ فراهم میکند.
· یک ضربکننده: ضربکننده، ضرب مکمل دوی 32 بیتی را انجام میدهد و نتیجه 64 بیتی تولید میکند. در ارتباط با ضربکننده، C28x از یک ثبات مضروب 32 بیتی (XT) و یک ثبات حاصلضرب 32 بیتی (P) و ثبات انباره (ACC) استفاده میکند. همیشه لازم است XT با یکی از اعدادی که باید ضرب شود، بارگذاری گردد. خروجی ضرب در ثبات P یا ACC ذخیره میگردد.
· هشت ثبات کمکی (Auxiliary Registers) AR0 تا AR7 و یک واحد ریاضی ثبات کمکی (Address Register Arithmetic Unit (ARAU)): هنگامی که یک دستورالعمل برای دسترسی به حافظه داده از مُد آدرسدهی غیر مستقیم (Indirect Addressing) استفاده میکند، ARAU آدرس حافظه داده را تولید می نماید. هشت ثبات کمکی(AR0 تا AR7) از ARAU پشتیبانی میکنند و هر یک از آنها می توانند با مقدار 32 بیتی از حافظه داده یا مستقیماً توسط یک دستورالعمل بارگذاری شوند. مقدار هر ثبات کمکی نیز میتواند در حافظه داده ذخیره شود. ثباتهای کمکی اصولاً به صورت اشارهگر (Pointer) به مکانهای حافظه، جهت امکان سادهسازی هر چه بیشتر الگوریتمهای حلقه و تکرار، مورد استفاده قرار میگیرند.
جهت نگهداری برنامهها، انجام عملیات و اجرای دستورالعملهای برنامهنویسی نیاز به حافظه میباشد. فضای حافظه (Memory Space) روی F2812 به فضای برنامه و داده تقسیم شده است. چندین نوع مختلف از حافظه روی F2812 وجود دارد که میتوان به عنوان فضای برنامه یا داده مورد استفاده قرار گیرد. این حافظهها شامل: حافظه فلش (Flash Memory)، حافظه با قابلیت دسترسی تصادفی یکبار در هر سیکل (Single Access RAM (SARAM))، SARAM توسعه یافته و Boot ROM میباشد. Boot ROM، قسمتی از حافظه است که توسط شرکت سازنده DSP، برنامهنویسی میشود و امکان تغییر دادن آن توسط کاربران وجود ندارد؛ این حافظه شامل روتینهای راه اندازی و جداول مهم مورد استفاده در الگوریتمها و توابع ریاضی میباشد. F2812 به حافظه داخل و خارج تراشه دسترسی دارد. F2812 از خطوط آدرسدهی 32 بیتی داده و 22 بیتی برنامه استفاده می کند. بنابراین می تواند تا 4G کلمه (1 کلمه = 16 بیت) فضای داده و تا 4M کلمه فضای برنامه را آدرسدهی کند. بلوک حافظه (Memory Block) به بیان ساده یک محدوده مشخص از آدرسهای حافظه است. بلوک های حافظه به طور یکنواخت در فضای داده و برنامه نگاشته شده اند. پنج بلوک اصلی حافظه (M0، M1، L0، L1 و H0) روی تراشه F2812 وجود دارند که می توانند به عنوان حافظه داده و برنامه مورد استفاده قرار گیرند. حافظه فلش برخلاف حافظه RAM، زمانی که تراشه از منبع قطع میشود، محتویاتش را از دست نمی دهد. بنابراین از حافظه فلش تنها به منظور ذخیره برنامه ای که باید اجرا شود، استفاده می شود.