22
Σχεδίαση Ψηφιακών Συστημάτων Ενότητα 4: Σχεδιασμός Σειριακού Αθροιστή Κυριάκης - Μπιτζάρος Ευστάθιος Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε. ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα

Σχεδίαση Ψηφιακών Συστημάτωνeclass.teipir.gr/openeclass/modules/document/file.php... · 2015. 10. 4. · • Καταχωρητής Ολίσθησης (shift

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Σχεδίαση Ψηφιακών Συστημάτωνeclass.teipir.gr/openeclass/modules/document/file.php... · 2015. 10. 4. · • Καταχωρητής Ολίσθησης (shift

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

Ενότητα 4: Σχεδιασμός Σειριακού Αθροιστή

Κυριάκης - Μπιτζάρος Ευστάθιος Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα

Page 2: Σχεδίαση Ψηφιακών Συστημάτωνeclass.teipir.gr/openeclass/modules/document/file.php... · 2015. 10. 4. · • Καταχωρητής Ολίσθησης (shift

Άδειες Χρήσης

• Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

• Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς.

Page 3: Σχεδίαση Ψηφιακών Συστημάτωνeclass.teipir.gr/openeclass/modules/document/file.php... · 2015. 10. 4. · • Καταχωρητής Ολίσθησης (shift

Χρηματοδότηση • Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια

του εκπαιδευτικού έργου του διδάσκοντα.

• Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού.

• Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους.

Page 4: Σχεδίαση Ψηφιακών Συστημάτωνeclass.teipir.gr/openeclass/modules/document/file.php... · 2015. 10. 4. · • Καταχωρητής Ολίσθησης (shift

Σκοπός Ενότητας

Ανάλυση και σχεδίαση σειριακού αθροιστή με χρήση των βασικών στοιχείων που έχουν αναλυθεί στις 3 προηγούμενες

ενότητες.

Page 5: Σχεδίαση Ψηφιακών Συστημάτωνeclass.teipir.gr/openeclass/modules/document/file.php... · 2015. 10. 4. · • Καταχωρητής Ολίσθησης (shift

Περιεχόμενα ενότητας

• Σειριακός Αθροιστής • Μηχανή Άθροισης • Κύκλωμα Σειριακού Αθροιστή • Κύκλωμα Σειριακού Αθροιστή • Καταχωρητής Ολίσθησης (shift register) • Σύγχρονος Μετρητής (Counter) • Πακέτο Βασικών Στοιχείων (Components) • Χρήση Βασικών Στοιχείων

Page 6: Σχεδίαση Ψηφιακών Συστημάτωνeclass.teipir.gr/openeclass/modules/document/file.php... · 2015. 10. 4. · • Καταχωρητής Ολίσθησης (shift

Σειριακός Αθροιστής

Sum A B + =

Shift register

Shift register

Adder FSM Shift register

B

A

a

b

s

Clock

Διάγραμμα Βαθμίδων Σειριακού Αθροιστή

FSM:Finite State Machine

Page 7: Σχεδίαση Ψηφιακών Συστημάτωνeclass.teipir.gr/openeclass/modules/document/file.php... · 2015. 10. 4. · • Καταχωρητής Ολίσθησης (shift

Μηχανή Άθροισης

Κύκλωμα Μηχανής Άθροισης

Full adder

a b

s

D Q

Q

carry-out

Clock

Reset

Y y carry-in

Page 8: Σχεδίαση Ψηφιακών Συστημάτωνeclass.teipir.gr/openeclass/modules/document/file.php... · 2015. 10. 4. · • Καταχωρητής Ολίσθησης (shift

Κύκλωμα Σειριακού Αθροιστή -1

Adder FSM

Clock

E w L

E w L

b 7 b 0

a 7 a 0

E w L

E L

Q 3 Q 2 Q 1 Q 0

D 3 D 2 D 1 D 0

1 0 0 0

Counter

0 0

Reset

Sum 7 Sum 0

0 1

0 1

Run

SSer

Aser 7 Aser 0

Bser 7 Bser 0

low8

Cnt_in

Shift Register

Shift Register

Shift Register

Page 9: Σχεδίαση Ψηφιακών Συστημάτωνeclass.teipir.gr/openeclass/modules/document/file.php... · 2015. 10. 4. · • Καταχωρητής Ολίσθησης (shift

Κύκλωμα Σειριακού Αθροιστή -2

Clock

E w L

E w L

E w L

E L

Q 3 Q 2 Q 1 Q 0

D 3 D 2 D 1 D 0

1 0 0 0

Counter

00000000

Reset

0 1

0 1

Run

S

Cnt_in

Shift Register

Shift Register

Shift Register

Full adder

D Q

Q

00100110

01101101

1

00100110

01101101

00000000

1

1

0

0

00010011

00110110

10000000

1

0

1 0 0 1

0

0

00001001

00011011

11000000

0

1

1 0 1 0

0

0

00000100

00001101

01100000

0

1

1 0 1 1

1

0

00000010

00000110

00110000

1

0

1 1 0 0

1

0

00000001

00000011

10011000

0

1

1 1 0 1

0

0

00000000

00000001

01001100

0

1

1 1 1 0

1

0

00000000

00000000

00100110

1

0

1 1 1 1

1

0

00000000

00000000

10010011

0

0

0 0 0 0

0 0

1 0 0 0

Page 10: Σχεδίαση Ψηφιακών Συστημάτωνeclass.teipir.gr/openeclass/modules/document/file.php... · 2015. 10. 4. · • Καταχωρητής Ολίσθησης (shift

Καταχωρητής Ολίσθησης (shift register)

D Q

Q Clock

D Q

Q

D Q

Q

D Q

Q

In Out

t 0

t 1

t 2

t 3

t 4

t 5

t 6

t 7

1

0

1

1

1

0

0

0

0

1

0

1

1

1

0

0

0

0

1

0

1

1

1

0

0

0

0

1

0

1

1

1

0

0

0

0

1

0

1

1

Q 1 Q 2 Q 3 Q 4 Out = In Κύκλωμα

Q 1 Q 2 Q 3 Q 4

Page 11: Σχεδίαση Ψηφιακών Συστημάτωνeclass.teipir.gr/openeclass/modules/document/file.php... · 2015. 10. 4. · • Καταχωρητής Ολίσθησης (shift

Καταχωρητής Ολίσθησης Q 3 Q 2 Q 1 Q 0

Clock

Parallel input

Parallel output

Shift/Load

Serial input

D Q

Q

D Q

Q

D Q

Q

D Q

Q

Page 12: Σχεδίαση Ψηφιακών Συστημάτωνeclass.teipir.gr/openeclass/modules/document/file.php... · 2015. 10. 4. · • Καταχωρητής Ολίσθησης (shift

Πλήρης Αθροιστής

c i

x i y i

c i 1 +

s i

Κύκλωμα Πλήρους Αθροιστή

Page 13: Σχεδίαση Ψηφιακών Συστημάτωνeclass.teipir.gr/openeclass/modules/document/file.php... · 2015. 10. 4. · • Καταχωρητής Ολίσθησης (shift

Σύγχρονος Μετρητής (Counter)

Enable D Q

Q

Q 0

D Q

Q

Q 1

D Q

Q

Q 2

D Q

Q

Q 3

D 0

D 1

D 2

D 3

Load Clock

Output carry

0 1

0 1

0 1

0 1

Page 14: Σχεδίαση Ψηφιακών Συστημάτωνeclass.teipir.gr/openeclass/modules/document/file.php... · 2015. 10. 4. · • Καταχωρητής Ολίσθησης (shift

Καταχωρητής Ολίσθησης (shift register) ENTITY shiftrn IS

GENERIC ( N : INTEGER := 8 ) ; PORT (R : IN STD_LOGIC_VECTOR(N-1 DOWNTO 0) ; Clock, L, w,E : IN STD_LOGIC ; Q : BUFFER STD_LOGIC_VECTOR(N-1 DOWNTO 0) ) ; END shiftrn ; ARCHITECTURE Behavior OF shiftn IS BEGIN PROCESS BEGIN WAIT UNTIL Clock'EVENT AND Clock = '1' ; IF E=‘1’ THEN IF L = '1' THEN Q <= R ; ELSE Genbits: FOR i IN 0 TO N-2 LOOP Q(i) <= Q(i+1) ; END LOOP ; Q(N-1) <= w ; END IF ; END IF; END PROCESS ; END Behavior ;

Page 15: Σχεδίαση Ψηφιακών Συστημάτωνeclass.teipir.gr/openeclass/modules/document/file.php... · 2015. 10. 4. · • Καταχωρητής Ολίσθησης (shift

Στοιχείο Καταχωρητή Ολίσθησης (muxdff)

ENTITY muxdff IS PORT ( D0, D1, Sel, Clock : IN STD_LOGIC ; Q : OUT STD_LOGIC ) ; END muxdff ;

ARCHITECTURE Behavior OF muxdff IS BEGIN PROCESS BEGIN WAIT UNTIL Clock'EVENT AND Clock = '1' ; IF Sel = '0' THEN Q <= D0 ; ELSE Q <= D1 ; END IF ; END PROCESS ; END Behavior ;

Page 16: Σχεδίαση Ψηφιακών Συστημάτωνeclass.teipir.gr/openeclass/modules/document/file.php... · 2015. 10. 4. · • Καταχωρητής Ολίσθησης (shift

Καταχωρητής Ολίσθησης (structural) -1

ENTITY shift4 IS PORT ( R : IN STD_LOGIC_VECTOR(3 DOWNTO 0) ; L, w, Clock : IN STD_LOGIC ; Q : BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0) ) ; END shift4 ; ARCHITECTURE Structure OF shift4 IS COMPONENT muxdff PORT (D0, D1, Sel, Clock : IN STD_LOGIC ; Q: OUT STD_LOGIC ) ; END COMPONENT ; BEGIN Stage3: muxdff PORT MAP ( w, R(3), L, Clock, Q(3) ) ; Stage2: muxdff PORT MAP ( Q(3), R(2), L, Clock, Q(2) ) ; Stage1: muxdff PORT MAP ( Q(2), R(1), L, Clock, Q(1) ) ; Stage0: muxdff PORT MAP ( Q(1), R(0), L, Clock, Q(0) ) ; END Structure ;

Page 17: Σχεδίαση Ψηφιακών Συστημάτωνeclass.teipir.gr/openeclass/modules/document/file.php... · 2015. 10. 4. · • Καταχωρητής Ολίσθησης (shift

Καταχωρητής Ολίσθησης (structural) -2

ENTITY shift4 IS PORT ( R : IN STD_LOGIC_VECTOR(3 DOWNTO 0) ; L, w, Clock : IN STD_LOGIC ; Q : BUFFER STD_LOGIC_VECTOR(4 DOWNTO 0) ) ; END shift4 ; ARCHITECTURE Structure OF shift4 IS COMPONENT muxdff PORT (D0, D1, Sel, Clock : IN STD_LOGIC ; Q: OUT STD_LOGIC ) ; END COMPONENT ; BEGIN Q(4)<=w; shiftall: for i in 0 to 3 generate stage: muxdff PORT MAP ( Q(i+1), R(i), L, Clock, Q(i) ) ; end generate; END Structure ;

Page 18: Σχεδίαση Ψηφιακών Συστημάτωνeclass.teipir.gr/openeclass/modules/document/file.php... · 2015. 10. 4. · • Καταχωρητής Ολίσθησης (shift

Σύγχρονος Μετρητής (Counter) ENTITY upcount IS GENERIC ( mod : INTEGER := 8 ) ; PORT ( Clock, L, E : IN STD_LOGIC ; D : IN INTEGER RANGE 0 TO mod-1 ; Q : 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 Behavior ;

Page 19: Σχεδίαση Ψηφιακών Συστημάτωνeclass.teipir.gr/openeclass/modules/document/file.php... · 2015. 10. 4. · • Καταχωρητής Ολίσθησης (shift

Πακέτο Βασικών Στοιχείων (Components) (1)

LIBRARY ieee ; USE ieee.std_logic_1164.all ; PACKAGE mycomponents IS -- n-bit left-to-right shift register with parallel load and enable COMPONENT shiftrne GENERIC ( N : INTEGER := 4 ) ; PORT (R : IN STD_LOGIC_VECTOR(N-1 DOWNTO 0) ; Clock, L,w, E : IN STD_LOGIC ; Q : BUFFER STD_LOGIC_VECTOR(N-1 DOWNTO 0)); END COMPONENT ; -- up-counter that counts from 0 to modulus-1 COMPONENT upcount GENERIC ( mod : INTEGER := 8 ) ; PORT (Clock, L, E: IN STD_LOGIC ; D : IN INTEGER RANGE 0 TO mod-1 ; Q : BUFFER INTEGER RANGE 0 TO mod-1 ) ; END COMPONENT ;

Page 20: Σχεδίαση Ψηφιακών Συστημάτωνeclass.teipir.gr/openeclass/modules/document/file.php... · 2015. 10. 4. · • Καταχωρητής Ολίσθησης (shift

Πακέτο Βασικών Στοιχείων (Components) (2)

-- 1-bit full adder COMPONENT fulladd PORT ( Cin, x, y : IN STD_LOGIC ; s, Cout : OUT STD_LOGIC ) ; END COMPONENT ; -- D flip-flop COMPONENT flipflop IS PORT ( D, Clock : IN STD_LOGIC ; Resetn : IN STD_LOGIC ; Q : OUT STD_LOGIC ) ; END COMPONENT; END mycomponents;

Page 21: Σχεδίαση Ψηφιακών Συστημάτωνeclass.teipir.gr/openeclass/modules/document/file.php... · 2015. 10. 4. · • Καταχωρητής Ολίσθησης (shift

Χρήση Βασικών Στοιχείων Component Instantiation

USE work.mycomponents.all ; ENTITY serialadder IS GENERIC ( length : INTEGER := 8 ) ; PORT (Clock, Reset : IN STD_LOGIC ; A, B : IN STD_LOGIC_VECTOR(length-1 DOWNTO 0) ; Sum : BUFFER STD_LOGIC_VECTOR(length-1 DOWNTO 0) ); END serialadder ;

ARCHITECTURE struct OF serialadder IS Signal low, high, run : std_logic; Signal Aser, Bser, low8 : std_logic_vector(7 down to 0); Signal cnt_in : integer range 0 to 15; BEGIN low <= ‘0’; high <= ‘1’; ShiftA: shiftrne GENERIC MAP ( N => 8 ) PORT MAP ( A, clock, reset, low, high, Aser) ; … END struct;

Page 22: Σχεδίαση Ψηφιακών Συστημάτωνeclass.teipir.gr/openeclass/modules/document/file.php... · 2015. 10. 4. · • Καταχωρητής Ολίσθησης (shift

Τέλος Ενότητας