Γλώσσες Περιγραφής Υλικού Ι

Σχετικά έγγραφα
Σκιαγράφηση της διάλεξης. Γλώσσες Περιγραφής Υλικού Ι. Διαφορές μεταξύ των περιγραφών συνδυαστικών και ακολουθιακών κυκλωμάτων

Γλώσσες Περιγραφής Υλικού Ι

Σχεδίαση Ψηφιακών Κυκλωμάτων

Σκιαγράφηση της διάλεξης. Σχεδίαση Ψηφιακών Κυκλωμάτων. Ορισμοί για τις χρονικές καθυστερήσεις διάδοσης. Συνδυαστική και ακολουθιακή λογική

Σκιαγράφηση της διάλεξης. Γλώσσες Περιγραφής Υλικού Ι. Μηχανές Πεπερασμένων Καταστάσεων: Εισαγωγή και.

Σκιαγράφηση της διάλεξης. Γλώσσες Περιγραφής Υλικού Ι. Ανασκόπηση ϑεμάτων παλαιών εξετάσεων του μαθήματος. Περιεχόμενο εξετάσεων

Σκιαγράφηση της διάλεξης. Γλώσσες Περιγραφής Υλικού Ι. Περισσότερα για τα αρθρώματα Αναθέσεις και τελεστές Συντρέχων κώδικας

Γλώσσες Περιγραφής Υλικού Ι

Σκιαγράφηση της διάλεξης. Ανάθεση σε VARIABLE. Ανάθεση σε SIGNAL. identifier := expression; Συντρέχων και ακολουθιακός κώδικας


Σκιαγράφηση της διάλεξης. Μηχανές Πεπερασμένων Καταστάσεων: Εισαγωγή και.


Γλώσσες Περιγραφής Υλικού Ι

