ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Ενότητα 3: Καταχωρητές - Απαριθμητές Κυριάκης - Μπιτζάρος Ευστάθιος Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.
Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς.
Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους.
Σκοπός Ενότητας Ανάλυση και σχεδίαση καταχωρητή Ανάλυση και σχεδίαση καταχωρητή ολίσθησης Ανάλυση και σχεδίαση σύγχρονων και ασύγχρονων απαριθμητών Μοντελοποίηση των κυκλωμάτων με VHDL
Περιεχόμενα Ενότητας Καταχωρητής n δυαδικών ψηφίων Απαριθμητής Καταχωρητής ολίσθησης Ασύγχρονοι απαριθμητές Σύγχρονοι απαριθμητές
Καταχωρητής n δυαδικών ψηφίων Ο καταχωρητής n δυαδικών ψηφίων υλοποιείται με παράλληλη σύνδεση n D flipflops με κοινό clock και set/reset.
Καταχωρητής 8 ψηφίων με ασύγχρονο reset ENTITY reg8 IS PORT ( D: IN STD_LOGIC_VECTOR(7 DOWNTO 0) ; Resetn, Clock : IN STD_LOGIC ; : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ) ; END reg8 ; ARCHITECTURE Behavior OF reg8 IS BEGIN PROCESS ( Resetn, Clock ) BEGIN IF Resetn = '0' THEN <= (others => 0 ) ; ELSIF Clock'EVENT AND Clock = '1' THEN <= D ; END IF ; END PROCESS ; END ARCHITECTURE ;
Καταχωρητής Ολίσθησης (shift register) -1 In D 1 2 3 4 D D D Out Clock
Καταχωρητής Ολίσθησης (shift register) -2 ENTITY shiftreg IS PORT (Clock, Sin: IN STD_LOGIC ; : BUFFER STD_LOGIC_VECTOR(4 DOWNTO 1)) ; END ΕΝΤΙΤΥ ; ARCHITECTURE Behavior OF shifreg IS BEGIN PROCESS BEGIN WAIT UNTIL Clock'EVENT AND Clock = '1' ; (4) <= (3) ; (3) <= (2) ; (2) <= (1) ; (1) <= Sin ; END PROCESS ; END ARCHITECTURE ;
Σειριακή μεταφορά δεδομένων
Καταχωρητής Ολίσθησης Parallel output 3 2 1 0 D D D D Serial input Clock Shift/Load Parallel input R(3:0)
ARCHITECTURE Behavior OF shiftrn IS BEGIN PROCESS BEGIN WAIT UNTIL Clock'EVENT AND Clock = '1' ; IF SL = '1' THEN <= R ; ELSE Genbits: FOR i IN 0 TO N-2 LOOP (i) <= (i+1) ; END LOOP ; (N-1) <= Sin ; END IF ; END PROCESS ; END ARCHITECTURE ; Καταχωρητής Ολίσθησης (shift register) ENTITY shiftrn IS GENERIC ( N : INTEGER := 8 ) ; PORT (R : IN STD_LOGIC_VECTOR(N-1 DOWNTO 0) ; Clock, SL, Sin : IN STD_LOGIC ; : BUFFER STD_LOGIC_VECTOR(N-1 DOWNTO 0) ) ; END ΕΝΤΙΤΥ ;
Στοιχείο Καταχωρητή Ολίσθησης (muxdff) ENTITY muxdff IS PORT ( D0, D1, Sel, Clock : IN STD_LOGIC ; : OUT STD_LOGIC ) ; END muxdff ; ARCHITECTURE Behavior OF muxdff IS BEGIN PROCESS BEGIN WAIT UNTIL Clock'EVENT AND Clock = '1' ; IF Sel = '0' THEN <= D0 ; ELSE <= D1 ; END IF ; END PROCESS ; END ARCHITECTURE ;
Καταχωρητής Ολίσθησης (structural) -1 ENTITY shift4 IS PORT ( R : IN STD_LOGIC_VECTOR(3 DOWNTO 0) ; L, w, Clock : IN STD_LOGIC ; : BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0) ) ; END ENTITY ; ARCHITECTURE Structure OF shift4 IS COMPONENT muxdff PORT (D0, D1, Sel, Clock : IN STD_LOGIC ; : OUT STD_LOGIC ) ; END COMPONENT ; BEGIN Stage3: muxdff PORT MAP ( w, R(3), L, Clock, (3) ) ; Stage2: muxdff PORT MAP ( (3), R(2), L, Clock, (2) ) ; Stage1: muxdff PORT MAP ( (2), R(1), L, Clock, (1) ) ; Stage0: muxdff PORT MAP ( (1), R(0), L, Clock, (0) ) ; END ARCHITECTURE ;
Καταχωρητής Ολίσθησης (structural) -2 ENTITY shift4 IS PORT ( R : IN STD_LOGIC_VECTOR(3 DOWNTO 0) ; L, w, Clock : IN STD_LOGIC ; : BUFFER STD_LOGIC_VECTOR(4 DOWNTO 0) ) ; END ENTITY ; ARCHITECTURE Structure OF shift4 IS COMPONENT muxdff PORT (D0, D1, Sel, Clock : IN STD_LOGIC ; : OUT STD_LOGIC ) ; END COMPONENT ; BEGIN (4)<=w; shiftall: for i in 0 to 3 generate stage: muxdff PORT MAP ( (i+1), R(i), L, Clock, (i) ) ; end generate; END ARCHITECTURE ;
Καταχωρητής Ολίσθησης
Απαριθμητής (Counter) Απαριθμητής ή μετρητής ονομάζεται ένα κύκλωμα το οποίο με την εφαρμογή παλμών εισόδου (ρολόι) περνά από μία προ-καθορισμένη ακολουθία καταστάσεων. Αν η ακολουθία των καταστάσεων εξόδου ακολουθεί τη φυσική αρίθμηση (0,1,...Ν) ο μετρητής ονομάζεται δυαδικός μετρητής (binary counter). Ο δυαδικός μετρητής n δυαδικών ψηφίων αποτελείται από n flip-flops και μετρά από 0... 2 n 1. Σύγχρονος ονομάζεται ο μετρητής του οποίου οι είσοδοι clock όλων των flipflops έχουν κοινό σήμα χρονισμού. Ασύγχρονος ονομάζεται ο μετρητής του οποίου κάθε flip-flop ενεργοποιείται από την έξοδο της προηγούμενης βαθμίδας.
Ασύγχρονος αύξοντας απαριθμητής
Ασύγχρονος φθίνοντας απαριθμητής
Ασύγχρονος Μετρητής ENTITY a_count IS PORT (Clock : IN STD_LOGIC ; : BUFFER STD_LOGIC_VECTOR (2 downto 0 ) ; END a_count ; ARCHITECTURE Struct OF upcount IS COMPONENT TFF IS PORT(T,Clk : IN STD_LOGIC;,N : OUT STD_LOGIC); END COMPONENT; SIGNAL high : std_logic; BEGIN A0: TFF PORT MAP (high, Clock, (0), OPEN) ; A1: TFF PORT MAP (high, (0), (1), OPEN) ; A2: TFF PORT MAP (high, (1), (2), OPEN) ; High <= '1'; END ARCHITECTURE;
Σύγχρονος απαριθμητής με T flip-flop
Απαριθμητής με ενεργοποίηση και μηδενισμό
Απαριθμητής με εύρος 0-4
Σύγχρονος Μετρητής (D flipflop) Enable D 0 0 1 D 0 Half Adder D 1 0 1 D 1 D 2 0 1 D 2 D 3 0 1 D 3 Load Clock Output carry
Σύγχρονος Μετρητής ENTITY upcount IS GENERIC ( mod : INTEGER := 8 ) ; PORT ( Clock, L, E : IN STD_LOGIC ; D : IN INTEGER RANGE 0 TO mod-1 ; : BUFFER INTEGER RANGE 0 TO mod-1 ) ; END upcount ; ARCHITECTURE Behavior OF upcount IS BEGIN PROCESS BEGIN WAIT UNTIL (Clock'EVENT AND Clock = '1') ; IF E = '1' THEN IF L = '1' THEN q <= D ; ELSE q <= q+1 ; END IF ; END IF ; END PROCESS; END Architecture ;
Αύξοντας/Φθίνοντας Απαριθμητής HAS Half Adder/Subtractor
Τέλος Ενότητας