Სარჩევი:

Basys 3 მაღვიძარა: 9 ნაბიჯი
Basys 3 მაღვიძარა: 9 ნაბიჯი

ვიდეო: Basys 3 მაღვიძარა: 9 ნაბიჯი

ვიდეო: Basys 3 მაღვიძარა: 9 ნაბიჯი
ვიდეო: Basys 3 Introduction 2024, ოქტომბერი
Anonim
Basys 3 მაღვიძარა
Basys 3 მაღვიძარა

ჩვენი პროექტი ქმნის მაღვიძარას Basys 3 FPGA დაფის, არდუინოს და სპიკერის მძღოლის დაფის გამოყენებით. მომხმარებელს შეუძლია შეიტანოს მიმდინარე დრო დაფაზე 11 შეყვანის გადამრთველის გამოყენებით Basys 3 -ზე და ჩაკეტოს მნიშვნელობა დაფაზე შუა ღილაკის გამოყენებით. მომხმარებელს შეუძლია შეიყვანოს განგაშის დრო ერთი და იგივე გადამრთველების გამოყენებით, მაგრამ დააწკაპუნეთ მარცხენა ღილაკზე, რომ ჩაკეტოთ განგაშის დრო. თუ არასწორი დროა შეყვანილი, გადატვირთვის ღილაკს (ზედა ღილაკს) შეგიძლიათ დააჭიროთ და მიმდინარე საათის დრო და განგაშის დრო დაყენდება 00:00. მომხმარებელს შეუძლია საათის დაწყება მარცხენა გადამრთველის გამოყენებით და ჩართოს მაღვიძარა მომდევნო გადამრთველის გამოყენებით. როდესაც მაღვიძარა ჩართულია, მაღვიძარა გამოსცემს ხმას, როდესაც საათის დრო და დაყენებული მაღვიძარას დრო ემთხვევა.

ნაბიჯი 1: შავი ყუთის დიაგრამა

შავი ყუთის დიაგრამა
შავი ყუთის დიაგრამა
შავი ყუთის დიაგრამა
შავი ყუთის დიაგრამა

ჩვენ დავიწყეთ ჩვენი პროექტი შავი ყუთის დიაგრამის დახატვით, რათა ვიზუალიზაციაში შევიტანოთ და გამოვიყენოთ ჩვენი პროგრამა. ჩვენი პროგრამის შემდეგი საშუალებები, როგორიცაა 5-ბიტიანი შეყვანა (Hour_in) ინიციალიზებული იყო 24-საათიანი დროის, 6-ბიტიანი (Min_in) შეყვანის დასადგენად 60 წუთის განმავლობაში, გადატვირთვის ღილაკი (Rst_b), რომელიც მომხმარებელს საშუალებას მისცემს შეცვალეთ მათი დროის შეყვანა, 1 ბიტიანი შეყვანა (alm_en), რომელიც იტვირთება სიგნალიზაციის შეყვანისას, 1 ბიტიანი შეყვანის (alarm_sw) მაღვიძარა გამორთვისას, როდესაც ის გააქტიურებულია, 1 ბიტიანი შეყვანა (e_sec), რომელიც აკონტროლებს მრიცხველს წამი გადის, 1 ბიტიანი შეყვანა (Led_btn), რომელიც ადგენს მიმდინარე დროს და ბოლოს 1 ბიტიანი შეყვანა (clk), რომელიც აკონტროლებს Basys 3 დაფის მიერ ნაჩვენებ დროს. გამომავალი არის (alm_on), რომელიც აგზავნის სიგნალს Arduino– ში, sseg გამომავალი, რომელიც აჩვენებს შეყვანის დროს Basys 3 –ზე და ანოდის გამომუშავება, რომელიც აკონტროლებს, თუ სად არის ნაჩვენები შესასვლელი შვიდი სეგმენტის ეკრანზე.

ნაბიჯი 2: ნელი საათი

ნელი საათი
ნელი საათი

ნელი საათი ან clock_div2 ფაილი ქმნის საათს, რომლის სიხშირეა 2 ჰც. თუ ჩვენ ამ საათს მივცემთ წამების მრიცხველს, წამის მნიშვნელობა ყოველ წამში გაიზრდება ერთით. ნელი საათი გამოიყენება საიმედო საათის სიგნალის შესაქმნელად, რომელიც იცვლება დაბალიდან მაღალზე წამში ერთხელ.

ნაბიჯი 3: მრიცხველი

მრიცხველი
მრიცხველი
მრიცხველი
მრიცხველი

კომპონენტის მთვლელი (წუთი და წამი):

