«Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων» Χειμερινό εξάμηνο 2016-2017 Μηχανές Πεπερασμένων Καταστάσεων Παρασκευάς Κίτσος http://diceslab.cied.teiwest.gr Επίκουρος Καθηγητής Tμήμα Μηχανικών Πληροφορικής ΤΕ E-mail: pkitsos@teimes.gr Αντίρριο 13/01/2017 1
ΔΟΜΗ ΠΑΡΟΥΣΙΑΣΗΣ Εισαγωγή - Μονάδα ελέγχου Πρώτο στυλ σχεδιασμού Δεύτερο στυλ σχεδιασμού 2
ΜΗΧΑΝΕΣ ΠΕΠΕΡΑΣΜΕΝΩΝ ΚΑΤΑΣΤΑΣΕΩΝ-ΕΙΣΑΓΩΓΗ Οι μηχανές πεπερασμένων καταστάσεων (Finite States Machines) αποτελούν ειδική τεχνική μοντελοποίησης ακολουθιακών κυκλωμάτων Χρησιμοποιούνται για συστήματα που εκτελούν μια καθορισμένη ακολουθία λειτουργιών Κυρίως σαν ψηφιακοί ελεγκτές ή μονάδες ελέγχου 3
ΤΥΠΙΚΟ ΨΗΦΙΑΚΟ ΣΥΣΤΗΜΑ Είσοδοι δεδομένων Είσοδοι ελέγχου Datapath (Μονάδα εκτέλεσης) Σήματα ελέγχου Controller (Μονάδα ελέγχου-cu) Σήματα κατάστασης Έξοδοι δεδομένων Έξοδοι ελέγχου 4
ΜΟΝΑΔΑ ΕΚΤΕΛΕΣΗΣ (DATAPATH) Διαχείριση και επεξεργασία δεδομένων Εκτελεί αριθμητικές και λογικές πράξεις, ολισθήσεις και άλλες πράξεις Αποτελείται από καταχωρητές (Flip-flops), λογικές πύλες, αθροιστές, αφαιρέτες, πολυπλέκτες, κωδικοποιητές, συγκριτές, ALUs και άλλα κυκλώματα Περιέχει επίσης όλες τις απαραίτητες διασυνδέσεις Ερμηνεύει σήματα ελέγχου που λαμβάνει από τη μονάδα ελέγχου (controller) και δημιουργεί σήματα κατάστασης για τη μονάδα ελέγχου 5
ΜΟΝΑΔΑ ΕΛΕΓΧΟΥ (CONTROL UNIT CONTROLLER) Ελέγχει τη διακίνηση των δεδομένων στη μονάδα εκτέλεσης μέσω πολυπλεκτών ή άλλων στοιχείων Ενεργοποίηση/απενεργοποίηση σημάτων σε καταχωρητές Ενεργοποίηση/απενεργοποίηση σημάτων επιλογής σε πολυπλέκτες Ορίζει σήματα για την ενεργοποίηση διαφόρων ενεργειών στη μονάδα εκτέλεσης Ακολουθεί ένα «πρόγραμμα» ή ένα «σενάριο» λειτουργίας 6
ΜΟΝΑΔΑ ΕΛΕΓΧΟΥ (CONTROL UNIT CONTROLLER) Η μονάδα ελέγχου μπορεί να είναι προγραμματιζόμενη ή μη-προγραμματιζόμενη Η προγραμματιζόμενη Έχει έναν program counter που δείχνει την επόμενη προς εκτέλεση εντολή Οι εντολές είναι αποθηκευμένες σε μια RAM ή ROM Η μη-προγραμματιζόμενη Αν σχεδιαστεί εκτελεί πάντα την ίδια διαδικασία Οι μη-προγραμματιζόμενες μονάδες ελέγχου σχεδιάζονται με τις Μηχανές Πεπερασμένων Καταστάσεων (Finite State Machines-FSMs) 7
ΜΗΧΑΝΕΣ ΠΕΠΕΡΑΣΜΕΝΩΝ ΚΑΤΑΣΤΑΣΕΩΝ Υπάρχουν δύο είδη μηχανών πεπερασμένων καταστάσεων Μηχανή Mealy Μηχανή Moore 8
ΜΗΧΑΝΗ MEALY H έξοδος της μηχανής εξαρτάται από τη τρέχουσα κατάσταση και τη τρέχουσα είσοδο process(clock, reset) Inputs clock reset Next State Next State function Present State register Present State Παράλληλες δηλώσεις Output function Outputs 9
ΔΙΑΓΡΑΜΜΑ ΚΑΤΑΣΤΑΣΕΩΝ ΜΗΧΑΝΗΣ MEALY συνθήκη μετάβασης κατάστασης 1 (transition condition 1) / έξοδος 1 (output 1) state 1 state 2 συνθήκη μετάβασης κατάστασης 2 (transition condition 2) / έξοδος 2 (output 2) 10
ΜΗΧΑΝΗ MOORE H έξοδος της μηχανής εξαρτάται από τη τρέχουσα κατάσταση process(clock, reset) Inputs Next State function clock reset Next State Present State register Present State Παράλληλες Δηλώσεις Output function Outputs 11
ΔΙΑΓΡΑΜΜΑ ΚΑΤΑΣΤΑΣΕΩΝ ΜΗΧΑΝΗΣ MOORE συνθήκη μετάβασης κατάστασης 1 (transition condition 1) state 1 / output 1 state 2 / output 2 συνθήκη μετάβασης κατάστασης 2 (transition condition 2) 12
MEALY ΕΝΑΝΤΙ MOORE ΜΗΧΑΝΕΣ Οι δύο μηχανές (FSMs) μπορεί να είναι ίδιες λειτουργικά Από τη μια μπορεί να προκύψει η άλλη Η Mealy έχει μεγαλύτερη (πληρέστερη) περιγραφή και συνήθως απαιτεί μικρότερο αριθμό καταστάσεων Αυτό σημαίνει λιγότερους πόρους σε υλικό (μικρότερο κύκλωμα) 13
MEALY ΕΝΑΝΤΙ MOORE ΜΗΧΑΝΕΣ Η Mealy μηχανή υπολογίζει τις εξόδους τη στιγμή που μεταβάλλονται οι είσοδοι Η Mealy μηχανή αποκρίνεται ένα παλμό ρολογιού γρηγορότερα από τη Moore μηχανή Η Moore μηχανή δεν έχει συνδυαστικό μονοπάτι μεταξύ της εισόδου και της εξόδου H Moore μηχανή έχει μικρότερο κρίσιμο μονοπάτι (είναι ταχύτερη) 14
MEALY FSM ΠΑΡΑΔΕΙΓΜΑ 1 Η μηχανή αναγνωρίζει ακολουθίες από «10» 0 / 0 1 / 0 1 / 0 S0 S1 reset Εξήγηση των καταστάσεων S0: Κανένα στοιχείο από την ακολουθία δε βρέθηκε 0 / 1 S1: ένας 1 βρέθηκε 15
MOORE FSM ΠΑΡΑΔΕΙΓΜΑ 1 Η μηχανή αναγνωρίζει ακολουθίες από «10» 0 1 0 S0 / 0 1 S1 / 0 1 S2 / 1 reset Εξήγηση των καταστάσεων S0: Κανένα στοιχείο από την ακολουθία δε βρέθηκε 0 S1: ένας 1 βρέθηκε S2: μια ακολουθία από 10 βρέθηκε 16
ΠΡΟΣΟΜΟΙΩΣΗ ΜΗΧΑΝΩΝ clock input Moore Mealy 0 1 0 0 0 S0 S1 S2 S0 S0 S0 S1 S0 S0 S0 17
ΟΙ FSMs ΣΤΗ VHDL Οι μηχανές πεπερασμένων καταστάσεων (FSMs) μπορούν να περιγραφούν πολύ εύκολα με processes (διεργασίες) Τα προγράμματα σύνθεσης (τύπου ISE) καταλαβαίνουν ότι πρόκειται για περιγραφές FSMs αν ακολουθούνται κάποιο απλοί κανόνες Οι μεταβάσεις καταστάσεων (state transitions) μπορούν να περιγραφούν σε μια process με χρήση clock και ασύγχρονου reset Οι έξοδοι περιγράφονται χρησιμοποιώντας απλούς κανόνες σχεδιασμού συνδυαστικών κυκλωμάτων π.χ. παράλληλες δηλώσεις ή χρήση process με δήλωση όλων των εισόδων στη λίστα ευαισθησίας 18
ΜΗΧΑΝΕΣ ΠΕΠΕΡΑΣΜΕΝΩΝ ΚΑΤΑΣΤΑΣΕΩΝ Το δομικό διάγραμμα μιας FSM μιας φάσης αποτελείται από ένα τμήμα ακολουθιακής λογικής (μεταβάσεις καταστάσεων) (Flip- Flop) και ένα τμήμα συνδυαστικής λογικής (έξοδοι) Ο διαχωρισμός του κυκλώματος επιτρέπει το χωρισμό του σχεδιασμού σε δύο μέρη 19
ΜΗΧΑΝΕΣ ΠΕΠΕΡΑΣΜΕΝΩΝ ΚΑΤΑΣΤΑΣΕΩΝ To τμήμα συνδυαστικής λογικής έχει δύο εισόδους (pr_state -τρέχουσα κατάσταση- και τη κύρια εξωτερική είσοδο) και δύο εξόδους (τη nx_state επόμενη κατάσταση- και τη κύρια εξωτερική έξοδο) Το τμήμα ακολουθιακής λογικής έχει τρεις εισόδους (clock, reset και nx_state) και μια έξοδο (pr_state) 20
ΠΡΩΤΟ ΣΤΥΛ ΣΧΕΔΙΑΣΜΟΥ (MOORE) Ο σχεδιασμός του τμήματος της ακολουθιακής λογικής διαχωρίζεται πλήρως από το σχεδιασμό του τμήματος συνδυαστικής λογικής Όλες οι καταστάσεις της μηχανής δηλώνονται ρητά με χρήση απαριθμητού τύπου δεδομένων 21
ΣΧΕΔΙΑΣΜΟΣ ΑΚΟΛΟΥΘΙΑΚΟΥ ΤΜΗΜΑΤΟΣ Είσοδοι: Clock, reset, nx_state Έξοδος: pr_state Για τον προγραμματισμό του τμήματος θα απαιτηθεί μια process και εντολές ακολουθιακής λογικής όπως οι If, Wait, Case και Loop) 22
ΣΧΕΔΙΑΣΜΟΣ ΑΚΟΛΟΥΘΙΑΚΟΥ ΤΜΗΜΑΤΟΣ: ΠΑΡΑΔΕΙΓΜΑ Process(clock,reset) Begin If (reset= 1 ) Then pr_state<=state0; Elsif (clock event and clock= 1 ) Then pr_state<=nx_state; End If; End Process; 23
ΣΧΕΔΙΑΣΜΟΣ ΣΥΝΔΥΑΣΤΙΚΟΥ ΤΜΗΜΑΤΟΣ: ΠΑΡΑΔΕΙΓΜΑ Process(input,pr_state) Begin Case pr_state Is when state0=> If (input= ) then else End if; when state1=> End case; End Process; output<= <value>; nx_state<=state1; If (input= ) then else End if; output<= <value>; nx_state<=state2; 24
ΠΑΡΑΔΕΙΓΜΑ: ΑΠΑΡΙΘΜΗΤΗΣ BCD (1/4) 25
ΠΑΡΑΔΕΙΓΜΑ: ΑΠΑΡΙΘΜΗΤΗΣ BCD (2/4) 1 ------------------------------------------------- 2 LIBRARY ieee; 3 USE ieee.std_logic_1164.all; 4 ------------------------------------------------- 5 ENTITY counter IS 6 PORT (clk, rst: IN STD_LOGIC; 7 count: OUT STD_LOGIC_VECTOR (3 DOWNTO 0)); 8 END counter; 9 ------------------------------------------------- 10 ARCHITECTURE state_machine OF counter IS 11 TYPE state IS (zero, one, two, three, four, 12 five, six, seven, eight, nine); 13 SIGNAL pr_state, nx_state: state; 14 BEGIN 15 ------------- Lower section: ----------------- 16 PROCESS (rst, clk) 17 BEGIN 18 IF (rst='1') THEN 19 pr_state <= zero; 20 ELSIF (clk'event AND clk='1') THEN 21 pr_state <= nx_state; 22 END IF; 23 END PROCESS; 26
ΠΑΡΑΔΕΙΓΜΑ: ΑΠΑΡΙΘΜΗΤΗΣ BCD (3/4) 24 ------------- Upper section: ----------------- 25 PROCESS (pr_state) 26 BEGIN 27 CASE pr_state IS 28 WHEN zero => 29 count <= "0000"; 30 nx_state <= one; 31 WHEN one => 32 count <= "0001"; 33 nx_state <= two; 34 WHEN two => 35 count <= "0010"; 36 nx_state <= three; 37 WHEN three => 38 count <= "0011"; 39 nx_state <= four; 40 WHEN four => 41 count <= "0100"; 42 nx_state <= five; 43 WHEN five => 44 count <= "0101"; 45 nx_state <= six; 27
ΠΑΡΑΔΕΙΓΜΑ: ΑΠΑΡΙΘΜΗΤΗΣ BCD (4/4) 46 WHEN six => 47 count <= "0110"; 48 nx_state <= seven; 49 WHEN seven => 50 count <= "0111"; 51 nx_state <= eight; 52 WHEN eight => 53 count <= "1000"; 54 nx_state <= nine; 55 WHEN nine => 56 count <= "1001"; 57 nx_state <= zero; 58 END CASE; 59 END PROCESS; 60 END state_machine; 61 ------------------------------------------------- 28
ΑΠΑΡΙΘΜΗΤΗΣ BCD: ΠΡΟΣΟΜΟΙΩΣΗ 29
ΔΕΥΤΕΡΟ ΣΤΥΛ ΣΧΕΔΙΑΣΜΟΥ (MEALY) Στο πρώτο στυλ σχεδιασμού αποθηκεύεται μόνο το σήμα pr_state (τρέχουσα κατάσταση) Σε μια μηχανή τύπου Mealy η έξοδος αλλάζει όταν αλλάζει η είσοδος (ασύγχρονη έξοδος) (σχήμα α) Σε πολλές περιπτώσεις τα σήματα πρέπει να είναι σύγχρονα, δηλαδή η έξοδος να ενημερώνεται όταν εμφανίζεται η σωστή ακμή του ρολογιού Για να γίνουν οι Mealy μηχανές σύγχρονες θα πρέπει να αποθηκευτεί και η έξοδος της (σχήμα β) 30
ΔΕΥΤΕΡΟ ΣΤΥΛ ΣΧΕΔΙΑΣΜΟΥ (MEALY) 31
ΔΕΥΤΕΡΟ ΣΤΥΛ ΣΧΕΔΙΑΣΜΟΥ: ΠΡΟΤΥΠΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (1/2) 32
ΔΕΥΤΕΡΟ ΣΤΥΛ ΣΧΕΔΙΑΣΜΟΥ: ΠΡΟΤΥΠΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (2/2) 33
ΠΑΡΑΔΕΙΓΜΑ: ΑΠΛΗ FSM (1/3) Το σύστημα έχει δύο καταστάσεις (statea, stateb) Εναλλάσσονται μεταξύ τους όταν d<= 1 Η έξοδος είναι x=a όταν η μηχανή είναι στην κατάσταση Α ή x=b όταν η μηχανή είναι στην κατάσταση Β Η κατάσταση αναφοράς είναι η κατάσταση Α 34
ΠΑΡΑΔΕΙΓΜΑ: ΑΠΛΗ FSM (2/3) 1 ---------------------------------------------- 2 ENTITY simple_fsm IS 3 PORT (a, b, d, clk, rst: IN BIT; 4 x: OUT BIT); 5 END simple_fsm; 6 ---------------------------------------------- 7 ARCHITECTURE simple_fsm OF simple_fsm IS 8 TYPE state IS (statea, stateb); 9 SIGNAL pr_state, nx_state: state; 10 SIGNAL temp: BIT; 11 BEGIN 12 ----- Lower section: ---------------------- 13 PROCESS (rst, clk) 14 BEGIN 15 IF (rst='1') THEN 16 pr_state <= statea; 17 ELSIF (clk'event AND clk='1') THEN 18 x <= temp; 19 pr_state <= nx_state; 20 END IF; 21 END PROCESS; 35
ΠΑΡΑΔΕΙΓΜΑ: ΑΠΛΗ FSM (3/3) 22 ---------- Upper section: ----------------- 23 PROCESS (a, b, d, pr_state) 24 BEGIN 25 CASE pr_state IS 26 WHEN statea => 27 temp <= a; 28 IF (d='1') THEN nx_state <= stateb; 29 ELSE nx_state <= statea; 30 END IF; 31 WHEN stateb => 32 temp <= b; 33 IF (d='1') THEN nx_state <= statea; 34 ELSE nx_state <= stateb; 35 END IF; 36 END CASE; 37 END PROCESS; 38 END simple_fsm; ---------------------------------------------- 36
ΑΠΛΗ FSM: ΠΡΟΣΟΜΟΙΩΣΗ 37
MOORE FSM ΠΑΡΑΔΕΙΓΜΑ 1 Η μηχανή αναγνωρίζει ακολουθίες από «10» 0 1 0 S0 / 0 1 S1 / 0 1 S2 / 1 reset S0: Κανένα στοιχείο από την ακολουθία δε βρέθηκε 0 S1: ένας 1 βρέθηκε S2: μια ακολουθία από 10 βρέθηκε 38
MOORE FSM ΠΑΡΑΔΕΙΓΜΑ 1 ΣΕ VHDL 1 TYPE state IS (S0, S1, S2); 2 SIGNAL Moore_state: state; 3 U_Moore: PROCESS (clock, reset) 4 BEGIN 5 IF(reset = 1 ) THEN 6 Moore_state <= S0; 7 ELSIF (clock = 1 AND clock event) THEN 8 CASE Moore_state IS 9 WHEN S0 => 10 IF input = 1 THEN 11 Moore_state <= S1; 12 ELSE 13 Moore_state <= S0; 14 END IF; 39
MOORE FSM ΠΑΡΑΔΕΙΓΜΑ 1 ΣΕ VHDL 15 WHEN S1 => 16 IF input = 0 THEN 17 Moore_state <= S2; 18 ELSE 19 Moore_state <= S1; 20 END IF; 21 WHEN S2 => 22 IF input = 0 THEN 23 Moore_state <= S0; 24 ELSE 25 Moore_state <= S1; 26 END IF; 27 END CASE; 28 END IF; 29 END PROCESS; 30 Output <= 1 WHEN Moore_state = S2 ELSE 0 ; 40
MEALY FSM ΠΑΡΑΔΕΙΓΜΑ 1 Η μηχανή αναγνωρίζει ακολουθίες από «10» 0 / 0 1 / 0 1 / 0 S0 S1 reset Εξήγηση των καταστάσεων S0: Κανένα στοιχείο από την ακολουθία δε βρέθηκε 0 / 1 S1: ένας 1 βρέθηκε 41
MEALY FSM ΠΑΡΑΔΕΙΓΜΑ 1 ΣΕ VHDL 1 TYPE state IS (S0, S1); 2 SIGNAL Mealy_state: state; 3 U_Mealy: PROCESS(clock, reset) 4 BEGIN 5 IF(reset = 1 ) THEN 6 Mealy_state <= S0; 7 ELSIF (clock = 1 AND clock event) THEN 8 CASE Mealy_state IS 9 WHEN S0 => 10 IF input = 1 THEN 11 Mealy_state <= S1; 12 ELSE 13 Mealy_state <= S0; 14 END IF; 42
MEALY FSM ΠΑΡΑΔΕΙΓΜΑ 1 ΣΕ VHDL 15 WHEN S1 => 16 IF input = 0 THEN 17 Mealy_state <= S0; 18 ELSE 19 Mealy_state <= S1; 20 END IF; 21 END CASE; 22 END IF; 23 END PROCESS; 24 Output <= 1 WHEN (Mealy_state = S1 AND input = 0 ) ELSE 0 ; 43
Απορίες???? 44