Სარჩევი:

ძირითადი წამზომი VHDL და Basys3 დაფის გამოყენებით: 9 ნაბიჯი
ძირითადი წამზომი VHDL და Basys3 დაფის გამოყენებით: 9 ნაბიჯი

ვიდეო: ძირითადი წამზომი VHDL და Basys3 დაფის გამოყენებით: 9 ნაბიჯი

ვიდეო: ძირითადი წამზომი VHDL და Basys3 დაფის გამოყენებით: 9 ნაბიჯი
ვიდეო: წამზომი 2024, ნოემბერი
Anonim
Image
Image

კეთილი იყოს თქვენი მობრძანება ინსტრუქციის შესახებ, თუ როგორ უნდა ავაშენოთ წამზომი ძირითადი VHDL და Basys 3 დაფის გამოყენებით. ჩვენ მოხარული ვართ გაგიზიაროთ ჩვენი პროექტი! ეს იყო საბოლოო პროექტი კურსის CPE 133 (ციფრული დიზაინი) Cal Poly- ში, SLO 2016 წლის შემოდგომაზე. პროექტი, რომელიც ჩვენ ავაშენეთ არის მარტივი წამზომი, რომელიც იწყებს, გადატვირთავს და აჩერებს დროს. იგი იღებს სამი ღილაკს Basys3 დაფაზე შეყვანის სახით და დრო ნაჩვენებია დაფის ოთხნიშნა შვიდ სეგმენტიან ეკრანზე. გასული დრო ნაჩვენებია წამებში: ცენტიწამიანი ფორმატი. ის იყენებს დაფის სისტემურ საათს, როგორც შეყვანისას, რათა თვალყური ადევნოს დროის გასვლას და აჩვენებს დროს შვიდ სეგმენტიანი ეკრანის ოთხ ციფრზე.

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

შეყვანისა და გამოყვანის დაყენება
შეყვანისა და გამოყვანის დაყენება

ამ პროექტისთვის დაგჭირდებათ მასალები:

  • 1 კომპიუტერი Vivado Design Suite WebPack– ით დაინსტალირებული Xilinx– დან (სასურველია ვერსია 2016.2)
  • 1 Digilent Basys3 Xilinx Artix-7 FPGA დაფა
  • 1 USB პორტის კაბელი

ნაბიჯი 2: შეყვანისა და გამოყვანის დაყენება

ზემოთ მოყვანილი ფიგურა გვიჩვენებს წამზომი წამყვანი მოდულის ზედა დონის ბლოკ -დიაგრამას. წამზომი იღებს შეყვანის "CLK" (საათი), "S1" (დაწყების ღილაკს), "S2" (პაუზის ღილაკს) და "RST" (გადატვირთვა) და აქვს 4 ბიტიანი გამომავალი "ანოდები", 7 ბიტიანი გამომავალი "სეგმენტი" და ერთ ბიტიანი გამომავალი "DP" (ათობითი წერტილი). როდესაც შეყვანა "S1" მაღალია, წამზომი იწყებს დროის ათვლას. როდესაც "S2" დაბალია, წამზომი აჩერებს დროს. როდესაც "RST" მაღალია, წამზომი ჩერდება და აღადგენს დროს. წრეში არის ოთხი ქვემოდული: საათის გამყოფი, ციფრული მრიცხველი, შვიდი სეგმენტის ჩვენების დრაივერი და შვიდი სეგმენტის ჩვენების კოდირება. წამზომი წამყვანი ძირითადი მოდული აკავშირებს ყველა ქვემოდუმს ერთმანეთთან და შესასვლელთან და გამოსავალთან.

ნაბიჯი 3: საათების დამზადება

საათების დამზადება
საათების დამზადება

საათის გამყოფი მოდული იღებს სისტემის საათს და იყენებს გამყოფის შეყვანას, რომ შექმნას ნებისმიერი საათის სიჩქარე, რომელიც არ აღემატება სისტემის საათს. წამზომი იყენებს ორ სხვადასხვა საათის მოდულს, ერთი რომელიც ქმნის 500 ჰერც საათს და მეორე რომელიც ქმნის 100 ჰც საათს. საათის გამყოფის სქემა ნაჩვენებია ზემოთ მოცემულ ფიგურაში. საათის გამყოფი იღებს ერთ – ბიტიან შეყვანას „CLK“, ხოლო 32 – ბიტიან შეყვანას „გამყოფი“და ერთ ბიტიან გამომავალს „CLKOUT“. "CLK" არის სისტემის საათი და "CLKOUT" არის შედეგად მიღებული საათი. მოდული ასევე შეიცავს NOT კარიბჭეს, რომელიც ცვლის სიგნალს "CLKTOG" როდესაც რიცხვი აღწევს გამყოფის მნიშვნელობას.

ნაბიჯი 4: ათამდე დათვლა

ათამდე ითვლიან
ათამდე ითვლიან

