Καταχωρητής ολίσθησης

Στα ψηφιακά κυκλώματα, ένας καταχωρητής ολίσθησης είναι μία αλληλουχία από δισταθείς πολυδονητές (flip-flop) που μοιράζονται το ίδιο ρολόι χρονισμού. Η έξοδος του κάθε δισταθούς πολυδονητή συνδέεται στην είσοδο του επόμενου στην ακολουθία αυτή. Το κύκλωμα που προκύπτει, μετατοπίζει κατά μία θέση, σε κάθε παλμό ρολογιού, την ακολουθία από μπιτ (binary digits ή δυαδικά ψηφία,bits) που αποθηκεύτηκε αρχικά στους αντίστοιχους δισταθείς πολυδονητές της αλυσίδας αυτής.

Κατεύθυνση Ολίσθησης

Υπάρχουν, μονόδρομοι και αμφίδρομoι καταχωρητές ολίσθησης. Οι μονόδρομοι επιτρέπουν τη μετατόπιση των δυαδικών ψηφίων μόνο προς μία κατεύθυνση, ενώ οι αμφίδρομοι καταχωρητές επιτρέπουν την ολίσθηση επιλεκτικά σε μία από τις δύο κατευθύνσεις. Έτσι στους αμφίδρομους καταχωρητές έχουμε τη δυνατότητα επιλογής ολίσθησης των δυαδικών ψηφίων από αριστερά προς τα δεξιά ή από δεξιά προς τα αριστερά.Η σειριακή είσοδος του καταχωρητή μπορεί να συνδεθεί με την τελευταία έξοδο του για την υλοποίηση ενός καταχωρητή κυκλικής ολίσθησης όπου το τελευταίο δυαδικό ψηφίο θα ξαναεισαχθεί ως πρώτο.

Λειτουργία

Ένας απλός και τυπικός εκπρόσωπος των καταχωρητών ολίσθησης είναι αυτός που υλοποιείται από δισταθείς πολυδονητές (flip-flop) τύπου D. Την περίπτωση ενός καταχωρητή ολίσθησης Σειριακής εισόδου - Παράλληλης εξόδου (ΣΕΠΕ ή SIPO) βλέπουμε στην εικόνα που ακολουθεί. Στην προσομοίωση λειτουργίας του 4-bit καταχωρητή ολίσθησης,όπως φαίνεται ακολούθως ,το μπιτ εισόδου ολισθαίνει προς τα δεξιά κατά μία θέση σε κάθε παλμό του ρολογιού χρονισμού. 
Τα δεδομένα εισόδου περνούν από την κάθε έισοδο 'D' του κάθε δισταθούς πολυδονητή, στην έξοδό του 'Q', κατά την άνοδο (από 0 σε 1),ή την κάθοδο (από 1 σε 0) του παλμού, του ρολογιού χρονισμού . Αυτό γίνεται για να μην αλλάζει η έξοδος 'Q' ,αν τύχει και αλλάξει η είσοδος 'D'  ,ενώ το ρολόι βρίσκεται στην κατάσταση '1' .Αυτό εξασφαλίζει στο κύκλωμα, ότι δεν θα υπάρχουν πολλαπλές καιταυτόχρονα ανεπιθύμητες αλλαγές κατάστασης στην έξοδο σε ένα παλμό ρολογιού.Η διέγερση κατά την άνοδο του παλμού ονομάζεται 'διέγερση θετικής ακμής' ενώ κατά την κάθοδο 'διέγερση αρνητικής ακμής'.

Χρήσεις

Επειδή η βασική ιδιότητα ενός δισταθούς πολυδονητή είναι η αποθήκευση ενός  δυαδικού ψηφίου, έτσι και στους καταχωρητές ολίσθησης οι οποίοι αποτελούνται από δισταθείς πολυδονητές, μία βασική τους χρήση τους είναι ως προσωρινός αποθηκευτικός χώρος της Κεντρικής Μονάδας Επεξεργασίας (Κ.Μ.Ε ή C.P.U) για την εκτέλεση πράξεων.
Πολλαπλοί αμφίδρομοι καταχωρητές ολίσθησης μπορούν να συνδεθούν παράλληλα για την υλοποίηση της λειτουργίας του σωρού (stack) σε επίπεδο υλικού.
Γενικά, η υλοποίηση σειριακών κυκλωμάτων, είναι ευκολότερη γιατί χρειάζονται λιγότερα κυκλώματα αλλά μειονεκτούν στην ταχύτητα . Όμως οι επεξεργαστές και τα κυκλώματα των ψηφιακών υπολογιστών επεξεργάζονται ομάδες δυαδικών ψηφίων, οπότε χρησιμοποιούμε τους καταχωρητές ολίσθησης για τη μετατροπή, των δυαδικών ψηφίων από σειριακά σε παράλληλα και το αντίστροφο.Οι καταχωρητές ολίσθησης, υλοποιούν την κατάλληλη διεπαφή υλικού για μετατροπή των bits σε bytes και αντίστροφα.
Οι ΣΕΠΕ (SIPO) καταχωρητές ολίσθησης χρησιμοποιούνται συνήθως στους ακροδέκτες εξόδου των μικροεπεξεργαστών ή των μικροελεγκτών όπου χρειαζόμαστε περισσότερους ακροδέκτες (pins) γενικής χρήσεως από όσους μπορούμε να έχουμε. Αντίστοιχα οι ΠΕΣΕ (PISO) καταχωρητές ολίσθησης χρησιμοποιούνται ευρέως για να παρέχουν αυξημένες δυαδικές εισόδους στον επεξεργαστή ή στο μικροελεγκτή.
Από τους πρώτους ψηφιακούς υπολογιστές οι καταχωρητές ολίσθησης χρησιμοποιήθηκαν ήδη και για την επεξεργασία των δεδομένων, όπως για την άθροιση δύο αριθμών, όπου οι προς άθροιση αριθμοί από τους καταχωρητές ολίσθησης επεξεργάζονταν στην Αριθμητική και Λογική Μονάδα και το αποτέλεσμα επέστρεφε στην είσοδο του ενός καταχωρητή, ο οποίος είχε και ένα δυαδικό ψηφίο περισσότερο, για την περίπτωση που από το άθροισμα θα προέκυπτε κρατούμενο.
Στις σύγχρονες γλώσσες προγραμματισμού υπάρχουν εντολές που ολισθαίνουν το αριθμητικό περιεχόμενο ενός καταχωρητή κατά μία θέση δεξιά ή αριστερά, επιτυγχάνοντας έτσι τη διαίρεση διά δύο ή τον πολλαπλασιασμό επί δύο αντίστοιχα του αριθμού αυτού.