فهرست مطالب:
- مرحله 1: نمودار جعبه سیاه
- مرحله 2: ماشین های حالت
- مرحله 3: جداول حقیقت ماشین ، معادلات تحریک و معادلات خروجی
- مرحله 4: بسته بندی ، زیرمجموعه و محدودیت
- مرحله 5: پورت های ورودی/خروجی برای LED
تصویری: L I G H T S: 5 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:57
هدف از این پروژه نهایی ایجاد چیزی بود که بر پایداری تمرکز کند و مفاهیم طراحی دیجیتال را پیاده سازی کند و برای انجام این کار ، تصمیم گرفتم یک سیستم صرفه جویی در توان مقیاس پذیر با استفاده از vhdl طراحی کنم و برای Basys 3 Board (سری Artix-7 35T ساخته شده است)) مقیاس پذیر است زیرا هر تعداد سنسور را می توان در یک اتاق قرار داد و هر تعداد از این سیستم ها را می توان در اطراف ساختمان یا خانه قرار داد. کاری که این سیستم انجام می دهد ، صرفه جویی هزاران دلار در ساختمان های تجاری و کاهش درصد زیادی از مصرف انرژی در جوامع مسکونی کوچکتر با پیاده سازی یک سیستم متصل از چراغهای کنترل فعال و غیرفعال ، آشکارسازهای حرکت ، تایمرهای نمایش داده شده در هفت صفحه نمایش و کلیدهای کنترل این مثال به یک سیستم واحد با سه آشکارساز حرکت ، یک سوئیچ اصلی ، یک سوئیچ دستی/معمولی ، چهار صفحه نمایش هفت قسمتی و یک چراغ واحد که سیستم کنترل می کند ، می پردازد.
به عنوان مثال ، در یک اتاق انتخابی ، چندین آشکارساز حرکت در اطراف قرار داده می شود (این طرح دارای سه نمونه است) ، و هر کدام در صورت تشخیص حرکت یک سیگنال (1) و در صورت عدم وجود (0) ارسال می کنند. اگر حداقل یکی از آشکارسازهای حرکت حرکت را تشخیص دهد ، چراغها روشن می شوند اگر هنوز روشن نشده اند و اگر روشن هستند روشن می مانند. در هر زمان همه آشکارسازهای حرکتی چیزی را تشخیص نمی دهند ، تایمر شروع به شمارش معکوس برای مدت زمان معینی (قابل تنظیم در کد) می کند و چراغ ها روشن می مانند در حالی که تایمر شمارش معکوس می کند. پس از اتمام شمارش معکوس تایمر ، تایمر متوقف می شود و چراغ ها خاموش می شوند. اگر حداقل یک آشکارساز حرکت حرکت را در حالی که تایمر در حال شمارش معکوس است تشخیص دهد ، تایمر متوقف می شود و تنظیم مجدد می شود. و اگر حداقل یک آشکارساز حرکت در هنگام خاموش بودن چراغها حرکت را تشخیص دهد ، چراغها بلافاصله روشن می شوند.
این سیستم دارای دو حالت است ، یکی با تایمر همانطور که در بالا گفته شد ، و دیگری با یک سوئیچ که چراغ ها را به صورت دستی کنترل می کند (نادیده گرفتن حسگرها). یک سوئیچ اصلی وجود دارد که به کاربر اجازه می دهد بر اساس هرکدام که احساس می کند در مجموع انرژی بیشتری ذخیره می کند ، از حالت موردنظر خود استفاده کند. سابق. اتاقی مانند راهرو می تواند از حالت تایمر منفعل سود ببرد- کاربران مطمئن نیستند که چه افرادی قرار است از آنجا عبور کنند ، اما روشن و خاموش کردن چراغ ها با هر بار ورود و خروج ناراحتی ایجاد می کند ، در حالی که اتاقی مانند به عنوان یک اتاق خواب با یک کاربر تنها بهتر است به صورت دستی اداره شود. و کلید اصلی در مواردی مانند این که شخصی که در اتاق خواب زندگی می کند به مدت طولانی ترک کند ، مفید است ، سپس کلید اصلی را می توان خاموش کرد و حالت تایمر برای صرفه جویی بیشتر در انرژی کار می کند.
بنابراین در این سیستم ، دو ماشین حالت وجود دارد ، یکی ماشین اصلی حالت اصلی است ، و دیگری برای تایمر شمارش معکوس. ماشین حالت اصلی دارای پنج حالت است: 1. "چراغ روشن ، حرکت تشخیص داده شده است (id = 000) ، 2." چراغ روشن است ، هیچ حرکتی تشخیص داده نشده است (id = 001) ، 3. "چراغ خاموش ، بدون حرکت تشخیص داده شد "(id = 010) ، 4." دستی روشن شد "(id = 011) ، و 5." دستی خاموش "(id = 100). این دستگاه حالت اصلی دارای چهار ورودی است: کلید اصلی (ms) ، کلید دستی/عادی (ns) ، سیگنالی که در صورت تشخیص حرکت حداقل یک سوئیچ زیاد است و در غیر این صورت کم است (orx) ، و سیگنالی که وقتی تایمر تمام شد زیاد است و در غیر اینصورت کم است (td). دستگاه حالت اصلی دارای دو خروجی است: چراغ ها (چراغ ها) و یک سیگنال که زمان روشن شدن زمان سنج شمارش معکوس (تایمر) یا (t) (هر دو به جای یکدیگر استفاده می شوند) را نشان می دهد.
ماشین حالت دوم ، زمان سنج شمارش معکوس ، دارای 12 حالت است: 10 مورد از آنها دارای شناسه های مربوط به عددی است که قسمت هفتم نشان می دهد- "seg 10" (id = 1010) ، "seg 9" (id = 1001) ، […] ، "seg 2" (id = 0010) ، "seg 1" (id = 0001) ، و دو حالت دیگر هر دو صفر را نشان می دهند ، نشان دهنده خاموش شدن زمان سنج است- بنابراین اولین خالی "خالی 1" (id = 1111) و خالی دوم "خالی 2" (id = 0000). تایمر شمارش معکوس دارای یک ورودی است: تایمر (t) ، و سه خروجی: عدد نمایش داده شده در دوتایی با چهار بیت (bin) و سیگنالی که نشان می دهد زمان سنج انجام شده است (td).
مرحله 1: نمودار جعبه سیاه
این یک نمای کلی از نحوه عملکرد کل سیستم است و با نمودار جعبه سیاه توضیح داده شده است.
- از ساعت برای ساعت گیری دستگاه اصلی و رمزگشای هفت بخش استفاده می شود. یک ساعت آهسته تر برای شمارنده پایین لازم است ، بنابراین ماژول تقسیم ساعت وجود دارد که ورودی ساعت را گرفته و یک ساعت کندتر را برای شمارنده پایین خروجی می دهد.
- متغیر میانی (orx) در بسته بندی به سنسورهای حرکت متصل است و اگر حداقل یکی از سنسورها چیزی را تشخیص دهد زیاد است و در غیر این صورت کم است. معادله بولی برای آن فقط orx = s (2) یا s (1) یا s (0) است.
-
fsm اصلی بسته به ورودی ها (orx ، ms ، ns ، td) وضعیت عمومی سیستم را کنترل می کند و وضعیت فعلی (sm) نمایش داده شده را با دو سیگنال مورد استفاده (تایمر و چراغ ها) ساده می کند.
- (تایمر) یک سیگنال پیچشی است که به عنوان ورودی آن به fsm شمارنده پایین ارسال می شود و توسط وضعیت فعلی fsm اصلی کنترل می شود. نشان می دهد که چه زمان باید تایمر را روشن کنید.
- (چراغ ها) یک سیگنال پیچشی است که برای کنترل led استفاده می شود و توسط حالت فعلی fsm اصلی کنترل می شود.
-
شمارنده پایین fsm آنچه هفت قسمت بسته به ورودی (تایمر) نمایش می دهد را کنترل می کند و با دو سیگنال مورد استفاده (td و bin) حالت فعلی (sd) نشان داده شده را ساده می کند.
- (td) یک سیگنال پیچشی است که به عنوان ورودی به fsm اصلی ارسال می شود و توسط وضعیت کنونی fsm شمارنده پایین کنترل می شود. این به عنوان یک سیگنال بازخورد عمل می کند که نشان می دهد زمان سنج تمام شده است.
- (bin) یک سیگنال بسته بندی چهار بیتی است که با چهار بیت صفر ("0000" & bin) ترکیب شده و هشت بیت ترکیبی به (q) ، یک سیگنال بسته بندی هشت بیتی ارسال می شود ، که به نوبه خود به هفت ارسال می شود رمزگشای بخش تحت (ALU_VAL).
-
ماژول هفت قسمتی همان ماژول Polylearn است. ورودی های اصلی آن از یک عدد 8 بیتی (bin) تا (ALU_VAL) برای نمایش بر روی چهار صفحه نمایش هفت بخش مختلف با استفاده از خروجی ها (SEGMENTS) برای پیچاندن سیگنال (seg) و (DISP_EN) تا wrapper (disp_en) استفاده می کند.
- از آنجایی که دو یا چند صفحه نمایشگر سگمنت نمی توانند همزمان ارقام مختلف را نمایش دهند ، برای چرخاندن چهار ssegs به یک ساعت نیاز است و هر بار برای هر sseg به صورت جداگانه رقم مناسب نمایش داده می شود و دوچرخه سواری به سرعت کافی باعث می شود به نظر می رسد که ssegs به یکباره روشن می شود.
- (علامت و معتبر) در طول این برنامه ثابت است ، بنابراین (علامت) به طور دائم پایین و (معتبر) به طور دائم بالا تنظیم می شود.
- (ALU_VAL) سیگنال بسته بندی (q) را به عنوان ورودی می گیرد ، که نشان دهنده عددی است که قرار است در صفحه هفت قسمت به صورت باینری نمایش داده شود.
- خروجی (SEGMENTS) به یک سیگنال بسته بندی هشت بیتی (seg) و (DISP_EN) به یک سیگنال بسته بندی چهار بیتی (disp_en) ارسال می شود.
-
همچنین یک ماژول فلیپ فلاپ D وجود دارد که به وضوح در نمودار نشان داده نشده است ، اما برای دو ماشین حالت به عنوان زیر ماژول مورد نیاز است و به ترانزیستن حالتها به طور همزمان کمک می کند.
- (3) از این موارد برای fsm اصلی مورد نیاز است زیرا 2^(3) = 8> 5 حالت برای کدگذاری
- (4) از این موارد برای شمارنده پایین fsm از آنجا که 2^4 = 16> 12 حالت برای کدگذاری مورد نیاز است
مرحله 2: ماشین های حالت
برای طراحی صحیح دو ماشین حالت ، باید حالات جداگانه را با خروجی های آن و وضعیتی که بر اساس ورودی های مختلف ممکن است به وضوح تعریف شود ، تعریف کرد.
fsm اصلی بیان می کند:
"چراغ روشن ، حرکت تشخیص داده شد" (id = 000)
چراغ ها روشن هستند ، حداقل یکی از آشکارسازهای حرکت حرکت را تشخیص می دهد ، بنابراین orx باید زیاد باشد و ms روشن شود.
- خروجی: چراغ = 1 و تایمر = 0
- وقتی ms = 1 و orx = 1 باقی می ماند به این حالت باقی می ماند.
- اگر ms = 1 و orx = 0 باشد به حالت "چراغ ها روشن هستند ، هیچ حرکتی تشخیص داده نمی شود" می شود.
- اگر ms = 0 و ns = 1 باشد ، به حالت "روشن دستی" می رود.
- اگر ms = 0 و ns = 0 باشد به حالت "دستی خاموش" می رود.
"چراغ روشن است ، هیچ حرکتی تشخیص داده نشده است" (id = 001)
چراغ ها روشن هستند ، هیچ حرکتی از طریق آشکارساز حرکت تشخیص داده نمی شود ، بنابراین orx باید کم باشد و ms روشن باشد. همچنین در ابتدای این حالت ، تایمر بالا تنظیم شده به شمارش معکوس fsm می گوید که شمارش معکوس را شروع کند ، شمارش معکوس را ادامه می دهد و هنگامی که fsm شمارش معکوس به این fsm می گوید شمارش تمام شده است ، شمارش معکوس را متوقف می کند.
- خروجی: چراغ = 1 و تایمر = 1.
- وقتی ms = 1 و orx = 0 و td (زمان سنج تمام شده است) = 0 به این حالت باقی می ماند.
- اگر ms = 1 و orx = 1 باشد ، به حالت "چراغ روشن است ، حرکت تشخیص داده می شود" می شود.
- اگر ms = 1 و orx = 0 و td = 1 باشد ، به حالت "چراغ خاموش است ، هیچ حرکتی تشخیص داده نمی شود" می شود.
- اگر ms = 0 و ns = 1 باشد ، به حالت "دستی روشن است" می رود.
- اگر ms = 0 و ns = 0 باشد به حالت "دستی خاموش" می رود.
"چراغ خاموش ، هیچ حرکتی تشخیص داده نشد" (id = 010)
چراغ ها خاموش هستند ، هیچ حرکتی از هیچ سنسور حرکتی تشخیص داده نمی شود و تایمر شمارش معکوس را تمام کرد ، بنابراین orx باید کم باشد ، ms روشن است و td خاموش است.
- خروجی ها: چراغ = 0 و تایمر = 0.
- وقتی ms = 1 و orx = 0 باقی می ماند به این حالت باقی می ماند.
- اگر ms = 1 و orx = 1 باشد ، به حالت "چراغ روشن است ، حرکت تشخیص داده می شود" می شود.
- اگر ms = 0 و ns = 1 باشد ، به حالت "روشن دستی" می رود.
- اگر ms = 0 و ns = 0 باشد به حالت "دستی خاموش" می رود.
"دستی روشن شد" (id = 011)
چراغ ها روشن هستند ، آشکارسازهای حرکت بی ربط هستند ، بنابراین ms خاموش و ns روشن است.
- خروجی: چراغ = 1 و تایمر = 0.
- هنگامی که ms = 0 و ns = 1 به این حالت باقی می ماند.
- اگر ms = 0 و ns = 0 باشد به حالت "دستی خاموش" می رود.
- به حالت “چراغ خاموش می شود ، اگر ms = 1 باشد هیچ حرکتی تشخیص داده نمی شود.
"دستی خاموش" (id = 100)
چراغ ها خاموش هستند ، آشکارسازهای حرکت بی ربط هستند ، بنابراین ms خاموش است ، و ns خاموش است.
- خروجی ها: چراغ = 0 و تایمر = 0.
- وقتی ms = 0 و ns = 0 باشد این حالت باقی می ماند.
- اگر ms = 0 و ns = 1 باشد ، به حالت "دستی روشن است" می رود.
- به حالت “چراغ خاموش می شود ، اگر ms = 1 باشد هیچ حرکتی تشخیص داده نمی شود.
پیشخوان اعلام می کند:
"Seg 10" (id = 1010)
صفحه نمایش هفت بخش 10 را نشان می دهد.
- خروجی ها: bin = "1010" و td = 0.
- در صورت تایمر = 1 به حالت "seg 9" می رود.
- اگر تایمر = 0 باشد به حالت "خالی 2" می رود.
"Seg 9" (id = 1001)
صفحه نمایش هفت بخش 9 را نشان می دهد.
- خروجی ها: bin = "1001" و td = 0.
- در صورت تایمر = 1 به حالت "seg 8" می رود.
- اگر تایمر = 0 باشد ، به حالت "خالی 2" می رود.
(حالتهای "Seg 8" تا "Seg 2" حذف می شوند زیرا از الگوی مشابه "Seg 10" و "Seg 9" پیروی می کنند و برای توضیح لازم نیست)
"Seg 1" (id = 0001)
صفحه نمایش هفت بخش 1 را نشان می دهد.
- خروجی ها: bin = "0001" و td = 0.
- به حالت "خالی 2" در لبه بعدی افزایش ساعت می رود (نیازی به ورودی نیست).
"خالی 2" (id = 1111)
نمایش هفت بخش 0. را نشان می دهد. هدف از حالت خالی دوم این است که یک حالت جداگانه برای td = 1 برای ایمنی وجود داشته باشد.
- خروجی ها: bin = "1111" و td = 1.
- به حالت "خالی 1" در لبه بعدی افزایش ساعت (بدون نیاز به ورودی) می رود.
"خالی 1" (id = 0000)
نمایشگر هفت قسمتی 0. را نشان می دهد. این وضعیتی است که سیستم در آن باقی می ماند وقتی دستگاه اصلی در حالت "چراغ خاموش است ، هیچ حرکتی تشخیص داده نمی شود" است.
- خروجی ها: bin = "0000" و td = 0.
- در صورت تایمر = 1 به حالت "seg 10" می رود.
مرحله 3: جداول حقیقت ماشین ، معادلات تحریک و معادلات خروجی
گام بعدی ایجاد جداول حقیقت برای دو ماشین حالت و معادلات تحریک و معادلات خروجی برای هر fsm است. برای هر معادله تحریک fsm ، باید معادلاتی برای هر بیت بعدی رمزگذاری شده از نظر وضعیت فعلی و سیگنال های ورودی آن وجود داشته باشد. برای هر معادله خروجی fsm ، باید معادلاتی برای هر سیگنال خروجی از نظر وضعیت فعلی وجود داشته باشد. هر چهار مجموعه معادلات را می توان از جداول حقیقت به تصویر کشیده شده استخراج کرد. (qn بیت بعدی برای هر ماشین حالت رمزگذاری شده است و q حالت فعلی است)
(000) معادل q (2) 'q (1)' q (0) '، و (0000) معادل q (3)' q (2) 'q (1)' q (0) '
(مثال (0101) q (3) 'q (2) q (1)' q (0) و (110) q (2) q (1) q (0) ') است
معادلات تحریک برای fsm اصلی:
- qn (2) = (ms) '(ns)
- qn (1) = (ms) '(ns)' + (ms) (orx) '[(td) (001) + (010)] + (ms) [(011) + (100)]
- qn (0) = (ms) '(ns)' + (ms) (orx) '[(000) + (td)' (001)]
معادلات خروجی برای fsm اصلی:
- چراغ = (000) + (001) + (100)
- تایمر = (001)
معادلات تحریک برای شمارنده پایین fsm:
- qn (3) = t [(0000) + (1010) + (1001) + (0001)]
- qn (2) = t [(1000) + (0111) + (0110) + (0101) + (0001)]
- qn (1) = t [(0000) + (1000) + (0111) + (0100) + (0011) + (0001)]
- qn (0) = t [(1010) + (1000) + (0110) + (0100) + (0010) + (0001)]
معادلات خروجی fsm شمارنده پایین:
- td = (1111)
- بن (3) = (1010) + (1001) + (1000) + (1111) + (0000)
- بن (2) = (0111) + (0110) + (0101) + (0100) + (1111) + (0000)
- بن (1) = (1010) + (0111) + (0110) + (0011) + (0010) + (1111) + (0000)
- بن (0) = (1001) + (0111) + (0101) + (0011) + (0001) + (1111) + (0000)
مرحله 4: بسته بندی ، زیرمجموعه و محدودیت
همانطور که قبلاً در مرحله 1 توضیح داده شد ، این ماژول ها برای این پروژه مورد نیاز است و همه آنها با ماژول wrapper با عنوان "final_proj.vhd" به هم گره خورده اند. فایل محدودیتی با عنوان "Basys3_Master.xdc" برای پیوند دادن همه ورودی ها و خروجی های بسته بندی به سوئیچ ها ، هفت بخش و پورت های ورودی/خروجی روی برد Basys 3 استفاده می شود. سوئیچ اصلی باید سوئیچ روی برد نزدیک به سیمی باشد که سیم روشن است ، سوئیچ معمولی/دستی دومین نزدیکترین سوئیچ است و سه سوئیچ که نشان دهنده سه سنسور حرکت هستند ، سه سوئیچ بلافاصله در کنار سوئیچ عادی/دستی هستند. به همه کد ها (معادلات بولی ، اعلانات ماژول و غیره) قبلاً در پرونده ها نوشته شده است ، بنابراین لازم نیست چیز دیگری بنویسید تا این کار انجام شود.
مرحله 5: پورت های ورودی/خروجی برای LED
آخرین مرحله برای این پروژه استفاده از led برای نشان دادن روشن یا خاموش شدن (چراغ ها) واقع است. سیم کشی در دو تصویر نشان داده شده است. مطمئن شوید که یک سری به صورت سری با led (حداقل 330 اهم) وجود داشته باشد تا led را نسوزاند و مطمئن شوید که پین بلند led به همان سرصفحه زن روی صفحه پایه متصل شده است ، همانطور که سیم قرمز نشان داده شده است (بالا سمت راست) و پین کوتاهتر به زمین متصل می شود ، همان سربرگ زن سیم سیاه نشان داده شده (بالا ، دوم از سمت چپ).
توصیه شده:
مرحله به مرحله ساخت کامپیوتر: 9 مرحله
گام به گام ساخت کامپیوتر: لوازم: سخت افزار: مادربرد CPU & amp؛ CPU coolerPSU (منبع تغذیه) ذخیره سازی (HDD/SSD) RAMGPU (لازم نیست) مورد ابزار: پیچ گوشتی دستبند ESD/خمیر ماتریسمی با اپلیکاتور
سه مدار بلندگو -- آموزش مرحله به مرحله: 3 مرحله
سه مدار بلندگو || آموزش گام به گام: مدار بلندگو سیگنال های صوتی دریافت شده از محیط را بر روی MIC تقویت می کند و از محل تولید صدای تقویت شده به بلندگو ارسال می کند. در اینجا ، من سه روش مختلف برای ساخت این مدار بلندگو با استفاده از موارد زیر را به شما نشان خواهم داد
مرحله به مرحله اتوماسیون خانگی با استفاده از Wemos D1 Mini با طراحی PCB: 4 مرحله
گام به گام اتوماسیون خانگی با استفاده از Wemos D1 Mini با طراحی PCB: اتوماسیون خانگی گام به گام با استفاده از Wemos D1 Mini با طراحی PCB چند هفته قبل ما آموزش "اتوماسیون خانگی با استفاده از تمشک پای" را در rootaid.com منتشر کردیم که مورد استقبال علاقه مندان و علاقه مندان قرار گرفت. دانشجو. سپس یکی از اعضای ما آمد
نصب Smapler V0002 مرحله به مرحله: 5 مرحله
نصب Smapler V0002 گام به گام: Smapler یک مدار است که به تولید صدای مولد توسط David Cuartielles و Ino Schlaucher از BlushingBoy.org اختصاص داده شده است. Smapler v0002 - نسخه آاکا سنگاپور - چیزی نیست جز سپر آردوینو که برای بازی استری بد بو استفاده می شود
نصب Smapler V0001r2 مرحله به مرحله: 3 مرحله
نصب Smapler V0001r2 مرحله به مرحله: این یک راهنمای عکاسی برای نصب Smapler v0001r2 است. این یک مدار مستقل سازگار با آردوینو با اتصال کارت SD داخلی ، اتصال PS2 برای ماوس/صفحه کلید ، تقویت کننده صدا و تعدادی پین I/O برای سنسورها است. با آن شما