Η δήλωση `ifdef...`else...` endif

Αποδεικτικές Διαδικασίες και Μαθηματική Επαγωγή.

Σκιαγράφηση της διάλεξης. Γλώσσες Περιγραφής Υλικού Ι. Γενικά χαρακτηριστικά του επεξεργαστή MU0. Προγραμματιζόμενοι επεξεργαστές

Γλώσσες Περιγραφής Υλικού Ι. Εισαγωγικά. Οργάνωση των παραδόσεων. 1 Εισαγωγή στη Verilog HDL. 28 Φεβρουαρίου 2012

ΨΗΦΙΑΚΑ ΗΛΕΚΤΡΟΝΙΚΑ Σχεδίαση Λογικών Κυκλωμάτων

Σχεδίαση Ψηφιακών Κυκλωμάτων

Συναρτήσεις. Σημερινό μάθημα

Οι γέφυρες του ποταμού... Pregel (Konigsberg)

Σκιαγράφηση της διάλεξης. Σχεδίαση Ψηφιακών Κυκλωμάτων. Εισαγωγικά. Δομές ακολουθιακού και συντρέχοντος κώδικα

Γλώσσες Περιγραφής Υλικού Ι

Σκιαγράφηση της διάλεξης. Γλώσσες Περιγραφής Υλικού Ι (1) Μη προγραμματιζόμενοι επεξεργαστές

Σκιαγράφηση της διάλεξης. Σχεδίαση Ψηφιακών Κυκλωμάτων. Αρχιτεκτονικά χαρακτηριστικά των συσκευών Xilinx Spartan-3.

Σχεδίαση Ψηφιακών Κυκλωμάτων

Σκιαγράφηση της διάλεξης. Σχεδίαση Ψηφιακών Κυκλωμάτων. Απαριθμητοί τύποι δεδομένων (enumerated data types)

Τυπικζσ Γλϊςςεσ Περιγραφισ Υλικοφ Διάλεξθ 2

Ψηφιακή Εικόνα. Σημερινό μάθημα!


ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ Γ ΤΑΞΗ

Σχεδίαση Ψηφιακών Κυκλωμάτων

Σκιαγράφηση της διάλεξης. Σχεδίαση Ψηφιακών Κυκλωμάτων. Ο πλήρης αθροιστής (full adder) Κυκλωματικός σχεδιασμός του πλήρους αθροιστή.

Σχεδίαση Ψηφιακών Κυκλωμάτων

Σκιαγράφηση της διάλεξης. Η εντολή ASSERT (2)

Συναρτήσεις & Κλάσεις

Γλώσσες Περιγραφής Υλικού. Εισαγωγικά. Οργάνωση των παραδόσεων. 02 Ιουνίου 2009

Αναγνώριση Προτύπων. Σήμερα! Λόγος Πιθανοφάνειας Πιθανότητα Λάθους Κόστος Ρίσκο Bayes Ελάχιστη πιθανότητα λάθους για πολλές κλάσεις

ΠΑΝΕΠΙΣΤΗΜΙΑΚΑ ΦΡΟΝΤΙΣΤΗΡΙΑ ΚΟΛΛΙΝΤΖΑ ΜΑΘΗΜΑ: ΟΙΚΟΝΟΜΙΚΗ ΘΕΩΡΙΑ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Εαρινό Εξάμηνο


Εξαναγκασμένες ταλαντώσεις, Ιδιοτιμές με πολλαπλότητα, Εκθετικά πινάκων. 9 Απριλίου 2013, Βόλος

Ας υποθέσουμε ότι ο παίκτης Ι διαλέγει πρώτος την τυχαιοποιημένη στρατηγική (x 1, x 2 ), x 1, x2 0,

ΣΤΟ ΙΑΤΡΕΙΟ. Με την πιστοποίηση του αποκτά πρόσβαση στο περιβάλλον του ιατρού που παρέχει η εφαρμογή.

Εργαστήριο Οργάνωσης Η/Υ. Δαδαλιάρης Αντώνιος

Σκιαγράφηση της διάλεξης. Η έννοια του πακέτου (PACKAGE) στη VHDL. Σύνταξη ενός πακέτου. Σύνταξη παραμετρικών περιγραφών

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Εαρινό Εξάμηνο

ΣΤΟ ΦΑΡΜΑΚΕΙΟ. Με την πιστοποίηση του έχει πρόσβαση στο περιβάλλον του φαρμακείου που παρέχει η εφαρμογή.


Ταξινόμηση των μοντέλων διασποράς ατμοσφαιρικών ρύπων βασισμένη σε μαθηματικά κριτήρια.

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Μούλου Ευγενία

Δ Ι Α Κ Ρ Ι Τ Α Μ Α Θ Η Μ Α Τ Ι Κ Α. 1η σειρά ασκήσεων

HY430 Εργαστήριο Ψηφιακών Κυκλωμάτων. Πολυπλέκτες Καμπύλη Παρέτο. Κωδικοποιητές/Από-κωδικοποιητές D FF

Σχέσεις και ιδιότητές τους

Pointers. Σημερινό Μάθημα! Χρήση pointer Τελεστής * Τελεστής & Γενικοί δείκτες Ανάκληση Δέσμευση μνήμης new / delete Pointer σε αντικείμενο 2

Αναγνώριση Προτύπων. Σημερινό Μάθημα

ΘΕΜΑ: Aποτελεσματικότητα της νομισματικής και δημοσιονομικής πολιτικής σε μια ανοικτή οικονομία

Συναρτήσεις ΙΙ. Σημερινό μάθημα

Ημέρα 3 η. (α) Aπό την εργασιακή διαδικασία στη διαδικασία παραγωγής (β) Αξία του προϊόντος και αξία της εργασιακής δύναμης

Σκιαγράφηση της διάλεξης. Σχεδίαση Ψηφιακών Κυκλωμάτων.

Σχεδίαση Ψηφιακών Κυκλωμάτων

ΣΧΟΛΙΚΟ ΕΤΟΣ ΕΥΘΥΓΡΑΜΜΗ ΟΜΑΛΗ ΚΙΝΗΣΗ ΤΡΙΩΡΗ ΓΡΑΠΤΗ ΕΞΕΤΑΣΗ ΣΤΗ ΦΥΣΙΚΗ A ΛΥΚΕΙΟΥ. Ονοματεπώνυμο Τμήμα

Σκιαγράφηση της διάλεξης. Σχεδίαση Ψηφιακών Κυκλωμάτων. Εισαγωγή στις προγραμματιζόμενες συσκευές (2)

ΜΑΘΗΜΑ: ΟΙΚΟΝΟΜΙΚΗ ΘΕΩΡΙΑ

Έννοια. Η αποδοχή της κληρονομίας αποτελεί δικαίωμα του κληρονόμου, άρα δεν

Προτεινόμενα θέματα στο μάθημα. Αρχές Οικονομικής Θεωρίας ΟΜΑΔΑ Α. Στις προτάσεις από Α.1. μέχρι και Α10 να γράψετε στο τετράδιό σας τον αριθμό της

ΑΣΚΗΣΗ 2: Σχεδίαση και προσομοίωση κυκλωμάτων καταχωρητών και μετρητών

Μετρητής Ριπής ΛΟΓΙΚΗ ΣΧΕΔΙΑΣΗ. Αναφορά 9 ης. εργαστηριακής άσκησης: ΑΦΡΟΔΙΤΗ ΤΟΥΦΑ Α.Μ.:

τεσσάρων βάσεων δεδομένων που θα αντιστοιχούν στους συνδρομητές

Σκιαγράφηση της διάλεξης. Η οργάνωση ενός μη-προγραμματιζόμενου επεξεργαστή (1) Μη προγραμματιζόμενοι επεξεργαστές

Σκιαγράφηση της διάλεξης. Γλώσσες Περιγραφής Υλικού Ι. Διαιρέτης ρολογιού (clock divider) Ειδικά κυκλώματα

Γλώσσες Περιγραφής Υλικού Ι

Μεταγλωττιστές ΙΙ. Καταμερισμός καταχωρητών. Νικόλαος Καββαδίας Μεταγλωττιστές ΙΙ


Γλώσσες Περιγραφής Υλικού

Σκιαγράφηση της διάλεξης. Γλώσσες Περιγραφής Υλικού Ι. Χρήση τελεστών σε αναθέσεις. Σύνταξη κώδικα στη Verilog HDL: Βασικές συμβάσεις.

Αναγνώριση Προτύπων. Σημερινό Μάθημα

Κληρονομικότητα. Σήμερα! Κλάση Βάσης Παράγωγη κλάση Απλή κληρονομικότητα Protected δεδομένα Constructors & Destructors overloading

Γλώσσες Περιγραφής Υλικού Ι

Σκιαγράφηση της διάλεξης

Μεταγλωττιστές ΙΙ. Γέννηση ενδιάμεσης αναπαράστασης. 10 Νοεμβρίου Νικόλαος Καββαδίας Μεταγλωττιστές ΙΙ

( ιμερείς) ΙΜΕΛΕΙΣ ΣΧΕΣΕΙΣ Α Β «απεικονίσεις»

ΜΑΘΗΜΑ: ΓΕΝΙΚΟ ΔΙΟΙΚΗΤΙΚΟ ΔΙΚΑΙΟ ΔΙΚΑΣΤΩΝ

Ευρωπαϊκά παράγωγα Ευρωπαϊκά δικαιώματα

Μονάδες α. Να γράψετε στο τετράδιό σας τον παρακάτω πίνακα σωστά συµπληρωµένο.

VERILOG. Γενικά περί γλώσσας

ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων

Εισαγωγικά. 1.1 Η σ-αλγεβρα ως πληροφορία

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Εαρινό Εξάμηνο

Βελτίωση Εικόνας. Σήμερα!

Επίλυση δικτύων διανομής

ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων

ΠΑΝΕΠΙΣΤΗΜΙΑΚΑ ΦΡΟΝΤΙΣΤΗΡΙΑ ΚΟΛΛΙΝΤΖΑ ΜΑΘΗΜΑ: ΕΡΩΤΗΣΕΙΣ ΟΙΚΟΝΟΜΙΚΗΣ ΘΕΩΡΙΑΣ

ΜΑΘΗΜΑ: ΒΙΟΛΟΓΙΑ ΟΜΑΔΑ ΠΡΟΣΑΝΑΤΟΛΙΣΜΟΥ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ Γ ΛΥΚΕΙΟΥ

21/11/2005 Διακριτά Μαθηματικά. Γραφήματα ΒΑΣΙΚΗ ΟΡΟΛΟΓΙΑ : ΜΟΝΟΠΑΤΙΑ ΚΑΙ ΚΥΚΛΟΙ Δ Ι. Γεώργιος Βούρος Πανεπιστήμιο Αιγαίου

Γραμμική Ανεξαρτησία. Τμήμα Μηχανικών Η/Υ Τηλεπικοινωνιών και ικτύων Πανεπιστήμιο Θεσσαλίας. 17 Μαρτίου 2013, Βόλος

{ i f i == 0 and p > 0

ΗΥ-225. Verilog HDL. Τα βασικά...

Τρίτη, 05 Ιουνίου 2001 ΤΕΧΝΟΛΟΓΙΚΗ ΚΑΤΕΥΘΥΝΣΗ Γ ΛΥΚΕΙΟΥ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

ΑΠΟΛΥΤΗΡΙΕΣ ΕΞΕΤΑΣΕΙΣ Γ ΤΑΞΗΣ ΗΜΕΡΗΣΙΟΥ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΑΡΧΕΣ ΟΙΚΟΝΟΜΙΚΗΣ ΘΕΩΡΙΑΣ ΜΑΘΗΜΑ ΕΠΙΛΟΓΗΣ Γ ΛΥΚΕΙΟΥ

Transcript:

Γλώσσες Περιγραφής Υλικού Ι Μοντελοποίηση ακολουθιακών κυκλωμάτων Νικόλαος Καββαδίας nkavv@uop.gr 13 Μαρτίου 2012

Σκιαγράφηση της διάλεξης Στοιχεία ακολουθιακής σχεδίασης με Verilog HDL Λίστα ευαισθησίας και ακμοπυροδότηση Flip-flop και μανδαλωτές Blocking και nonblocking αναθέσεις σε μπλοκ always Παραδείγματα σχεδίασης ακολουθιακών κυκλωμάτων Το flip-flop τύπου D Ο D μανδαλωτής flip-flop τύπου JK και T Καταχωρητής Απαριθμητής πάνω/κάτω (up-down counter) Καταχωρητής ολίσθησης Απαριθμητής για το σύστημα BCD (Binary-Coded Decimal)

Διαφορές μεταξύ των περιγραφών συνδυαστικών και ακολουθιακών κυκλωμάτων Συνδυαστικά κυκλώματα Δεν ενεργοποιούνται από ακμοπυροδότηση εξωτερικού σήματος αλλά μόνο από τις αλλαγές στη στάθμη των σημάτων εισόδου Η λειτουργία τους δεν επηρεάζεται από το σήμα ρολογιού Ακολουθιακά κυκλώματα Ενεργοποιούνται κατά τη ϑετική ή αρνητική ακμοπυροδότηση του ρολογιού Στη λίστα ευαισθησίας εμφανίζεται μόνο το σήμα ρολογιού και πιθανώς και ένα σήμα επανατοποθέτησης (reset) Μπορεί να περιλαμβάνουν συνδυαστική λογική η οποία παράγει αποτελέσματα για εγγραφή σε καταχωρητές (flip-flop)

Βασικά στοιχεία ακολουθιακής λογικής: Μανδαλωτές και καταχωρητές (flip-flop) Μανδαλωτής (latch): απόκριση με ευαισθησία επιπέδου (level-sensitive) Αποθηκεύει δεδομένα π.χ. όταν το σήμα clk είναι σε υψηλή στάθμη Καταχωρητής (register): ακμοπυροδότητο στοιχείο (edge-triggered) Αποθηκεύει δεδομένα π.χ. κατά την ανερχόμενη ακμή του ρολογιού

Σήματα ρολογιού και flip-flop Τα σήματα ρολογιού δεν είναι τυπικά σήματα εισόδου σε ένα υποκύκλωμα Διαδίδονται μέσα από το δίκτυο διάδοσης ρολογιού (clock distribution network) Χρειάζονται ειδική καλωδίωση για τη διάδοση τους σε απομακρυσμένα σημεία του ολοκληρωμένου, διορθώνοντας τυχόν ανεπιθύμητες χρονικές καθυστερήσεις h Δεν χρησιμοποιούμε τα σήματα ρολογιού σε λογικές εκφράσεις Αντί αυτού προσθέτουμε μία είσοδο ενεργοποίησης ρολογιού (clock enable) στο flip-flop Από τους γνωστούς τύπους flip-flop (RS, JK, T, D) στις περισσότερες σχεδιάσεις χρησιμοποιείται ο τύπος D Σε ορισμένες σχεδιάσεις εξειδικευμένων μετρητών χρησιμοποιούνται τα flip-flop JK και T

Λίστα ευαισθησίας (sensitivity list) Η λίστα ευαισθησίας αποτελεί κατάλογο εισόδων και εσωτερικών σημάτων για μεταβολές των οποίων ένα μπλοκ always υποχρεούται να αναμένει Αν έχουμε περισσότερα από ένα σήματα στη λίστα, τα διαχωρίζουμε με τη λέξη-κλειδί or i Αν ένα σήμα στη λίστα χρησιμοποιεί ακμοπυροδότηση, τότε όλα τα υπόλοιπα πρέπει να δηλωθούν και αυτά με ακμοπυροδότηση Παράδειγμα 1: always @(a or b) if (a!= b) cond = 1 b1; else cond = 1 b0; Παράδειγμα 2: βρείτε το λάθος always @(a) if (a == 1 b1) temp = temp;

Ευαισθησία επιπέδου (level sensitivity) και ακμοπυροδότηση (edge triggering) Οι μεταβολές των σημάτων που δηλώνονται σε μία λίστα ευαισθησίας και οι οποίες ενεργοποιούν τον υπολογισμό μεταβλητών και σημάτων σε μία always είναι δύο τύπων: Μεταβολή επιπέδου (για σήματα επίτρεψης/ενεργοποίησης και δεδομένα) Ανερχόμενη ή κατερχόμενη ακμή (για σήματα ρολογιού) Μανδαλωτής (μεταβολή επιπέδου) always @(en or a) if (en == 1 b1) temp = a; Συγχρονισμός ως προς ανερχόμενη ακμή always @(posedge clk) temp = a; // or always @(posedge clk) temp = a; Z Οι εκφράσεις posedge και negedge είναι ΑΛΗΘΕΙΣ όταν έχει συμβεί μεταβολή (0 1 ή 1 0, αντίστοιχα) στο σήμα clk i Για τα περισσότερα εργαλεία σύνθεσης, τα σήματα εκτός του clk και του reset (αν υπάρχει) συνηθίζεται να παραλείπονται από μια λίστα ευαισθησίας (για ακολουθιακές always)

Εντολή WAIT Χρησιμοποιείται για τη δήλωση ευαισθησίας επιπέδου Οταν χρησιμοποιείται η WAIT, δεν γίνεται χρήση λίστας ευαισθησίας Σύνταξη της WAIT: wait (<signal_name>) statement; Παράδειγμα always wait (count_enable) #20 count = count + 1; Οταν το count_enable γίνει 1, η δήλωση count = count + 1; εκτελείται μετά από 20 time units Καθόσον η count_enable παραμένει στο 1, η count αυξάνεται κατά 1 κάθε 20 t.u.

Διαφορά μεταξύ blocking και nonblocking αναθέσεων σε μία always (1) Οι αναθέσεις με τον τελεστή = ονομάζονται blocking και εκτελούνται ακολουθιακά Εάν είναι επιθυμητό εντός μίας always να επιτρέψουμε την παράλληλη εκτέλεση κάποιων δηλώσεων, χρησιμοποιούμε τον τελεστή <= ο οποίος δηλώνει μία nonblocking ανάθεση Παράδειγμα: Τρεις παράλληλες αναθέσεις κατά τη ϑετική ακμή του ρολογιού always @(posedge clock) reg1 <= in1; reg2 <= in2 ˆ in3; reg3 <= reg1; // Old value of reg1 Z Οι τελικές τιμές των reg1, reg2, reg3 δεν εξαρτώνται από τη σχετική σειρά των αναθέσεων

Διαφορά μεταξύ blocking και nonblocking αναθέσεων σε μία always (2) Nonblocking assignment always @(posedge clk) a <= in; b <= a; c <= b; Ολες οι αναθέσεις εκτελούνται ακριβώς την ίδια χρονική στιγμή Σε κάθε ανερχόμενη ακμή του ρολογιού, το a παίρνει την ΠΑΛΙΑ τιμή του in, το b αυτήν του a και το c αυτήν του b Θεωρούμε ότι τοποθετείται ένας καταχωρητής μετά από κάθε δήλωση Blocking assignment always @(posedge clk) a = in; b = a; c = b; Άμεσος υπολογισμός και ανάθεση των δεξιών μελών Ολες οι αναθέσεις γίνονται διαδοχικά στην ίδια περίοδο ρολογιού Θεωρούμε ότι αντιστοιχεί σε έναν καταχωρητή με πολλές ίδιες εξόδους ή σε πολλούς παράλληλους καταχωρητές

Διαφορά μεταξύ blocking και nonblocking αναθέσεων σε μία always (3) Οι blocking αναθέσεις μπορεί να δημιουργήσουν προβλήματα εάν ο κώδικας περιλαμβάνει πολλαπλά μπλοκ λογικής always Με τις nonblocking αναθέσεις υποδηλώνονται εσωτερικά στάδια διοχέτευσης σε μία always και έτσι είναι χρήσιμες π.χ. για την περιγραφή καταχωρητών ολίσθησης i Οι blocking αναθέσεις χρησιμοποιούνται για τη μοντελοποίηση συνδυαστικών μπλοκ always i Οι nonblocking αναθέσεις χρησιμοποιούνται για τη μοντελοποίηση ακολουθιακών μπλοκ always

Απλά ακολουθιακά κυκλώματα: Flip-flop τύπου D Χαρακτηριστική εξίσωση: Q(t + 1) = D Περιγραφή D-type flip-flop του 1-bit module dff(clk, d, q); input clk; input d; output q; reg q; always @(posedge clk) q <= d; module Διάγραμμα χρονισμού του κυκλώματος Σχηματικό διάγραμμα

Αρχείο ελέγχου/επαλήθευσης (testbench) για το D flip-flop timescale 1 ns / 1 ns module main; reg clk, d; wire q; dff test(.clk(clk),.d(d),.q(q)); // Test clock generation. // // Clock pulse starts from 0. initial clk = 1 b0; // Free -running clock always #25 clk = clk; initial #10 d = 1 b0; #50 d = 1 b1; #150 d = 1 b0; #50 $stop; initial $monitor("%t: d=%b, q=%b", $time, d, q); module

Καταχωρητής με ασύγχρονη και σύγχρονη επαναφορά (reset) Ασύγχρονη επαναφορά module dff(clk, rst, d, q); input clk; input rst; input d; output q; reg q; Σύγχρονη επαναφορά module dff(clk, rst, d, q); input clk; input rst; input d; output q; reg temp; always @(posedge clk or negedge rst) if (rst == 1 b1) q <= 1 b0; else q <= d; always @(posedge clk) if (rst == 1 b1) temp <= 1 b0; else temp <= d; module Σχηματικό διάγραμμα assign q = temp; module

Καταχωρητής με επίτρεψη φόρτωσης (load enable) Με επίτρεψη φόρτωσης module dff(clk, rst, en, d, q); input clk, rst, en; output q; reg temp; always @(posedge clk) if (rst == 1 b1) temp <= 1 b0; else if (en == 1 b1) temp <= d; assign q = temp; module Σχηματικό διάγραμμα

Μανδαλωτής (latch) τύπου D Πολύ συχνά σε μία ψηφιακή σχεδίαση εισάγονται ανεπιθύμητοι μανδαλωτές από κάποιο σφάλμα του σχεδιαστή (π.χ. μη χρήση ακμοπυροδότησης σε ένα D flip-flop ή λόγω υπονοούμενης αποθήκευσης) Υπονοούμενη αποθήκευση δημιουργείται όταν δεν δηλώνουμε όλες τις περιπτώσεις μίας IF ή CASE σε συνδυαστικό κώδικα Περιγραφή D-type latch του 1-bit module dlatch(guard, d, q); input guard; input d; output q; reg q; always @(guard or d) if (guard == 1) q <= d; module

Flip-flop τύπου JK Με τη βοήθεια δύο ξεχωριστών εισόδων (J, K), το JK flip-flop υλοποιεί τρεις βασικές λειτουργίες: Τοποθέτηση της κατάστασης στο 1 Επανατοποθέτηση στο 0 Διατήρηση της τρέχουσας κατάστασης Αντιστροφή της τρέχουσας κατάστασης Χαρακτηριστική εξίσωση: Q(t + 1) = JQ + K Q Πίνακας διέγερσης του JK-ff Υλοποίηση του JK-ff με βάση το D-ff

Μια γενική περιγραφή του JK flip-flop module jkff(j, K, clk, Q, Q_b); input J, K, clk; output Q, Q_b; reg Q; always @(posedge clk) case ({J, K}) 2 b00: Q <= Q; 2 b01: Q <= 1 b0; 2 b10: Q <= 1 b1; 2 b11: Q <= Q; case assign Q_b = Q; module Διάγραμμα χρονισμού του κυκλώματος

Flip-flop τύπου T Το T flip-flop μεταβάλλει την κατάστασή του κάθε φορά που αλλάζει το σήμα στην είσοδο Τ Χαρακτηριστική εξίσωση: Q(t + 1) = Q T Υλοποίηση με βάση το JK flip-flop Υλοποίηση με βάση το D flip-flop i Τα JK και T flip-flop χρησιμοποιούνται ορισμένες φορές σε σχεδιάσεις μετρητών για μη-δυαδικές ακολουθίες

Μία γενική περιγραφή του T flip-flop Περιγραφή T flip-flop module tff (Q, T, clk, rst); output Q; input T, clk, rst; reg Q; always @(posedge clk) if (rst == 1 b1) Q <= 1 b0; else if (T == 1 b1) Q <= Q; module Διάγραμμα χρονισμού του κυκλώματος

Καταχωρητής (register) Ο καταχωρητής αποτελεί το πιο συχνά χρησιμοποιούμενο δομικό στοιχείο σε μία ψηφιακή σχεδίαση στο επίπεδο RTL Ως εσωτερικό στοιχείο αποθήκευσης, συνήθως χρησιμοποιείται το D flip-flop Η είσοδος DIN προσφέρει είσοδο για παράλληλη αποθήκευση νέων δεδομένων στον καταχωρητή Τα περιεχόμενα του καταχωρητή αλλάζουν μόνο στην περίπτωση που LD = 1 σε ανερχόμενη ακμή του ρολογιού

Περιγραφή ενός 8-bit καταχωρητή στη Verilog (ασύγχρονο reset) module register8 (clk, reset, ld, din, dout); input clk, reset, ld; input [7:0] din; output [7:0] dout; reg[7:0] dout; // Use of asynchronous reset always @(posedge clk or posedge reset) if (reset == 1 b1) dout <= 0; // Change register state on rising edge and assertion of load line else if (ld == 1 b1) dout <= din; module Διάγραμμα χρονισμού

Περιγραφή ενός 8-bit καταχωρητή στη Verilog (σύγχρονο reset) module register8 (clk, reset, ld, din, dout); input clk, reset, ld; input[7:0] din; output [7:0] dout; reg[7:0] dout; // Use of synchronous reset always @(posedge clk) if (reset == 1 b1) dout <= 0; // Change register state on rising edge and // assertion of load line else if (ld == 1 b1) dout <= din; module

Απαριθμητής πάνω/κάτω (up-down counter) Η σχεδίαση ενός απαριθμητή βασίζεται στο μοντέλο του καταχωρητή με την προσθήκη ενός αθροιστή/αφαιρέτη Η είσοδος U_D καθορίζει τον τρόπο μεταβολής της κατάστασης του απαριθμητή Η λειτουργία του απαριθμητή είναι ενεργή μόνο για EN = 1 Η είσοδος DIN προσφέρει είσοδο για παράλληλη αποθήκευση νέων δεδομένων στον εσωτερικό καταχωρητή Η επίτρεψη αποθήκευσης (LD) έχει προτεραιότητα έναντι της EN

Περιγραφή ενός up-down counter module up_down_counter8 (clk, reset, ld, en, ud, din, dout); input clk, reset, ld, en, ud; input [7:0] din; output [7:0] dout; reg[7:0] dout; always @(posedge clk or posedge reset) if (reset) dout <= 0; else if (ld) dout <= din; else if ((en) && (ud)) dout <= dout + 1; else if ((en) && ( ud)) dout <= dout - 1; else dout <= dout; module Διάγραμμα χρονισμού

Καταχωρητής ολίσθησης (shift register) Ο καταχωρητής ολίσθησης διαθέτει μία είσοδο EN, η οποία όταν είναι ενεργή πραγματοποιείται αριστερή (δεξιά) ολίσθηση των περιεχομένων του καταχωρητή κατά μία ϑέση Η είσοδος SIN εισάγεται είτε στο LSB ενός αριστερού ολισθητή είτε στο MSB ενός δεξιού ολισθητή Η είσοδος DIN προσφέρει είσοδο για παράλληλη αποθήκευση νέων δεδομένων στον εσωτερικό καταχωρητή Η επίτρεψη αποθήκευσης (LD) έχει προτεραιότητα έναντι της EN

Περιγραφή ενός shift register με ολίσθηση προς τα αριστερά module left_shift_register8(clk, reset, ld, en, sin, din, dout); input clk, reset, ld, en, sin; input[7:0] din; output [7:0] dout; reg[7:0] dout; always @(posedge clk or posedge reset) if (reset) dout <= 0; else if (ld) dout <= din; else if (en) dout <= {dout[6:0], sin}; else dout <= dout; module

Αποτελέσματα από την προσομοίωση του left shift register 0: reset=x, ld=x, en=x, sin=x, din=xxxxxxxx, dout=xxxxxxxx 10: reset=1, ld=0, en=0, sin=0, din=00000000, dout =00000000 60: reset=0, ld=1, en=1, sin=1, din=10100101, dout =00000000 75: reset=0, ld=1, en=1, sin=1, din=10100101, dout =10100101 110: reset=0, ld=0, en=1, sin=0, din=10100101, dout =10100101 125: reset=0, ld=0, en=1, sin=0, din=10100101, dout =01001010 160: reset=0, ld=0, en=1, sin=1, din=10100101, dout =01001010 175: reset=0, ld=0, en=1, sin=1, din=10100101, dout =10010101 225: reset=0, ld=0, en=1, sin=1, din=10100101, dout =00101011 275: reset=0, ld=0, en=1, sin=1, din=10100101, dout =01010111 325: reset=0, ld=0, en=1, sin=1, din=10100101, dout =10101111 375: reset=0, ld=0, en=1, sin=1, din=10100101, dout =01011111

Παράδειγμα περιγραφής κυκλώματος: Απαριθμητής ψηφίου με έξοδο σε οθόνη επτά τμημάτων (1) Δεκαδικός απαριθμητής ενός ψηφίου (μετρά 0 9) και μετατρέπει τους δυαδικά κωδικοποιημένους δεκαδικούς (BCD: Binary Coded Decimal) σε μορφή κατάλληλη για απεικόνιση σε οθόνη επτά τμημάτων (SSD: Seven Segment Display) Το κύκλωμα διασυνδέεται με την οθόνη ως εξής: abcdefg, με το πιο σημαντικό bit (MSB) να τροφοδοτεί το τμήμα a και το LSB το τμήμα g. Η υποδιαστολή x δεν χρησιμοποιείται module bcdcounter (clk, reset, digit); input clk, reset; output [6:0] digit; reg[6:0] digit; reg[3:0] temp;

Παράδειγμα περιγραφής κυκλώματος: Απαριθμητής ψηφίου με έξοδο σε οθόνη επτά τμημάτων (2) always @(posedge clk or posedge reset) if (reset == 1 b1) temp = 4 h0; else temp = temp + 1; if (temp == 4 ha) temp = 4 h0; case (temp) 4 h0: digit <= 7 b1111110; 4 h1: digit <= 7 b0110000; 4 h2: digit <= 7 b1101101; 4 h3: digit <= 7 b1111001; 4 h4: digit <= 7 b0110011; 4 h5: digit <= 7 b1011011; 4 h6: digit <= 7 b1011111; 4 h7: digit <= 7 b1110000; 4 h8: digit <= 7 b1111111; 4 h9: digit <= 7 b1111011; default: $display("invalid BCD code."); case module

Παράδειγμα περιγραφής κυκλώματος: Απαριθμητής ψηφίου με έξοδο σε οθόνη επτά τμημάτων (3) Διάγραμμα χρονισμού για το κύκλωμα του απαριθμητή ψηφίου