فهرست مطالب:
- مرحله 1: جعبه سیاه سیستم
- مرحله 2: اجزاء
- مرحله 3: D Flip-Flops
- مرحله 4: مشروط
- مرحله 5: محدودیت ها
- مرحله 6: فایل منبع اصلی
- مرحله 7: مونتاژ
- مرحله 8: بارگیری برنامه
تصویری: چراغ های خیابانی فعال شده با انرژی کارآمد: 8 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:54
هدف ما از این پروژه ایجاد چیزی بود که باعث صرفه جویی در انرژی و منابع مالی جوامع شود. چراغ های خیابانی فعال شده با حرکت هر دو کار را انجام می دهند. در سراسر کشور انرژی در چراغ های خیابانی که خیابان های خالی را روشن می کنند هدر می رود. سیستم چراغ خیابانی ما تضمین می کند که چراغ ها فقط در مواقع مورد نیاز روشن می شوند و باعث صرفه جویی در هزینه های بیشمار برای جوامع می شوند. با استفاده از سنسورهای حرکتی ، چراغها تنها در مواقع حضور خودروها روشن می شوند. همچنین برای ایمنی عابران پیاده ، ما یک دکمه لغو را اجرا کردیم که تمام چراغ های خیابان را روشن می کند. مراحل زیر به شما نشان می دهد که چگونه ما مدل کوچک پروژه خود را با استفاده از Vivado و تخته Basys 3 طراحی و ساخته ایم.
مرحله 1: جعبه سیاه سیستم
ما این پروژه را با ترسیم نمودار جعبه سیاه ساده آغاز کردیم. نمودار جعبه سیاه به سادگی ورودی ها و خروجی هایی را نشان می دهد که سیستم ما برای تکمیل کلیه فرایندهای لازم نیاز دارد. ما سعی کردیم طراحی خود را تا حد امکان ساده و اساسی نگه داریم. سه ورودی سیستم ما شامل یک گذرگاه سنسورهای حرکت (4 برای مدل کوچک شده ما) ، یک دکمه لغو عابر پیاده و ورودی ساعت بود. در طرف دیگر خروجی واحد ما یک اتوبوس از چراغ های LED است که چراغ های خیابان ما را نشان می دهد. برای این مدل ما از سناریوی 16 چراغ خیابانی استفاده کردیم فقط به این دلیل که حداکثر تعداد خروجی LED در برد Basys 3 است. در نهایت ، با استفاده از این نمودار ما توانستیم پروژه ، منبع و فایلهای محدودیت Vivado خود را با ورودی و خروجی مناسب ایجاد کنیم.
مرحله 2: اجزاء
در این مرحله ما با بررسی اجزای تشکیل دهنده نمودار جعبه سیاه خود عمیق تر وارد می شویم. اولین جزء ما یک فایل منبع VHDL است که شامل فلیپ فلاپ های D است. فلیپ فلاپ های D به سادگی هرگونه سیگنالی را که از سنسورهای لبه رو به افزایش ساعت به آنها وارد می شود ، گرفته و این داده ها را تا لبه بالارونده بعدی قفل می کند. این باعث می شود که حسگرهای حرکت حساس ما مانع از سوسو زدن LED های خروجی شوند. همچنین ، ما یک فلیپ فلاپ D تک روی سیگنال ورودی دکمه قرار می دهیم تا بعد از فشار دادن دکمه ، LED ها حدود 5-7 ثانیه روشن بمانند. ما همچنین این را از طریق تقسیم ساعت انجام دادیم.
موجودیت clk_div2 Port است (clk: در std_logic ؛ sclk: out std_logic) ؛ پایان clk_div2؛
معماری my_clk_div از clk_div2 است
max_count ثابت: عدد صحیح: = (300000000) ؛ سیگنال tmp_clk: std_logic: = '0'؛ begin my_div: process (clk، tmp_clk) متغیر div_cnt: integer: = 0؛ اگر (افزایش_دانه (clk)) سپس if (div_cnt = MAX_COUNT) سپس tmp_clk <= نه tmp_clk؛ div_cnt: = 0؛ else div_cnt: = div_cnt + 1؛ پایان اگر؛ پایان اگر؛ sclk <= tmp_clk؛ پایان روند my_div؛ پایان my_clk_div؛
جزء نهایی ما در این نمودار یک فایل منبع VHDL رفتاری است که شامل شرطی برای خروجی ها بر اساس پیکربندی سیگنال های ورودی است.
مرحله 3: D Flip-Flops
چهار فلیپ فلاپ متصل به سیگنال های ورودی برای عملکرد سیستم ما ضروری هستند. همانطور که قبلاً گفته شد ، با سنسورهای حرکت حساس و یک دکمه لغو ، فلیپ فلاپ ها از قفل ها برای خروجی سیگنال ورودی ما فقط در لبه رو به بالا ساعت استفاده می کنند. این منطق پی در پی به این معناست که چراغ های خیابان ما می توانند برای مدت زمان مشخصی پس از فعال شدن با حرکت سریع روشن بمانند. کدگذاری برای D-Flip Flop بسیار ساده است:
beginprocess (CLK) در صورت افزایش_په (CLK) و سپس Q <= D؛ پایان اگر؛ پایان فرایند ؛
کل مورد را می توان در یک دستور if کامپایل کرد. هنگامی که این قطعه را در اختیار داشتیم ، یک فایل منبع ساختاری VHDL ایجاد کردیم که شامل هر چهار فلیپ فلاپ ضروری ما بود:
شروع DFF0: نقشه پورت DFF (CLK => CLK ، D => D (0) ، Q => Q (0)) ؛ DFF1: نقشه پورت DFF (CLK => CLK ، D => D (1) ، Q => Q (1)) ؛ DFF2: نقشه پورت DFF (CLK => CLK ، D => D (2) ، Q => Q (2)) ؛ DFF3: نقشه پورت DFF (CLK => CLK ، D => D (3) ، Q => Q (3)) ؛
پایان دادن به رفتار ؛
این به حفظ ساختار اصلی فایل ما کمک می کند که در آن همه اجزای سیستم را بسیار تمیز و منظم گرد هم می آوریم.
مرحله 4: مشروط
برای اینکه کد ما فشرده و کارآمد باشد ، همه شرط های خود را در یک عبارت واحد نوشتیم. برای مدل کوچک شده ما ، 16 پیکربندی خروجی LED ممکن را داشتیم زیرا هر سنسور حرکت مسئول گروهی از 4 LED است.:
مورد NMS زمانی است که "1111" => LED LED LED LED LED LED LED LED LED LED LED <= "111111111111111111"؛ مورد نهایی ؛
مرحله 5: محدودیت ها
برای اینکه بتوانید ورودی و خروجی خود را با استفاده از Vivado به درستی بیان کنید ، باید یک فایل محدودیت را اجرا کنید که تمام پورت ها ، دکمه ها ، LED ها و ساعت های مورد استفاده را مشخص می کند.
set_property PACKAGE_PIN W5 [get_ports CLK] set_property IOSTANDARD LVCMOS33 [get_ports CLK]
set_property PACKAGE_PIN U16 [دریافت_پورتها {LED [0]}] set_property IOSTANDARD LVCMOS33 [دریافت_پورتها {LED [0]}] set_property PACKAGE_PIN E19 [دریافت_پورتها {LED [1]}] set_property IOSTANDARD LVCMOS33 [دریافت] پورت {LED} U19 [دریافت_پورت {LED [2]}] set_property IOSTANDARD LVCMOS33 [دریافت_پورت {LED [2]}] set_property PACKAGE_PIN V19 [دریافت_پورت {LED [3]}] set_property IOSTANDARD LVCMOS33 [دریافت_پورت {LED [3]}] set_property PAC get_ports {LED [4]}] set_property IOSTANDARD LVCMOS33 [دریافت_پورت {LED [4]}] set_property PACKAGE_PIN U15 [دریافت_پورتها {LED [5]}] set_property IOSTANDARD LVCMOS33 [دریافت_پورتها {LED [5]}] set_property PACKAGE LED [6]}] set_property IOSTANDARD LVCMOS33 [دریافت_پورت {LED [6]}] set_property PACKAGE_PIN V14 [دریافت_پورت {LED [7]}] set_property IOSTANDARD LVCMOS33 [دریافت_پورت {LED [7]}] set_property PACKAGE_PIN V13 [8]}] set_property IOSTANDARD LVCMOS33 [دریافت_پورت {LED [8]}] set_property PACKAGE_PIN V3 [دریافت_پورت {LED [9]}] set_property IO STANDARD LVCMOS33 [دریافت_پورتها {LED [9]}] set_property PACKAGE_PIN W3 [get_ports {LED [10]}] set_property IOSTANDARD LVCMOS33 [دریافت_پورتها {LED [10]}] set_property PACKAGE_PIN U3 [دریافت_پورتها] IOS_ARD [LED] [get_ports {LED [11]}] set_property PACKAGE_PIN P3 [get_ports {LED [12]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED [12]}] set_property PACKAGE_PIN N3 [get_ports {LED [13]}] set_property IOSTANDARD {LED [13]}] set_property PACKAGE_PIN P1 [دریافت_پورت {LED [14]}] set_property IOSTANDARD LVCMOS33 [دریافت_پورت {LED [14]}] set_property PACKAGE_PIN L1 [دریافت_پورت ها {LED [15]}] set_property IOSTANDARD LVCMOS [15]}]
set_property PACKAGE_PIN U18 [get_ports BTN] set_property IOSTANDARD LVCMOS33 [دریافت_پورت BTN]
set_property PACKAGE_PIN A14 [get_ports {MS [0]}] set_property IOSTANDARD LVCMOS33 [get_ports {MS [0]}] set_property PACKAGE_PIN A16 [get_ports {MS [1]}] set_property IOSTANDARD LVCMOS33 [دریافت] پورت {sp} B15 [get_ports {MS [2]}] set_property IOSTANDARD LVCMOS33 [get_ports {MS [2]}] set_property PACKAGE_PIN B16 [get_ports {MS [3]}] set_property IOSTANDARD LVCMOS33 [دریافت_پورت {MS [3]}]
مرحله 6: فایل منبع اصلی
در این فایل اصلی ما تمام فایلهای منبع جزء که قبلاً ذکر شد را گرد هم می آوریم. این فایل به عنوان کد ساختاری عمل می کند و اجزای مختلف را گرد هم می آورد.
موجودیت Master_Final_Project Port است (BTN: در STD_LOGIC ؛ CLK: در STD_LOGIC ؛ MS: در STD_LOGIC_VECTOR (3 پایین 0) ؛ LED: خروجی STD_LOGIC_VECTOR (15 پایین 0)) ؛ پایان دادن به پروژه اصلی_فینال ؛
معماری رفتار Master_Final_Project است
جزء final_project پورت است (--CLK: در STD_LOGIC ؛ NMS: در STD_LOGIC_VECTOR (3 پایین 0) ؛ BTN: در STD_LOGIC ؛-sw: در STD_LOGIC_Vector (1 پایین 0) ؛ LED: خروجی STD_LOGIC_V) جزء پایان ؛
جزء Final_DFF است
بندر (CLK: در STD_LOGIC ؛ D: در STD_LOGIC_Vector (3 پایین 0) ؛ Q: خارج STD_LOGIC_Vektor (3 پایین 0)) ؛ جزء پایان ؛
سیگنال DFF02proj30: STD_LOGIC؛
سیگنال DFF12proj74: STD_LOGIC؛ سیگنال DFF22proj118: STD_LOGIC؛ سیگنال DFF32proj1512: STD_LOGIC؛
شروع
DFF0: نقشه پورت Final_DFF (CLK => CLK ، D (0) => MS (0) ، D (1) => MS (1) ، D (2) => MS (2) ، D (3) => MS (3) ، Q (0) => DFF02proj30 ، Q (1) => DFF12proj74 ، Q (2) => DFF22proj118 ، Q (3) => DFF32proj1512) ؛ Proj0: نقشه پورت_پایان پروژه (NMS (0) => DFF02proj30 ، NMS (1) => DFF12proj74 ، NMS (2) => DFF22proj118 ، NMS (3) => DFF32proj1512 ، BTN => BTN ، LED => LED) ؛ پایان دادن به رفتار ؛
مرحله 7: مونتاژ
مونتاژ سخت افزاری این پروژه حداقل است. تنها قطعات مورد نیاز به شرح زیر است:
1. تخته Basys 3 (1)
2. سنسورهای حرکت ارزان که می توانید در آمازون در اینجا پیدا کنید. (4)
3. هدایت مرد به زن (4)
مونتاژ:
1. 4 سر نر را به درگاههای JB سربرگ PMod 1-4 وصل کنید (شکل را ببینید).
2. انتهای زن را به هر پین خروجی سنسور حرکت وصل کنید.
مرحله 8: بارگیری برنامه
اکنون آماده ایم که فایل اصلی منبع VHDL را در برد Basys 3 بارگذاری کنیم. اطمینان حاصل کنید که ترکیب ، پیاده سازی و ایجاد بررسی جریان بیت برای خطاهای احتمالی را انجام دهید. اگر همه با موفقیت اجرا شدند ، مدیر سخت افزار را باز کرده و دستگاه Basys 3 را برنامه ریزی کنید. پروژه شما اکنون به پایان رسیده است!
توصیه شده:
پیش تقویت کننده PA1 DIY Tube: به طور کارآمد با اجزای نجات یافته ساخته شده است: 13 مرحله
پیش تقویت کننده PA1 DIY Tube: به طور کارآمد با اجزای نجات یافته ساخته شده است: منابع زیادی در مورد ساخت پیش تقویت کننده لوله در وب و چاپ وجود دارد ، بنابراین فکر کردم چیزی متفاوت با شما به اشتراک می گذارم. این دستورالعمل ساخت یک پیش تقویت کننده لوله باز از طراحی من را پوشش می دهد و نه تنها این یک
LED های فعال شده با صدا: 8 مرحله
LED های فعال شده با صدا: Webduino از مرورگر اینترنتی Chrome برای کنترل انواع قطعات الکترونیکی استفاده می کند ، بنابراین ما باید بتوانیم از همه عملکردهای دیگری که Chrome ارائه می دهد استفاده کنیم. در این مثال پروژه از API گفتار Chrome استفاده خواهیم کرد. استفاده از تشخیص صدا گوگل
چراغ های حیاط تعاملی ، چراغ های راهرو: 3 مرحله
چراغ های حیاط تعاملی ، چراغ های راهرو: می خواستم نوعی چراغ حیاط تعاملی برای حیاط پشتی خود بسازم. ایده این بود که وقتی شخصی یک طرف راه می رود ، انیمیشنی را در مسیری که شما در حال حرکت آن هستید ایجاد می کند. من با چراغ های خورشیدی دلار 1.00 دلار شروع کردم
پرده های فعال شده آردوینو با صدا: 9 مرحله (همراه با تصاویر)
پرده های فعال سازی صدا با آردوینو: چندی پیش من یک دستورالعمل ساختم که در آن یک دستگاه سروو و بلوتوث را به قفل درب من اضافه کردم که به من اجازه می دهد آن را مانند یک معتاد با تلفن خود کنترل کنم ، فقط نمی توانم از اضافه کردن بلوتوث به وسایل جلوگیری کنم و بنابراین در این پروژه من من نحوه ساخت Blu را به شما نشان خواهم داد
چراغ های کریسمس DIY به موسیقی - چراغ های خانه رقصیده: 15 مرحله (همراه با تصاویر)
چراغ های کریسمس DIY به موسیقی تنظیم می شوند - چراغ های خانه رقصیده: چراغ های کریسمس DIY به موسیقی تنظیم می شوند - چراغ های خانه رقصیده این DIY مبتدی نیست. شما نیاز به درک قوی در زمینه الکترونیک ، گردش ، برنامه نویسی BASIC و اطلاعات عمومی در مورد ایمنی برق دارید. این DIY برای یک فرد با تجربه است بنابراین