ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµερινό Εξάµηνο 2016 ΔΙΑΛΕΞΗ 10: Συµπληρωµατική Διάλεξη Flip-Flops (Basics) και VHDL) ΧΑΡΗΣ ΘΕΟΧΑΡΙΔΗΣ Επίκουρος Καθηγητής, ΗΜΜΥ (ttheocharides@ucy.ac.cy)
VHDL (Very high speed integrated circuits Hardware Description Language) q Γλώσσα προγραµµατισµού για την περιγραφή και προσοµοίωση υλικού (λογικών σχεδιασµών). q Επιχορηγήθηκε από ΙEEE και DoD (Department of Defense των ΗΠΑ) στις αρχές του 80. q Βασικά χαρακτηριστικά: Ιεραρχικός σχεδιασµός Περιγραφή Διασυνδέσεων και Συµπεριφοράς µε ακρίβεια (και ξεχωριστά) Περιγραφή συµπεριφοράς: αλγοριθµικά ή µε δοµικό (structural) τρόπο Μοντελοποίηση Χρονισµού (Timing) και Ταυτοχρονισµού (Concurrency) à Σχεδιασµοί µπορούν να προσοµοιωθούν µε ακρίβεια ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.2 Θεοχαρίδης, ΗΜΥ, 2016
Μοντελοποίηση q Μια πλήρης περιγραφή ενός στοιχείου (component) µε VHDL απαιτεί: Entity (Οντότητα) : καθορίζει τις διασυνδέσεις (interface) ενός στοιχείου (όνοµα, εισόδους, εξόδους). Architecture (Αρχιτεκτονική): καθορίζει την λειτουργία/συµπεριφορά (function) ενός στοιχείου. q Σε κάθε στοιχείο αντιστοιχεί ένα µόνο entity και τουλάχιστον ένα architecture (πολλαπλά architecture είναι δυνατά). ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.3 Θεοχαρίδης, ΗΜΥ, 2016
Απλό παράδειγµα: Entity entity My_Component is -- My_Component : όνοµα port (X,Y: in BIT; -- προδιαγραφές διασυνδέσεων Z: out BIT); end My_Component; Εντολή port καθορίζει εισόδους και εξόδους Σχόλια (comments) Λέξεις κλειδιά VHDL (keywords) Αναγνωριστικό (identifier) Λειτουργία θύρας (port mode) Τύπος δεδοµένων (data type) X Y My_Component Z ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.4 Θεοχαρίδης, ΗΜΥ, 2016
Απλό παράδειγµα:αρχιτεκτονική entity My_Component is -- My_Component : όνοµα Port (X,Y: in BIT; -- προδιαγραφές διασυνδέσεων Z: out BIT); end My_Component; Architecture My_Component_Arch of My_Component is begin Z <= 1 when X= 1 and Y= 0 else 0 ; end My_Component_Arch; Σχόλια (comments) Λέξεις κλειδιά VHDL (keywords) Αναγνωριστικό (identifier) Λειτουργία θύρας (port mode) Τύπος δεδοµένων (data type) Αντίστοιχη οντότητα (entity) Z = X Y ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.5 Θεοχαρίδης, ΗΜΥ, 2016
Άλλο Παράδειγµα: πύλη AND entity My_AND is -- My_AND : όνοµα Port (X,Y: in BIT; -- προδιαγραφές διασυνδέσεων Z: out BIT); end My_END; Architecture My_AND_Arch of My_AND is begin Z <= 1 when X= 1 and Y= 1 else 0 ; end My_AND_Arch; Σχόλια (comments) Λέξεις κλειδιά VHDL (keywords) Αναγνωριστικό (identifier) Λειτουργία θύρας (port mode) Τύπος δεδοµένων (data type) Z = X Y ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.6 Θεοχαρίδης, ΗΜΥ, 2016
Στοιχεία γλώσσας VHDL q Σχόλια (Comments) ξεκινούν µε --, ισχύουν µέχρι το τέλος της γραµµής q Δεσµευµένες Λέξεις (Keywords) π.χ. entity, port, is, in, out, end, architecture, begin, end, when, else, q Αναγνωριστικά (Identifiers) Μεταβλητές, ονόµατα στοιχείων, κτλ q Synthesizeable vs. NON-Synthesizeable Μπορεί η περιγραφή υλικού όντως να υλοποιηθεί (µέσω εργαλείων σύνθεσης) Επίσης κάποια στοιχεία ΔΕΝ ΥΛΟΠΟΙΟΥΝΤΑΙ σε υλικό µέσω των εργαλείων σύνθεσης η χρήση τους γίνεται για σκοπούς της δικής µας ευκολίας και για επαλήθευση. ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.7 Θεοχαρίδης, ΗΜΥ, 2016
Αναγνωριστικά (Identifiers) q Μπορούν να περιέχουν A-Z, a-z, 0-9, _ q Πρέπει να ξεκινούν µε γράµµα q Δεν µπορούν να τελειώσουν µε _ q Δεν µπορούν να περιέχουν 2 συνεχόµενες _ q Η VHDL είναι case-insensitive Sel, sel και SEL αναφέρονται στο ίδιο αντικείµενο ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.8 Θεοχαρίδης, ΗΜΥ, 2016
Παραδείγµατα Αναγνωριστικών q A2G έγκυρο q 8bit_counter άκυρο ξεκινά µε αριθµό q _NewValue q first# άκυρο ξεκινά µε _ άκυρο περιέχει µη-αποδεκτό χαρακτήρα ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.9 Θεοχαρίδης, ΗΜΥ, 2016
VHDL Αντικείµενα Δεδοµένων (Data Objects) q Σταθερές (Constants) q Μεταβλητές (Variables) q Σήµατα (Signals) q Αρχεία (Files*) * Δεν υποστηρίζονται από εργαλεία σύνθεσης ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.10 Θεοχαρίδης, ΗΜΥ, 2016
Χαρακτήρες και Συµβολοσειρές q Χαρακτήρες (Characters) A, 0, 1, $, x, * q Συµβολοσειρές (Strings) string of characters 00101101 0X110ZZ1 q Δυαδικές (Bit) Συµβολοσειρές B 011111010110 O 3726 X 7D6 ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.11 Θεοχαρίδης, ΗΜΥ, 2016
VHDL Τύποι Δεδοµένων (Data Types) q Scalar Integers Enumerated Reals (floating point)* q Composite (σύνθετοι) Arrays (πίνακες/διατάξεις) Records q Access (pointers -- δείκτες)* * Δεν υποστηρίζονται από εργαλεία σύνθεσης ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.12 Θεοχαρίδης, ΗΜΥ, 2016
Τύποι Δεδοµένων Scalar: Integer Μικρότερο εύρος για κάθε υλοποίηση, όπως καθορίζεται από σχετικό πρότυπο: - 2,147,483,647 + 2,147,483,647 Παράδειγµα: αναθέσεις σε µεταβλητή τύπου integer : ARCHITECTURE test_int OF test IS BEGIN PROCESS (X) VARIABLE a: INTEGER; BEGIN a := 1; -- OK a := -1; -- OK a := 1.0; -- άκυρο END PROCESS; END test_int; ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.13 Θεοχαρίδης, ΗΜΥ, 2016
Τύποι Δεδοµένων Scalar: Integer (συν.) q Μπορούµε επίσης να ορίσουµε integers µε µικρότερο εύρος (sub-ranges) Παραδείγµατα: type CountValue is range 0 to 15; type Twenties is range 20 to 29; type Thirties is range 39 downto 30; ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.14 Θεοχαρίδης, ΗΜΥ, 2016
Τύποι Δεδοµένων Scalar: Enumerated Ο χρήστης ορίζει τη λίστα πιθανών τιµών Παράδειγµα: TYPE binary IS ( ON, OFF );... κάποιες εντολές... ARCHITECTURE test_enum OF test IS BEGIN PROCESS (X) VARIABLE a: binary; BEGIN a := ON; -- OK... επιπρόσθετες εντολές... a := OFF; -- OK... επιπρόσθετες εντολές... END PROCESS; END test_enum; ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.15 Θεοχαρίδης, ΗΜΥ, 2016
Τύποι Δεδοµένων Scalar: Enumerated à Boolean type boolean is (false, true);... κάποιες εντολές... variable A,B,C: boolean;... κάποιες εντολές... C := not A C := A and B C := A or B C := A nand B C := A nor B C := A xor B C := A xnor B aντικείµενο (object) VHDL Τελεστής ανάθεσης για µεταβλητές ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.16 Θεοχαρίδης, ΗΜΥ, 2016
Τύποι Δεδοµένων Scalar: Enumerated à Bit type bit is ( 0, 1 );... κάποιες εντολές... signal x,y,z: bit;... κάποιες εντολές... x <= 0 ; y <= 1 ; z <= x and y; aντικείµενο (object) VHDL Τελεστής ανάθεσης για σήµατα ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.17 Θεοχαρίδης, ΗΜΥ, 2016
Τύποι Δεδοµένων Scalar: Enumerated à Standard Logic type std_logic is ( U, -- Uninitialized (µη-αρχικοποιηµένο) X -- Unknown (άγνωστο) 0 -- Zero (µηδέν) 1 ); -- One (ένα) n std_logic είναι µέρος του πακέτου ieee n Πακέτα (Packages): ήδη-µεταγλωττισµένος κώδικας VHDL που αποθηκεύεται σε βασικό κατάλογο (library) library IEEE; use IEEE.std_logic_1164.all; Πρέπει να περιλαµβάνεται στο κώδικά σας, πριν τη δήλωση τύπων δεδοµένων std_logic ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.18 Θεοχαρίδης, ΗΜΥ, 2016
Σύνθετοι Τύποι Δεδοµένων - (Composite Data Types) q Array (Πίνακες/Διατάξεις): Χρησιµοποιείται για οµαδοποίηση δεδοµένων του ιδίου τύπου σε ένα ενιαίο αντικείµενο VHDL Το εύρος µπορεί να είναι ακαθόριστο (=απεριόριστο) στη δήλωση (declaration) à καθορίζεται µόλις ο πίνακας χρησιµοποιηθεί Παράδειγµα: δήλωση πίνακα µίας-διάστασης (one-dimensional array (vector)) TYPE data_bus IS ARRAY(0 TO 31) OF BIT; VARIABLE X : data_bus; VARIABLE Y : BIT; 0... δείκτες στοιχείων... 31 0...τιµές στοιχείων πίνακα... 1 Y := X(12); -- το Y παίρνει την τιµή του στοιχείου µε δείκτη 12 του Χ ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.19 Θεοχαρίδης, ΗΜΥ, 2016
Αρχιτεκτονική Περιγραφή µε VHDL architecture name_arch of name is Signal assignments begin Ταυτόχρονες εντολές (concurrent statements) Process 1 Ταυτόχρονες εντολές (concurrent statements) Process 2 Ταυτόχρονες εντολές (concurrent statements) end name_arch; Το κάθε process περιέχει ακολουθιακές εντολές (sequential statements), αλλά όλα τα processes εκτελούνται ταυτόχρονα ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.20 Θεοχαρίδης, ΗΜΥ, 2016
VHDL Process P1: process (<sensitivity list>) <variable declarations> begin <sequential statements> end process P1; Μέσα σε ένα process: Προαιρετική σήµανση Ανάθεση µεταβλητών (variables) µε := και άµεση ενηµέρωση. Ανάθεση σηµάτων (signals) µε <= και η ενηµέρωση γίνετε στο τέλος του process. ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.21 Θεοχαρίδης, ΗΜΥ, 2016
Αρχιτεκτονική VHDL (συν.) n Στο κάθε entity (µοναδικό ανά στοιχείο) αντιστοιχεί τουλάχιστον µια περιγραφή αρχιτεκτονικής (architecture) n Υπάρχουν 3 τρόποι περιγραφής της αρχιτεκτονικής: n Structural (Δοµική): λεπτοµερής περιγραφή σε επίπεδο πυλών/βασικών στοιχείων n Data Flow (Ροή Δεδοµένων): περιγραφή βάση του τρόπου µεταφοράς δεδοµένων µεταξύ των στοιχείων/ σηµάτων n Behavioral (Συµπεριφορά): αλγοριθµική περιγραφή υψηλό επίπεδο χωρίς λεπτοµέρειες n Θα δούµε διάφορα παραδείγµατα ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.22 Θεοχαρίδης, ΗΜΥ, 2016
2-to-4 DEC σε VHDL: Διάγραµµα σε επίπεδο πυλών ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.23 Θεοχαρίδης, ΗΜΥ, 2016
2-to-4 DEC σε VHDL: Δήλωση Οντότητας (Entity Declaration) -- 2-to-4 Line Decoder: Structural VHDL Description library ieee, lcdf_vhdl; Εισαγόµενος κώδικας από βιβλιοθήκες use ieee.std_logic_1164.all, lcdf_vhdl.func_prims.all; entity decoder_2_to_4 is port(e_n, A0, A1: in std_logic; Είσοδοι & Έξοδοι D0_n, D1_n, D2_n, D3_n: out std_logic); end decoder_2_to_4; ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.24 Θεοχαρίδης, ΗΜΥ, 2016
2-to-4 DEC σε VHDL: Αρχιτεκτονική - Δοµική Περιγραφή Structural) architecture structural_1 of decoder_2_to_4 is component NOT1 port(in1: in std_logic; end component; out1: out std_logic); component NAND3 port(in1, in2, in3: in std_logic; out1: out std_logic); Δήλωση απαραίτητων component (διαθέσιµα από τις βιβλιοθήκες) end component; ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.25 Θεοχαρίδης, ΗΜΥ, 2016
2-to-4 DEC σε VHDL: Αρχιτεκτονική Δοµική Περιγραφή (Structural) (συν.) signal E, A0_n, A1_n: std_logic; begin g0: NOT1 port map (in1 => A0, out1 => A0_n); g1: NOT1 port map (in1 => A1, out1 => A1_n); g2: NOT1 port map (in1 => E_n, out1 => E); g3: NAND3 port map (in1 => A0_n, in2 => A1_n, in3 => E, out1 => D0_n); g4: NAND3 port map (in1 => A0, in2 => A1_n, in3 => E, out1 => D1_n); g5: NAND3 port map (in1 => A0_n, in2 => A1, in3 => E, out1 => D2_n); g6: NAND3 port map (in1 => A0, in2 => A1, in3 => E, out1 => D3_n); end structural_1; Τοπικά σήµατα ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.26 Θεοχαρίδης, ΗΜΥ, 2016
2-to-4 DEC σε VHDL: Αρχιτεκτονική Περιγραφή Ροής Δεδοµένων (Dataflow) architecture dataflow_1 of decoder_2_to_4 is signal E, A0_n, A1_n: std_logic; begin A0_n <= not A0; A1_n <= not A1; E <= not E_n; D0_n <= not (A0_n and A1_n and E); D1_n <= not (A0 and A1_n and E); D2_n <= not (A0_n and A1 and E); D3_n <= not (A0 and A1 and E); end dataflow_1; ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.27 Θεοχαρίδης, ΗΜΥ, 2016
Άλλο Παράδειγµα: n-bit 4-σε-1 MUX a(n-1:0) b(n-1 :0) c(n-1 :0) d(n-1 :0) n n n n n-bit 4-σε-1 MUX n y(n-1 :0) Sel y 00 a 01 b 10 c 11 d 2 Sel(1:0) ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.28 Θεοχαρίδης, ΗΜΥ, 2016
n-bit 4-σε-1 MUX: Δήλωση Οντότητας (Entity declaration) library IEEE; use IEEE.std_logic_1164.all; entity mux4g is generic(width:positive); port ( a: in STD_LOGIC_VECTOR (width-1 downto 0); b: in STD_LOGIC_VECTOR (width-1 downto 0); c: in STD_LOGIC_VECTOR (width-1 downto 0); d: in STD_LOGIC_VECTOR (width-1 downto 0); sel: in STD_LOGIC_VECTOR (1 downto 0); y: out STD_LOGIC_VECTOR (width-1 downto 0) ); end mux4g; ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.29 Θεοχαρίδης, ΗΜΥ, 2016
n-bit 4-σε-1 MUX: Αρχιτεκτονική: Περιγραφή Ροής Δεδοµένων µε χρήση εντολής CASE architecture mux4g_arch of mux4g is begin process (sel, a, b, c, d) begin case sel is when "00" => y <= a; when "01" => y <= b; when "10" => y <= c; when others => y <= d; end case; end process; end mux4g_arch; Sel y 00 a 01 b 10 c 11 d Η εντολή CASE πρέπει να περιέχει ΟΛΕΣ τις πιθανότητες τιµών. ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.30 Θεοχαρίδης, ΗΜΥ, 2016
Παράδειγµα απλής συνδυαστικής συνάρτησης: Περιγραφή Ροής Δεδοµένων library ieee; use ieee.std_logic_1164.all; entity func2 is port (x1,x2,x3: in std_logic; f: out std_logic ); end func2; architecture dataflow of func2 is begin f <= (not x1 and not x2 and x3) or (x1 and not x2 and not x3) or (x1 and not x2 and x3) or (x1 and x2 and not x3); end dataflow; ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.31 Θεοχαρίδης, ΗΜΥ, 2016
Ηµιαθροιστής q Πρόβληµα: Σχεδιάστε ένα ηµιαθροιστή 1-bit µε κρατούµενο (carry) και σήµα ενεργοποίησης (enable). q Προδιαγραφές Είσοδοι και έξοδοι είναι 1-bit Όταν το enable είναι 1, το αποτέλεσµα είναι η πρόσθεση x+y µε carry Έξοδοι 0 όταν το enable είναι 0 x y enable Ηµιαθροιστής carry result ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.32 Θεοχαρίδης, ΗΜΥ, 2016
Ηµιαθροιστής: Δήλωση Οντότητας q Η οντότητα περιγράφει τις διασυνδέσεις του component -- δηλώνονται θύρες (ports) εισόδων και εξόδων ENTITY half_adder IS PORT( x, y, enable: IN bit; carry, result: OUT bit); END half_adder; x y enable Ηµιαθροιστής carry result ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.33 Θεοχαρίδης, ΗΜΥ, 2016
Ηµιαθροιστής: Αρχιτεκτονική µε Περιγραφή Συµπεριφοράς (Behavioral) q Μπορούµε να χρησιµοποιήσουµε µια περιγραφή υψηλού επιπέδου για την συνάρτηση που υλοποιεί το κύκλωµα ARCHITECTURE half_adder_a of half_adder IS BEGIN PROCESS (x, y, enable) BEGIN IF enable = 1 THEN result <= x XOR y; carry <= x AND y; ELSE END IF; END PROCESS; END half_adder_a; Αυτό το µοντέλο µπορεί να προσοµοιωθεί έτσι ώστε να επαληθευτεί η σωστή λειτουργία του κυκλώµατος ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.34 Θεοχαρίδης, ΗΜΥ, 2016
Ηµιαθροιστής: Δοµική Περιγραφή Αρχιτεκτονικής (Structural) q Εναλλακτικά, µπορούµε να χρησιµοποιήσουµε µια δοµική περιγραφή (βάση διαθέσιµων components που έχουν ήδη δηλωθεί) x y enable carry result Αυτό το µοντέλο µπορεί επίσης να προσοµοιωθεί έτσι ώστε να επαληθευτεί η σωστή λειτουργία του κυκλώµατος ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.35 Θεοχαρίδης, ΗΜΥ, 2016
Ηµιαθροιστής: Δοµική Περιγραφή Αρχιτεκτονικής (συν.) ARCHITECTURE half_adder_c of half_adder_nty IS COMPONENT and2 PORT (in0, in1 : IN BIT; out0 : OUT BIT); END COMPONENT; COMPONENT and3 PORT (in0, in1, in2 : IN BIT; out0 : OUT BIT); END COMPONENT; COMPONENT xor2 PORT (in0, in1 : IN BIT; out0 : OUT BIT); END COMPONENT; FOR ALL : and2 USE ENTITY gate_lib.and2_nty(and2_a); FOR ALL : and3 USE ENTITY gate_lib.and3_nty(and3_a); FOR ALL : xor2 USE ENTITY gate_lib.xor2_nty(xor2_a); -- η περιγραφή συνεχίζεται στην επόµενη διαφάνεια ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.36 Θεοχαρίδης, ΗΜΥ, 2016
Ηµιαθροιστής: Δοµική Περιγραφή Αρχιτεκτονικής (συν.) -- συνεχιζόµενη περιγραφή half_adder_c SIGNAL xor_res : bit; -- εσωτερικό σήµα -- τα υπόλοιπα σήµατα έχουν ήδη δηλωθεί στο entity BEGIN A0 : and2 PORT MAP (enable, xor_res, result); A1 : and3 PORT MAP (x, y, enable, carry); X0 : xor2 PORT MAP (x, y, xor_res); END half_adder_c; ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.37 Θεοχαρίδης, ΗΜΥ, 2016
Ηµιαθροιστής: Αρχιτεκτονική µε Περιγραφή Ροής Δεδοµένων (Dataflow) q Μια τρίτη µέθοδος περιγραφής της αρχιτεκτονικής ενός component χρησιµοποιεί λογικές εξισώσεις για να αναπτύξει µια περιγραφή ροής δεδοµένων ARCHITECTURE half_adder_b of half_adder_nty IS BEGIN carry <= enable AND (x AND y); result <= enable AND (x XOR y); END half_adder_b; Ξανά: το µοντέλο αυτό µπορεί να προσοµοιωθεί σε αυτό το επίπεδο για να επιβεβαιωθούν οι λογικές εξισώσεις. ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.38 Θεοχαρίδης, ΗΜΥ, 2016
Παράδειγµα Αθροιστή 4ων-bit: Δήλωση Οντότητας -- Αθροιστής 4ων-bit library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity adder_4_b is port(b, A : in std_logic_vector(3 downto 0); C0 : in std_logic; S : out std_logic_vector(3 downto 0); C4 : out std_logic); end adder_4_b; ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.39 Θεοχαρίδης, ΗΜΥ, 2016
Αθροιστής 4ων-bit:Αρχιτεκτονική µε Περιγραφή Συµπεριφοράς (Behavioral) architecture behavioral of adder_4_b is signal sum : std_logic_vector(4 downto 0); begin Είναι πλήρης αθροιστής; sum <= ('0' & A) + ('0' & B) + ("0000" & C0); C4 <= sum(4); S <= sum(3 downto 0); end behavioral; 0A 3 A 2 A 1 A 0 0B 3 B 2 B 1 B 0 0000C 0 ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.40 Θεοχαρίδης, ΗΜΥ, 2016
Αθροιστής 1-bit:Αρχιτεκτονική µε Περιγραφή Ροής Δεδοµένων (Dataflow) library ieee; use ieee.std_logic_1164.all; entity fulladd is port (Cin, x, y: in std_logic; s, Cout: out std_logic); end fulladd; architecture logicfunc of fulladd is begin s <= x xor y xor Cin; Cout <= (x and y) or (Cin and x) or (Cin and y); end logicfunc; ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.41 Θεοχαρίδης, ΗΜΥ, 2016
Αθροιστής 4ων-bit: Δήλωση Οντότητας library ieee; use ieee.std_logic_1164.all; entity adder4 is -- s = x+y port ( Cin: in std_logic; x3,x2,x1,x0: in std_logic; y3,y2,y1,y0: in std_logic; s3,s2,s1,s0: out std_logic; Cout: out std_logic ); end adder4; ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.42 Θεοχαρίδης, ΗΜΥ, 2016
Αθροιστής 4ων-bit: Δοµική Περιγραφή Αρχιτεκτονικής (Structural) architecture structural of adder4 is signal c1,c2,c3: std_logic; component fulladd port (Cin,x,y: in std_logic; s,cout: out std_logic); end component; Ίδια σειρά όπως στη δήλωση του entity begin stage0: fulladd port map (Cin,x0,y0,s0,c1); stage1: fulladd port map (c1,x1,y1,s1,c2); stage2: fulladd port map (c2,x2,y2,s2,c3); Προσαρµοσµένη σειρά stage3: fulladd port map (Cin=>c3,Cout=>cout,x=>x3,y=>y3,s=>s3); end structural; ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.43 Θεοχαρίδης, ΗΜΥ, 2016
2-σε-1 MUX library ieee; use ieee.std_logic_1164.all; entity mux2to1 is port (d0,d1,s: in std_logic; y: out std_logic); end mux2to1; architecture behavioral of mux2to1 is begin with s select y <= d0 when 0, d1 when others; end behavioral; ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.44 Θεοχαρίδης, ΗΜΥ, 2016
Αποκωδικοποιητής 2-σε-4 library ieee; use ieee.std_logic_1164.all; entity dec2to4 is port (w: in std_logic_vector(1 downto 0); e: in std_logic; y: out std_logic_vector(0 to 3)); end dec2to4; ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.45 Θεοχαρίδης, ΗΜΥ, 2016
Αποκωδικοποιητής 2-σε-4 (συν.) architecture behavioral of dec2to4 is signal ew: std_logic_vector(2 downto 0); begin ew <= e & w; -- concatenation! with ew select y <= 1000 when 100, 0100 when 101, 0010 when 110, 0001 when 111, 0000 when others; end behavioral; ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.46 Θεοχαρίδης, ΗΜΥ, 2016
ΒΙΒΛΙΟΓΡΑΦΙΑ ΚΑΙ ΑΝΑΦΟΡΕΣ q Στην ιστοσελίδα υπάρχουν ΠΟΛΛΕΣ αναφορές για VHDL και γενικά για γλώσσες περιγραφής υλικού. q http://www.eng.ucy.ac.cy/theocharides/courses/ece210/useful.html ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.47 Θεοχαρίδης, ΗΜΥ, 2016
FLIP FLΟPS Σύντοµη εισαγωγή! ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.48 Θεοχαρίδης, ΗΜΥ, 2016
Αποθήκευση Καταστάσεως q Τι γίνεται αν η A ενωθεί µε την Y? q Συναρτήσεις: Y = B για S = 1 Y(t) εξαρτάται από Y(t 0.9) για S = 0 S B 0.2 0.4 0.4 Μονοπάτι ανάδρασης (feedback path) 0.5 Y B S S Y q Το συνδυαστικό κύκλωµα µετατράπηκε σε ακολουθιακό, αφού η συνάρτηση εξόδου εξαρτάται και από προηγούµενες τιµές εισόδων (όχι µόνο τις τρέχουσες τιµές) Y είναι η αποθηκεµένη τιµή στη σκιασµένη περιοχή ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.49 Θεοχαρίδης, ΗΜΥ, 2016
Αποθήκευση Καταστάσεως (συν.) q Παράδειγµα προσοµοίωσης: Οι τιµές εισόδων αλλάζουν µε την πάροδο του χρόνου. Οι αλλαγές σηµειώνονται κάθε 100 ns, έτσι ώστε καθυστερήσεις σε δέκατα του ns αγνοούνται. Χρόνος B S Y Σχόλια 1 0 0 Y θυµάται 0 1 1 1 Y = B όταν S = 1 1 0 1 Τώρα Y θυµάται B = 1 για S = 0 0 0 1 Καµία αλλαγή για Y όταν αλλάζει το B 0 1 0 Y = B όταν S = 1 0 0 0 Y θυµάται B = 0 για S = 0 1 0 0 Καµία αλλαγή για Y όταν αλλάζει το B q Y εκπροσωπεί την κατάσταση του κυκλώµατος, όχι απλά µια έξοδο! ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.50 Θεοχαρίδης, ΗΜΥ, 2016
Αποθήκευση Καταστάσεως (συν.) q q Θεωρείστε ότι τοποθετούµε ένα αντιστροφέα στο µονοπάτι ανάδρασης. Συµβαίνουν τα ακόλουθα: 1. Το κύκλωµα γίνεται ασταθή (unstable). 2. Για S = 0, το κύκλωµα γίνεται ταλαντωτής (oscillator). 3. Μπορεί να χρησιµοποιηθεί ως ένα «αδρό» ρολόι. S B 0.2 B S Y Σχόλια 0 1 0 Y = B όταν S = 1 1 1 1 1 0 1 Τώρα Y θυµάται B 1 0 0 Y, 1.1 ns αργότερα 1 0 1 Y, 1.1 ns αργότερα 1 0 0 Y, 1.1 ns αργότερα ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.51 Θεοχαρίδης, ΗΜΥ, 2016 0.4 0.4 0.5 0.2 Y
SR latch (από NOR) -- SR: set-reset, δισταθές στοιχείο µε 2 εισόδους. Προσέξτε την «ακαθόριστη» τιµή για S=R=1. -- Διαβάζοντας τη λογική: Q = (R+Q ) και Q = (S+Q) ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.52 Θεοχαρίδης, ΗΜΥ, 2016
R = S = 1?? q Ακαθόριστη έξοδος γιατί: Όταν S=R=1, τότε και οι 2 έξοδοι γίνονται 0. Εάν και οι 2 έξοδοι είναι 0, η κατάσταση του SR latch εξαρτάται από την είσοδο που παραµένει στην τιµή 1 για περισσότερο χρόνο, πριν γίνει 0. Άρα είναι όντως, ακαθόριστη κατάσταση à ΠΡΕΠΕΙ να αποφευχθεί. ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.53 Θεοχαρίδης, ΗΜΥ, 2016
S R Latch (από NAND) 0 1 S R Q Q 1 0 S R Q Q 0 0 0 1 1 0 1 1 1 0 Set X Y NAND 0 0 1 0 1 1 1 0 1 1 1 0 ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.54 Θεοχαρίδης, ΗΜΥ, 2016
S R Latch (από NAND) 1 1 S R Q Q 1 0 S R Q Q 0 0 0 1 1 0 1 1 1 0 Set 1 0 Hold X Y NAND 0 0 1 0 1 1 1 0 1 1 1 0 ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.55 Θεοχαρίδης, ΗΜΥ, 2016
S R Latch (από NAND) 1 0 S R Q Q 0 1 S R Q Q 0 0 0 1 1 0 1 1 1 0 Set 0 1 Reset 1 0 Hold X Y NAND 0 0 1 0 1 1 1 0 1 1 1 0 ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.56 Θεοχαρίδης, ΗΜΥ, 2016
S R Latch (από NAND) 1 1 S R Q Q 0 1 X Y NAND 0 0 1 0 1 1 1 0 1 1 1 0 S R Q Q 0 0 0 1 1 0 1 1 1 0 Set 0 1 Reset 1 0 Hold 0 1 Hold ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.57 Θεοχαρίδης, ΗΜΥ, 2016
S R Latch (από NAND) 0 0 S R Q Q 1 1 X Y NAND 0 0 1 0 1 1 1 0 1 1 1 0 S R Q Q 0 0 1 1 Disallowed 0 1 1 0 Set 1 0 0 1 Reset 1 1 1 0 Hold 0 1 Hold ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.58 Θεοχαρίδης, ΗΜΥ, 2016
SR Latches ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.59 Θεοχαρίδης, ΗΜΥ, 2016
Προσοµοίωση SR Latch ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.60 Θεοχαρίδης, ΗΜΥ, 2016
SR Latch µε σήµα Ελέγχου Το Latch είναι ευαίσθητο σε αλλαγές στις εισόδους ΜΟΝΟ όταν το C=1 Σηµαντικό στοιχείο, χρησιµοποιείται για σχεδιασµό άλλων latches και flip-flops Θεωρείται και ως flip-flop, άλλα όχι βάση του ορισµού του βιβλίου σας ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.61 Θεοχαρίδης, ΗΜΥ, 2016
SR Latch µε σήµα Ελέγχου (συν.) S C=CLK R S R Q Q S R CLK S R Q Q 0 0 1 1 1 Q 0 Q 0 Store 0 1 1 1 0 0 1 Reset 1 0 1 0 1 1 0 Set 1 1 1 0 0 1 1 Disallowed X X 0 1 1 Q 0 Q 0 Store ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.62 Θεοχαρίδης, ΗΜΥ, 2016
D Latch q Ένας τρόπος αποφυγής των ανεπιθύµητων ακαθόριστων καταστάσεων στο RS flip-flop, είναι η εξασφάλιση ότι οι είσοδοι S και R δεν θα πάρουν ποτέ την τιµή 1 ταυτόχρονα. Αυτό επιτυγχάνεται µε ένα SR-latch, όπου S=D και R=D à D-latch: ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.63 Θεοχαρίδης, ΗΜΥ, 2016
D Latch (συν.) D S S Q CLK R R Q D CLK Q Q 0 1 0 1 1 1 1 0 X 0 Q 0 Q 0 S R CLK Q Q 0 0 1 Q 0 Q 0 Store 0 1 1 0 1 Reset 1 0 1 1 0 Set 1 1 1 1 1 Disallowed X X 0 Q 0 Q 0 Store ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.64 Θεοχαρίδης, ΗΜΥ, 2016
Flip-Flops q Τα Latches είναι διαυγή (transparent) δηλ., οποιαδήποτε αλλαγή στην κατάσταση του latch είναι αντιληπτή και στις εξόδους (αν υπάρχει σήµα ελέγχου C, αυτό ισχύει κατά τη διάρκεια που C=1). q Αυτό προκαλεί προβλήµατα συγχρονισµού, αφού η κατάσταση ενός latch µπορεί να αλλάξει πολλαπλές φορές όταν C=1! q Λύση: Χρησιµοποιούµε latches για τη δηµιουργία των flip-flops που µπορούν να ανταποκριθούν (update) ΜΟΝΟ σε ΣΥΓΚΕΚΡΙΜΕΝΕΣ χρονικές στιγµές (όχι ανά πάσα στιγµή ή κατά τη διάρκεια ενός διαστήµατος). ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.65 Θεοχαρίδης, ΗΜΥ, 2016
Πυροδότηση (Triggering) Latch/FF q Ο µηχανισµός που επιτρέπει σε ένα στοιχείο µνήµης (latch ή FF) να αλλάξει κατάσταση q Τρόποι Πυροδότησης: latches FFs Ασύγχρονα, δηλ. εντελώς διαυγή (π.χ. SR-latch) Πυροδότηση-επιπέδου (level trigger, C=1) (π.χ. SR-latch ή D-latch µε σήµα ελέγχου C) Master-Slave (π.χ. SR-FF, D-FF) Πυροδότηση-ακµής: θετική ή αρνητική ακµή του C (rising or falling edge trigger, C= ή C= ) (π.χ. SR-FF, D-FF) ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.66 Θεοχαρίδης, ΗΜΥ, 2016
Εναλλακτικές λύσεις στην επιλογή FF q Τύποι FF: SR D JK q Τρόποι ενεργοποίησης (triggering): Master-Slave: χρησιµοποιεί πυροδότηση-επιπέδου αλλά µε 2 latches, έτσι ώστε η κατάσταση του FF αλλάζει µόνο µια φορά σε µία περίοδο του ρολογιού Ενεργοποίηση-ακµής: θετική ή αρνητική ακµή του C (rising or falling edge trigger, C= ή C= ) ΗΜΥ210 Δ10 VHDL και Flip-Flops Συµπληρωµατική Διάλεξη.67 Θεοχαρίδης, ΗΜΥ, 2016