Სარჩევი:

ენერგოეფექტური მოძრაობის გააქტიურებული ქუჩის განათება: 8 ნაბიჯი
ენერგოეფექტური მოძრაობის გააქტიურებული ქუჩის განათება: 8 ნაბიჯი

ვიდეო: ენერგოეფექტური მოძრაობის გააქტიურებული ქუჩის განათება: 8 ნაბიჯი

ვიდეო: ენერგოეფექტური მოძრაობის გააქტიურებული ქუჩის განათება: 8 ნაბიჯი
ვიდეო: ოზურგეთში ენერგოეფექტური სანათები დამონტაჟდება 2024, ივლისი
Anonim
ენერგოეფექტური მოძრაობის გააქტიურებული ქუჩის შუქები
ენერგოეფექტური მოძრაობის გააქტიურებული ქუჩის შუქები

ამ პროექტის მიზანს წარმოადგენდა ისეთი რამის შექმნა, რომელიც დაზოგავდა თემებს ენერგიასა და ფინანსურ რესურსებს. მოძრაობის გააქტიურებული ქუჩის განათება ორივე ამ საქმეს გააკეთებს. მთელს ერში ენერგია იხარჯება ქუჩების განათებაზე, რომელიც ანათებს ცარიელ ქუჩებს. ჩვენი ქუჩის შუქის სისტემა უზრუნველყოფს, რომ განათება მხოლოდ საჭიროების შემთხვევაში აინთოს, რაც დაზოგავს უამრავ დოლარს საზოგადოებისთვის. მოძრაობის სენსორების გამოყენებით, სისტემა ანათებს შუქებს მხოლოდ მაშინ, როდესაც მანქანები იმყოფებიან. ასევე ფეხით მოსიარულეთა უსაფრთხოების მიზნით, ჩვენ განვახორციელეთ გადახურვის ღილაკი, რომელიც ანათებს ყველა შუქს ქუჩაში. შემდეგი ნაბიჯები გაგიმხელთ, თუ როგორ შევქმენით და ავაშენეთ პროექტის ჩვენი შემცირებული მოდელი Vivado და Basys 3 დაფის გამოყენებით.

ნაბიჯი 1: სისტემის შავი ყუთი

სისტემა შავი ყუთი
სისტემა შავი ყუთი

ჩვენ დავიწყეთ ეს პროექტი მარტივი შავი ყუთის დიაგრამის დახატვით. შავი ყუთის დიაგრამა უბრალოდ გვიჩვენებს იმ შეყვანებსა და გამოსვლებს, რასაც ჩვენი სისტემა მოითხოვს ყველა საჭირო პროცესის დასასრულებლად. ჩვენ შევეცადეთ ჩვენი დიზაინი მაქსიმალურად მარტივი და ძირითადი ყოფილიყო. ჩვენი სამი სისტემის შეყვანა იყო მოძრაობის სენსორების ავტობუსი (4 ჩვენი შემცირებული მოდელისთვის), ფეხით მოსიარულეთა გადახვევის ღილაკი და საათის შეყვანა. მეორე მხრივ, ჩვენი ერთჯერადი გამომავალი არის LED განათების ავტობუსი, რომელიც წარმოადგენს ჩვენს ქუჩის შუქებს. ამ მოდელისთვის ჩვენ გამოვიყენეთ 16 ქუჩის განათების სცენარი მხოლოდ იმიტომ, რომ ეს არის მაქსიმალური რაოდენობა ჩაშენებული LED გამომავალი Basys 3 დაფაზე. დაბოლოს, ამ დიაგრამის გამოყენებით ჩვენ შევძელით შევქმნათ ჩვენი Vivado პროექტი, წყარო და შეზღუდვის ფაილები შესაბამისი შეყვანისა და გამოსავლის საშუალებით.

ნაბიჯი 2: კომპონენტები

კომპონენტები
კომპონენტები
კომპონენტები
კომპონენტები

ამ ნაბიჯში ჩვენ უფრო ღრმად ვსწავლობთ იმ კომპონენტებს, რომლებიც ქმნიან ჩვენს შავი ყუთის დიაგრამას. ჩვენი პირველი კომპონენტია VHDL წყაროს ფაილი, რომელიც შეიცავს D ფლიპ ფლოპს. D ფლიპ-ფლოპები უბრალოდ იღებენ რა სიგნალს მათ იღებენ სენსორებიდან საათის მზარდ ზღვარზე და აჭერენ ამ მონაცემებს მომდევნო ამოსვლამდე. ეს ხელს უშლის ჩვენი მგრძნობიარე მოძრაობის სენსორებს, რომ არ გამოიწვიოს გამომავალი LED- ის "ციმციმა". ასევე, ჩვენ ვაყენებთ ერთ D ფლიპ ფლოპს ღილაკზე შეყვანის სიგნალზე, რათა LED იყოს ჩართული ღილაკის დაჭერის შემდეგ დაახლოებით 5-7 წამის განმავლობაში. ჩვენ ასევე გავუშვით საათის გამყოფი.

ერთეული clk_div2 არის პორტი (clk: in std_logic; sclk: out std_logic); დასასრული clk_div2;

clk_div2- ის არქიტექტურა my_clk_div არის

