سیستمهای نهفته
| مدرس: دکتر محسن انصاری، دکتر سپیده صفری | پیشنیاز: برنامهسازی پایتون |
| ترم: تابستان ۱۴۰۴ | محل برگزاری: کلاس مجازی |
| زمان ارائه: یکشنبه و سهشنبه ۱۶:۳۰ تا ۱۸:۰۰ | مشاهده: دریافت لایسنس |
معرفی درس
سیستمهای نهفته؛ از معماری میکروکنترلرها تا طراحی سامانههای هوشمند
بسیاری از دستگاهها و تجهیزاتی که هر روز با آنها سروکار داریم، از خودروها و لوازم خانگی هوشمند گرفته تا تجهیزات صنعتی و سامانههای کنترلی، برای انجام وظایف مشخص به سیستمهای رایانهای کوچکی متکی هستند که درون آنها قرار گرفتهاند. این سیستمها که «سیستمهای نهفته» (Embedded Systems) نامیده میشوند، مسئولیتهایی مانند پایش وضعیت، پردازش اطلاعات حسگرها و کنترل عملکرد دستگاه را بر عهده دارند. طراحی چنین سیستمهایی مستلزم توجه همزمان به سختافزار، نرمافزار، محدودیت منابع، زمان پاسخگویی و قابلیت اطمینان است.
درس سیستمهای نهفته با هدف آشنایی با اصول طراحی و تحلیل این سامانهها ارائه میشود. در این درس، ابتدا با ویژگیها و کاربردهای سیستمهای نهفته و نقش حسگرها و عملگرها آشنا میشوید. سپس معماری میکروکنترلرها، ورودی و خروجیها، ارتباطات سریال، حافظه و روشهای پیادهسازی و اشکالزدایی نرمافزار روی این بسترها را بررسی میکنید. همچنین با بردهای پرکاربردی مانند Arduino و Raspberry Pi و تفاوتهای آنها از نظر معماری و کاربرد آشنا خواهید شد.
یکی از بخشهای مهم درس، طراحی سیستمهای واکنشی (Reactive Systems) با استفاده از اتوماتا و زبان StateCharts است. این رویکردها به توصیف منظم رفتار سیستم در پاسخ به رویدادها کمک میکنند و برای طراحی سامانههایی که باید در زمان مناسب به ورودیهای محیط واکنش نشان دهند، اهمیت دارند. در پایان، موضوعاتی مانند زمانبندی بیدرنگ، مصرف انرژی و قابلیت اطمینان بررسی میشوند تا با برخی از چالشهای اساسی طراحی سیستمهای نهفته آشنا شوید.
در پایان این درس چه تواناییهایی کسب میکنید؟
- شناخت مفاهیم، ویژگیها و کاربردهای سیستمهای نهفته و درک نقش آنها در تجهیزات و سامانههای هوشمند
- آشنایی با معماری میکروکنترلرها و اجزایی مانند حافظه، پورتهای ورودی و خروجی، مبدل آنالوگ به دیجیتال و رابطهای ارتباط سریال
- درک اصول پیادهسازی نرمافزار برای میکروکنترلرها و آشنایی با روشهای ارتباط، شبیهسازی و اشکالزدایی
- شناخت بسترهای سختافزاری رایج مانند Arduino و Raspberry Pi و درک تفاوتها و کاربردهای آنها
- درک مفهوم سیستمهای واکنشی و استفاده از رویکرد مبتنی بر اتوماتا برای توصیف رفتار سیستم
- آشنایی با زبان StateCharts و مفاهیمی مانند حالتهای سلسلهمراتبی، رویدادها، شرطها و زمانسنجها
- شناخت اهمیت زمانبندی بیدرنگ در سامانههایی که باید در بازه زمانی مشخص به رویدادها پاسخ دهند
- آشنایی با روشهای کاهش مصرف انرژی و افزایش قابلیت اطمینان و درک مصالحه میان این معیارها در طراحی سیستمهای نهفته
این درس برای دانشجویان و دانشآموختگان مهندسی کامپیوتر و رشتههای مرتبط مناسب است که به طراحی سختافزار و نرمافزار، برنامهنویسی نزدیک به سختافزار، سیستمهای کنترلی و فناوریهای هوشمند علاقه دارند. همچنین برای افرادی که قصد دارند دانش خود را در زمینههایی مانند اینترنت اشیا، سیستمهای سایبرفیزیکی، اتوماسیون و طراحی تجهیزات هوشمند گسترش دهند، میتواند مبانی نظری ارزشمندی فراهم کند.
پیشنیاز
آشنایی مقدماتی با برنامهنویسی و مفاهیم پایه معماری کامپیوتر برای بهرهگیری بهتر از این درس توصیه میشود. آشنایی با مفاهیمی مانند متغیرها، توابع، ساختارهای کنترلی و نحوه عملکرد کلی پردازنده و حافظه میتواند در درک مباحث مربوط به میکروکنترلرها و پیادهسازی نرمافزار مفید باشد. میزان پیشنیاز عملی در زمینه برنامهنویسی سختافزار یا کار با بردهای توسعهدهنده باید با با توجه به نحوه ارائه درس مشخص شود.
سرفصلها
- مقدمه
- معرفی سیستمهای نهفته، مشخصات سامانههای نهفته، اهمیت سامانههای نهفته، کاربردهای سامانههای نهفته، حسگرها و فعالسازها، سیستمهای Reactive
- میکروکنترلرها بهعنوان عنصر کلیدی سامانههای نهفته
- معرفی میکروکنترلر، دلایل اهمیت میکروکنترلر در سامانههای نهفته، معماری میکروکنترلر، تبدیل آنالوگ به دیجیتال، پورتها، ارتباطات سریال در میکروکنترلرها، یک مثال از سیستمهای کنترلی خودکار
- مدیریت منابع و وظایف در میکروکنترلرها
- پیادهسازی نرمافزاری یک سیستم نهفته، نقش حلقههای نامحدود، Remote Debugger، Emulator، نحوهی برقراری ارتباط با میکروکنترلر از محیط پیرامون، حافظه در میکروکنترلرها
- مروری بر بسترهای سختافزاری رایج سیستمهای نهفته
- مروری بر بردهای سختافزاری Arduino و Raspberry Pi به عنوان بسترهای سختافزاری رایج کاربردهای نهفته، مقایسه و کاربردهای آنها، مروری بر روشهای توسعهی نرمافزار برای این بسترها
- برنامهنویسی مبتنی بر اتوماتا
- مفهوم برنامهریزی مبتنی بر اتوماتا، کاربرد برنامهریزی مبتنی بر اتوماتا در توصیف سیستمهای Reactive، ساختار سلسلهمراتبی در برنامهریزی مبتنی بر اتوماتا، مزایای برنامهریزی مبتنی بر اتوماتا برای طراحی سیستمهای نهفته، توصیف واکنش بهصورت Mealy و Moore در برنامهریزی مبتنی بر اتوماتا
- زبان StateCharts
- MoC در StateCharts، توصیف سلسلهمراتبی در StateCharts، Or-Super-State و AND-Super-State، طراحی پیمانهای در StateCharts، مثال از توصیف یک سیستم نهفته با StateCharts (سیستم منشی تلفنی)، Timerها در StateCharts، اهمیت Timerها در توصیف بیدرنگی، توصیف رخداد، شرط و واکنش در StateCharts، مراحل شبیهسازی (اجرا) کد StateCharts
- بیدرنگی، انرژی مصرفی و قابلیت اطمینان در سیستمهای نهفته
- روشهای سطح سیستم کاهش انرژی مصرفی در سیستمهای نهفته، روشهای افزونگی زمانی بهبود قابلیت اطمینان در سیستمهای نهفته، اهمیت بیدرنگی در سیستمهای نهفته، مروری بر مصالحه میان بیدرنگی، انرژی مصرفی و قابلیت اطمینان در سیستمهای نهفته
ارزیابی
- امتحان پایانترم: ۶۰ درصد
- پروژه و تمرین: ۴۰ درصد
منابع
- Peter Marwedel. Embedded System Design. 1st Edition, Springer, 2006.
- احمد کاردان و سید امیر اصغری. کاربرد سیستمهای نهفته در اندازهگیری و کنترل، کیان رایانهی سبز، ۱۳۸۷.
- Adrian McEwen and Hakim Cassimally. Designing the Internet of Things. 1st Edition, Wiley, 2013.
- Online documents on Raspberry Pi and Arduino.