ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος...

67
ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΧΑΡΗΣ ΘΕΟΧΑΡΙΔΗΣ Επίκουρος Καθηγητής, ΗΜΜΥ ([email protected] ) Χειμερινό Εξάμηνο 2016 ΔΙΑΛΕΞΗ 10: Συμπληρωματική Διάλεξη Flip-Flops (Basics) και VHDL)

Transcript of ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος...

Page 1: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ

ΧΑΡΗΣ ΘΕΟΧΑΡΙΔΗΣ Επίκουρος Καθηγητής, ΗΜΜΥ

([email protected])

Χειµερινό Εξάµηνο 2016 ΔΙΑΛΕΞΗ 10:

Συµπληρωµατική Διάλεξη Flip-Flops (Basics) και VHDL)

Page 2: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ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) à Σχεδιασµοί µπορούν να προσοµοιωθούν µε ακρίβεια

Page 3: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ210 Δ10 VHDL και Flip-Flops – Συµπληρωµατική Διάλεξη.3 © Θεοχαρίδης, ΗΜΥ, 2016

Μοντελοποίηση

q Μια πλήρης περιγραφή ενός στοιχείου (component) µε VHDL απαιτεί: ●  Entity (Οντότητα) : καθορίζει τις διασυνδέσεις

(interface) ενός στοιχείου (όνοµα, εισόδους, εξόδους).

● Architecture (Αρχιτεκτονική): καθορίζει την λειτουργία/συµπεριφορά (function) ενός στοιχείου.

q Σε κάθε στοιχείο αντιστοιχεί ένα µόνο entity και τουλάχιστον ένα architecture (πολλαπλά architecture είναι δυνατά).

Page 4: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ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 καθορίζει εισόδους και εξόδους

Page 5: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ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)

Page 6: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ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)

Page 7: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ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 ●  Μπορεί η περιγραφή υλικού όντως να υλοποιηθεί (µέσω εργαλείων σύνθεσης)

●  Επίσης κάποια στοιχεία ΔΕΝ ΥΛΟΠΟΙΟΥΝΤΑΙ σε υλικό µέσω των εργαλείων σύνθεσης – η χρήση τους γίνεται για σκοπούς της δικής µας ευκολίας και για επαλήθευση.

Page 8: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ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 αναφέρονται στο ίδιο αντικείµενο

Page 9: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ210 Δ10 VHDL και Flip-Flops – Συµπληρωµατική Διάλεξη.9 © Θεοχαρίδης, ΗΜΥ, 2016

Παραδείγµατα Αναγνωριστικών q A2G

●  έγκυρο

q  8bit_counter ●  άκυρο – ξεκινά µε αριθµό

q  _NewValue ●  άκυρο – ξεκινά µε _

q  first# ●  άκυρο – περιέχει µη-αποδεκτό χαρακτήρα

Page 10: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ210 Δ10 VHDL και Flip-Flops – Συµπληρωµατική Διάλεξη.10 © Θεοχαρίδης, ΗΜΥ, 2016

VHDL Αντικείµενα Δεδοµένων (Data Objects)

q Σταθερές (Constants)

q Μεταβλητές (Variables)

q Σήµατα (Signals)

q Αρχεία (Files*)

* Δεν υποστηρίζονται από εργαλεία σύνθεσης

Page 11: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ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”

Page 12: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ210 Δ10 VHDL και Flip-Flops – Συµπληρωµατική Διάλεξη.12 © Θεοχαρίδης, ΗΜΥ, 2016

VHDL Τύποι Δεδοµένων (Data Types)

q Scalar ●  Integers ● Enumerated ● Reals (floating point)*

q Composite (σύνθετοι) ● Arrays (πίνακες/διατάξεις) ● Records

q Access (pointers -- δείκτες)* * Δεν υποστηρίζονται από εργαλεία σύνθεσης

Page 13: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ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;