წუთებისა და წამების ძირითადი ფუნქცია ის არის, რომ ისინი მრიცხველები არიან. წუთის მრიცხველი იღებს შეყვანას (Vin), რომელიც არის სიგნალი შეყვანისგან (Min_in) და შემდეგ ითვლის სანამ არ მიაღწევს სასურველ შეყვანის შეყვანას. წამი იღებს მხოლოდ გადამრთველის შეყვანას (e_Sec), ვინაიდან მისი ჩვენება შეუძლებელია შვიდ სეგმენტზე და ითვლის ფონზე, როდესაც გადამრთველი მაღალია '1'. ისინი ორივე იქ გამოდიან (Qout) მნიშვნელობაზე, შემდეგ კი ინახება (მონაცემებში), რომელიც აგზავნის მას SSEG– ში, რაც ხდება დამაკავშირებელ ფაილში. ასევე, როდესაც წუთები და წამები მიაღწევს 59 -ის მნიშვნელობებს, ის გადატვირთულია და მათი გამომუშავება არის '1' წუთის/საათის გაზრდის მიზნით. მას ასევე შეუძლია შეაფასოს გადატვირთვით (rst_b) მათ შეყვანაში.

ნაბიჯი 4: Counter Hour

Counter Hour
Counter Hour
Counter Hour
Counter Hour

კომპონენტის საწინააღმდეგო საათი

ანალოგიურად, წუთების და წამების კომპონენტის მრიცხველს საათის კომპონენტი იღებს შეყვანის s- ს, როგორიცაა (Vin), რომელიც არის სიგნალი ფაილის შეყვანის დამაკავშირებელიდან (Hour_in) და აქვს გამოსავალი, რომელიც ერთნაირად არის დაკავშირებული წუთებსა და წამებში. როდესაც საათის ათვლის მნიშვნელობა აღწევს 24 00 ის აღდგება 00 00.

ნაბიჯი 5: სიგნალიზაცია

მაღვიძარა
მაღვიძარა
მაღვიძარა
მაღვიძარა
მაღვიძარა
მაღვიძარა
მაღვიძარა
მაღვიძარა

სიგნალიზაციის.vhd ფაილი შედგება d-flip-flops– ისგან, რომელიც არის შენახვის მოწყობილობა, რომელსაც შეუძლია ციფრული მონაცემების შენახვა. განგაშის ფაილი გამოიყენება იმ დროის შესანახად, რომლის დროსაც განგაში გააქტიურდება. საათების (5 ბიტიანი შეყვანის) და წუთების (6 ბიტიანი შეყვანის) მონაცემების შესანახად უნდა განვათავსოთ 11 სიგნალიზაცია ჩვენს სიგნალიზაციის ფაილში. ამისათვის ჩვენ ჯერ უნდა შემოვიტანოთ ლოგიკა, რომელიც არეგულირებს d-flip-flops– ის მუშაობას და დავხატოთ კომპონენტები. თითოეული 11 d-flip-flops ინახავს ერთ მონაცემს შესასვლელიდან და საშუალებას მისცემს მონაცემების ასახვას განგაშის ფაილის გამოსასვლელებში. ვინაიდან d-flip-flops ინახავს მონაცემებს, ჩვენ შეგვიძლია გამოვიყენოთ მონაცემები დროის შემდგომ მომენტში მაშინაც კი, თუ შეყვანის გადამრთველები შეიცვალა.

ნაბიჯი 6: უნივერსალური შვიდი სეგმენტის ჩვენების დრაივერი

უნივერსალური შვიდი სეგმენტის ჩვენების დრაივერი
უნივერსალური შვიდი სეგმენტის ჩვენების დრაივერი
უნივერსალური შვიდი სეგმენტის ჩვენების დრაივერი
უნივერსალური შვიდი სეგმენტის ჩვენების დრაივერი
უნივერსალური შვიდი სეგმენტის ჩვენების დრაივერი
უნივერსალური შვიდი სეგმენტის ჩვენების დრაივერი

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

ნაბიჯი 7: დააკავშირეთ ფაილი

ბმულის ფაილი
ბმულის ფაილი
ბმულის ფაილი
ბმულის ფაილი
ბმულის ფაილი
ბმულის ფაილი

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

ნაბიჯი 8: არდუინო

არდუინო
არდუინო
არდუინო
არდუინო

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

ნაბიჯი 9: საკაბელო მარშრუტიზაცია

საკაბელო მარშრუტიზაცია
საკაბელო მარშრუტიზაცია

Arduino და Basys 3 დაფა ფიზიკურად უნდა იყოს დაკავშირებული დაფებს შორის სიგნალების გადასაცემად. მავთულის პირველი კაბელი იქნება JA PMOD of Basys 3 -ის მიწიერი პინიდან არდუინოს მიწამდე. შემდეგ შეაერთეთ მავთული Bas 1 -ის JA PMOD 3 -დან, არდუინოს ციფრულ პინთან. შემდეგი, შეაერთეთ ორი დამჭერი არდუინოდან დინამიკის დრაივერის გრუნტის ქინძისთავებთან. შემდეგი, დაუკავშირეთ arduino– ს 3.3 V გამომავალი სპიკერის დრაივერის Vcc პინს. შემდეგი, დაუკავშირეთ arduino– ს ციფრული პინი 9 სპიკერის დრაივერის In pin– ს.

გირჩევთ: