Სარჩევი:
- ნაბიჯი 1: იმპორტირებული მოცემული VHDL ფაილები
- ნაბიჯი 2: VHDL ზედა მოდულის დაშლა
- ნაბიჯი 3: VHDL Kill Switch მოდულის დაშლა
- ნაბიჯი 4: VHDL Flip Flop მოდულის დაშლა
- ნაბიჯი 5: VHDL პიეზო ბუზერის მოდულის დაშლა
- ნაბიჯი 6: VHDL შეზღუდვების ფაილის დაშლა
- ნაბიჯი 7: ბაზის მშენებლობა 3
- ნაბიჯი 8: VHDL ფაილების დანერგვა Basys 3 -ში
- ნაბიჯი 9: Basys 3 დაფის გამოყენება
- ნაბიჯი 10: გამოიჩინე თავი
ვიდეო: უნივერსალური გამორთვის ჩამრთველის მოდელი: 10 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:20
დაიღალეთ იმის შემოწმებით, რომ ძილის წინ თქვენს სახლში ყველა შუქი ჩაქრა? გისურვებთ რომ ერთდროულად გამორთოთ ყველა შუქი ყოველგვარი აურზაურის გარეშე? ენერგიისა და დროის დაზოგვის მიზნით, ჩვენ გადავწყვიტეთ შეგვექმნა სისტემა, რომელსაც თეორიულად შეეძლო მთელი სახლის ერთდროულად დახურვა.
ჩვენ მოვახდინეთ ამ კონცეფციის მტკიცებულება რამოდენიმე LED- ისა და ბაზის 3 მიკროსქემის გამოყენებით და შევქმენით დიზაინი, რომელიც ღილაკების დაჭერით გააქტიურებს ყველა LED- ს. ეს მოდელი შეიძლება გამოყენებულ იქნას სახლის განათების სისტემის მიმართაც, თუმცა ის მოითხოვს უფრო რთულ გაყვანილობას და ცვლილებებს მოცემულ VHDL ფაილებში.
ნაბიჯი 1: იმპორტირებული მოცემული VHDL ფაილები
იმისათვის, რომ ჩვენი მოდელი სწორად იმუშაოს თქვენ უნდა გადმოწეროთ პროგრამული უზრუნველყოფა, რომელიც აძლევს Basys 3 დაფას მის მითითებებს.
პირველ რიგში თქვენ უნდა გადმოწეროთ სინთეზის ინსტრუმენტი vhdl ფაილების აპარატურაზე განსახორციელებლად. თუ გსურთ დარწმუნებული იყოთ, რომ ყველა კოდი სრულად იმეორებს ჩვენს დიზაინს ყოველგვარი ცვლილებების გარეშე, ჩვენ გირჩევთ გამოიყენოთ Vivado 2016.2. Vivado– ს დაყენების შემდეგ შეგიძლიათ შექმნათ პროექტი და გადმოწეროთ ჩვენი საწყისი ფაილები. დაამატეთ ისინი როგორც წყარო თქვენს პროექტს, არ დაგავიწყდეთ შეზღუდვების ფაილის დამატებაც!
შემდეგი ჩვენ განვმარტავთ რას აკეთებს თითოეული საწყისი ფაილი. გამოტოვეთ ნაბიჯები 2 -დან 6 -მდე, თუ უბრალოდ გსურთ მიაღწიოთ მოწყობილობის ფიზიკურ კონსტრუქციას.
ნაბიჯი 2: VHDL ზედა მოდულის დაშლა
პროექტის მთავარი მოდული არის ის, რაც აკავშირებს ყველა ცალკეულ კომპონენტის მოდულს გამოყენებულ ტექნიკასთან. როგორც ხედავთ, ჩვენ გვაქვს killSwitch და buzzerControl მოდულები, რომლებიც განისაზღვრება როგორც კომპონენტები თავზე.
ქვედა ნაწილი განმარტავს, თუ როგორ არის დაკავშირებული ეს მოდულები ერთმანეთთან. ჩვენ დავუკავშირდით ოთხი LED- ს დაფს და ვუკავშირდებით killSwitch მოდულებს dev0- დან dev3- მდე. ჩვენ გვაქვს ოთხი killSwitch მოდული, რადგან ჩვენ გვჭირდება ერთი თითოეული LED- ის მდგომარეობის სამართავად. თითოეული ეს მოდული იყენებს საათის და ღილაკის სიგნალს, რომელიც ჩვენ შევქმენით ზედა მოდულის განსაზღვრებაში, ისევე როგორც მათი შესაბამისი შეყვანისა და გამომავალი მოწყობილობის სიგნალებს.
ზუზერის კონტროლის მოდული ქვედა ნაწილში ააქტიურებს ზუმერს, როდესაც დააჭირეთ უნივერსალურ გამორთვის ღილაკს. როგორც ხედავთ ზუზერის კონტროლის მოდულს გადაეცემა საათის და ღილაკის სიგნალი შეყვანის სახით. მას ასევე გადაეცემა ფიზიკური ზარის გამაძლიერებელი პინი, რომ გააკონტროლოს იგი შესაბამისად.
ნაბიჯი 3: VHDL Kill Switch მოდულის დაშლა
Kill Switch არის უნივერსალური გამორთვის ღილაკი და მოდული უპირველეს ყოვლისა ეხება მის დაკავშირებას სხვა წრიულ ელემენტებთან ისე, რომ დაჭერისას ყველა შუქი ჩააქრობს.
მიუხედავად იმისა, რომ ზედა მოდული ამუშავებს ფიზიკურ აპარატურას პროგრამულ უზრუნველყოფასთან, killSwitch მოდული ამუშავებს თითოეული მოწყობილობის მთავარ ლოგიკას. მოდული იღებს საათის სიგნალის, უნივერსალური გამორთვის ღილაკისა და მოწყობილობის გადართვის ჩამრთველს. სანაცვლოდ ის აკონტროლებს მოწყობილობის პინის მდგომარეობას, რომელთანაც ის არის დაკავშირებული.
კოდის არქიტექტურის განყოფილებაში ჩვენ ვხედავთ, რომ მას აქვს დამოკიდებულება dFlipFlop მოდულზე მეხსიერების შესანახად. თქვენ ასევე ხედავთ, რომ ჩვენ გამოვაცხადეთ ოთხი სიგნალი, რომელიც გამოყენებული იქნება ფლიპ ფლოპის დასაკავშირებლად და ასევე ჩვენი ლოგიკური განცხადებების განსახორციელებლად. კოდის ქცევითი განყოფილების ფარგლებში ჩვენ შევქმენით dFlipFlop მოდულის მაგალითი და მივაკუთვნეთ ჩვენი I/O სიგნალები პორტებს.
აქედან ჩვენი ლოგიკის ძირითადი ნაწილი მდგომარეობს სიგნალის მნიშვნელობებში invertState და isDevOn. მოწყობილობის ჩვენი ლოგიკური საფუძველი ასეთია: "ნებისმიერ დროს, როდესაც გადამრთველი ჩაირთვება, შუქი შეცვალოს მისი ჩართვის/გამორთვის მდგომარეობა. ნებისმიერ დროს, როდესაც ღილაკს დააჭერთ და LED არის ჩართული, LED ინერგება მისი მდგომარეობა გამორთული. " ამ ორი განცხადებიდან ჩვენ შეგვიძლია გამოვაქვეყნოთ, რომ LED- ის მდგომარეობა უნდა იყოს გადამრთველის XOR და ჩვენი მეხსიერების ელემენტი. ამ გზით ცვლილება ან შებრუნებს LED- ს. ამის დანახვა შესაძლებელია isDevOn სიგნალში. მეხსიერების ელემენტის პირობით განათებულ LED- ს ამუშავებს ჩვენი ინვერტული სახელმწიფო სიგნალი. თუ LED ჩართულია და ღილაკზე დაჭერილია, ჩვენი მეხსიერების ელემენტი განახლდება და გადაბრუნდება მისი მდგომარეობა. ეს ასევე შებრუნებს LED- ის მდგომარეობასაც.
ნაბიჯი 4: VHDL Flip Flop მოდულის დაშლა
ჩვენი დიზაინის ერთი პრობლემა იყო ის ფაქტი, რომ გამორთვის ჩამრთველის გამოყენების შემდეგ, ნათურები, რომლებიც ადრე იყო ჩართული, შეიძლება ორჯერ გათიშულიყო ჩართულ პოზიციაზე დასაბრუნებლად. ეს დროთა განმავლობაში საკმაოდ უხერხული იქნება ადამიანებისთვის. ჩვენ შევძელით ამ უხერხულობის თავიდან აცილება "დიზაინში" "Flip Flop" - ის ელემენტის ჩართვით, რომელსაც შეუძლია ინფორმაციის შენახვა. ახლა სისტემას ახსოვს ადრე იყო თუ არა შუქნიშანი ჩართული, რომ თუ ის კვლავ გადატრიალდება, ის ჩართული იქნება მისი საწყისი პოზიციის მიუხედავად.
VHDL კოდი იყენებს if და else განცხადებებს, რათა შექმნას Flip Flop, როგორც კომპონენტი ჩვენი წრიული დიზაინის ფარგლებში. ის უზრუნველყოფს, რომ როდესაც საათის სიგნალი გადადის დაბალიდან მაღალ მდგომარეობამდე, როდესაც ნათურა ჩართულია და როდესაც გამორთვის ღილაკს უბიძგებენ, ფლიპ ფლოპების გამომავალი გადაფარავს მის შეყვანას. როდესაც შეყვანის გადაწერა ხდება ფლიპ ფლოპი გადაბრუნებულია.
ნაბიჯი 5: VHDL პიეზო ბუზერის მოდულის დაშლა
ეს ფაილი ცოტა ზედმეტია რაც შეეხება აპარატურის დიზაინს, მაგრამ ეს აუცილებელია იმისათვის, რომ ზედა მოდული და შეზღუდვები ფაილები შეუფერხებლად მუშაობდეს. თუ გადაწყვეტთ არ გამოიყენოთ Piezo buzzer, გადმოწერეთ ეს ფაილი, მაგრამ ნუ მიამაგრებთ ზუმერს Basys 3 დაფაზე.
Piezo buzzer- ი, გამორთვის ღილაკზე დაჭერისას, დაუკრავს ორ ნოტიანი ტონი, რომელიც მომხმარებელს მისცემს მოსმენის უკუკავშირს, რომ ღილაკზე დაჭერილია. ჩვენ განვახორციელეთ ეს ქცევით VHDL– ში პროცესის სტრუქტურაში if განცხადებების სერიის საშუალებით. ჩვენ დავიწყეთ მთელი მნიშვნელობის შექმნით, რათა თვალყური ადევნოთ რამდენი საათის ცვლილება მოხდა. პროცესის დაწყებისთანავე პროგრამა ატარებს პირველ ნახევარ წამს (0 -დან 50 მილიონამდე საათის ტკიპას) გამოუშვებს ნოტა 440 ჰერცზე. ეს მიიღწევა პიეზო ზუზერის სიგნალის ინვერსიით 227272 საათის ტიკების თითოეული თუნდაც მრავალჯერადი მოდულის ფუნქციით. ეს რიცხვი დაფის საათის სიგნალის (100 MHz) სასურველ სიხშირეზე (400 Hz) გაყოფის შედეგია. მეორე ნახევრის განმავლობაში (50 – დან 100 მილიონამდე საათის ტკიპები) დაფა გამოდის F ნოტაზე 349.2 ჰერცზე იგივე მეთოდით, როგორც ადრე. ერთი წამის შემდეგ პროგრამა აღარ ზრდის საათის ცვლადს და წყვეტს არაფერს გამოსცემს პიეზო ზუზერისგან. უნივერსალური გამორთვის ღილაკის დაჭერით ეს რიცხვი 0 -მდე გადატვირთულია, ხელახლა იწყება ხმაურის ციკლი.
ნაბიჯი 6: VHDL შეზღუდვების ფაილის დაშლა
შეზღუდვების ფაილი ეუბნება Vivado– ს რა მოწყობილობებს ვსარგებლობთ Basys 3 დაფაზე. ის ასევე აწვდის Vivado– ს იმ სახელებს, რომლებიც ჩვენ მივანიჭეთ მოწყობილობებს ჩვენს კოდში. Vivado– ს ეს ინფორმაცია სჭირდება, ასე რომ მან იცის როგორ დაუკავშიროს ჩვენი ლოგიკური ელემენტები ფიზიკურ ტექნიკას. შეზღუდვების ფაილი შეიცავს დიდი რაოდენობით კომენტარს (გამოუყენებელ) კოდს. კოდის ეს ხაზები მიუთითებს დაფაზე არსებულ მოწყობილობებზე, რომლებსაც ჩვენ არ ვიყენებთ.
მოწყობილობები, რომლებსაც ჩვენ ვიყენებთ, მოიცავს ოთხ შეყვანის ამომრთველს, წარწერით V17, V16, W16 და W1 დაფაზე. ჩვენ ასევე ვიყენებთ უნივერსალურ გამორთვის ღილაკს, წარწერით U18. ჩვენი ოთხი დაკავშირებული LED- ების გამომავალი ქინძისთავებია JB4, JB10, JC4 და JC10. ჩვენი პიეზო ზუზერისთვის ჩვენ ვიყენებთ გამომავალ პინს JA9.
როგორც ჩვენ განვაცხადეთ მოდულის ზედა ნაწილში, თუ გსურთ დაამატოთ დამატებითი LED- ები ან სხვა მოწყობილობები დაფაზე, თქვენ უნდა გაზარდოთ sw და dev სიგნალების მოცულობა, დაამატოთ უფრო killSwitch მოდულები და დააკავშიროთ ისინი ერთმანეთთან. შემდეგ თქვენ უნდა დააკავშიროთ ეს ცვლადი სახელები მოწყობილობის ტექნიკას შეზღუდვების ფაილის საშუალებით. ეს შეიძლება გაკეთდეს იმ კოდების არაკომენტირებით (ხელახლა ჩართვით), რომლებიც დაკავშირებულია იმ ქინძისთავებთან, რომელთა გამოყენება გსურთ, შემდეგ კი ასოცირებული ცვლადის სახელის დამატებით ზედა მოდულში. ამის შესაბამისი სინტაქსი შეიძლება გადაწერილი იყოს იმ მოწყობილობებიდან, რომლებსაც ჩვენ ვიყენებთ. ქინძისთავების სახელების გასარკვევად, რომელთა გამოყენებაც გსურთ დაფაზე, იხილეთ Baasys 3 საცნობარო სახელმძღვანელო აქ.
ნაბიჯი 7: ბაზის მშენებლობა 3
თქვენ უნდა შეაერთოთ თქვენი LED- ები Basys– ის სწორ I/O პორტებში. მიჰყევით მოცემულ სურათებს, რათა დადგინდეს, რომელია სწორი პორტები, რადგან თუ LED- ს არასწორ პორტში შეაერთებთ, ის არ ანათებს. თუ თქვენ შეარჩიეთ პიეზო ზარის დამაგრება, თქვენ ასევე უნდა დააკავშიროთ ის სწორ I/O პორტებთან.
როდესაც დაფა მზად არის, შეაერთეთ იგი თქვენს კომპიუტერში USB კაბელის საშუალებით.
ნაბიჯი 8: VHDL ფაილების დანერგვა Basys 3 -ში
ახლა, როდესაც თქვენი დაფა მზად არის და თქვენი კოდი დასრულებულია, შეგიძლიათ საბოლოოდ დააკავშიროთ მოდელი.
მას შემდეგ რაც თქვენ შექმნით თქვენს პროექტს Vivado– ში, თქვენ უნდა დააწკაპუნოთ ღილაკზე „გენერირება Bitstream“, რათა შეადგინოთ კოდი, სანამ ის აიტვირთება დაფაზე. თუ თქვენ მიიღებთ შეცდომის შეტყობინებას ამ დროს, თქვენ უნდა გაიმეოროთ, რომ თქვენი კოდი ზუსტად ემთხვევა ჩვენს კოდს. როდესაც ვამბობ ზუსტად, ვგულისხმობ თუნდაც მძიმით ან ფრჩხილის ტიპებს, რომლებიც გამოიყენება. მას შემდეგ რაც თქვენი ბიტ -სტრიმი წარმატებით დაიწერა, გადადით ტექნიკის მენეჯერთან Vivado– ში და დააწკაპუნეთ ღილაკზე „გახსენით სამიზნე“, შემდეგ დააწკაპუნეთ „პროგრამის მოწყობილობაზე“. თქვენი Basys 3 დაფა უნდა იყოს სრულად ფუნქციონალური.
ნაბიჯი 9: Basys 3 დაფის გამოყენება
ახლა, როდესაც Basys 3 დაფა ფუნქციონირებს და დაპროგრამებულია ჩვენი მოდელის წარმოსაჩენად, თქვენ უნდა იცოდეთ როგორ გამოიყენოთ იგი.
ოთხივე კონცენტრატორიდან, რომელიც ყველაზე შორს არის მარჯვნივ, აკონტროლებს ერთ -ერთ LED- ს, მათი დაჭერით გამოიწვევს LED- ის ჩართვას ან გამორთვას. თუ LED არ გააქტიურდება, შეამოწმეთ რომ ჩართული ხართ სწორ I/O პორტში და რომ თქვენი LED პირველ რიგში ფუნქციონალურია.
როდესაც გსურთ გამორთოთ ყველა LED ერთდროულად, თქვენ უნდა დააჭიროთ ცენტრალურ ღილაკს ზემოთ ნაჩვენები ხუთი ღილაკის ნაკრებში.
ნაბიჯი 10: გამოიჩინე თავი
მოდელი არის პატარა სიახლე, რომლის დემონსტრირებაც შეგიძლიათ მეგობრებისა და ოჯახის წინაშე. ის თეორიულად ასევე შეიძლება გამოყენებულ იქნას თქვენი სახლის ელექტრო სისტემაში უნივერსალური გამორთვის გადამრთველის განსახორციელებლად, თუკი LED- ებს შეცვლით მავთულხლართებით, რომლებიც მიდიან თქვენს განათებამდე. მიუხედავად იმისა, რომ ეს შესაძლებელია, ჩვენ მაინც გვჭირდება რჩევა მის წინააღმდეგ. არსებობს პოტენციალი, რომ სერიოზული ზიანი მიაყენოთ საკუთარ თავს ან თქვენს სახლს, თუ თქვენ შეეცდებით ხელახლა დააინსტალიროთ ელექტრიკოსის დახმარების გარეშე.
გირჩევთ:
წვრილმანი გულშემატკივარი ჩართული -გამორთვის ღილაკით - M5StickC ESP32: 8 ნაბიჯი
DIY გულშემატკივარი ON -OFF ღილაკით - M5StickC ESP32: ამ პროექტში ჩვენ ვისწავლით თუ როგორ გამოიყენოთ FAN L9110 მოდული M5StickC ESP32 დაფის გამოყენებით
ჟოლოს Pi გამორთვის მაჩვენებელი: 6 ნაბიჯი
Raspberry Pi Shutdown Indicator: ეს არის ძალიან მარტივი წრე ჟოლოს პი ოპერაციული სტატუსის საჩვენებლად (შემდგომში როგორც RPI). შესაძლოა, ეს გამოსადეგია, როდესაც თქვენ აწარმოებთ RPI– ს უთავოდ (მონიტორის გარეშე). RPI გამორთვის შემდეგ
ქსელის გამორთვის კვების წყარო: 5 ნაბიჯი (სურათებით)
ქსელის გამორთვა: ეს პროექტი არის მშვიდი, შიდა მეგობრული ალტერნატივა გაზზე მომუშავე გენერატორისთვის. თუ თქვენ დატენავთ მოწყობილობებს, იყენებთ ნათურებს ან ელექტროძრავას შეზღუდული დროითაც კი იყენებთ, ეს გამორთული ქსელის წყარო არის კარგი კომპანიონი კარვებისა და გადაუდებელი დახმარებისთვის
კომპიუტერის გამორთვის საბოლოო ხუმრობა: 3 ნაბიჯი
Ultimate Computer Shutdown Prank: This is a.vbs shutdown script that I made as an prank. მიზეზი, თუ რატომ არის ასე მაგარი, არის ის, რომ კომპიუტერის დაუყოვნებლივ გათიშვის ნაცვლად, კომპიუტერი გელაპარაკებათ და გაგაფრთხილებთ, რომ კომპიუტერი გათიშული იქნება 10 წამში, შემდეგ კი
როგორ გააკეთოთ USB გამორთვის ჰაკი: 8 ნაბიჯი
როგორ გააკეთოთ USB გამორთვის ჰაკი: ამ გაკვეთილში მე გაჩვენებთ თუ როგორ უნდა შექმნათ ფარული საქაღალდე USB– ზე, რომელიც გათიშავს მომხმარებლის კომპიუტერს