مقدمه : در قسمت اول از آموزش پردازنده های سیگنال دیجیتال به بررسی معماری داخلی سری ۲۰۰۰ خواهیم پرداخت و پریفرالهای موجود را بررسی خواهیم نمود. پردازنده های سری C2000 به منظور افزایش عمکرد پردازشی در مدارات حلقه بسته بلادرنگ بهینه شده اند.کاربردهای مانند درایورهای صنعتی اینورترهای خورشیدی وسایل نقلیه الکتریکی کنترل موتور و سنجش پارامترها و پردازش سیگنال از جمله کاربردهایی هستند که می توان در طراحی آنها از خانواده سری ۲۰۰۰ استفاده نمود. این خانواده از پردازنده ها در واقع پل ارتباطی بین میکروها و پردازنده های سیگنال دیجیتال هستند و ماهم برآنیم تا در این دوره اموزشی تمرکز اصلی را روی این سری قرار داده تا قدم اول ورود به دنیای DSPها را بردارید و در دوره های آموزشی بعدی به سراغ پردازشگرهای سیگنال دیجتال از خانواده های دیگر خواهیم رفت که تمرکز بیشتری بر کارهای پردازشی دارند و کمتر در کارهای کنترلی استفاده میگردند مانند سری ۶۰۰۰ و ۵۰۰۰. کاربردهای سری ۲۰۰۰ در صنعت : در زیر تعدادی از زمینه های کاربرد خانواده ۲۰۰۰ را مشاهده میکنید که هر کدام از این حوزه ها خود شامل زیرشاخه های دیگری میباشد که با مطالعه و تحقیق در آنها میتوانید ایده های بسیار زیاد و متنوع برای طراحی و ساخت محصولات کاربردی در صنعت پیدا نمایید. Advanced Driver Assistance Systems (ADAS) Building automation Electronic point of sale Electric Vehicle/Hybrid Electric Vehicle (EV/HEV) powertrain Factory automation Grid infrastructure Industrial transport Medical, healthcare and fitness Motor drives Power delivery Telecom infrastructure Motor drives Test and measurement سری F2833x: سری F2833x مهمترین عضو خانواده دلفینو است پردازنده های سیگنال دیجیتال میباشد و آموزش ما هم در این دوره بر مبنای همین خانواده است. این اولین پردازنده از سری c2000 میباشد که با واحد ممیز شناور (FPU) ارائه گردیده است. تایمرهای نسل اول ePWM که در بقیه خانواده های دلفینو و پیکولو استفاده می شود نیز اولین بار در این سری ارائه گردیده است . مبدل آنالوگ به دیجیتال ۱۲ بیتی با سرعت 12.5 MSPS که هنوز هم در بین پردازنده های موجود پیشرو میباشد در این سری قرار گرفته اند. F2833x دارای یک پردازنده 150 مگاهرتزی و تا 512 کیلوبایت حافظه از نوع فلش را بر روی خود جای داده است. این پردازنده در پکج 176QFPو 176BGA موجود میباشد. سری C2834x : در این سری حافظه فلش و ADC از روی تراشه حذف شده است و کلاک پردازنده به ۳۰۰ مگاهرتز افزایش پیدا کرده است. میکروکنترلرهای سری TMS320F2837xD : سری F2837xD استاندارد جدیدی را برای عملکرد با زیرسیستم های دوگانه تعیین می کند. هر زیرسیستم از یک CPU C28x و یک شتاب دهنده موازی (CLA) تشکیل شده است که هر کدام با فرکانس 200 مگاهرتز کار می کنند. همچنین با تعبیه واحدهای TMU و VCU عملکرد کلی بهبود پیدا کرده است . قابلیتهای جدید شامل چند کانال ADC 16 بیتی/12 بیتی، DAC، فیلترهای USB, Sigma-Delta، بلوک منطقی قابل تنظیم (CLB)، نوسانگرهای روی تراشه، و نسخههای پیشرفتهتر همه تجهیزات جانبی است. F2837xD با حداکثر 1 مگابایت حافظه از نوع فلش در دسترس میباشد. این سری در بسته بندی 176 پین QFP یا 337 پین BGA موجود است. میکروکنترلرهای سری TMS320F2837xS: سری F2837xS یک نسخه سازگار پین به پین با F2837xD است اما تنها با یک زیرسیستم C28x-CPU-and-CLA فعال عرضه شده است. همچنین این سری در یک پکیج QFP 100 پین برای سازگاری با سری TMS320F2807x نیز عرضه گردیده است. بررسی سخت افزاری سری ۲۰۰۰ : I/O ها : هر یک از پایه های dsp دارای یک یا چند کاربرد هستند که با توجه به تنظیمات درون برنامه میتوان از آنها در کاربرد مورد نظر استفاده نمود.ورودی و خروجی های مربوط به واحد XINTF توانایی جریان دهی به میزان ۸ میلی آمپر را دارا میباشند چه به عنوان پایه های XINTF استفاده شده باشند یا خیر.سایر پایه ها جریان خروجی معادل ۴ میلی آمپر را تامین میکند. پایه های dsp دارای سطح ولتاژ ۳.۳ ولتی میباشند و به هیچ عنوان نباید با ولتاژ ۵ ولت درایو شوند وگرنه باعث سوخت dsp خواهد شد. تمامی GPIOها به صورت I/O/Z میباشند و همگی دارای مقاومت PullUp میباشند که میتوانند به صورت انتخابی درون برنامه فعال و غیر فعال شوند.این ویژگی فقط بر روی GPIOها فعال میباشند و در GPIO0 تا GPIO11 به صورت پیشفرض در زمان ریست فعال نمیباشند و در GPIO12 تا GPIO87 در هنگام ریست فعال هستند. ولتاژهای کاری بخشهای مختلف: در پردازنده F2833x ولتاژ تغذیه IO ها که تحت عنوان VDDIOمشخص میباشد ۳.۳ ولت میباشد . ولتاژ تغذیه CPU که تحت عنوان VDD مشخص شده است در کلاک ۱۵۰ مگاهرتز ۱.۹ ولت و در کلاک ۱۰۰ مگاهرتز برابر ۱.۸ ولت میباشد. ولتاژهای زمین پردازنده که با نامهای VSS, VSSIO,VSSAIO ,VSSA2,VSS1AGND,VSS2AGND مشخص شده اند برابر صفر ولت میباشد. ولتاژ تغذیه IO های واحد ADC که VDDA2 و VDDAIO نام دارند برابر با ۳.۳ ولت هستند. ولتاژ ماژول تغذیه در کلاک ۱۵۰CPU مگاهرتز برار ۱.۹ ولت و در فرکانس ۱۰۰ مگاهرتز برابر ۱.۸ ولت خواهد بود این پایه ها تحت نامهای VDD1A18 و VDD2A18 مشخص شده اند. ولتاژ فلش پردازنده با عنوان VDD3VFLبایستی برابر با ۳.۳ ولت در نظر گرفته شود. کلاک سیستم Fsysclkout در پردازنده های F28335/F28334/F28235/F28234 میتواند مقداری بین ۲ تا ۱۵۰ مگاهرتز و در پردازنده های F28333/F28332/F29232 میتواند مقداری بین ۲ تا ۱۰۰ مگاهرتز تنظیم گردد. سایر اطلاعات در مورد شرایط کاری پردازنده را میتوانید در جدول ۷.۴ دیتاشیت پردازنده به شماره SPRS439P مطالعه نمایید. جریان مصرفی پردازنده در بیشتر حالت ممکن از ۴۵۰ میلی آمپر نخواهد گذشت!! DSCهای 2833x و 2823x روشی برای کاهش مصرف جریان دستگاه دارند. از آنجایی که هر واحد جانبی دارای یک بیت فعال کننده کلاک است، می توان با خاموش کردن کلاک ورودی به هر ماژول جانبی که در یک برنامه خاص استفاده نمی شود مصرف توان را کاهش داد.کلیه کلاک ها بعد از ریست غیر فعال میباشند و نوشتن و خواندن در رجیسترها هر پریفرال تنها بعد از فعال کردن کلاک آن امکان پذیر خواهد بود. کلاک: در صورتی که کلاک ورودی پردازنده از طریق کریستال یا رزوناتور متصل به پایه های X1 و X2 تامین گردد میتواند مقداری بین ۲۰ تا ۳۵ مگاهرتز داشته باشد و در صورتیکه از اسیلاتور خارجی و یا منبع کلاک خارجی متصل به پایه X1 یا XCLKIN تامین گردد میتواند عددی بین ۴ تا ۱۵۰ مگاهرتز باشد که سیکل کلاکی معادل ۶.۶۷ نانو ثانیه تا ۵۰۰ نانو ثانیه را در اختیار شما قرار میدهد.کلاک ورودی میتواند توسط واحد PLL به کلاک دلخواه تبدیل گردد .کلاک خروجی PLL بعد از عبور از هسته پردازنده تحت عنوان SYSCLKOUT شناخته میشود. کلاک سیستم بعد از عبور از مقسم های کلاک به واحدهای جانبی پردازنده میروند و با نامهای HSPCLK و LSPCLK شناخته میشوند البته در بعضی موارد مانند تایمرها و.. کلاک سیستم بدون عبور از مقسم ها به صورت مستقیم به ماژول وارد میشود. در صورتی که مقدار SYSCLKOUT بر روی عدد ۱۵۰ مگاهرتز تنظیم گردد مقدار پیشفرض (HSPCLK) High-Speed Peripheral Clock ۷۵ مگاهرتز و مقدار پیشفرض (LSPCLK) Low-Speed Peripheral Clock ۳۷.۵ مگاهرتز میباشد. همچنین ماکزیمم کلاک ورودی به واحد ADC نیز ۲۵ مگاهرتز به صورت پیشفرض است که از طریق رجیسترهای مربوطه میتواند به مقدار دلخواه تنظیم گردد. توالی تغذیه : برای اطمینان از تنظیم مجدد تمامی پریفرالها به حالت پیشفرض در هنگام اتصال تغذیه احتیاجی به رعایت توالی اتصال ریلهای تغذیه نیست. با این حال اگر ترانزیستورهای پایه های خروجی قبل از ترانزیستورهای هسته پردازنده تغذیه شوند ممکن است بافرهای خروجی روشن شود و باعث اشکال گردد.برای جلوگیری از این اتفاق میتوان پایه های VDD را همزمان یا کمی جلوتر از پایه های VDDIO روشن نمود برای این منظور مطمعن شوید که پایه های تغذیه VDDبه ۰.۷ ولت رسیده باشند قبل از اینکه پایه های VDDIO به ۰.۷ ولت برسند. بخشهای داخلی Tms320F28335: خب در ادامه میخواهیم یک مرور کلی از بخشهای داخلی پردازنده داشته باشیم در قسمتهای بعدی آموزش به هرکدام که رسیدیم با جزئیات بیشتری این بخش ها را بررسی خواهیم کرد. سی پی یو C28x : خانواده F2833x (C28x+FPU)/F2823x (C28x) عضوی از پلتفرم کنترلکننده سیگنال دیجیتالTMS320C2000 است. کنترلکنندههای مبتنی بر C28x+FPU دارای همان معماری نقطه ثابت 32 بیتی مانند DSCهای C28x موجود TI هستند، اما دارای یک واحد ممیز شناور (FPU) IEEE 754 با دقت سینگل (32 بیتی) نیز میباشند. وجود یک موتور C++/C بسیار کارآمد کاربران را قادر می سازد تا نرم افزار کنترل سیستم خود را به زبانی سطح بالا توسعه دهند. همچنین میتوانید الگوریتم های ریاضی را با استفاده از زبان های سطح بالای C++/C توسعه دهید. این هسته همانقدر که در محاسبات ریاضی پردازش سیگنال کار آمد است در اجرای وظایف کنترلی نیز مانند یک میکروکنترلر قوی عمل میکند.این عملکرد فوقالعاده در بسیاری از موارد نیاز به یک کنترلر اضافی را برای اجرای تسکهای کنترلی رفع میکند. قابلیت ضرب ۳۲ بیت در ۳۲ بیت و پردازش ۶۴ بیتی کنترلر را قادر میسازد که محاسبات عددی با دقت بالا را به راحتی مدیریت نماید. به این موارد سیستم پاسخ دهی سریع به وقفه ها و دخیره خودکار رجیسترهای حیاتی را نیز اضافه نمایید که باعث میشود کنترلر بتواند به رویدادهای ناهمزمان با حداقل تاخیر پاسخ دهد. وجود یک خط لوله ۸ سطحی محافظت شده با دسترسی مستقیم به حافظه باعث شده که بدون استفاده از حافظه های گرانقیمت دستورات با سرعت بالا واکشی و اجرا شوند. مکانیسم branch-look-ahead باعث میشود دستوراتی که داری انشعاب(پرش) های ناپیوسته هستند با حداقل تاخیر ممکن اجرا شود. باس های حافظه (معماری باس هاروارد) : مانند بسیاری از پردازنده ها، در C28x از چندین گذرگاه برای انتقال دادهها بین حافظهها و تجهیزات جانبی و CPU استفاده میشود. معماری گذرگاه حافظه C28x شامل یک گذرگاه خواندن برنامه، گذرگاه خواندن داده و گذرگاه نوشتن داده میباشد. گذرگاه خواندن برنامه از 22 خط آدرس و 32 خط داده تشکیل شده است. گذرگاه های خواندن و نوشتن داده ها از 32 خط آدرس و 32 خط داده تشکیل شده است. گذرگاه های داده 32 بیتی، باعث میشود که بتوان عملیاتهای 32 بیتی را در یک سیکل انجام داد. معماری باس چندگانه، که معمولاً باس هاروارد نامیده میشود، C28x را قادر میسازد تا یک دستورالعمل را دریافت کند، یک مقدار داده را بخواند و یک مقدار داده را در یک چرخه بنویسد. تمام وسایل جانبی و حافظه های متصل به گذرگاه حافظه، دسترسی به حافظه را در اولویت قرار می دهند. به طور کلی، اولویت دسترسی های گذرگاه حافظه را می توان به صورت زیر خلاصه کرد: باس های واحدهای جانبی : برای اینکه امکان انتقال کد بین خانواده های مختلف 2833x/2832x امکان پذیر باشد یک معماری باس داخلی استاندارد برای اتصال واحد های جانبی مختلف در نظر گرفته شده است. این کار از طریق مولتی پلکس کردن باس های جانبی به باس حافظه متصل به پروسسور از طریق ۱۶ بیت خط ادرس و یک باس ۱۶ یا ۳۲ بیتی داده به علاوه سیگنالهای کنترلری انجام پذیر میشود. سه دسته از گذرگاه جانبی در این پردازنده پشتیبانی می شود. یک نسخه فقط از دسترسی های 16 بیتی پشتیبانی می کند (به نام peripheral frame 2/PF2). نسخه دیگری از هر دو دسترسی 16 و 32 بیتی پشتیبانی می کند (به نام peripheral frame 1/PF1). نسخه سوم از دسترسی DMA و هر دو دسترسی 16 و 32 بیتی (به نام peripheral frame 3/PF3) پشتیبانی می کند. رابط JTAG بلادرنگ : پردازنده های 2833x/2823x رابط استاندارد IEEE 1149.1 JTAG را در خود جای داده اند. بهعلاوه، دستگاهها از حالت بیدرنگ نیز پشتیبانی میکنند که به واسطه آن میتوان محتوای حافظه، واحدهای جانبی و رجیسترها را در زمانی که پردازنده در حال کار و اجرای کد و وقفههای سرویس است تغییر داد. کاربر همچنین میتواند کدهای غیر حساس را به صورت قدم به قدم طی کند در حالی که امکان سرویسدهی وقفههای حساس به زمان را بدون تداخل فراهم میکند. این خانواده از پردازنده ها حالت بلادرنگ را در سخت افزار درون CPU پیاده سازی می کند. این یک ویژگی منحصر به فرد برای پردازنده های 2833x/2832x است و به هیچ مانیتور نرم افزاری نیاز ندارد.سخت افزار داخلی به گونه ای طراحی شده است که میتوان نقاط توقف سخت افزار یا نرم افزاری (BreakPoint) را به گونه ای تنظم کرد که در هنگام یک روی داد خاص اتفاق بیوفتد به عنوان مثال میتوان نقطه توقف (BreakPoint) را به صورتی تنظیم کرد که بعد از دریافت ۱۰۰ نمونه از مبدل انالوگ به دیجیتال اتفاق بیوفتد و برنامه متوقف شود. واسط خارجی (XINTF) : این رابط ناهمزمان از 20 خط آدرس، 32 خط داده و سه خط انتخاب تراشه (Chip Select) تشکیل شده است. خطوط انتخاب، دیوایس خارجی را به سه منطقه 0، 6 و 7 درون حافظه نگاشت میکند. هر یک از سه منطقه را می توان با تعداد متفاوتی از سیگنالهای حالت های انتظار (Wait State)، تنظیم سیگنال Strob و زمان بندی سیگنال Hold برنامه ریزی کرد و هر منطقه را می توان برای گسترش حالت های انتظار به صورت خارجی یا غیره برنامه ریزی نمود. حالت انتظار قابل برنامه ریزی، چیپ سلکتها و سیگنال Strob قابل برنامه ریزی امکان ارتباط با انواع حافظه و لوازم جانبی را امکانپذیر میکند. حافظه فلش : پردازنده های F28335/F28333/F28235 دارای ۲۵۶ کیلو حافظه ۱۶ بیتی از نوع فلش هستند که به صورت ۸ بخش ۳۲ کیلو ۱۶ بیتی تعبیه شده است حتما این نکته رو در نظر داشته باشید که حافظه این تراشه ۱۶ بیتی میباشد!! سایر پردازنده های این خانواده مقادیر کمتری از حافظه فلش در خود جای داده اند که میتواند با مراجعه به دیتاشیت قطعه مورد نظر از مقدار آنها اطلاع پیدا نمایید. همه پردازنده های این سری دارای یک حافظه 1Kx16 OTP در محدوده آدرس 0x380400–0x3807FF هستند. سکتور بندی حافظه فلش به کاربر این امکان را میدهد که بتواند به صورت جداگانه یک بخش فلش را پاک، برنامه ریزی و اعتبار سنجی کند در حالی که سایر بخش ها را دست نخورده باقی بگذارد. با این حال، استفاده از یک بخش از فلش یا OTP برای اجرای الگوریتم های فلش که بخش های دیگر را پاک/برنامه ریزی می کند، ممکن نیست. برای افزایش عملکرد حافظه فلش یک خط لوله اختصاصی برای این منظور در نظر گرفته شده است. فلش/OTP هم به فضای برنامه و هم به فضای داده نگاشت می شود. بنابراین، می توان از آن برای اجرای کد یا ذخیره اطلاعات داده استفاده کرد. توجه داشته باشید که آدرسهای 0x33FFF0–0x33FFF5 برای متغیرهای داده رزرو شدهاند و نباید حاوی کد برنامه باشند. حالت های انتظار Flash و OTP را می توان توسط برنامه و از طریق رجیسترهای مربوطه پیکربندی کرد. این کار باعث میشود برنامههایی که با کلاک کمتری اجرا میشوند بتواند حافظه فلش را متناسب با کلاک پردازنده تنظیم کنند و با هم هماهنگ باشند. عملکرد موثر حافظه فلش را می توان با فعال کردن حالت خط لوله فلش در رجیستر تنظیمات مربوطه بهبود بخشید. با فعال بودن این حالت، عملکرد موثر اجرای کدهای خطی نسبت به عملکرد بدون فعال سازی پایپ لاین بسیار سریعتر خواهد بود. حافظه SARAM M0,M1 : همه پردازنده های 2833x/2832x حاوی این دو بلوک حافظه تک دسترسی (Single Access) هستند که هر کدام 1K x 16 اندازه دارند. اشاره گر پشته هنگام ریست به ابتدای بلوک M1 هنگام اشاره می کند. بلوکهای M0 و M1، مانند سایر بلوکهای حافظه در پردازنده های C28x، هم به فضای برنامه و هم در فضای داده نگاشت میشوند. از این رو کاربر می تواند از M0 و M1 هم برای اجرا استفاده و هم برای دخیره متغیرهای داده استفاده کند. پارتیشن بندی بخشهای حافظه از طریق فایل لینکر برنامه انجام میشود.فضای حافظه یکپارچه این پردازنده امکان برنامه نویسی با زبانهای سطح بالا را تسهیل میکند. حافظه SARAM L0,L1,L2,L3,L4,L5,L,6,L7 : پردازنده های F28335/F28333/F28235 و F28334/F28234 هرکدام دارای ۳۲ کیلو حافظه ۱۶ بیتی رم از نوع Single Access میباشند که به ۸ بلاک 4K تقسیم بندی شده اند.هربلاک میتواند به صورت مستقل توسط CPU دسترسی داشته باشد که باعث کاهش چشمگیر زمان توقف CPU میشود. از این فضای حافظه هم میتوان به منظور ذخیره متغیرها استفاده کرد و هم میتوان کد برنامه را بر روی آن اجرا کرد که باعث میشود کدهای حساس زمانی با سرعت بیشتری نسبت به حافظه فلش اجرا گردند. همچنین بلوکهای L4,L5,L6,L7 دارای دسترسی DMA نیز میباشند. بوت رام : حافظه بوت پردازنده توسط شرکت سازنده برنامه ریزی شده است و توسط سیگنالهای خارجی تشخیص میده که در هنگام روشن شده قطعه برنامه از کجا و به چه صورتی باید اجرا شود.این سیگنالها توسط ۴ عدد GPIO تنظیم میشود و حالت های بوت پردازنده را تعیین میکنند. کاربر می تواند انتخاب کند که DSP به طور معمول بوت شود یا نرم افزار جدید را از یک اتصال خارجی دریافت کند یا نرم افزار بوت را انتخاب کند که در Flash/ROM داخلی برنامه ریزی شده است. همچنین حافظه بوت شامل جداول استانداردی مانند مقادیر SIN/COS میباشد که میتواند از انها در درون برنامه استفاده نمود. محافظت از کد: این پردازنده از سطوح بالایی از امنیت برای محافظت از کد کاربر در برابر مهندسی معکوس پشتیبانی می کنند البته از راه های معمول مهندسی معکوس!!!. این کار توسط یک رمز عبور 128 بیتی (هاردکد شده برای 16 Wait-states) انجام میشود که کاربر آن را در فلش برنامه ریزی می کند. ماژول امنیتی از یک کد (CSM) برای محافظت حافظه های فلش/OTP و بلوک های L0/L1/L2/L3 SARAM استفاده می کند.این ویژگی امنیتی از بررسی محتویات حافظه از طریق پورت JTAG، اجرای کد از حافظه خارجی یا تلاش برای بارگذاری برخی نرم کدهای نامطلوب که محتویات حافظه امن را به بیرون پردازنده ارسال می کند، توسط کاربران غیرمجاز جلوگیری می کند. برای فعال کردن دسترسی به بلوک های امن، کاربر باید مقدار کلید 128 بیتی صحیح را بنویسد که با مقدار ذخیره شده در مکان های رمز عبور در فلش مطابقت دارد. علاوه بر CSM، منطق امنیتی کد امولاتور (ECSL) برای جلوگیری از ورود کاربران غیرمجاز به کد امن پیادهسازی شده است. هرگونه دسترسی به کد یا داده در حافظه فلش، OTP، L0، L1، L2 یا L3 توسط کاربر در حالی که امولاتور متصل است، ECSL را قطع و اتصال امولاتور را نیز قطع می کند. برای اجازه دادن به امولاتور کد ایمن، ضمن حفظ حفاظت CSM در برابر خواندن حافظه امن، کاربر باید مقدار صحیح کلید را در 64 بیت پایینی رجیستر KEY بنویسد، که با مقدار ذخیره شده در 64 بیت پایینی رمز عبور نوشته شده در فلش مطابقت دارد. توجه داشته باشید که خواندن ساختگی تمام 128 بیت رمز عبور در فلش همچنان باید انجام شود. اگر 64 بیت پایینی از مکان های رمز عبور همه یک (برنامه ریزی نشده) باشند، نیازی نیست که مقدار KEY مطابقت داشته باشد. هنگامی که یک پردازنده را با مکان های رمز عبور در فلش برنامه ریزی شده (یعنی ایمن) دیباگ می کنید، پروگرامر ( امولاتور ) مدتی طول می کشد تا کنترل CPU را در دست بگیرد. در طول این مدت، CPU شروع به کار می کند و ممکن است دستورالعملی را اجرا کند که نیاز به دسترسی به یک منطقه محافظت شده ECSL باشد. اگر این اتفاق بیفتد، ECSL قطع و باعث قطع شدن اتصال پروگرامر ( امولاتور ) می شود. دو راه حل برای این مشکل وجود دارد: ۱-اولین مورد استفاده از حالت Wait-In-Reset پروگرامر است که تا زمانی که امولاتور کنترل را به دست بگیرد، دستگاه را در حالت ریست نگه میدارد. امولاتور باید از این حالت پشتیبانی کند. ۲-گزینه دوم استفاده از گزینه بوت “Branch to check boot mode” است. در این حالت برنامه در یک حلقه قرار می گیرد و پین های انتخاب حالت بوت را به طور مداوم بررسی می کند. کاربر می تواند این حالت بوت را انتخاب کرده و پس از اتصال امولاتور با تنظیم مجدد شمارنده برنامه (PC) به آدرس دیگری یا با تغییر پین انتخاب حالت بوت به حالت بوت مورد نظر، از این حالت خارج شود. هنگامی که رمزهای عبور کد امنیتی برنامه ریزی می شوند، آدرس ها از 0x33FF80 تا 0x33FFF5 نمی توانند به عنوان کد برنامه یا داده استفاده شوند. این مکان ها باید با مقدار 0x0000 برنامه ریزی شوند. اگر از ویژگی امنیتی کد استفاده نمی شود، آدرس های 0x33FF80 تا 0x33FFEF ممکن است برای کد یا داده استفاده شود. آدرسهای 0x33FFF0 تا 0x33FFF5 برای دادهها رزرو شدهاند و نباید حاوی کد برنامه باشند. رمز عبور 128 بیتی (در 0x33FF80 تا 0x33FFF0) نباید روی صفر برنامه ریزی شود. انجام این کار باعث میشود پردازنده شما برای همیشه قفل شود. توصیه اکید میکنم تا زمان مسلط شدن بر روی کار با DSP تغییراتی در این بخش اعمال نکنید و تنظیمات را روی حالت پیش فرض رها کنید. بلوک گسترش وقفه های جانبی (PIE) : بلوک PIE وقفه های متعدد جانبی را به تعداد محدودتری مولتی پلکس میکند تا CPU بتواند به آنها پاسخ بدهد. بلوک PIE می تواند تا 96 وقفه را پشتیبانی کند. در پردازنده های 2833x/2823x تعداد ۵۸ وقفه از ۹۶ وقفه ممکن توسط واحد های جانبی پردازنده ایجاد میشوند. ۹۶ وقفه در بلوک های ۸ تایی گروه بندی می شوند و هر گروه به یکی از ۱۲ خط وقفه CPU (INT1 تا INT12) وارد می شود. هر یک از ۹۶ وقفه توسط بردار وقفه اختصاصی خود که در یک بلوک RAM اختصاصی ذخیره شده است پشتیبانی می شود که این بردارها می تواند توسط کاربر بازنویسی گردند. بردار به طور خودکار توسط CPU هنگام سرویس وقفه واکشی می شود. هشت سیکل ساعت CPU طول می کشد تا بردار واکشی شود و رجیسترهای مهم CPU ذخیره گردند. بنابراین CPU می تواند به سرعت به رویدادهای وقفه پاسخ دهد. اولویت بندی وقفه ها هم در سخت افزار و هم در نرم افزار قابل کنترل هستند. هر وقفه منحصر به فرد را می توان در بلوک PIE فعال یا غیرفعال کرد. وقفه های خارجی (XINT1–XINT7، XNMI) : پردازنده از هشت وقفه خارجی ماسک شده (XINT1–XINT7، XNMI) پشتیبانی میکنند. XNMI را می توان به وقفه INT13 یا NMI CPU متصل کرد. هر یک از وقفه ها می توانند با لبه های منفی، مثبت یا هر دو منفی و مثبت تحریک شوند و همچنین می توانند به صورت مجزا فعال یا غیرفعال گردند (از جمله XNMI). XINT1، XINT2، و XNMI همچنین دارای یک شمارنده آزاد 16 بیتی هستند که با شناسایی لبه وقفه معتبر به صفر بازنشانی میشود. از این شمارنده می توان برای تعیین دقیق زمان وقفه استفاده کرد. برخلاف پردازنده های 281x، هیچ پین اختصاصی برای وقفه های خارجی وجود ندارد. وقفه های XINT1 XINT2 و XNMI می توانند به هریک از پین های GPIO0–GPIO31 متصل گردند. وقفههای XINT3–XINT7 هم میتوانند به پینهای GPIO32–GPIO63 متصل شوند. اسیلاتور و PLL : کلاک پردازنده را می توان توسط یک نوسان ساز خارجی یا توسط یک کریستال متصل به مدار اسیلاتور روی تراشه تامین کرد. یک PLL بر روی تراشه تعبیه شده است که میتوان یک ضریب تا ۱۰ را به کلاک ورودی اعمال کرد. نسبتهای PLL را میتوان بهطور همزمان و در حین اجرای برنامه در نرمافزار تغییر داد، و این ویژگی کاربر را قادر میسازد تا در صورت نیاز به عملکرد با توان کمتر، فرکانس کاری را کاهش دهد. تایمر نگهبان : پردازنده دارای یک تایمر نگهبان میباشد. نرم افزار کاربر باید به طور منظم شمارنده تایمر نگهبان را در یک بازه زمانی مشخص بازنشانی کند. در غیر این صورت، تایمر پردازنده را ریست میکند. در صورت لزوم می توان تایمر نگهبان را غیرفعال کرد. کلاک واحدهای جانبی : کلاک مربوط به هر یک از واحدهای جانبی را میتوان فعال یا غیرفعال کرد تا در صورت عدم استفاده از یک واحد جانبی، مصرف توان کاهش یابد. علاوه بر این، کلاک ورودی سیستم به پورت های سریال (به جز I2C و eCAN) و بلوک های ADC می توانند نسبت به ساعت CPU مقیاس شوند. این ویژگی باعث می شود تا زمان بندی واحدهای جانبی از تغییر سرعت کلاک CPU مجزا شوند و افزایش و کاهش کلاک CPU تغییری در کلاک واحدهای جانبی ایجاد نکند. مدهای کاهش توان : در این دسته از پردازنده ها سه مد کاری مختلف در نظر گرفته شده است : IDLE : CPU را در حالت کم مصرف قرار می دهد. کلاک های جانبی ممکن است بهطور انتخابی خاموش شوند و فقط آن دسته از واحدهای جانبی که باید در طول IDLE کار کنند، فعال باقی میمانند. یک وقفه فعال از یک واحد جانبی فعال یا تایمر نگهبان، پردازنده را از حالت IDLE خارج می کند. STANDBY : کلاک ورودی را به CPU و تجهیزات جانبی خاموش می کند. در این حالت اسیلاتور و PLL همچنان فعال می مانند. یک رویداد وقفه خارجی، پردازنده و تجهیزات جانبی را بیدار می کند. اجرا کد در سیکل کلاک معتبر بعدی پس از تشخیص رویداد وقفه آغاز می شود. HALT : در این حالت نوسان ساز داخلی خاموش می شود. این حالت در اصل پردازنده را خاموش می کند و آن را در کمترین حالت مصرف توان ممکن قرار می دهد. ریست یا سیگنال خارجی می تواند پردازنده را از این حالت خارج کند. Peripheral Frames 0, 1, 2, 3 (PFn) : در این پردازنده تجهیزات جانبی را به چهار بخش تقسیم می شوند. این بخش بندی درواقع نحوه اتصال واحدهای جانبی به باسهای پردازنده را مشخص میکند که در آموزشهای بعدی با جزئیات بیشتری بررسی میشود : مولتی پلکسر ورودی/خروجی عمومی (GPIO) : بیشتر سیگنال های جانبی با سیگنال های GPIO مالتی پلکس می شوند. این روش کاربر را قادر می سازد تا در صورت عدم استفاده از واحدهای جانبی ، از یک پین به عنوان GPIO استفاده کند. هنگام ریست پردازنده، پین های GPIO به عنوان ورودی پیکربندی می شوند. کاربر می تواند هر پین را به صورت جداگانه برای حالت GPIO یا به عنوان یک پین واحد جانبی به عنوان مثال پایه های پورت سریال پیکربندی کند. برای تعدادی از ورودی ها، کاربر می تواند تعدادی سیکل کلاک را برای خواندن ورودی تعیین کند مثلا برای ۵۰ سیکل کلاک ورودی را بخواند. از این ویژگی برای فیلتر کردن نویزهای ناخواسته میتوان استفاده کرد. سیگنال های GPIO همچنین توانایی این را دارند که پردازنده را از حالت های کم مصرف خارج کنند. تایمر های ۳۲ بیتی CPU : در این پردازنده های سه تایمر ۳۲ بیتی متصل به CPU وجود دارد که هر کدام کلاک را از پردازنده و از طریق یک مقسم ۱۶ بیتی دریافت میکنند.این تایمر ها دارای یک کانتر ۳۲ بیتی با شمارش معکوس هستند و هنگامیکه مقدار این شمارنده به صفر رسید یک وقفه تولید میکنند. شمارنده با فرکانسی برابر با کلاک CPU تقسیم بر مقدار مقسم ۱۶ بیتی کاهش پیدا میکند. هنگامی که شمارنده به صفر رسید، به طور خودکار با یک مقدار ۳۲ بیتی دوباره بارگذاری می شود. CPU-Timer 2 برای برنامه های که از سیستم عامل بلادرنگ (RTOS)/BIOS استفاده می کنند رزرو شده است. وقفه این تایمر مستقیما به وقفه شماره ۱۴ INT14 متصل است. اگر از DSP/BIOS یا SYS/BIOS استفاده نمی شود، CPU-Timer 2 برای استفاده عمومی در دسترس است. CPU-Timer 1 برای استفاده عمومی است و می تواند مستقیما به INT13 CPU متصل شود. CPU-timer 0 نیز برای استفاده عمومی است و به بلوک PIE متصل است. واحدهای جانبی کنترلی : پردازنده های 2833x/2823x از تجهیزات جانبی زیر پشتیبانی می کنند که برای رفع نیازهای کنترلی در DSP جاسازی شده است: ePWM : واحد جانبی پیشرفته PWM از تولید PWM مستقل و مکمل، تولید باند مرده (Dead-Band) که قابل تنظیم برای لبه های جلویی و عقبی سیگنال PWM است پشتیبانی می کند. برخی از پین های PWM از ویژگی های HRPWM پشتیبانی می کنند. رجیسترهای ePWM توسط DMA پشتیبانی میشوند تا از تحمیل بار اضافی به این واحد جانبی و CPU جلوگیری شود. eCAP : واحد جانبی کپچر از یک تایمر پایه 32 بیتی استفاده می کند و حداکثر چهار رویداد قابل برنامه ریزی را در حالت های کپچر پیوسته/تک شات ثبت می کند. eQEP : واحد جانبی QEP پیشرفته از یک شمارنده موقعیت 32 بیتی استفاده می کند، این واحد از اندازه گیری با سرعت پایین با استفاده از واحد کپچر تا اندازه گیری با سرعت بالا با استفاده از یک تایمر ۳۲ بیتی پشتیبانی می کند. این واحد جانبی دارای یک تایمر نگهبان برای تشخیص توقف موتور و منطق تشخیص خطای ورودی برای شناسایی انتقال همزمان لبه در سیگنالهای QEP است. ADC : بلوک ADC یک مبدل ۱۲ بیتی، سینگل و ۱۶ کانالی است که شامل دو واحد نمونه برداری و نگهداری برای نمونه برداری همزمان است. رجیسترهای ADC توسط DMA پشتیبانی می شوند تا بتوان در حداقل زمان ممکن و بدون افزایش بار CPU مقادیر تبدیل شده را از رجیسترها خواند. واحدهای جانبی سریال: پردازنده واحد های جانبی سریال زیر را در خود جای داده است : eCAN: در این سری از پردازنده ها واحد پیشرفته CAN قرارداده شده است که از ۳۲ صندوق پیام (mailbox) و قابلیت ثبت زمان (time-stamping) پشتیبانی میکند همچنین این واحد با استاندارد ISO-11898-1 (CAN2.0B) سازگاری دارد. McBSP : این واحد جانبی که پورت سریال با بافر چند کاناله میباشد قابلیت این را دارد که به خطوط E1/T1 , کدک های با کیفیت خطوط تلفن برای کاربردهای تلفن و همچنین مبدلهای دیجیتال به آنالوگ صوتی استریو با کیفیت بالا متصل گردد.رجیسترهای ارسال و دریافت McBSP به منظور کاهش سربار اضافی برای CPU توسط DMA پشتیبانی میشوند.هر ماژول McBSP را میتوان در صورت نیاز به صورت یک واحد SPI برنامه ریزی کرد و استفاده نمود. SPI : SPI یک پورت ورودی/خروجی سریالی با سرعت بالا و همزمان است که به یک جریان بیت سریال با طول برنامه ریزی شده (1 تا 16 بیت) اجازه می دهد تا با نرخ انتقال بیت قابل برنامه ریزی به داخل و خارج سیستم منتقل شود. به طور معمول، SPI برای ارتباطات بین DSC و تجهیزات جانبی خارجی یا پردازنده دیگری استفاده می شود. واحد SPI کاربردهای معمولی شامل گسترش I/O خارجی یا گسترش واحدهای جانبی از طریق دستگاه هایی مانند شیفت رجیسترها، درایورهای نمایشگر و ADCها دارد. ارتباطات چند دستگاهی توسط عملیات master/slave SPI پشتیبانی می شود. در 2833x/2823x، SPI یک بافر دریافت و ارسال 16 سطحی برای کاهش سربار سرویس وقفه قرار داده شده است. SCI : رابط ارتباطی سریال یک پورت سریال ناهمزمان 2 سیمه است که معمولا با نام UART شناخته می شود. SCI شامل یک بافر دریافت و ارسال 16 سطحی برای کاهش سربار سرویس وقفه است. I2C : واحد جانبی (I2C) یک رابط بین DSC و سایر دستگاههای مطابق با مشخصات گذرگاه بین آی سی (I2C-bus) Philips Semiconductors Inter-IC نسخه 2.1 و از طریق یک گذرگاه I2C متصل میشود. اجزای خارجی متصل به این گذرگاه سریال 2 سیمه می توانند تا 8 بیت داده به/از DSC را از طریق ماژول I2C ارسال/دریافت کنند. 2833x/2823x، I2C شامل یک بافر دریافت و ارسال 16 سطحی برای کاهش سربار سرویس وقفه است. نصب و آماده سازی محیط توسعه : محیط اختصاصی توسعه کد برای پردازنده های شرکت TI اعم از DSP ها میکروکنترلرها و ماژولها Code Composer Studio یا به اختصار CCS نامیده میشود. برای اینکه بتونیم برای DSP ها برنامه بنویسیم نیاز داریم که ابتدا CCS و کتابخانه های مربوط به خانواده پردازنده مورد نظرمون رو نصب کنیم برای این کار ابتدا سراغ نصب CCS می رویم. نصب Code Composer Studio : ابتدا باید فایل نصبی CCS را از سایت TI دانلود کنیم. به لینک زیر بروید و اخرین نسخه نصبی آفلاین Code Composer Studio را دانلود نمایید. CCS Download پس از دانلود فایل و خارج کردن از حالت فشرده با کلید بر روی فایل نصبی فرایند نصب آغاز میشود. با کلیک بر روی گذینه next به صفحه بعد میرویم. در این قسمت بایستی توافق نامه استفاده از نرم افزار را قبول نماییم!! در مرحله بعد نصب کننده سیستم را بررسی کرده و در صورت تایید شرایط مورد نیاز نصب CSS به مرحله بعد میرویم. در این مرحله بایستی محل نصب نرم افزار را انتخاب نماییم که ترجیحا به حالت پیشفرض رها کرده و به مرحله بعد میرویم. در اینجا باید نوع نصب را انتخاب نماییم.ما گزینه Custom Installation را انتخاب میکنیم و به مرحله بعد میرویم. در پنجره بعدی لیستی از محصولات و خانواده پردازنده هایی که میتوان در CCS برای آنها کد نوشت آمده است.ما میتوانیم بنابر نیاز خود تیک پردازنده های مورد نیاز را بزنیم.چون دوره ما حول آموزش پردازنده tms320f28335 میباشد و این پردازنده از خانواده سری C2000 است. تیک گزینه C2000 real-time MCUs را حتما باید زد.در انتها نیز بر روی next کلیک نمایید. در این پنجره میتوانیم ابزار دیباگ خود را انتخاب نماییم. این قسمت را بدون تغییر رها کرده به مرحله بعد بروید.مگر انکه از ابزارهای لیست شده استفاده میکنید که میتوانید تیک گزینه مربوطه را بزنید. در پنجره بعدی لیستی از چند ابزار که توسط CCS IDE پشتیبانی نمیشود را میبینیم که با زدن بر روی next از این بخش رد میشویم. پنجره بعدی اعلانی مبنی بر مهیا بودن شرایط برای نصب CCS میباشد و بر روی next کلیک کرده و به پنجره بعدی میرویم. در اینجا فرایند نصب Code Composer Studio آغاز میشود. منتظر میمانیم تا فرایند نصب به پایان برسد. با مشاهده این پنجره عملیات نصب به پایان میرسد و بر روی finish کلیک مینماییم. با کلیک بر روی finish نرم افزار اجرا شده و محیط آن مطابق تصویر زیر میباشد. خب بخش اول آماده سازی محیط توسعه کد پردازنده های TI به پایان رسید. تنها یک قدم دیگر تا آماده سازی و شروع کدنویسی پردازنده های خانواده c2000 باقی مانده است. نصب C2000Ware : برای آنکه بتوانبد راحت تر برای سری 2000 کد بنویسیم نیاز است از کتابخانه و فایلهایی که شرکت Ti برای اینکار تدارک دیده استفاده نماییم. برای این منظور کافیست فایل C2000Ware را از لینک زیر دانلود و نصب نمایید. C2000Ware Download بعد از دانلود فایل بر روی آن کلیک کرده تا فرایند نصب اجرا گردد. در پنجره بعدی توافقنامه استفاده از نرم افزار را قبول کرده و به مرحله بعد میرویم. در اینجا باید محل نصب کتابخانه ها را انتخاب کنیم.به طور پیشفرض در داخل پوشه محل نصب CCS نصب خواهد شد. بدون تغییر برروی next کلیک کرده و به مرحله بعد میرویم. از این قسمت نیز با کلیک بر روی next عبور کرده و به پنجره بعدی میرویم. در پنجره جدید میبینیم که فرایند نصب C2000ware آغاز شده است منتظر میمانیم تا فرآیند نصب به اتمام برسد. تبریک میگم شما توانستید با موفقیت IDE و کتابخانه مورد نیاز برای کار با پردازنده های سیگنال دیجیتال سری 2000 را با موفقیت نصب کنید.اکنون همه چی آماده یک شروع طوفانیست!!! شما توانستید گام اول شروع کار با پردازنده های سیگنال دیجیتال را با موفقیت بردارید. تنها 19 گام دیگر تا تبدیل شدن به یک برنامه نویس DSP باقی مانده است که ما در کنار شما هستیم و کمک میکنیم این 19 گام را با قدرت برداشته و تبدیل به یک متخصص DSP سری 2000 شوید و دروازه هایی جدید از الکترونیک و به طبع آن موقعیتهای شغلی بهتر و درآمد بیشتر و بالاتر را به روی خود باز کنید. دوره تخصصی DSP C2000 Series دروازه ای جدید برای پیشرفت و کسب درآمد در دنیای الکترونیک به روی خود باز کنید. پیشرفت در انتظار شماست ظرفیت محدود