მუდმივი max_count: მთელი რიცხვი: = (300000000); სიგნალი tmp_clk: std_logic: = '0'; დაწყება my_div: პროცესი (clk, tmp_clk) ცვლადი div_cnt: მთელი რიცხვი: = 0; დაიწყება თუ (აღმავალი_ ზღვარი (clk)) შემდეგ თუ (div_cnt = MAX_COUNT) შემდეგ tmp_clk <= არა tmp_clk; div_cnt: = 0; სხვა div_cnt: = div_cnt + 1; დაასრულე თუ; დაასრულე თუ; sclk <= tmp_clk; პროცესის დასრულება my_div; დასრულება my_clk_div;

ჩვენი საბოლოო კომპონენტი ამ დიაგრამაში არის ქცევითი VHDL წყაროს ფაილი, რომელიც შეიცავს პირობით შედეგებს, რომლებიც დაფუძნებულია შეყვანის სიგნალების კონფიგურაციაზე.

ნაბიჯი 3: D Flip-Flops

D Flip-Flops
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 <= "1111111111111111"; დასასრული საქმე;

ნაბიჯი 5: შეზღუდვები

იმისათვის, რომ სწორად მიუთითოთ თქვენი შეყვანა და შედეგები Vivado– ს გამოყენებით, თქვენ უნდა განახორციელოთ შეზღუდვის ფაილი, რომელშიც მითითებულია ყველა პორტი, ღილაკი, LED- ები და საათები.

set_property PACKAGE_PIN W5 [მიიღეთ_პორტები CLK] set_property IOSTANDARD LVCMOS33 [მიიღეთ_პორტები CLK]

set_property PACKAGE_PIN U16 [მიიღეთ_პორტები {LED [0]}] set_property IOSTANDARD LVCMOS33 [მიიღეთ_პორტები {LED [0]}] set_property PACKAGE_PIN E19 [მიიღეთ_პორტები {LED [1]}] set_property IOSTANDARD LVCMOS_33 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 [მიიღეთ_პორტები {LED [10]}] set_property IOSTANDARD LVCMOS33 [მიიღეთ_პორტები {LED [10]}] set_property PACKAGE_PIN U3 [მისაღები_პორტები {LED [გათბობა_33 [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 [მიიღეთ_პორტები BTN] set_property IOSTANDARD LVCMOS33 [მიიღეთ_პორტები BTN]

set_property PACKAGE_PIN A14 [მიიღეთ_პორტები {MS [0]}] set_property IOSTANDARD LVCMOS33 [მიიღეთ_პორტები {MS [0]}] set_property PACKAGE_PIN A16 [მიიღეთ_პორტები {MS [1]}] set_property IOSTANDARD LVCMOS33 [get_ports B15 [მიიღეთ_პორტები {MS [2]}] set_property IOSTANDARD LVCMOS33 [მიიღეთ_პორტები {MS [2]}] set_property PACKAGE_PIN B16 [მიიღეთ_პორტები {MS [3]}] set_property IOSTANDARD LVCMOS33 [მიიღეთ_პორტები {MS [3]}]

ნაბიჯი 6: ძირითადი წყაროს ფაილი

ამ ძირითად ფაილში ჩვენ ვაერთიანებთ ყველა კომპონენტურ წყაროს ფაილს, რომელიც ზემოთ იყო ნახსენები. ეს ფაილი ფუნქციონირებს როგორც სტრუქტურული კოდი, რომელიც აერთიანებს განსხვავებულ კომპონენტებს.

ერთეულის Master_Final_Pject არის პორტი (BTN: STD_LOGIC– ში; CLK: STD_LOGIC– ში; MS: STD_LOGIC_VECTOR– ში (3 ქვევით 0 – ზე); LED: გამოსვლა STD_LOGIC_VECTOR (15 ქვემოთ 0 – ზე)); დასრულება Master_Final_Project;

არქიტექტურა Master_Final_Project არის ქცევითი

კომპონენტის საბოლოო_პროექტი არის პორტი (–CLK: STD_LOGIC– ში; NMS: STD_LOGIC_VECTOR– ში (3 ქვემოთ 0 – ზე); BTN: STD_LOGIC– ში-: STD_LOGIC_Vector– ში (1 ქვემოთ 0); LED: გარეთ STD_LOGIC_V; დასასრული კომპონენტი;

კომპონენტი Final_DFF არის

პორტი (CLK: STD_LOGIC- ში; D: STD_LOGIC_Vektor- ში (3 ქვემოთ 0 -ზე); Q: STD_LOGIC_ ვექტორიდან (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); პროექტი: საბოლოო_პროექტის პორტის რუკა (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 მამრობითი ლიდერი PMod სათაურის JB პორტებთან 1-4 (იხ. სურათი).

2. შეაერთეთ ქალის ბოლოები თითოეული მოძრაობის სენსორის გამომავალ პინთან.

ნაბიჯი 8: პროგრამის ჩატვირთვა

ახლა ჩვენ მზად ვართ ჩავტვირთოთ VHDL სამაგისტრო წყაროს ფაილი Basys 3 დაფაზე. დარწმუნდით, რომ აწარმოებთ სინთეზს, განხორციელებას და შექმნით ბიტ -სტრიმის შემოწმებას შესაძლო შეცდომებისთვის. თუ ყველაფერი წარმატებით მუშაობს, გახსენით ტექნიკის მენეჯერი და დაპროგრამეთ Basys 3 მოწყობილობა. თქვენი პროექტი ახლა დასრულებულია!

გირჩევთ: