Სარჩევი:

კონკურენტუნარიანი ბუზერის სისტემა: 5 ნაბიჯი
კონკურენტუნარიანი ბუზერის სისტემა: 5 ნაბიჯი

ვიდეო: კონკურენტუნარიანი ბუზერის სისტემა: 5 ნაბიჯი

ვიდეო: კონკურენტუნარიანი ბუზერის სისტემა: 5 ნაბიჯი
ვიდეო: მსოფლიოში ყველაზე კონკურენტუნარიანი ეკონომიკები 2024, ნოემბერი
Anonim
Image
Image
მასალები
მასალები

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

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

მას შემდეგ, რაც მოდერატორი კითხვებს კითხულობს, ის დააჭერს ღილაკს, რომ დაიწყოს ათვლის დრო, რომელიც გამოჩნდება შვიდი სეგმენტის ეკრანზე. "გადაყრის" კითხვის შემდეგ, მოდერატორს შეუძლია დააჭიროს მარჯვენა ღილაკს, რომ დაიწყოს დათვლა 5 წამიდან. იმავდროულად, "ბონუს" კითხვის შემდეგ, მოდერატორს შეუძლია დააჭიროს მარცხენა ღილაკს, რომ დაიწყოს ათვლა 20 წამიდან. მას შემდეგ, რაც ტაიმერი ნულს მიაღწევს, ხმის ზარი აჩვენებს, რომ მოთამაშეს დრო ამოეწურა.

სისტემის გადასაყენებლად და ათვლის ქრონომეტრზე, მოდერატორს შეუძლია დააჭიროს ცენტრალურ ღილაკს. დაბლოკვის მექანიზმისა და პლეერის LED- ების გადასაყენებლად, გადამრთველები 1 და 2 მოთამაშეებისთვის დაბალი უნდა იყოს.

ნაბიჯი 1: მასალები

თქვენ დაგჭირდებათ შემდეგი:

  • Basys3 დაფა (ან ექვივალენტი FPGA დაფა)
  • Micro-B USB კაბელი
  • სპიკერი (მე გამოვიყენე პასიური სპიკერი)
  • 2 მავთული
  • პროგრამული უზრუნველყოფა FPGA– ზე განსახორციელებლად (მე გამოვიყენე Vivado)
  • კონკურენტუნარიანი ბუზერის სისტემის ფაილი

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

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

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

შეყვანა:

player1, player2 ეს შეყვანა დაკავშირებულია Basys3 დაფის ორ კონცენტრატორთან. მოხერხებულობისთვის გამოყენებული იქნება მარცხენა და მარჯვენა გადამრთველები.

გადატვირთვა ცენტრალური ღილაკი გამოყენებული იქნება გადატვირთვის ღილაკის გამოსახატად.

count_down_20_sec მარცხენა ღილაკი გამოყენებული იქნება 20 წამიანი ტაიმერის ღილაკის გამოსახატავად.

count_down_5_sec მარჯვენა ღილაკი გამოყენებული იქნება 20 წამიანი ტაიმერის ღილაკის გამოსახატად. 20 წამიანი და 5 წამიანი ქრონომეტრის დაწყების უზრუნველსაყოფად, დააჭირეთ ღილაკს მანამ, სანამ შვიდ სეგმენტიანი ეკრანი არ აჩვენებს ტაიმერს.

CLK FPGA დაფა გამოიმუშავებს საათს, რომელიც მუშაობს 10 ns სიხშირით.

გამომავალი:

სპიკერი დინამიკის გამომავალი დაკავშირებულია გარე ზუზერთან ან დინამიკთან. თქვენ მოგიწევთ დინამიკის დაკავშირება Basys3 დაფის JA pmod პორტებთან. ეს ნაბიჯი ქვემოთ იქნება აღწერილი.

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

SEGMENTS ეს გამომავალი უკავშირდება რვა ცალკეულ სეგმენტს შვიდი სეგმენტის ეკრანზე, ათწილადის ჩათვლით.

DISP_EN ეს გამომავალი დაკავშირებულია შვიდ სეგმენტიანი ეკრანის ოთხ ანოდთან.

player_LED ეს გამომავალი არის 2 პაკეტის სიგნალი, რომელიც დაკავშირებულია LED– ებთან, player1 და player2 კონცენტრატორების ზემოთ. პირველი მოთამაშე, რომელიც გადაატრიალებს შესაბამის გადამრთველს, მითითებული იქნება LED- ით. გაითვალისწინეთ, რომ ორივე LED არ შეიძლება ერთდროულად იყოს ჩართული.

ნაბიჯი 3: გარე სპიკერის დაკავშირება

გარე სპიკერის დაკავშირება
გარე სპიკერის დაკავშირება

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

შეზღუდვების ფაილი შექმნილია ისე, რომ ნებისმიერი პორტი JA1– დან JA10– მდე უნდა იმუშაოს. თუმცა, დაფის ზოგიერთი ქინძისთავები არ რეაგირებს, ასე რომ, თუ JA10 არ ფუნქციონირებს, შეგიძლიათ სცადოთ სხვა პორტები.