Page 14: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ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;

Page 15: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ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 ● Ο χρήστης ορίζει τη λίστα πιθανών τιµών ● Παράδειγµα:

Page 16: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ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

Τελεστής ανάθεσης για µεταβλητές

Page 17: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ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

Τελεστής ανάθεσης για σήµατα

Page 18: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ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

Page 19: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ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))

Page 20: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ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 εκτελούνται ταυτόχρονα

Page 21: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ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.

Page 22: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ210 Δ10 VHDL και Flip-Flops – Συµπληρωµατική Διάλεξη.22 © Θεοχαρίδης, ΗΜΥ, 2016

Αρχιτεκτονική VHDL (συν.) n Στο κάθε entity (µοναδικό ανά στοιχείο) αντιστοιχεί τουλάχιστον µια περιγραφή αρχιτεκτονικής (architecture)

n Υπάρχουν 3 τρόποι περιγραφής της αρχιτεκτονικής: n Structural (Δοµική): λεπτοµερής περιγραφή σε επίπεδο πυλών/βασικών στοιχείων

n Data Flow (Ροή Δεδοµένων): περιγραφή βάση του τρόπου µεταφοράς δεδοµένων µεταξύ των στοιχείων/σηµάτων

n Behavioral (Συµπεριφορά): αλγοριθµική περιγραφή – υψηλό επίπεδο χωρίς λεπτοµέρειες

n Θα δούµε διάφορα παραδείγµατα …

Page 23: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ210 Δ10 VHDL και Flip-Flops – Συµπληρωµατική Διάλεξη.23 © Θεοχαρίδης, ΗΜΥ, 2016

2-to-4 DEC σε VHDL: Διάγραµµα σε επίπεδο πυλών

Page 24: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ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;

Εισαγόµενος κώδικας από βιβλιοθήκες

Είσοδοι & Έξοδοι

Page 25: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ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 (διαθέσιµα από τις

βιβλιοθήκες)

Page 26: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ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) (συν.)

Page 27: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ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)

Page 28: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ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

Page 29: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ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)

Page 30: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ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

Page 31: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ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;

Page 32: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ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 Ηµιαθροιστής

Page 33: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ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;

Page 34: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ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;

Page 35: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ210 Δ10 VHDL και Flip-Flops – Συµπληρωµατική Διάλεξη.35 © Θεοχαρίδης, ΗΜΥ, 2016

q Εναλλακτικά, µπορούµε να χρησιµοποιήσουµε µια δοµική περιγραφή (βάση διαθέσιµων components που έχουν ήδη δηλωθεί)

●  Αυτό το µοντέλο µπορεί επίσης να προσοµοιωθεί έτσι ώστε να επαληθευτεί η σωστή λειτουργία του κυκλώµατος

x y

enable carry

result

Ηµιαθροιστής: Δοµική Περιγραφή Αρχιτεκτονικής (Structural)

Page 36: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ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);

-- η περιγραφή συνεχίζεται στην επόµενη διαφάνεια

Ηµιαθροιστής: Δοµική Περιγραφή Αρχιτεκτονικής (συν.)

Page 37: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ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;

Ηµιαθροιστής: Δοµική Περιγραφή Αρχιτεκτονικής (συν.)

Page 38: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ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)

Page 39: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ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;

Page 40: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ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)

Είναι πλήρης αθροιστής;

Page 41: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ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;

Page 42: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ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;

Page 43: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ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

Page 44: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ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;

Page 45: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ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;

Page 46: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ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;

Page 47: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ210 Δ10 VHDL και Flip-Flops – Συµπληρωµατική Διάλεξη.47 © Θεοχαρίδης, ΗΜΥ, 2016

ΒΙΒΛΙΟΓΡΑΦΙΑ ΚΑΙ ΑΝΑΦΟΡΕΣ q Στην ιστοσελίδα υπάρχουν ΠΟΛΛΕΣ αναφορές για VHDL και γενικά για γλώσσες περιγραφής υλικού.

