Κωδικοποιητές & Αποκωδικοποιητές
Κωδικοποιητής (Encoder): μετατρέπει πολλές γραμμές εισόδου σε λίγες γραμμές κωδικοποιημένης εξόδου. Αποκωδικοποιητής (Decoder): κάνει το αντίθετο — από κωδικοποιημένη είσοδο ενεργοποιεί μία και μόνο μία από τις πολλές εξόδους.
Encoder vs Decoder
Κωδικοποιητής
M εισόδων → N εξόδων (M > N)
Από τις M εισόδους ενεργοποιείται μόνο μία, και η έξοδος δίνει τον BCD αριθμό της.
Π.χ. 10→4, 16→4, 8→3
Αποκωδικοποιητής
N εισόδων → 2ᴺ εξόδων
Με βάση την δυαδική είσοδο, ενεργοποιείται μία μόνο έξοδος.
Π.χ. 2→4, 3→8, 4→16
Οι είσοδοι/έξοδοι μπορούν να είναι ενεργές στο ψηλό επίπεδο (Active High = 1) ή στο χαμηλό επίπεδο (Active Low = 0). Το datasheet του ολοκληρωμένου σου λέει ποιο ισχύει.
Αποκωδικοποιητές (Decoders)
Ένας αποκωδικοποιητής με N εισόδους έχει μέγιστο αριθμό εξόδων M = 2ᴺ.
Παραδείγματα:
- Decoder 2→4: 2 είσοδοι → 4 έξοδοι
- Decoder 3→8: 3 είσοδοι → 8 έξοδοι
- Decoder 4→16: 4 είσοδοι → 16 έξοδοι
- Decoder BCD→DEC (4→10): 4 είσοδοι BCD → 10 έξοδοι (0-9)
Παράδειγμα: BCD σε Δεκαδικό
Όταν στην είσοδο έχεις τον αριθμό 0101 (δηλαδή 5 σε BCD), η μόνη έξοδος που ενεργοποιείται
είναι η Y₅. Όλες οι άλλες παραμένουν στο 0.
Διαδραστικό: Decoder N→2ᴺ
Δες ποια έξοδος ενεργοποιείται
Επίλεξε αριθμό εισόδων (2, 3 ή 4 bits). Πάτα τα κουμπιά A₀, A₁, A₂, A₃ για να φτιάξεις τη δυαδική είσοδο. Παρατήρησε ότι μόνο μία έξοδος ανάβει κάθε φορά — αυτή που αντιστοιχεί στη δεκαδική τιμή της εισόδου.
Είσοδοι (A)
Έξοδοι (Y)
BCD σε 7-Segment Decoder
Ο πιο διάσημος αποκωδικοποιητής! Παίρνει 4 bits (BCD 0-9) και ενεργοποιεί 7 εξόδους a, b, c, d, e, f, g για να εμφανίσει το αντίστοιχο ψηφίο σε 7-segment display.
Πίνακας αλήθειας
| BCD | A₃ | A₂ | A₁ | A₀ | a | b | c | d | e | f | g |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
| 1 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 |
| 2 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 1 |
| 3 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 |
| 4 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 |
| 5 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 1 |
| 6 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 |
| 7 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 |
| 8 | 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
| 9 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 1 |
Δύο τύποι 7-segment displays:
- Κοινής Καθόδου (Common Cathode): Active High — λογικό 1 ανάβει το segment
- Κοινής Ανόδου (Common Anode): Active Low — λογικό 0 ανάβει το segment
Διαδραστικό: BCD → 7-Segment Display
Δες το ψηφιακό display ζωντανά!
Πάτα τα bits A₃A₂A₁A₀ για να φτιάξεις έναν αριθμό σε BCD (0-9). Δες ζωντανά πώς ανάβουν τα segments a-g στο display. Δοκίμασε όλους τους αριθμούς από 0 ως 9!
BCD Είσοδος
7-Segment Display
Κωδικοποιητές (Encoders)
Ο κωδικοποιητής έχει M εισόδους και N εξόδους, με M < 2ᴺ. Όταν ενεργοποιηθεί μία είσοδος, στην έξοδο εμφανίζεται ο BCD κωδικός της.
Για παράδειγμα, ένας κωδικοποιητής δεκαδικού/BCD (10→4) δέχεται 10 εισόδους D₀-D₉ και βγάζει 4 εξόδους Y₀-Y₃ (BCD).
Κωδικοποιητής με Προτεραιότητα
Στον απλό κωδικοποιητή, αν ενεργοποιηθούν πάνω από μία είσοδοι ταυτόχρονα, το αποτέλεσμα είναι λάθος. Ο κωδικοποιητής με προτεραιότητα (priority encoder) λύνει αυτό το πρόβλημα: όταν ενεργοποιηθούν πολλές είσοδοι, κωδικοποιεί την πιο μεγάλη από αυτές.
Αν πατηθούν ταυτόχρονα τα κουμπιά 3 και 5, ο priority encoder θα κωδικοποιήσει το 5 (μεγαλύτερο) και θα αγνοήσει το 3.
Διαδραστικό: Priority Encoder
Δες τη λογική προτεραιότητας
Πάτα διάφορα κουμπιά εισόδου D₀-D₉ ταυτόχρονα. Παρατήρησε ότι η έξοδος BCD αντιστοιχεί πάντα στο μεγαλύτερο ενεργό κουμπί. Δοκίμασε να πατήσεις D₂ και D₇ — η έξοδος θα είναι 7!
Είσοδοι (D₀ - D₉)
Έξοδοι (Y₃ Y₂ Y₁ Y₀)
Τυπικές Εφαρμογές
Αποκωδικοποιητές:
- Επιλογή μνήμης (memory address decoding) σε επεξεργαστές
- Οθόνες 7-segment, 14-segment, dot matrix
- Multiplexers/Demultiplexers (επόμενο κεφάλαιο!)
- Πίνακες πληκτρολογίου (keyboard scanning)
Κωδικοποιητές:
- Κωδικοποίηση πατημάτων πληκτρολογίου σε ASCII
- Συμπίεση δεδομένων
- Συστήματα προτεραιότητας (interrupt controllers)