جدول المحتويات:
- الخطوة 1: مخطط الصندوق الأسود
- الخطوة 2: آلات الدولة
- الخطوة 3: حدد جداول الحقيقة الآلية ومعادلات الإثارة ومعادلات الإخراج
- الخطوة 4: الغلاف ، الوحدات الفرعية ، والقيد
- الخطوة 5: منافذ الإدخال / الإخراج لـ LED
فيديو: L I G H T S: 5 خطوات
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:41
كان الغرض من هذا المشروع النهائي هو إنشاء شيء من شأنه التركيز على الاستدامة وتنفيذ مفاهيم التصميم الرقمي ، وللقيام بذلك ، قررت تصميم نظام توفير طاقة قابل للتطوير باستخدام vhdl ومصمم للوحة Basys 3 (Artix-7 35T series)). قابلة للتطوير لأن أي عدد من أجهزة الاستشعار يمكن وضعها في غرفة وأي عدد من هذه الأنظمة يمكن وضعها حول مبنى أو منزل. ما سيفعله هذا النظام هو توفير آلاف الدولارات نظريًا في المباني التجارية وتقليل نسبة كبيرة من استهلاك الطاقة في المجتمعات السكنية الأصغر من خلال تنفيذ نظام متصل من الأضواء التي يتم التحكم فيها بشكل فعال وسلبي ، وكاشفات الحركة ، وأجهزة ضبط الوقت المعروضة على سبع شاشات عرض مقطعية ، و مفاتيح التحكم. يتعامل هذا المثال مع نظام واحد مع ثلاثة أجهزة كشف للحركة ، ومفتاح رئيسي ، ومفتاح يدوي / عادي ، وأربعة شاشات بسبعة مقاطع ، ومصباح واحد يتحكم فيه النظام.
على سبيل المثال ، في غرفة مُختارة ، سيتم وضع العديد من أجهزة كشف الحركة حولها (يحتوي هذا المثال على ثلاثة أجهزة) ، وكل منها يرسل إشارة (1) إذا اكتشف الحركة ، و (0) إذا لم يحدث ذلك. إذا اكتشف واحد على الأقل من أجهزة كشف الحركة الحركة ، فإن الأضواء تضيء إذا لم تكن مضاءة بالفعل وتظل مضاءة بالفعل. في أي وقت لا تكتشف جميع أجهزة الكشف عن الحركة أي شيء ، يبدأ الموقت في العد التنازلي لفترة زمنية محددة (قابلة للتعديل في الشفرة) ، وتظل الأضواء مضاءة أثناء العد التنازلي للمؤقت. بمجرد انتهاء العد التنازلي ، يتوقف المؤقت ، وتنطفئ الأضواء. إذا اكتشف كاشف حركة واحد على الأقل حركة أثناء العد التنازلي للمؤقت ، يتوقف المؤقت ويعيد التعيين. وإذا اكتشف كاشف حركة واحد على الأقل حركة أثناء إطفاء الأضواء ، تضيء الأضواء على الفور.
يحتوي هذا النظام على وضعين ، أحدهما مع المؤقت كما هو مذكور أعلاه ، والآخر حيث يوجد مفتاح يتحكم في الأضواء يدويًا (تجاهل المستشعرات). هناك مفتاح رئيسي يسمح للمستخدم باختيار الوضع الذي يريد استخدامه بناءً على الوضع الذي يشعر أنه سيوفر المزيد من الطاقة بشكل عام. السابق. يمكن أن تستفيد غرفة مثل الرواق من وضع المؤقت السلبي - فالمستخدمون ليسوا متأكدين من موعد مرور الأشخاص ، ولكن تشغيل وإطفاء الأنوار في كل مرة يدخلون ويغادرون فيها سيكون أمرًا مزعجًا ، في حين أن وجود غرفة مثل كغرفة نوم مع مستخدم واحد سيكون من الأفضل تشغيلها يدويًا. وسيكون المفتاح الرئيسي مفيدًا في حالات مثل إذا كان الشخص الذي يعيش في غرفة النوم سيغادر لفترة طويلة من الوقت ، فيمكن إيقاف تشغيل المفتاح الرئيسي ، وسيعمل وضع المؤقت على توفير الطاقة بشكل أكثر كفاءة.
لذلك في هذا النظام ، هناك نوعان من آلات الحالة ، أحدهما هو آلة الحالة الرئيسية والآخر لمؤقت العد التنازلي. تحتوي آلة الحالة الرئيسية على خمس حالات محددة على النحو التالي: 1. "الأضواء مضاءة ، تم اكتشاف الحركة" (المعرف = 000) ، 2. "الأضواء مضاءة ، لم يتم اكتشاف حركة" (المعرف = 001) ، 3. "الأنوار ، لا توجد حركة تم اكتشاف "(id = 010) ، 4." تم تشغيله يدويًا "(id = 011) ، و 5." تم إيقاف تشغيله يدويًا "(id = 100). تحتوي آلة الحالة الرئيسية هذه على أربعة مدخلات: المفتاح الرئيسي (مللي ثانية) ، والمفتاح اليدوي / العادي (ns) ، والإشارة التي تكون عالية عندما يكتشف مفتاح واحد على الأقل الحركة ، وتكون منخفضة بخلاف ذلك (orx) ، والإشارة التي تكون مرتفع بمجرد انتهاء الموقت ، ويكون منخفضًا على خلاف ذلك (TD). تحتوي آلة الحالة الرئيسية على ناتجين: الأضواء (الأضواء) وإشارة تشير إلى وقت تشغيل مؤقت العد التنازلي (المؤقت) أو (t) (يتم استخدام كلاهما بالتبادل).
آلة الحالة الثانية ، مؤقت العد التنازلي ، بها 12 حالة: 10 منها بها معرفات مرتبطة بالرقم الذي تعرضه الأجزاء السبعة - "seg 10" (id = 1010) ، "seg 9" (id = 1001) ، […] ، و "seg 2" (id = 0010) ، و "seg 1" (id = 0001) ، والحالتان الأخريان تعرضان صفرًا ، مما يمثل إيقاف تشغيل المؤقت - لذلك هناك أول فارغ "فارغ 1" (المعرف = 1111) والفارغ الثاني "فارغ 2" (المعرف = 0000). يحتوي مؤقت العد التنازلي على مدخل واحد: المؤقت (t) ، وثلاثة مخرجات: الرقم المعروض في ثنائي بأربع بتات (حاوية) وإشارة تشير إلى أن الموقت قد انتهى (td).
الخطوة 1: مخطط الصندوق الأسود
هذه نظرة عامة على الكيفية التي من المفترض أن يعمل بها النظام بأكمله ، وهي موصوفة بمخطط الصندوق الأسود.
- تُستخدم الساعة لتسجيل آلة الحالة الرئيسية ووحدة فك التشفير ذات الأجزاء السبعة ؛ هناك حاجة إلى ساعة أبطأ للعداد السفلي ، لذلك هناك وحدة مقسم ساعة تأخذ مدخلات الساعة وتخرج ساعة أبطأ للعداد السفلي.
- المتغير الوسيط (orx) في الغلاف مرتبط بأجهزة استشعار الحركة وسيكون مرتفعًا إذا اكتشف أحد المستشعرات على الأقل شيئًا ما ، ومنخفضًا بخلاف ذلك ؛ المعادلة المنطقية لذلك هي فقط orx = s (2) أو s (1) أو s (0).
-
يتحكم fsm الرئيسي في الحالة العامة للنظام ، اعتمادًا على المدخلات (orx ، ms ، ns ، td) ويخرج الحالة الحالية (sm) الموضحة بشكل مبسط مع الإشارتين المستخدمتين (المؤقت والأضواء).
- (مؤقت) عبارة عن إشارة مغلفة يتم إرسالها إلى عداد الأسفل fsm كمدخل لها ويتم التحكم فيها من خلال الحالة الحالية لـ fsm. يشير إلى وقت تشغيل المؤقت.
- (الأضواء) عبارة عن إشارة مغلفة تستخدم للتحكم في الصمام ويتم التحكم فيها من خلال الحالة الحالية لـ fsm.
-
يتحكم العداد السفلي fsm في ما يعرضه المقطع السبعة اعتمادًا على الإدخال (المؤقت) ويخرج الحالة الحالية الموجودة فيه (sd) الموضحة بشكل مبسط مع الإشارتين المستخدمتين لـ (td و bin).
- (td) عبارة عن إشارة مجمعة يتم إرسالها إلى fsm الرئيسي كمدخل لها ويتم التحكم فيها بواسطة الحالة الحالية لـ fsm للعداد السفلي. يعمل كإشارة تغذية مرتدة تشير إلى وقت انتهاء المؤقت.
- (bin) عبارة عن إشارة مجمعة من أربع بتات متسلسلة بأربعة بتات من الصفر ("0000" & bin) ويتم إرسال البتات الثمانية المدمجة إلى (q) ، وهي إشارة مجمعة من ثماني بتات ، والتي يتم إرسالها بدورها إلى السبعة وحدة فك الشفرة تحت (ALU_VAL).
-
وحدة الأجزاء السبعة هي نفسها الموجودة في Polylearn ؛ تأخذ مدخلاتها الرئيسية رقمًا 8 بت (حاوية) إلى (ALU_VAL) لعرضها على أربعة شاشات مختلفة من سبعة أجزاء باستخدام المخرجات (SEGMENTS) لإشارة الغلاف (SEG) و (DISP_EN) إلى المجمع (disp_en).
- نظرًا لأن عرضين أو أكثر من سبعة مقاطع لا يمكن أن يعرضوا أرقامًا مختلفة في نفس الوقت ، فإن هناك حاجة إلى ساعة للتنقل عبر ssegs الأربعة ، وعرض الرقم المناسب في وقت واحد لكل sseg يتم تشغيله على حدة ، وركوب الدراجات بسرعة كافية يجعل يبدو أن ssegs في جميع مرة واحدة.
- (تسجيل وصالح) ثابتان طوال هذا البرنامج ، لذلك (تسجيل) يتم تعيينه منخفضًا بشكل دائم و (صالح) يتم تعيينه مرتفعًا بشكل دائم.
- تأخذ (ALU_VAL) إشارة الغلاف (q) كمدخل ، والتي تمثل الرقم الذي سيتم عرضه على شاشة العرض السبعة بالثنائي.
- يتم إرسال الإخراج (SEGMENTS) إلى إشارة غلاف ثمانية بت (seg) و (DISP_EN) إلى إشارة غلاف مكونة من أربع بتات (disp_en).
-
هناك أيضًا وحدة D flip flop غير معروضة بشكل صريح في الرسم التخطيطي ولكنها ضرورية للآلات ذات الحالتين كوحدات فرعية وتساعد ترانزستيون الحالات بشكل متزامن.
- (3) من هذه مطلوبة من أجل fsm الرئيسي منذ 2 ^ (3) = 8> 5 حالات للتشفير
- (4) منها مطلوبة للعداد السفلي fsm منذ 2 ^ 4 = 16> 12 حالة للتشفير
الخطوة 2: آلات الدولة
لتصميم آلات الحالتين بشكل صحيح ، يجب تحديد الحالات الفردية بوضوح ، بمخرجاتها والحالة التي تنتقل إليها بناءً على المدخلات المختلفة الممكنة.
حالات FSM الرئيسية:
"الأضواء مضاءة ، تم الكشف عن الحركة" (المعرف = 000)
الأضواء مضاءة ، على الأقل يكتشف أحد أجهزة كشف الحركة الحركة ، لذلك يجب أن يكون orx مرتفعًا ويتم تشغيل ms.
- المخرجات: الأضواء = 1 والمؤقت = 0
- تظل هذه الحالة عندما تكون ms = 1 و orx = 1.
- يذهب إلى الحالة "الأضواء مضاءة ، لم يتم الكشف عن الحركة" إذا كانت ms = 1 و orx = 0.
- يذهب إلى الحالة "تم تشغيله يدويًا" إذا كانت ms = 0 و ns = 1.
- يذهب إلى الحالة "تم إيقاف التشغيل يدويًا" إذا كانت ms = 0 و ns = 0.
"الأضواء مضاءة ، لم يتم الكشف عن أي حركة" (المعرف = 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.
"أضواء مطفأة ، لم يتم اكتشاف حركة" (المعرف = 010)
الأضواء مطفأة ، ولم يتم الكشف عن أي حركة من أي مستشعر للحركة وانتهى المؤقت من العد التنازلي ، لذلك يجب أن يكون orx منخفضًا ، ويتم تشغيل ms ، ويتم إيقاف تشغيل td.
- المخرجات: الأضواء = 0 والمؤقت = 0.
- تظل هذه الحالة عندما تكون ms = 1 و orx = 0.
- يذهب إلى الحالة "الأضواء مضاءة ، تم اكتشاف الحركة" إذا كانت ms = 1 و orx = 1.
- يذهب إلى الحالة "تم تشغيله يدويًا" إذا كانت ms = 0 و ns = 1.
- يذهب إلى الحالة "تم إيقاف التشغيل يدويًا" إذا كانت ms = 0 و ns = 0.
"تم تشغيله يدويًا" (المعرف = 011)
الأضواء مضاءة ، وكاشفات الحركة غير ذات صلة ، لذا تم إيقاف ms ، و ns قيد التشغيل.
- المخرجات: الأضواء = 1 والمؤقت = 0.
- تظل هذه الحالة عندما تكون ms = 0 و ns = 1.
- يذهب إلى الحالة "تم إيقاف التشغيل يدويًا" إذا كانت ms = 0 و ns = 0.
- يذهب إلى الحالة "الأنوار مطفأة ، ولم يتم اكتشاف أي حركة إذا كانت مللي ثانية = 1.
"مغلق يدويًا" (المعرف = 100)
الأضواء مطفأة ، وكاشفات الحركة غير ذات صلة ، لذلك تم إيقاف ms ، وإيقاف تشغيل ns.
- المخرجات: الأضواء = 0 والمؤقت = 0.
- تظل هذه الحالة عندما تكون ms = 0 و ns = 0.
- يذهب إلى الحالة "تم تشغيله يدويًا" إذا كانت ms = 0 و ns = 1.
- يذهب إلى الحالة "الأنوار مطفأة ، ولم يتم اكتشاف أي حركة إذا كانت مللي ثانية = 1.
الدول العداد لأسفل:
"Seg 10" (المعرف = 1010)
تعرض الشاشة المكونة من سبعة أجزاء أ 10.
- المخرجات: bin = "1010" و td = 0.
- يذهب إلى الحالة "seg 9" إذا كان المؤقت = 1.
- يذهب إلى الحالة "فارغ 2" إذا كان المؤقت = 0.
"Seg 9" (المعرف = 1001)
تعرض الشاشة ذات الأجزاء السبعة أ 9.
- المخرجات: bin = "1001" و td = 0.
- يذهب إلى الحالة "seg 8" إذا كان المؤقت = 1.
- يذهب إلى الحالة "فارغ 2" إذا كان المؤقت = 0.
(تم حذف الحالات "Seg 8" وصولاً إلى "Seg 2" لأنها تتبع نفس النمط مثل "Seg 10" و "Seg 9" وليست ضرورية للتوضيح)
"المقطع 1" (المعرف = 0001)
تعرض الشاشة ذات الأجزاء السبعة أ 1.
- المخرجات: bin = "0001" و td = 0.
- يذهب إلى الحالة "فارغ 2" على الحافة الصاعدة التالية للساعة (لا حاجة إلى إدخال).
"فارغ 2" (المعرف = 1111)
تعرض الشاشة ذات الأجزاء السبعة القيمة 0. والغرض من الحالة الفارغة الثانية هو أن تكون هناك حالة منفصلة عندما تكون td = 1 للسلامة.
- المخرجات: bin = "1111" و td = 1.
- يذهب إلى الحالة "فارغ 1" على الحافة الصاعدة التالية للساعة (لا حاجة إلى إدخال).
"فارغ 1" (المعرف = 0000)
تعرض الشاشة ذات الأجزاء السبعة الرقم 0. هذه هي الحالة التي يبقى فيها النظام عندما تكون آلة الحالة الرئيسية في حالة "إطفاء الأنوار ، ولم يتم اكتشاف حركة".
- المخرجات: bin = "0000" و td = 0.
- يذهب إلى الحالة "seg 10" إذا كان المؤقت = 1.
الخطوة 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) = (مللي ثانية) '(ns)
- qn (1) = (مللي ثانية) '(ns)' + (مللي ثانية) (orx) '[(td) (001) + (010)] + (مللي ثانية) [(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:
- الدفتيريا = (1111)
- بن (3) = (1010) + (1001) + (1000) + (1111) + (0000)
- بن (2) = (0111) + (0110) + (0101) + (0100) + (1111) + (0000)
- bin (1) = (1010) + (0111) + (0110) + (0011) + (0010) + (1111) + (0000)
- bin (0) = (1001) + (0111) + (0101) + (0011) + (0001) + (1111) + (0000)
الخطوة 4: الغلاف ، الوحدات الفرعية ، والقيد
كما هو موضح بالفعل في الخطوة 1 ، هذه الوحدات مطلوبة لهذا المشروع وكلها مرتبطة مع وحدة الغلاف التي تحمل عنوان "final_proj.vhd". يتم استخدام ملف القيد المسمى "Basys3_Master.xdc" لربط جميع مدخلات ومخرجات الغلاف بالمفاتيح والمقاطع السبعة ومنافذ الإدخال / الإخراج على لوحة Basys 3. يجب أن يكون المفتاح الرئيسي هو المفتاح الموجود على اللوحة الأقرب إلى الجانب الذي تكون فيه الأسلاك قيد التشغيل ، والمفتاح العادي / اليدوي هو ثاني أقرب مفتاح ، والمفاتيح الثلاثة التي تمثل مستشعرات الحركة الثلاثة هي المفاتيح الثلاثة الموجودة مباشرة بجوار المفتاح العادي / اليدوي. تمت كتابة جميع الشفرات (المعادلات المنطقية ، وإعلانات الوحدة ، وما إلى ذلك) بالفعل في الملفات ، لذلك لا يتعين عليك كتابة أي شيء آخر لإنجاز هذا العمل.
الخطوة 5: منافذ الإدخال / الإخراج لـ LED
تتمثل الخطوة الأخيرة لهذا المشروع في استخدام مؤشر لإظهار ما إذا كانت (الأضواء) تعمل أم لا. يظهر الأسلاك في الصورتين. تأكد من وجود المقاوم في سلسلة مع الصمام (على الأقل 330 أوم) حتى لا تحترق المصباح وتأكد من توصيل دبوس الصمام الطويل بنفس الرأس الأنثوي على اللوحة الأساسية كما يظهر السلك الأحمر (أعلى أقصى اليمين) والدبوس الأقصر متصل بالأرض ، نفس رأس الأنثى مثل السلك الأسود الموضح (أعلى ، ثانيًا من اليسار).
موصى به:
تصميم اللعبة في فليك في 5 خطوات: 5 خطوات
تصميم اللعبة في Flick in 5 Steps: Flick هي طريقة بسيطة حقًا لصنع لعبة ، لا سيما شيء مثل الألغاز أو الرواية المرئية أو لعبة المغامرة
نظام اردوينو لتنبيه وقوف السيارة عند الرجوع للخلف - خطوات خطوة: 4 خطوات
نظام اردوينو لتنبيه وقوف السيارة عند الرجوع للخلف | خطوات بخطوة: في هذا المشروع ، سأصمم دائرة مستشعر لعكس مواقف السيارات من Arduino باستخدام مستشعر الموجات فوق الصوتية Arduino UNO و HC-SR04. يمكن استخدام نظام التنبيه العكسي للسيارة المستند إلى Arduino للتنقل الذاتي ومجموعة الروبوتات وغيرها من النطاقات
اكتشاف الوجه على Raspberry Pi 4B في 3 خطوات: 3 خطوات
اكتشاف الوجه على Raspberry Pi 4B في 3 خطوات: في هذا Instructable سنقوم باكتشاف الوجه على Raspberry Pi 4 باستخدام Shunya O / S باستخدام مكتبة Shunyaface. Shunyaface هي مكتبة للتعرف على الوجوه / الكشف عنها. يهدف المشروع إلى تحقيق أسرع سرعة في الكشف والتعرف مع
كيف تصنع عداد خطوات؟: 3 خطوات (بالصور)
How to Make Step Counter؟: اعتدت أن أؤدي أداءً جيدًا في العديد من الرياضات: المشي والجري وركوب الدراجة ولعب كرة الريشة وما إلى ذلك ، أحب ركوب الخيل للسفر في وقت قريب. حسنًا ، انظر إلى بطني المنتفخ … حسنًا ، على أي حال ، قررت إعادة التمرين. ما هي المعدات التي يجب أن أحضرها؟
Arduino Halloween Edition - شاشة زومبي المنبثقة (خطوات بالصور): 6 خطوات
Arduino Halloween Edition - شاشة زومبي المنبثقة (خطوات بالصور): هل تريد تخويف أصدقائك وإحداث بعض ضوضاء الصراخ في عيد الهالوين؟ أو تريد فقط عمل مزحة جيدة؟ يمكن لشاشة الزومبي المنبثقة القيام بذلك! في هذا Instructable ، سوف أعلمك كيفية جعل زومبي القفز للخارج بسهولة باستخدام Arduino. HC-SR0