ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος...
Transcript of ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος...
ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ
ΧΑΡΗΣ ΘΕΟΧΑΡΙΔΗΣ Επίκουρος Καθηγητής, ΗΜΜΥ
Χειµερινό Εξάµηνο 2016 ΔΙΑΛΕΞΗ 10:
Συµπληρωµατική Διάλεξη Flip-Flops (Basics) και VHDL)
ΗΜΥ210 Δ10 VHDL και Flip-Flops – Συµπληρωµατική Διάλεξη.2 © Θεοχαρίδης, ΗΜΥ, 2016
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 – Συµπληρωµατική Διάλεξη.3 © Θεοχαρίδης, ΗΜΥ, 2016
Μοντελοποίηση
q Μια πλήρης περιγραφή ενός στοιχείου (component) µε VHDL απαιτεί: ● Entity (Οντότητα) : καθορίζει τις διασυνδέσεις
(interface) ενός στοιχείου (όνοµα, εισόδους, εξόδους).
● Architecture (Αρχιτεκτονική): καθορίζει την λειτουργία/συµπεριφορά (function) ενός στοιχείου.
q Σε κάθε στοιχείο αντιστοιχεί ένα µόνο entity και τουλάχιστον ένα architecture (πολλαπλά architecture είναι δυνατά).
ΗΜΥ210 Δ10 VHDL και Flip-Flops – Συµπληρωµατική Διάλεξη.4 © Θεοχαρίδης, ΗΜΥ, 2016
Απλό παράδειγµα: Entity
entity My_Component is -- “My_Component”: όνοµα
port (X,Y: in BIT; -- προδιαγραφές διασυνδέσεων
Z: out BIT);
end My_Component;
Σχόλια (comments) Λέξεις κλειδιά VHDL (keywords) Αναγνωριστικό (identifier) Λειτουργία θύρας (port mode) Τύπος δεδοµένων (data type)
My_Component X
Y Z
Εντολή port καθορίζει εισόδους και εξόδους
ΗΜΥ210 Δ10 VHDL και Flip-Flops – Συµπληρωµατική Διάλεξη.5 © Θεοχαρίδης, ΗΜΥ, 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;
Z = X•Y’ Αντίστοιχη οντότητα (entity)
Σχόλια (comments) Λέξεις κλειδιά VHDL (keywords) Αναγνωριστικό (identifier) Λειτουργία θύρας (port mode) Τύπος δεδοµένων (data type)
ΗΜΥ210 Δ10 VHDL και Flip-Flops – Συµπληρωµατική Διάλεξη.6 © Θεοχαρίδης, ΗΜΥ, 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;
Z = X•Y
Σχόλια (comments) Λέξεις κλειδιά VHDL (keywords) Αναγνωριστικό (identifier) Λειτουργία θύρας (port mode) Τύπος δεδοµένων (data type)
ΗΜΥ210 Δ10 VHDL και Flip-Flops – Συµπληρωµατική Διάλεξη.7 © Θεοχαρίδης, ΗΜΥ, 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 – Συµπληρωµατική Διάλεξη.8 © Θεοχαρίδης, ΗΜΥ, 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 – Συµπληρωµατική Διάλεξη.9 © Θεοχαρίδης, ΗΜΥ, 2016
Παραδείγµατα Αναγνωριστικών q A2G
● έγκυρο
q 8bit_counter ● άκυρο – ξεκινά µε αριθµό
q _NewValue ● άκυρο – ξεκινά µε _
q first# ● άκυρο – περιέχει µη-αποδεκτό χαρακτήρα
ΗΜΥ210 Δ10 VHDL και Flip-Flops – Συµπληρωµατική Διάλεξη.10 © Θεοχαρίδης, ΗΜΥ, 2016
VHDL Αντικείµενα Δεδοµένων (Data Objects)
q Σταθερές (Constants)
q Μεταβλητές (Variables)
q Σήµατα (Signals)
q Αρχεία (Files*)
* Δεν υποστηρίζονται από εργαλεία σύνθεσης
ΗΜΥ210 Δ10 VHDL και Flip-Flops – Συµπληρωµατική Διάλεξη.11 © Θεοχαρίδης, ΗΜΥ, 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 – Συµπληρωµατική Διάλεξη.12 © Θεοχαρίδης, ΗΜΥ, 2016
VHDL Τύποι Δεδοµένων (Data Types)
q Scalar ● Integers ● Enumerated ● Reals (floating point)*
q Composite (σύνθετοι) ● Arrays (πίνακες/διατάξεις) ● Records
q Access (pointers -- δείκτες)* * Δεν υποστηρίζονται από εργαλεία σύνθεσης
ΗΜΥ210 Δ10 VHDL και Flip-Flops – Συµπληρωµατική Διάλεξη.13 © Θεοχαρίδης, ΗΜΥ, 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 – Συµπληρωµατική Διάλεξη.14 © Θεοχαρίδης, ΗΜΥ, 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 – Συµπληρωµατική Διάλεξη.15 © Θεοχαρίδης, ΗΜΥ, 2016
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;
Τύποι Δεδοµένων Scalar: Enumerated ● Ο χρήστης ορίζει τη λίστα πιθανών τιµών ● Παράδειγµα:
ΗΜΥ210 Δ10 VHDL και Flip-Flops – Συµπληρωµατική Διάλεξη.16 © Θεοχαρίδης, ΗΜΥ, 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 – Συµπληρωµατική Διάλεξη.17 © Θεοχαρίδης, ΗΜΥ, 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 – Συµπληρωµατική Διάλεξη.18 © Θεοχαρίδης, ΗΜΥ, 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 – Συµπληρωµατική Διάλεξη.19 © Θεοχαρίδης, ΗΜΥ, 2016
TYPE data_bus IS ARRAY(0 TO 31) OF BIT;
VARIABLE X : data_bus; VARIABLE Y : BIT; Y := X(12); -- το Y παίρνει την τιµή του στοιχείου µε δείκτη 12 του Χ
0 31
0 1
... δείκτες στοιχείων... ...τιµές στοιχείων πίνακα...
Σύνθετοι Τύποι Δεδοµένων - (Composite Data Types)
q Array (Πίνακες/Διατάξεις): ● Χρησιµοποιείται για οµαδοποίηση δεδοµένων του ιδίου τύπου σε ένα ενιαίο αντικείµενο VHDL
● Το εύρος µπορεί να είναι ακαθόριστο (=απεριόριστο) στη δήλωση (declaration) à καθορίζεται µόλις ο πίνακας χρησιµοποιηθεί
● Παράδειγµα: δήλωση πίνακα µίας-διάστασης (one-dimensional array (vector))
ΗΜΥ210 Δ10 VHDL και Flip-Flops – Συµπληρωµατική Διάλεξη.20 © Θεοχαρίδης, ΗΜΥ, 2016
Αρχιτεκτονική Περιγραφή µε VHDL architecture name_arch of name is begin end name_arch;
Signal assignments
Ταυτόχρονες εντολές (concurrent statements)
Ταυτόχρονες εντολές (concurrent statements)
Process 1
Process 2
Ταυτόχρονες εντολές (concurrent statements)
Το κάθε process περιέχει ακολουθιακές εντολές (sequential statements), αλλά όλα τα processes εκτελούνται ταυτόχρονα
ΗΜΥ210 Δ10 VHDL και Flip-Flops – Συµπληρωµατική Διάλεξη.21 © Θεοχαρίδης, ΗΜΥ, 2016
VHDL Process
P1: process (<sensitivity list>) <variable declarations> begin <sequential statements> end process P1;
Προαιρετική σήµανση
Μέσα σε ένα process: • Ανάθεση µεταβλητών (variables) µε := και άµεση ενηµέρωση. • Ανάθεση σηµάτων (signals) µε <= και η ενηµέρωση γίνετε στο τέλος του process.
ΗΜΥ210 Δ10 VHDL και Flip-Flops – Συµπληρωµατική Διάλεξη.22 © Θεοχαρίδης, ΗΜΥ, 2016
Αρχιτεκτονική VHDL (συν.) n Στο κάθε entity (µοναδικό ανά στοιχείο) αντιστοιχεί τουλάχιστον µια περιγραφή αρχιτεκτονικής (architecture)
n Υπάρχουν 3 τρόποι περιγραφής της αρχιτεκτονικής: n Structural (Δοµική): λεπτοµερής περιγραφή σε επίπεδο πυλών/βασικών στοιχείων
n Data Flow (Ροή Δεδοµένων): περιγραφή βάση του τρόπου µεταφοράς δεδοµένων µεταξύ των στοιχείων/σηµάτων
n Behavioral (Συµπεριφορά): αλγοριθµική περιγραφή – υψηλό επίπεδο χωρίς λεπτοµέρειες
n Θα δούµε διάφορα παραδείγµατα …
ΗΜΥ210 Δ10 VHDL και Flip-Flops – Συµπληρωµατική Διάλεξη.23 © Θεοχαρίδης, ΗΜΥ, 2016
2-to-4 DEC σε VHDL: Διάγραµµα σε επίπεδο πυλών
ΗΜΥ210 Δ10 VHDL και Flip-Flops – Συµπληρωµατική Διάλεξη.24 © Θεοχαρίδης, ΗΜΥ, 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 – Συµπληρωµατική Διάλεξη.25 © Θεοχαρίδης, ΗΜΥ, 2016
2-to-4 DEC σε VHDL: Αρχιτεκτονική - Δοµική Περιγραφή Structural)
architecture structural_1 of decoder_2_to_4 is
component NOT1
port(in1: in std_logic;
out1: out std_logic);
end component;
component NAND3
port(in1, in2, in3: in std_logic; out1: out std_logic);
end component;
Δήλωση απαραίτητων component (διαθέσιµα από τις
βιβλιοθήκες)
ΗΜΥ210 Δ10 VHDL και Flip-Flops – Συµπληρωµατική Διάλεξη.26 © Θεοχαρίδης, ΗΜΥ, 2016
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;
Τοπικά σήµατα
2-to-4 DEC σε VHDL: Αρχιτεκτονική Δοµική Περιγραφή (Structural) (συν.)
ΗΜΥ210 Δ10 VHDL και Flip-Flops – Συµπληρωµατική Διάλεξη.27 © Θεοχαρίδης, ΗΜΥ, 2016
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;
2-to-4 DEC σε VHDL: Αρχιτεκτονική Περιγραφή Ροής Δεδοµένων (Dataflow)
ΗΜΥ210 Δ10 VHDL και Flip-Flops – Συµπληρωµατική Διάλεξη.28 © Θεοχαρίδης, ΗΜΥ, 2016
Άλλο Παράδειγµα: n-bit 4-σε-1 MUX
a(n-1:0) b(n-1 :0)
y(n-1 :0)
Sel(1:0)
n-bit 4-σε-1 MUX c(n-1 :0)
d(n-1 :0)
Sel y “00” a “01” b “10” c “11” d
2
n
n
n
n
n
ΗΜΥ210 Δ10 VHDL και Flip-Flops – Συµπληρωµατική Διάλεξη.29 © Θεοχαρίδης, ΗΜΥ, 2016
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;
n-bit 4-σε-1 MUX: Δήλωση Οντότητας (Entity declaration)
ΗΜΥ210 Δ10 VHDL και Flip-Flops – Συµπληρωµατική Διάλεξη.30 © Θεοχαρίδης, ΗΜΥ, 2016
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; Η εντολή CASE πρέπει να
περιέχει ΟΛΕΣ τις πιθανότητες τιµών.
Sel y “00” a “01” b “10” c “11” d
n-bit 4-σε-1 MUX: Αρχιτεκτονική: Περιγραφή Ροής Δεδοµένων µε
χρήση εντολής CASE
ΗΜΥ210 Δ10 VHDL και Flip-Flops – Συµπληρωµατική Διάλεξη.31 © Θεοχαρίδης, ΗΜΥ, 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 – Συµπληρωµατική Διάλεξη.32 © Θεοχαρίδης, ΗΜΥ, 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 – Συµπληρωµατική Διάλεξη.33 © Θεοχαρίδης, ΗΜΥ, 2016
Ηµιαθροιστής: Δήλωση Οντότητας q Η οντότητα περιγράφει τις διασυνδέσεις του
component -- δηλώνονται θύρες (ports) εισόδων και εξόδων
x
y
enable
carry
result Ηµιαθ- ροιστής
ENTITY half_adder IS
PORT( x, y, enable: IN bit; carry, result: OUT bit);
END half_adder;
ΗΜΥ210 Δ10 VHDL και Flip-Flops – Συµπληρωµατική Διάλεξη.34 © Θεοχαρίδης, ΗΜΥ, 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 – Συµπληρωµατική Διάλεξη.35 © Θεοχαρίδης, ΗΜΥ, 2016
q Εναλλακτικά, µπορούµε να χρησιµοποιήσουµε µια δοµική περιγραφή (βάση διαθέσιµων components που έχουν ήδη δηλωθεί)
● Αυτό το µοντέλο µπορεί επίσης να προσοµοιωθεί έτσι ώστε να επαληθευτεί η σωστή λειτουργία του κυκλώµατος
x y
enable carry
result
Ηµιαθροιστής: Δοµική Περιγραφή Αρχιτεκτονικής (Structural)
ΗΜΥ210 Δ10 VHDL και Flip-Flops – Συµπληρωµατική Διάλεξη.36 © Θεοχαρίδης, ΗΜΥ, 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 – Συµπληρωµατική Διάλεξη.37 © Θεοχαρίδης, ΗΜΥ, 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 – Συµπληρωµατική Διάλεξη.38 © Θεοχαρίδης, ΗΜΥ, 2016
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;
Ηµιαθροιστής: Αρχιτεκτονική µε Περιγραφή Ροής Δεδοµένων (Dataflow)
ΗΜΥ210 Δ10 VHDL και Flip-Flops – Συµπληρωµατική Διάλεξη.39 © Θεοχαρίδης, ΗΜΥ, 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 – Συµπληρωµατική Διάλεξη.40 © Θεοχαρίδης, ΗΜΥ, 2016
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;
0A3A2A1A0 0B3B2B1B0 0000C0
Αθροιστής 4ων-bit:Αρχιτεκτονική µε Περιγραφή Συµπεριφοράς (Behavioral)
Είναι πλήρης αθροιστής;
ΗΜΥ210 Δ10 VHDL και Flip-Flops – Συµπληρωµατική Διάλεξη.41 © Θεοχαρίδης, ΗΜΥ, 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 – Συµπληρωµατική Διάλεξη.42 © Θεοχαρίδης, ΗΜΥ, 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 – Συµπληρωµατική Διάλεξη.43 © Θεοχαρίδης, ΗΜΥ, 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;
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;
Προσαρµοσµένη σειρά
Ίδια σειρά όπως στη δήλωση του entity
ΗΜΥ210 Δ10 VHDL και Flip-Flops – Συµπληρωµατική Διάλεξη.44 © Θεοχαρίδης, ΗΜΥ, 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 – Συµπληρωµατική Διάλεξη.45 © Θεοχαρίδης, ΗΜΥ, 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 – Συµπληρωµατική Διάλεξη.46 © Θεοχαρίδης, ΗΜΥ, 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 – Συµπληρωµατική Διάλεξη.47 © Θεοχαρίδης, ΗΜΥ, 2016
ΒΙΒΛΙΟΓΡΑΦΙΑ ΚΑΙ ΑΝΑΦΟΡΕΣ q Στην ιστοσελίδα υπάρχουν ΠΟΛΛΕΣ αναφορές για VHDL και γενικά για γλώσσες περιγραφής υλικού.
q http://www.eng.ucy.ac.cy/theocharides/Courses/ECE210/Useful.html
ΗΜΥ210 Δ10 VHDL και Flip-Flops – Συµπληρωµατική Διάλεξη.48 © Θεοχαρίδης, ΗΜΥ, 2016
FLIP FLΟPS – Σύντοµη εισαγωγή!
ΗΜΥ210 Δ10 VHDL και Flip-Flops – Συµπληρωµατική Διάλεξη.49 © Θεοχαρίδης, ΗΜΥ, 2016
Αποθήκευση Καταστάσεως
q Τι γίνεται αν η A ενωθεί µε την Y?
q Συναρτήσεις: ● Y = B για S = 1 ● Y(t) εξαρτάται από
Y(t – 0.9) για S = 0
q Το συνδυαστικό κύκλωµα µετατράπηκε σε ακολουθιακό, αφού η συνάρτηση εξόδου εξαρτάται και από προηγούµενες τιµές εισόδων (όχι µόνο τις τρέχουσες τιµές)
BS
YS
S B
Y0.5
0.4 0.2
0.4
Y είναι η αποθηκεµένη τιµή στη σκιασµένη περιοχή
Μονοπάτι ανάδρασης (feedback path)
ΗΜΥ210 Δ10 VHDL και Flip-Flops – Συµπληρωµατική Διάλεξη.50 © Θεοχαρίδης, ΗΜΥ, 2016
Αποθήκευση Καταστάσεως (συν.) q Παράδειγµα προσοµοίωσης: Οι τιµές εισόδων αλλάζουν µε την πάροδο του χρόνου. Οι αλλαγές σηµειώνονται κάθε 100 ns, έτσι ώστε καθυστερήσεις σε δέκατα του ns αγνοούνται.
q Y εκπροσωπεί την κατάσταση του κυκλώµατος, όχι απλά µια έξοδο!
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
Χρόνος
ΗΜΥ210 Δ10 VHDL και Flip-Flops – Συµπληρωµατική Διάλεξη.51 © Θεοχαρίδης, ΗΜΥ, 2016
Αποθήκευση Καταστάσεως (συν.)
q Θεωρείστε ότι τοποθετούµε ένα αντιστροφέα στο µονοπάτι ανάδρασης.
q Συµβαίνουν τα ακόλουθα:
1. Το κύκλωµα γίνεται ασταθή (unstable).
2. Για S = 0, το κύκλωµα γίνεται ταλαντωτής (oscillator).
3. Μπορεί να χρησιµο- ποιηθεί ως ένα «αδρό» ρολόι.
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 αργότερα
S B
Y
0.2 0.5
0.4
0.4
0.2
ΗΜΥ210 Δ10 VHDL και Flip-Flops – Συµπληρωµατική Διάλεξη.52 © Θεοχαρίδης, ΗΜΥ, 2016
SR latch (από NOR)
-- SR: “set-reset”, δισταθές στοιχείο µε 2 εισόδους. Προσέξτε την «ακαθόριστη» τιµή για S=R=1.
-- Διαβάζοντας τη λογική:
§ Q = (R+Q’)’ και Q’ = (S+Q)’
ΗΜΥ210 Δ10 VHDL και Flip-Flops – Συµπληρωµατική Διάλεξη.53 © Θεοχαρίδης, ΗΜΥ, 2016
R = S = 1 ?? q Ακαθόριστη έξοδος γιατί:
● Όταν S=R=1, τότε και οι 2 έξοδοι γίνονται 0. ● Εάν και οι 2 έξοδοι είναι 0, η κατάσταση του SR
latch εξαρτάται από την είσοδο που παραµένει στην τιµή 1 για περισσότερο χρόνο, πριν γίνει 0.
● Άρα είναι όντως, “ακαθόριστη” κατάσταση à ΠΡΕΠΕΙ να αποφευχθεί.
ΗΜΥ210 Δ10 VHDL και Flip-Flops – Συµπληρωµατική Διάλεξη.54 © Θεοχαρίδης, ΗΜΥ, 2016
S’R’ Latch (από NAND)
S’
R’
Q
Q’
0 0 0 1 1 0 1 1
S’ R’ Q Q’ 0
1
1
0
1 0 Set
0 0 1 0 1 1 1 0 1 1 1 0
X Y NAND
ΗΜΥ210 Δ10 VHDL και Flip-Flops – Συµπληρωµατική Διάλεξη.55 © Θεοχαρίδης, ΗΜΥ, 2016
S’R’ Latch (από NAND)
S’
R’
Q
Q’
0 0 0 1 1 0 1 1
S’ R’ Q Q’ 1
1
1
0 1 0 Hold
0 0 1 0 1 1 1 0 1 1 1 0
X Y NAND
1 0 Set
ΗΜΥ210 Δ10 VHDL και Flip-Flops – Συµπληρωµατική Διάλεξη.56 © Θεοχαρίδης, ΗΜΥ, 2016
S’R’ Latch (από NAND)
S’
R’
Q
Q’
0 0 0 1 1 0 1 1
S’ R’ Q Q’ 1
0
0
1
0 0 1 0 1 1 1 0 1 1 1 0
X Y NAND
1 0 Hold
1 0 Set 0 1 Reset
ΗΜΥ210 Δ10 VHDL και Flip-Flops – Συµπληρωµατική Διάλεξη.57 © Θεοχαρίδης, ΗΜΥ, 2016
S’R’ Latch (από NAND)
S’
R’
Q
Q’
0 0 0 1 1 0 1 1
S’ R’ Q Q’ 1
1
0
1
0 0 1 0 1 1 1 0 1 1 1 0
X Y NAND 0 1 Hold
1 0 Set 0 1 Reset 1 0 Hold
ΗΜΥ210 Δ10 VHDL και Flip-Flops – Συµπληρωµατική Διάλεξη.58 © Θεοχαρίδης, ΗΜΥ, 2016
S’R’ Latch (από NAND)
S’
R’
Q
Q’
0 0 0 1 1 0 1 1
S’ R’ Q Q’ 0
0
1
1
0 0 1 0 1 1 1 0 1 1 1 0
X Y NAND 0 1 Hold
1 0 Set 0 1 Reset 1 0 Hold
1 1 Disallowed
ΗΜΥ210 Δ10 VHDL και Flip-Flops – Συµπληρωµατική Διάλεξη.59 © Θεοχαρίδης, ΗΜΥ, 2016
SR Latches
ΗΜΥ210 Δ10 VHDL και Flip-Flops – Συµπληρωµατική Διάλεξη.60 © Θεοχαρίδης, ΗΜΥ, 2016
Προσοµοίωση SR Latch
ΗΜΥ210 Δ10 VHDL και Flip-Flops – Συµπληρωµατική Διάλεξη.61 © Θεοχαρίδης, ΗΜΥ, 2016
SR Latch µε σήµα Ελέγχου
§ Το Latch είναι ευαίσθητο σε αλλαγές στις εισόδους ΜΟΝΟ όταν το C=1
§ Σηµαντικό στοιχείο, χρησιµοποιείται για σχεδιασµό άλλων latches και flip-flops
§ Θεωρείται και ως flip-flop, άλλα όχι βάση του ορισµού του βιβλίου σας
ΗΜΥ210 Δ10 VHDL και Flip-Flops – Συµπληρωµατική Διάλεξη.62 © Θεοχαρίδης, ΗΜΥ, 2016
SR Latch µε σήµα Ελέγχου (συν.)
S’
R’
Q
Q’
S
R
C=CLK
S R CLK S’ R’ Q Q’ 0 0 1 1 1 Q0 Q0’ 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 Q0 Q0’ Store
ΗΜΥ210 Δ10 VHDL και Flip-Flops – Συµπληρωµατική Διάλεξη.63 © Θεοχαρίδης, ΗΜΥ, 2016
D Latch q Ένας τρόπος αποφυγής των ανεπιθύµητων ακαθόριστων καταστάσεων στο RS flip-flop, είναι η εξασφάλιση ότι οι είσοδοι S και R δεν θα πάρουν ποτέ την τιµή 1 ταυτόχρονα. Αυτό επιτυγχάνεται µε ένα SR-latch, όπου S=D και R=D’ à D-latch:
ΗΜΥ210 Δ10 VHDL και Flip-Flops – Συµπληρωµατική Διάλεξη.64 © Θεοχαρίδης, ΗΜΥ, 2016
D Latch (συν.)
D
S R CLK Q Q’ 0 0 1 Q0 Q0’ Store 0 1 1 0 1 Reset 1 0 1 1 0 Set 1 1 1 1 1 Disallowed X X 0 Q0 Q0’ Store
0 1 0 1 1 1 1 0 X 0 Q0 Q0’
D CLK Q Q’
S’
R’
Q
Q’
S
R
CLK
ΗΜΥ210 Δ10 VHDL και Flip-Flops – Συµπληρωµατική Διάλεξη.65 © Θεοχαρίδης, ΗΜΥ, 2016
Flip-Flops q Τα Latches είναι “διαυγή” (transparent) δηλ., οποιαδήποτε αλλαγή στην κατάσταση του latch είναι αντιληπτή και στις εξόδους (αν υπάρχει σήµα ελέγχου C, αυτό ισχύει κατά τη διάρκεια που C=1).
q Αυτό προκαλεί προβλήµατα συγχρονισµού, αφού η κατάσταση ενός latch µπορεί να αλλάξει πολλαπλές φορές όταν C=1!
q Λύση: Χρησιµοποιούµε latches για τη δηµιουργία των flip-flops που µπορούν να ανταποκριθούν (update) ΜΟΝΟ σε ΣΥΓΚΕΚΡΙΜΕΝΕΣ χρονικές στιγµές (όχι ανά πάσα στιγµή ή κατά τη διάρκεια ενός διαστήµατος).
ΗΜΥ210 Δ10 VHDL και Flip-Flops – Συµπληρωµατική Διάλεξη.66 © Θεοχαρίδης, ΗΜΥ, 2016
Πυροδότηση (Triggering) Latch/FF q Ο µηχανισµός που επιτρέπει σε ένα στοιχείο
µνήµης (latch ή FF) να αλλάξει κατάσταση
q Τρόποι Πυροδότησης: ● Ασύγχρονα, δηλ. εντελώς διαυγή (π.χ. 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)
latches
FFs
ΗΜΥ210 Δ10 VHDL και Flip-Flops – Συµπληρωµατική Διάλεξη.67 © Θεοχαρίδης, ΗΜΥ, 2016
Εναλλακτικές λύσεις στην επιλογή FF
q Τύποι FF: ● SR ● D ● JK
q Τρόποι ενεργοποίησης (triggering): ● Master-Slave: χρησιµοποιεί πυροδότηση-επιπέδου αλλά
µε 2 latches, έτσι ώστε η κατάσταση του FF αλλάζει µόνο µια φορά σε µία περίοδο του ρολογιού
● Ενεργοποίηση-ακµής: θετική ή αρνητική ακµή του C (rising or falling edge trigger, C=∧ ή C=∨)