ციფრული მრიცხველი ითვლის თითოეულ ციფრს 0-დან 10-მდე და ქმნის სხვა საათს მომდევნო ციფრის ფუნქციონირებისთვის, რომელიც იცვლება, როდესაც რიცხვი აღწევს 10-ს. მოდული იღებს 3 ერთ ბიტიან შეყვანას "S", "RST" და "CLK" "და იწვევს ერთ ბიტიან გამომავალს" N "და 4 ბიტიან გამომავალს" D ". შეყვანა "S" არის ჩართვის ჩართვა. საათი ჩართულია, როდესაც "S" მაღალია და გამორთულია, როდესაც "S" დაბალია. "RST" არის გადატვირთვის შეყვანა ისე, რომ საათი გადატვირთოს როდესაც "RST" მაღალია. "CLK" არის ციფრული მრიცხველის საათის შეყვანა. "N" არის საათის გამომავალი, რომელიც ხდება შემდგომი ციფრის შეყვანის საათი. გამომავალი "D" წარმოადგენს ციფრის ორობითი მნიშვნელობას, რომელზეც მრიცხველი იმყოფება.

ნაბიჯი 5: რიცხვების ჩვენება

რიცხვების ჩვენება
რიცხვების ჩვენება

შვიდი სეგმენტის ჩვენების კოდირება დაშიფვრავს შვიდ სეგმენტიანი ჩვენების დრაივერის მოდულიდან მიღებული ორობითი რიცხვი და გადააქცევს ბიტების ნაკადს, რომელიც ინტერპრეტირდება როგორც "1" ან "0" მნიშვნელობები ეკრანის თითოეული სეგმენტისთვის. ორობითი რიცხვი მიიღება მოდულის მიერ, როგორც 4 ბიტიანი შეყვანის "ციფრი" და იწვევს 7 ბიტიან გამომავალ "სეგმენტებს". მოდული შედგება ერთი საქმის პროცესის ბლოკისგან, რომელიც ანიჭებს კონკრეტულ 7 ბიტიან ნაკადს თითოეული შესაძლო შეყვანის მნიშვნელობიდან 0-დან 9. თითოეული ბიტი შვიდ ბიტიან ნაკადებში წარმოადგენს ეკრანის ციფრების შვიდი სეგმენტიდან ერთს. ნაკადის სეგმენტების თანმიმდევრობა არის "abcdefg", სადაც '0' წარმოადგენს სეგმენტებს, რომლებიც ანათებენ მოცემულ რიცხვს.

ნაბიჯი 6: როგორ გამოვაჩინოთ წამზომი

როგორ გამოჩნდება წამზომი
როგორ გამოჩნდება წამზომი

შვიდი სეგმენტის ჩვენების დრაივერის მოდულში არის ოთხი 4 ბიტიანი შეყვანა "D0", "D1", "D2" და "D3", რომელთაგან თითოეული წარმოადგენს ჩვენების ოთხ ციფრს. შეყვანა "CLK" არის სისტემის საათის შეყვანა. ერთ ბიტიანი გამომავალი "DP" წარმოადგენს ათ წერტილს შვიდ სეგმენტიან ეკრანზე. 4 ბიტიანი გამომავალი "ანოდები" განსაზღვრავს რომელი ციფრია ნაჩვენები შვიდი სეგმენტის ეკრანზე და 4 ბიტიანი გამომავალი "ტემპი" დამოკიდებულია 2 ბიტიანი საკონტროლო შეყვანის მდგომარეობაზე "SEL". მოდული იყენებს 4 მულტიპლექსერს საკონტროლო შეყვანისთვის "SEL" და სამ გამომავალს; "ანოდები", "ტემპი" და "DP".

ნაბიჯი 7: შეაგროვეთ ყველაფერი ერთად

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

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

შეზღუდვები
შეზღუდვები

გამოიყენეთ 3 ღილაკი (W19, T17 და U18) "RST", "S1" და "S2" შეყვანისთვის. W19 არის გადატვირთვის ღილაკი, T17 არის დაწყების ღილაკი (S1) და U18 არის პაუზის ღილაკი (S2). საათის შეყვანის შეზღუდვა ასევე საჭიროა პორტი W5- ის გამოყენებით. ასევე, გახსოვდეთ დაამატეთ ეს ხაზი საათის შეზღუდვას:

create_clock -add -name sys_clk_pin -პერიოდი 10.00 -ტალღური ფორმა {0 5} [get_ports {CLK}]

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

ნაბიჯი 9: ტესტირება

ტესტირება
ტესტირება

დარწმუნდით, რომ თქვენი მოწყობილობა მუშაობს სამი ღილაკით: დააწკაპუნეთ და დაიჭირეთ ისინი ყოველგვარი თანმიმდევრობით, რათა იპოვოთ რაიმე პრობლემა თქვენს კოდთან.

გირჩევთ: