You are on page 1of 8

ΠΟΛΥΤΕΧΝΕΙΟ ΚΡΗΤΗΣ

ΕΡΓΑΣΤΗΡΙΟ ΜΙΚΡΟΕΠΕΞΕΡΓΑΣΤΩΝ & ΥΛΙΚΟΥ


ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ ΓΙΑ ΤΟ ΜΑΘΗΜΑ:
ΗΡΥ 211 -ΠΡΟΧΩΡΗΜΕΝΗ ΛΟΓΙΚΗ ΣΧΕ∆ΙΑΣΗ

ΕΑΡΙΝΟ ΕΞΑΜΗΝΟ 2009

Εργαστήριο 5

ΠΑΙΧΝΙΔΙ ΠΙΝΓΚ ΠΟΝΓΚ ΜΕ ΠΑΡΤΙΔΕΣ 

ΕΚΠΟΝΗΣΗ : Καθηγ. ∆. Δόλλας


ΒΟΗΘΟΙ: E.Σωτηριάδης
ΕΚ∆ΟΣΗ : 2.0 ( Εαρινό εξάµηνο 2009)

Χανιά 2009
Σκοπός του Εργαστηρίου
Είναι η σχεδίαση ενός σύνθετου παιχνιδιού πινγκ-πονγκ µε τη γλώσσα VHDL στην
αναπτυξιακή πλατφόρμα Spartan 3 της Digilent.

Προετοιμασία
Κατά την προσέλευση σας στο εργαστήριο πρέπει να έχετε α) σχεδιάσει το block
diagram της σχεδίασης β) να έχετε υλοποιήσει τον κώδικα VHDL, και να είναι
πλήρως λειτουργικός (Behavioral simulation).

Ζητούμενα

Να σχεδιάσετε και να υλοποιήσετε ένα κύκλωμα που έχει εισόδους και εξόδους όπως
στον πίνακα 1.

Όνομα Είσοδος / Πλάτος σε bit Αντιστοίχηση στο Board


Έξοδος
Player1 είσοδος 1 PB3
Player2 είσοδος 1 PB0
NewGame είσοδος 1 PB2
NewMatch είσοδος 1 PB1
Clock είσοδος 1 Ο κρύσταλλος με το ρολόι
εισόδου αντιστοιχεί σε
συγκεκριμένο pin της FPGA
BallPosition έξοδος 8 LED0 έως LED7
Results έξοδος 8 7-Segment Display
SSegDisp_EN έξοδος 4 AN0, AN1, AN2, AN3
Σήματα enable για τα
7-Segment Display
Πίνακας 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
“Να συμπληρωθεί στο παιχνίδι η «μπάλα» να ξεκινάει από τον παίκτη που έχει
κερδίσει τον προηγούμενο πόντο και να ξεκινάει από την πλευρά του προς τον
άλλο παίχτη όποτε ο παίκτης που «σερβίρει» πατήσει το κουμπί του”
δε χρειάζεται να αλλάξουν τη λειτουργικότητα του συστήματος τους.

7. Σε οποιαδήποτε χρονική στιγμή πατηθεί “NewMatch”, το παιχνίδι ξεκινάει από


νέα Παρτίδα.

Bonus (10%): Όταν ένας παίκτης νικήσει μια παρτίδα, να αναβοσβήνει στα 7-Segment
Displays το όνομα του νικητή (PL-1 ή PL-2) με συχνότητα 0,5 sec, μέχρι ο χρήστης να
πατήσει NewMatch

Παραδοτέα: Πηγαίος κώδικας VHDL, κυµατοµορφές προσομοίωσης, παρουσίαση


κυκλώματος.
Βαθμολογία:

Διεξαγωγή εργαστηρίου 70%


Προετοιμασία 20%
Προσομοίωση(post place and route) 20%
Σωστά σχόλια στον κώδικα στα αγγλικά
10%
Σωστή λειτουργία του κυκλώματος στο
Board 20%
Αναφορές 30%

Ο βαθμός της αναφοράς μετράει στον τελικό βαθμό του εργαστηρίου μόνο αν ο βαθμός
της διεξαγωγής του εργαστηρίου είναι 35%.

Παρατηρήσεις / Σημειώσεις

1. Να ακολουθήσετε με ακρίβεια τις οδηγίες που σας δίνονται ως προς την


ονομασία των σημάτων και τις εξόδους κάθε κατάστασης.

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 

Debounce Debounce  Debounce


Reset/NewMatch 
FSM Unit 
Enable 
NewGame En
Change Direction
Enable Ball 
Frequency
Shift
Unit

GameResult
Result 
MatchResult

Game Winner Match Score
Τιμές:  1,2   π.χ. “2 – 3”  

You might also like