q  http://www.eng.ucy.ac.cy/theocharides/Courses/ECE210/Useful.html

Page 48: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ210 Δ10 VHDL και Flip-Flops – Συµπληρωµατική Διάλεξη.48 © Θεοχαρίδης, ΗΜΥ, 2016

FLIP FLΟPS – Σύντοµη εισαγωγή!

Page 49: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ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)

Page 50: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ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

Χρόνος

Page 51: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ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

Page 52: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ210 Δ10 VHDL και Flip-Flops – Συµπληρωµατική Διάλεξη.52 © Θεοχαρίδης, ΗΜΥ, 2016

SR latch (από NOR)

-- SR: “set-reset”, δισταθές στοιχείο µε 2 εισόδους. Προσέξτε την «ακαθόριστη» τιµή για S=R=1.

-- Διαβάζοντας τη λογική:

§  Q = (R+Q’)’ και Q’ = (S+Q)’

Page 53: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ210 Δ10 VHDL και Flip-Flops – Συµπληρωµατική Διάλεξη.53 © Θεοχαρίδης, ΗΜΥ, 2016

R = S = 1 ?? q Ακαθόριστη έξοδος γιατί:

● Όταν S=R=1, τότε και οι 2 έξοδοι γίνονται 0. ●  Εάν και οι 2 έξοδοι είναι 0, η κατάσταση του SR

latch εξαρτάται από την είσοδο που παραµένει στην τιµή 1 για περισσότερο χρόνο, πριν γίνει 0.

● Άρα είναι όντως, “ακαθόριστη” κατάσταση à ΠΡΕΠΕΙ να αποφευχθεί.

Page 54: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ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

Page 55: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ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

Page 56: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ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

Page 57: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ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

Page 58: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ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

Page 59: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ210 Δ10 VHDL και Flip-Flops – Συµπληρωµατική Διάλεξη.59 © Θεοχαρίδης, ΗΜΥ, 2016

SR Latches

Page 60: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ210 Δ10 VHDL και Flip-Flops – Συµπληρωµατική Διάλεξη.60 © Θεοχαρίδης, ΗΜΥ, 2016

Προσοµοίωση SR Latch

Page 61: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ210 Δ10 VHDL και Flip-Flops – Συµπληρωµατική Διάλεξη.61 © Θεοχαρίδης, ΗΜΥ, 2016

SR Latch µε σήµα Ελέγχου

§  Το Latch είναι ευαίσθητο σε αλλαγές στις εισόδους ΜΟΝΟ όταν το C=1

§  Σηµαντικό στοιχείο, χρησιµοποιείται για σχεδιασµό άλλων latches και flip-flops

§  Θεωρείται και ως flip-flop, άλλα όχι βάση του ορισµού του βιβλίου σας

Page 62: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ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

Page 63: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ210 Δ10 VHDL και Flip-Flops – Συµπληρωµατική Διάλεξη.63 © Θεοχαρίδης, ΗΜΥ, 2016

D Latch q Ένας τρόπος αποφυγής των ανεπιθύµητων ακαθόριστων καταστάσεων στο RS flip-flop, είναι η εξασφάλιση ότι οι είσοδοι S και R δεν θα πάρουν ποτέ την τιµή 1 ταυτόχρονα. Αυτό επιτυγχάνεται µε ένα SR-latch, όπου S=D και R=D’ à D-latch:

Page 64: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ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

Page 65: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ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) ΜΟΝΟ σε ΣΥΓΚΕΚΡΙΜΕΝΕΣ χρονικές στιγµές (όχι ανά πάσα στιγµή ή κατά τη διάρκεια ενός διαστήµατος).

Page 66: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ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

Page 67: ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµ …Τύπος δεδοµένων (data type) My_Component X Y Z ... Αναγνωριστικό (identifier)

ΗΜΥ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=∨)