ნაბიჯი 4: სტრუქტურული დიაგრამა

სტრუქტურული დიაგრამა
სტრუქტურული დიაგრამა

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

player_lockout_LED1 მოთამაშის დაბლოკვის LED კომპონენტი არის სასრული მდგომარეობის მანქანა, რომელიც იყენებს ერთ ცხელ კოდირებას. მას აქვს ოთხი შეყვანა: player1, player2, გადატვირთვა და CLK. ის შეიცავს 2-ბიტიანი პაკეტის გამომცემელს player_LED. Player_lockout_LED1 კომპონენტის შეყვანა და გამოსავალი უშუალოდ არის დაკავშირებული მთავარი მოდულის იდენტურად დასახელებულ შესასვლელთან და გამოსავალთან.

buzzer_tone1 ზუმერის კომპონენტი დაფუძნებულია ამ კოდზე, რომელიც განთავსებულია ფორუმზე

stackoverflow.com/questions/22767256/vhdl-… თუმცა, ის შეცვლილია 440 ჰც სიხშირის უწყვეტი ხმის გამოსასვლელად (შენიშვნა). ჩართვის ჩართვა დაკავშირებულია buzzer_enable სიგნალთან, რომელიც არის down_counter_FSM1 კომპონენტის გამომავალი.

clk_div1 საათის გამყოფი კომპონენტი არის პროფესორ ბრაინ მილის საათის გამყოფის შეცვლილი ვერსია, რომელიც მოცემულია PolyLearn– ზე. ის ანელებს საათს, ასე რომ გამომავალი პერიოდი 1 წამია.

down_counter_FSM1 ქვემოთ მრიცხველი არის FSM, რომელიც შექმნილია ნულის დასათვლელად. დაწყების ორი სავარაუდო დრო არის 20 ან 5, რომელსაც ირჩევს მომხმარებლის შეყვანა. გამოდის '1', როდესაც ტაიმერი მიაღწევს ნულს, რომ მიუთითოს, რომ დრო ამოიწურა. ეს გამომავალი მოქმედებს როგორც ზარის ზარის კომპონენტის ჩართვის საშუალება. მრიცხველი ასევე გამოაქვს 8-ბიტიანი პაკეტის სიგნალი, რომელიც აგზავნის 8-ბიტიან BCD- ს, რომელიც იგზავნება სეგმენტის დეკოდერში. კიდევ ერთი გამომავალი არის counter_on, რომელიც ასევე დაკავშირებულია სეგმენტის დეკოდერის მოქმედ შეყვანასთან.

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

ნაბიჯი 5: სასრული მდგომარეობის აპარატის (FSM) დიაგრამა

სასრული მდგომარეობის აპარატის (FSM) დიაგრამა
სასრული მდგომარეობის აპარატის (FSM) დიაგრამა

მგრძნობელობის სია სასრული მდგომარეობის აპარატისთვის არის player1, player2, გადატვირთვა და საათი. FSM გამომავალი არის 2 ბიტიანი bundle player_LED, რომელიც დაკავშირებულია ორ LED- თან Basys3 დაფაზე. სასრული მდგომარეობის მანქანა აჩვენებს შემდეგ სამ მდგომარეობას:

ST0 არის საწყისი მდგომარეობა. ამ მდგომარეობაში ორი LED ნათურა გამორთულია. FSM დარჩება ამ მდგომარეობაში, თუ მოთამაშე 1 და მოთამაშე 2 დაბალია. ასინქრონული გადატვირთვა ასევე ადგენს მდგომარეობას ST0. როდესაც player1 გადამრთველი დაყენებულია მაღალზე, შემდეგი მდგომარეობა იქნება ST1. თუ player2 გადამრთველი დაყენებულია მაღალზე, შემდეგი მდგომარეობა იქნება ST2.

ST1 არის მდგომარეობა, რომელზედაც ჩართულია player1 LED. FSM დარჩება ამ მდგომარეობაში ნებისმიერი შეყვანისთვის. ეს ნიშნავს, რომ მაშინაც კი, როდესაც player2 გადამრთველი დაყენებულია მაღალ დონეზე მაშინვე, როდესაც player1 გადამრთველი მაღალია, ის დარჩება ST1- ში. მხოლოდ ასინქრონულ გადატვირთვას შეუძლია შემდეგი მდგომარეობის დაყენება ST0.

ST2 არის მდგომარეობა, რომელზედაც ჩართულია player2 LED. ST! - ის მსგავსად, FSM დარჩება ამ მდგომარეობაში ნებისმიერი შეყვანისთვის, მაშინაც კი, როდესაც player1 გადამრთველი მაღალია მაშინვე, როდესაც player2 გადამრთველი მაღალია. ისევ და ისევ, მხოლოდ ასინქრონულ გადატვირთვას შეუძლია შემდეგი მდგომარეობის დაყენება ST0.

გირჩევთ: