Τμήμα Μησανικών Πληποφοπικήρ, Τ.Ε.Ι. Ηπείπος Ακαδημαϊκό Έτορ 2016-2017, 6 ο Εξάμηνο Συπικζσ Γλϊςςεσ Περιγραφισ Τλικοφ Διάλεξθ 5 Διδάςκων Σςιακμάκθσ Κυριάκοσ, Phd MSc in Electronic Physics (Radioelectrology) Computer and Electronic Circuits Technology MSc in Science - Agricultural Engineering
υντρζχων και ακολουκιακόσ κϊδικασ Ο κϊδικασ VHDL είναι ςυντρζχων, δθλαδι παράλλθλοσ. Εξαίρεςθ αποτελοφν τα τμιματα που βρίςκονται μζςα ςε διεργαςία (Process), ςυνάρτθςθ (Function), διαδικαςία (Procedure) και είναι ακολουθιακά, δθλαδι ςειριακά. ε αυτιν τθν περίπτωςθ το τμιμα του κϊδικα που εκτελείται ακολουκιακά, κα είναι ςυντρζχων ωσ προσ τον υπόλοιπο κϊδικα.
υντρζχων και ακολουκιακόσ κϊδικασ Ο ςυντρζχων κϊδικασ ονομάηεται και κώδικασ ροήσ δεδομζνων (dataflow code) ενϊ ο ακολουκιακόσ ονομάηεται και κώδικασ ςυμπεριφοράσ (behavioral) Με τθν χριςθ ςυντρζχοντα κϊδικα μποροφμε να περιγράψουμε μόνο συνδυαστικά λογικά κυκλϊματα ενϊ με τθν χριςθ ακολουθιακοφ κϊδικα μποροφμε να περιγράψουμε και ακολουθιακά λογικά κυκλϊματα
υντρζχων και ακολουκιακόσ κϊδικασ Συνδυαςτική λογική: Όταν θ ζξοδοσ του κυκλϊματοσ εξαρτάται αποκλειςτικά από τισ τρζχουςεσ ειςόδουσ. Δεν απαιτείται χριςθ μνιμθσ και μπορεί να υλοποιθκεί με χριςθ ςυμβατικϊν λογικϊν πυλϊν. Ακολουθιακή λογική: Όταν θ ζξοδοσ εξαρτάται από προθγοφμενεσ ειςόδουσ. Για αυτόν τον λόγο αυτό απαιτείται θ χριςθ ςτοιχείων μνιμθσ.
Ακολουκιακόσ κϊδικασ Διεργαςία Διεργαςία(process) Η διεργαςία (process) χαρακτθρίηεται κυρίωσ τισ εντολζσ IF, WAIT, CASE ι LOOP και τθν φπαρξθ μιασ λίςτασ ευαιςθηςίασ (sensitivity list). Σο Sensitivity list (optional) είναι μία λίςτα από ςιματα ςτα οποία θ διεργαςία λζμε ότι είναι Sensitive. Αυτό ςθμαίνει ότι ζνα process εκτελείται μόνο όταν υπάρχει ζνα event ςε ζνα τουλάχιςτον από τα ςιματα ςτθ λίςτα αυτι. Η διεργαςία πρζπει να βρίςκεται ςτον κφριο κϊδικα και εκτελείται κάκε φορά που αλλάηει τιμι κάποιο ςιμα από τθν λίςτα ευαιςκθςίασ.
Ακολουκιακόσ κϊδικασ Διεργαςία Μια διεργαςία ζχει τθν παρακάτω ςφνταξθ: process_name: process (sensitivity_list) declarations begin sequential_statements end process; Σημείωςη Ζνα process πρζπει να ζχει είτε ζνα ςθμείο τθσ Sensitivity list είτε ζνα WAIT statement αλλιϊσ δεν εκτελείται.
Ακολουκιακόσ κϊδικασ Διεργαςία ιματα Μεταβλθτζσ - τακερζσ Από προθγοφμενο κεφάλαιο κυμόμαςτε ότι τα ςιματα τα οποία μπορεί να είναι είςοδοι ι ζξοδοι. Ανάλογα με τθν λειτουργία του κυκλϊματοσ τα ςιματα είναι οι γραμμζσ του ςχθματικοφ τα οποία ζχουν τρζχουςεσ τιμζσ και κα αλλάηουν τιμι. τθ VHDL ζχουμε μεταβλθτζσ (Variables ) και ςτακερζσ (Constants) οι οποίεσ χρθςιμοποιοφνται μζςα ςε processes ι ςυναρτιςεισ, με τρόπο παρόμοιο με αυτόν ςε άλλεσ γλϊςςεσ προγραμματιςμοφ. Process1 Process 2 Signals Ζνα ακολουκιακό κφκλωμα πρζπει να είναι και ςφγχρονο για να λειτουργιςει ςωςτά. Για αυτόν τον λόγο απαιτείται και θ χριςθ ενόσ ςιματοσ χρονιςμοφ (clock).
Ακολουκιακόσ κϊδικασ τακερζσ - Constants Μία ςτακερά μπορεί να ζχει μία τιμι για ζνα τφπο δεδομζνων. Δεν μπορεί να αλλάξει κατά τθ διάρκεια τθσ προςωμοίωςθσ. Μία ςτακερά δθλϊνεται ωσ εξισ: constant list_of_name_of_constant: type [ := initial value] ; Καθολικά Οι ςτακερζσ μποροφν να δθλωκοφν ςτθν αρχι του architecture και μποροφν να χρθςιμοποιθκοφν ςε όλο το architecture. Τοπικά Οι ςτακερζσ που ορίηονται μζςα ςε ζνα process μποροφν να χρθςιμοποιθκοφν μόνο μζςα ςτο ςυγκεκριμζνο process. Παραδείγματα constant MIA: time := 4 ns; constant DYO: integer:= 8;
Ακολουκιακόσ κϊδικασ Μεταβλθτζσ - Variables Μία μεταβλθτι μπορεί να ζχει μία τιμι 1. Δθλϊνεται ΜΟΝΟ μζςα ςε ζνα process και χρθςιμοποιείται μόνο από αυτό. 2. Η μεταβλθτι μπορεί να αλλάξει τιμή μζςα ςτο prοcess Μία μεταβλθτι δθλϊνεται ωσ εξισ : variable list_of_variable_names: type [ := initial value] ; Παραδείγματα: variable ΕΝΑ: bit :=1; variable DYO: integer range 0 to 128 :=8; variable TRIA: boolean :=TRUE; variable TESSERA: bit_vector (7 downto 0);
Ακολουκιακόσ κϊδικασ Παράδειγμα process (y) variable x : integer := 4; begin x:=x+1; end process;
Ακολουκιακόσ κϊδικασ ιματα Σα ςιματα δθλϊνονται εκτόσ τθσ Διεργαςίασ - Process : signal list_of_signal_names: type [ := initial value] ; Παραδείγματα : Signal ENA,DYO: std_logic; signal TRIA: integer :=23; signal TESSERA: bit; signal PENTE: integer range 0 to 200; signal EXI: bit_vector (0 to 7);
Ακολουκιακόσ κϊδικασ ιματα Σα ςιματα ανανεώνονται όταν εκτελείται μία εντολι εκχϊρθςθσ τιμισ τουσ 1) Με μια κακυςτζρθςθ όπωσ ορίηουμε, αν κζλουμε z <= (A or B) after 5 ns; 2) Με μια κακυςτζρθςθ μετά από ζνα χρόνο t, αν δεν το ορίςαμε
Ακολουκιακόσ κϊδικασ Διαφορζσ μεταξφ signals και variables (1) process (x) begin y<=x; z<= y or 1 ; end process; Αν αλλάξει το ςήμα x τότε εκτελοφνται οι εντολζσ ςτην διεργαςία (begin end) Πρώτη Εντολή: Θα αλλάξει το y, ϊςτε να γίνει ίςο με το x. Δεφτερη Εντολή: Σο ςιμα z κα πρζπει να γίνει y or 1 Σο αποτζλεςμα δεν είναι το αναμενόμενο. Η δεφτερθ εντολι δεν πρόλαβε να πάρει το αλλαγμζνο, από τθν πρϊτθ εντολι, το ςιμα y.
Ακολουκιακόσ κϊδικασ Διαφορζσ μεταξφ signals και variables (2) Οι μεταβλθτζσ αλλάηουν απευκείασ το αποτζλεςμα-τιμι τουσ process (sima1) variable x,y : bit; begin x:= sima1; y:= x + 2; end process; H διαδικαςία τρζχει μόλισ αλλάξει το ςιμα sima1. Και τότε όλα τρζχουν ςειριακά και ομαλά. Σο y κα πάρει αμζςωσ τθν ςωςτι τιμι από το x+2.
Ακολουκιακόσ κϊδικασ? Wait The wait statement suspends the execution of the process or procedure in which it is specified. Resuming the process or procedure depends on meting the condition(s) specified in the wait statement. There are three types of conditions supported with wait statements: sensitivity clause, condition clause, and timeout clause. architecture MYARCH of MY_ENTITY is signal TRIGGER, RESULT: integer := 0; begin process variable var1: integer :=4; begin wait on TRIGGER; var1 := 5; RESULT <= var1 + 1; end process; end MYARCH
Ακολουκιακόσ κϊδικασ? Wait wait statement is widely used in testbenches. A. B. wait for 50 ns; wait on A, B until CLK = '1'; Γ. G: process begin G0 <= '1' after 5 ns, '0' after 10 ns, '1' after 15 ns, '0' after 20 ns; G1 <= '1' after 5 ns, '0' after 15 ns; wait; end process G;
Ακολουκιακόσ κϊδικασ IF Εντολή IF Η εντολή IF προορίηεται για ακολουκιακό κϊδικα και χρθςιμοποιείται μζςα ςε μια διεργαςία, ςυνάρτθςθ ι διαδικαςία. Η χριςθ τθσ εντολισ IF μπορεί να οδθγιςει ςτθν δθμιουργία μθ απαραίτθτου κωδικοποιθτι προτεραιότθτασ. Ζνα παράδειγμα τθσ εντολισ IF είναι θ ακόλουκθ: IF (x<3) THEN y:= ''10010100''; ELSIF x=4 AND s='0' THEN y := ''00010001''; ELSE y :=(others =>'0');
Εντολή LOOP (FOR ή WHILE) Ακολουκιακόσ κϊδικασ LOOP Xρθςιμοποιείται αποκλειςτικά και μόνο μζςα ςε μια διεργαςία, ςυνάρτθςθ ι διαδικαςία δθλαδι αποκλειςτικά και μόνο ςε ακολουκιακό κϊδικα. Η εντολι LOOP είναι πολφ χριςιμθ όταν ζνα τμιμα του κϊδικα κα πρζπει να χρθςιμοποιθκεί πολλζσ φορζσ. FOR i IN 0 TO 20 LOOP x(i) <= y(i) and w(i) END LOOP; WHILE i <20 LOOP x(i) <= y(i) and w(i) i<=i+1 END LOOP;
Ακολουκιακόσ Κϊδικασ Προτοφ ξεκινιςουμε να περιγράφουμε τον ακολουκιακό κϊδικα πρζπει πρϊτα να εξθγιςουμε τι ςθμαίνει ακολουκιακό και τι ςυνδυαςτικό κφκλωμα με λίγα και απλά λόγια
υνδυαςτικό Κφκλωμα Σα ςυνδυαςτικά (combinational) λογικά κυκλϊματα αποτελοφνται από πφλεσ, των οποίων θ ζξοδοσ κάκε χρονικι ςτιγμι εξαρτάται μόνθ από τισ ειςόδουσ εκείνθσ τθσ ςτιγμισ. Λογικό κφκλωμα αλήθειασ, ςφμβολο και πίνακασ τησ πφλησ NOR Προφανϊσ δεν χρειαηόμαςτε Ρολόι Χρονιςμοφ για τθν προςομοίωςθ
Ακολουκιακό Κφκλωμα Κατάςταςθ Ακολουκιακοφ Κυκλϊµατοσ : περιεχόµενα ςτοιχείων µνιµθσ. Η ζξοδοσ εξαρτάται από τισ ειςόδουσ και τθν κατάςταςθ του κυκλϊµατοσ. Η κατάςταςθ εξαρτάται από τισ ειςόδουσ και τθν προθγοφµενθ κατάςταςθ. Σφγχρονα: οι τιµζσ των ςθµάτων του αλλάηουν ςε διακριτζσ χρονικζσ ςτιγµζσ (ρολόι). Αςφγχρονα: οι τιµζσ των ςθµάτων του αλλάηουν ςε οποιαδιποτε χρονικι ςτιγµι (ςυνδυαςτικά κυκλϊµατα µε ανάδραςθ).
Ακολουκιακό Κφκλωμα Αποκθκευτικά τοιχεία Latches (Μανδαλωτζσ) Αποκθκεφουν ςε επίπεδο Χρθςιµοποιοφνται πολφ ςε αςφγχρονα ςυςτιµατα Flip Flops (ακµοπυροδότθτα) Αποκθκεφουν ςε ακµι Χρθςιµοποιοφνται ςε ςφγχρονα ςυςτιµατα
Ακολουκιακό Κφκλωμα Πυροδότθςθ είναι θ αλλαγι κάποιασ ειςόδου του flip-flop που προκαλεί αλλαγι ςτθν κατάςταςι του. Είδθ: level sensitive - edge triggered ε δειγµατολθψία µε τον παλµό ρολογιοφ (level) το κφκλωµα µπορεί να οδθγθκεί ςε αςτάκεια. ε δειγµατολθψία µε τθν ακµι ρολογιοφ (edge) το κφκλωµα δεν κα ζχει πρόβλθµα.
Ακολουκιακό Κφκλωμα Tα flip-flop είvαι τα βαςικά ςτoιχεία µvιµθσ τα oπoία µπoρoφv vα απoκθκεφςoυv µία δυαδικι πλθρoφoρία. Η πλθρoφoρία αυτι πoυ είvαι τo 1 ι τo 0 παραµζvει ςτακερι µζχρισ ότoυ τo flip-flop vα ξαvαδιεγερκεί. Σα flip-flop διεγείρονται µε τουσ παλµοφσ του ρολογιοφ (clock) τουσ. RS Flip Flop
JK Flip Flop
D Flip Flop
T Flip Flop
Πίνακεσ Αλθκείασ για όλα τα FF
Η κυματομορφι εξόδου του R-S flip-flop για ςυγκεκριμζνα δεδομζνα ειςόδου
Η κυματομορφι εξόδου του J-K flip-flop για ςυγκεκριμζνα δεδομζνα ειςόδου
Η κυματομορφι εξόδου του D flip-flop για ςυγκεκριμζνα δεδομζνα ειςόδου
--------------------------------------------- library ieee ; use ieee.std_logic_1164.all; use work.all; --------------------------------------------- entity Dff is port( data_in: in std_logic; clock: in std_logic; data_out: out std_logic ); end Dff ; ---------------------------------------------- architecture behv of Dff is begin process(data_in, clock) begin if (clock='1' and clock'event) then data_out <= data_in; end if; Κϊδικασ για D Flip Flop Σο Flip Flop είναι το βαςικό ςτοιχείο ακολουκιακοφ λογικοφ ςχεδιαςμοφ. το παράδειγμα αυτό εκχωροφμε το ςιμα ειςόδου ςτο ιμα εξόδου κατά τθν παρυφι του ρολογιοφ. end process; end behv; ----------------------------------------------
--------------------------------------------- library ieee ; use ieee.std_logic_1164.all; use work.all; --------------------------------------------- entity Dff is port( data_in: in std_logic; clock: in std_logic; data_out: out std_logic ); end Dff ; ---------------------------------------------- architecture behv of Dff is begin process(data_in, clock) begin if (clock='1' and clock'event) then data_out <= data_in; end if; Κϊδικασ για D Flip Flop Σο Flip Flop είναι το βαςικό ςτοιχείο ακολουκιακοφ λογικοφ ςχεδιαςμοφ. το παράδειγμα αυτό εκχωροφμε το ςιμα ειςόδου ςτο ιμα εξόδου κατά τθν παρυφι του ρολογιοφ. end process; end behv; ----------------------------------------------