Professional Documents
Culture Documents
Εργαστήριο 5
Χανιά 2009
Σκοπός του Εργαστηρίου
Είναι η σχεδίαση ενός σύνθετου παιχνιδιού πινγκ-πονγκ µε τη γλώσσα VHDL στην
αναπτυξιακή πλατφόρμα Spartan 3 της Digilent.
Προετοιμασία
Κατά την προσέλευση σας στο εργαστήριο πρέπει να έχετε α) σχεδιάσει το block
diagram της σχεδίασης β) να έχετε υλοποιήσει τον κώδικα VHDL, και να είναι
πλήρως λειτουργικός (Behavioral simulation).
Ζητούμενα
Να σχεδιάσετε και να υλοποιήσετε ένα κύκλωμα που έχει εισόδους και εξόδους όπως
στον πίνακα 1.
Περιγραφή λειτουργίας
Στο προηγούμενο εργαστήριο υλοποιήθηκε ένα απλό παιχνίδι ping-pong όπου κάθε
παίκτης έπρεπε να πατήσει το κουμπί του κατά τη διάρκεια που είναι αναμμένο το
ακραίο LED από τη μεριά του και αυτό συνέχιζε το παιχνίδι με αλληλουχία ανάμματος
των LED. Ο παίκτης που δεν κατάφερνε να “αποκρούσει” την μπάλα, έχανε και το
νούμερο του νικητή αναγραφόταν στα 7-Segment Displays
Σε αυτό το εργαστήριο, κάθε παιχνίδι δεν είναι πλέον ανεξάρτητο από τα υπόλοιπα
παιχνίδια αλλά εντάσσονται σε παρτίδες.
Το PB1 ξεκινάει καινούργια παρτίδα “New Match”. Κάθε παρτίδα τελειώνει στις 5 νίκες
ενός παίκτη και το σκορ φαίνεται σε δεκαδική μορφή στα 7-Segment Displays. Κάθε
φορά που ολοκληρώνονται 3 πλήρεις περίοδοι της μπάλας ping-pong η συχνότητα
κίνησης της διπλασιάζεται (ίδια λειτουργικότητα με το εργαστήριο 4).
Πιο συγκεκριμένα:
1. Το παιχνίδι ξεκινάει με τον χρήστη να έχει πατήσει New Match.
Τα υπόλοιπα Push Buttons (NewGame, Player1, Player2) θα πρέπει να είναι
απενεργοποιημένα, δηλαδή, να μην έχουν καμία λειτουργία.
2. Το σύστημα έχει μπει σε Match Mode και η μπάλα έχει τοποθετηθεί στη μέση
με ένα από τα μεσαία LED να είναι αναμμένο.
Ίδια λειτουργικότητα με Εργαστήριο 4.
3. Για να ξεκινήσει νέο παιχνίδι θα πρέπει ο χρήστης να πατήσει New Game.
Ίδια λειτουργικότητα με Εργαστήριο 4.
4. Ο παίκτης που δεν καταφέρνει να “αποκρούσει” την μπάλα χάνει και στο 1ο 7-
Segment Display (7SegDisplay0) αναγράφεται ο άλλος παίκτης ως νικητής.
Ίδια λειτουργικότητα με Εργαστήριο 4
5. Ταυτόχρονα στα υπόλοιπα 7-Segment Display (7SegDisplay1, 7SegDisplay 2,
7SegDisplay 3) αναγράφεται το ανανεωμένο πλέον σκορ της παρτίδας.
Για παράδειγμα, αν νικητής του παιχνιδιού ήταν ο παίκτης 2 και αυτό ήταν το 1ο
παιχνίδι της παρτίδας, τα 7SegDisplay1, 7SegDisplay2, 7SegDisplay3 δείχνουν:
0 – 1. Με το τέλος κάθε παιχνιδιού το σκορ στα 7SegDisplay1, 7SegDisplay2,
7SegDisplay3, ανανεώνεται για να δείχνει την τρέχουσα κατάσταση της
παρτίδας.
6. Με το τέλος κάθε παιχνιδιού η διαδικασία επαναλαμβάνεται (βήματα 3 έως 5),
εκτός αν στο προηγούμενο παιχνίδι ένας από τους παίκτες συμπλήρωσε 5 νίκες.
Σε αυτή την περίπτωση το σύστημα ξεκινάει από το βήμα 2 αφού ο χρήστης
πατήσει το PB NewMatch. Σε οποιαδήποτε άλλη περίπτωση οι έξοδοι δεν
ανανεώνονται.
Σημείωση:
Όσες ομάδες έχουν υλοποιήσει το Bonus του εργαστηρίου 4
“Να συμπληρωθεί στο παιχνίδι η «μπάλα» να ξεκινάει από τον παίκτη που έχει
κερδίσει τον προηγούμενο πόντο και να ξεκινάει από την πλευρά του προς τον
άλλο παίχτη όποτε ο παίκτης που «σερβίρει» πατήσει το κουμπί του”
δε χρειάζεται να αλλάξουν τη λειτουργικότητα του συστήματος τους.
Bonus (10%): Όταν ένας παίκτης νικήσει μια παρτίδα, να αναβοσβήνει στα 7-Segment
Displays το όνομα του νικητή (PL-1 ή PL-2) με συχνότητα 0,5 sec, μέχρι ο χρήστης να
πατήσει NewMatch
Ο βαθμός της αναφοράς μετράει στον τελικό βαθμό του εργαστηρίου μόνο αν ο βαθμός
της διεξαγωγής του εργαστηρίου είναι 35%.
Παρατηρήσεις / Σημειώσεις
2. ΠΡΟΣΟΧΗ ΣΤΟ ΡΟΛΟΙ. Η εντολή (clock’event and clock=’1’) είναι μόνο για
το ρολόι του συστήματος και δεν χρησιμοποιείται τίποτα άλλο μαζί της.
Παράδειγμα εισόδων εξόδων για μία παρτίδα.
Έξοδοι
Είσοδοι LEDs 7-Segment LED Displays
Μόλις έχει
προγραμματιστεί το
Board. Δεν έχει
πατηθεί κανένα PB.
1
Player1: ‘0’
Player2: ‘0’
NewGame: ‘0’
NewMatch: ‘0’
Έχει πατηθεί
οποιοδήποτε PB
εκτός του
NewMatch
2
Player1: ‘0’ or ‘1’
Player2: ‘0’ or ‘1’
NewGame: ‘0’ or ‘1’
NewMatch: ‘0’
Έχει πατηθεί το PB
NewMatch
Player1: ‘0’
3
Player2: ‘0’
NewGame: ‘0’
NewMatch: ‘1’
Έχει πατηθεί το PB
NewGame
Player1: ‘0’
4
Player2: ‘0’
NewGame: ‘0’
NewMatch: ‘1’
Έχει νικήσει ο
Player1 και δεν έχει
πατηθεί NewGame
ή NewMatch
5
Player1: ‘0’
Player2: ‘0’
NewGame: ‘0’
NewMatch: ‘1’
Έχει πατηθεί
NewGame
Player1: ‘0’
7
Player2: ‘0’
(ή όπως στο Bonus του
NewGame: ‘1’
NewMatch: ‘0’ Εργαστηρίου 4)
8 Το παιχνίδι συνεχίζεται
Το παιχνίδι έχει
συνεχιστεί και το
σκορ είναι 5-3 και
την τελευταία
9 παρτίδα την
κέρδισε ο Player2
Έχει πατηθεί
οποιοδήποτε PB
εκτός του
NewMatch
10
Player1: ‘0’ or ‘1’
Player2: ‘0’ or ‘1’
NewGame: ‘0’ or ‘1’
NewMatch: ‘0’
Σχεδίαση Εργαστηρίου 4
Reset/PB1 Player1/PB0 NewGame/PB2 Player2/PB3
CLK
Debounce Debounce Debounce Debounce
Change Direction
Enable Ball
Frequency
Shift
Unit
Result
Result
Σχεδίαση Εργαστηρίου 5
Reset/NewMatch/PB
CLK Player1/PB NewGame/PB Player2/PB
Debounce
GameResult
Result
MatchResult
Game Winner Match Score
Τιμές: 1,2 π.χ. “2 – 3”