บทความนี้จะอธิบายเกี่ยวกับรีจิสเตอร์เลื่อน ซึ่งเป็นวงจรลอจิกดิจิทัลพื้นฐานที่จัดเก็บและย้ายข้อมูลแบบต่อเนื่อง
Shift Register คือกลุ่มของฟลิปฟล็อปที่ใช้จัดเก็บข้อมูลหลายบิต บิตที่เก็บไว้ในรีจิสเตอร์เหล่านี้สามารถเคลื่อนที่ภายในรีจิสเตอร์และเข้า/ออกจากรีจิสเตอร์ได้โดยการใช้พัลส์สัญญาณนาฬิกา Shift Register ขนาด n บิต สามารถสร้างได้โดยการเชื่อมต่อฟลิปฟล็อป n ตัว โดยที่ฟลิปฟล็อปแต่ละตัวจะเก็บข้อมูลเพียงบิตเดียว รีจิสเตอร์ที่เลื่อนบิตไปทางซ้ายเรียกว่า "Shift left register" ส่วนรีจิสเตอร์ที่เลื่อนบิตไปทางขวาเรียกว่า "Shift right register" โดยพื้นฐานแล้ว Shift Register มีประเภทดังต่อไปนี้
ชิฟต์รีจิสเตอร์ ซึ่งรับอินพุตแบบอนุกรม (บิตต่อบิตผ่านสายข้อมูลเส้นเดียว) และให้เอาต์พุตแบบอนุกรม เรียกว่า ชิฟต์รีจิสเตอร์แบบ Serial-In Serial-Out เนื่องจากมีเอาต์พุตเพียงตัวเดียว ข้อมูลจึงออกจากชิฟต์รีจิสเตอร์ทีละบิตในรูปแบบอนุกรม ดังนั้นจึงเรียกว่า ชิฟต์รีจิสเตอร์แบบ Serial-In Serial-Out วงจรลอจิกที่แสดงด้านล่างแสดงชิฟต์รีจิสเตอร์แบบ serial-in serial-out วงจรนี้ประกอบด้วย ฟลิปฟล็อป D สี่ตัว ที่เชื่อมต่อแบบอนุกรม ฟลิปฟล็อปทั้งหมดเหล่านี้จะซิงโครนัสกัน เนื่องจากสัญญาณนาฬิกาเดียวกันถูกป้อนให้กับฟลิปฟล็อปแต่ละตัว
วงจรข้างต้นเป็นตัวอย่างของรีจิสเตอร์เลื่อนขวา ซึ่งรับข้อมูลอินพุตแบบอนุกรมจากด้านซ้ายของฟลิปฟล็อป การใช้งานหลักของ SISO คือการทำหน้าที่เป็นตัวหน่วงเวลา
ชิฟต์รีจิสเตอร์ ซึ่งรับอินพุตแบบอนุกรม (บิตต่อบิตผ่านสายข้อมูลเส้นเดียว) และให้เอาต์พุตแบบขนาน เรียกว่า ชิฟต์รีจิสเตอร์แบบอนุกรมเข้า-ออก (Serial-In Parallel-Out shift register) วงจรลอจิกที่แสดงด้านล่างแสดงชิฟต์รีจิสเตอร์แบบอนุกรมเข้า-ออก (serial-in-parallel-out shift register) วงจรนี้ประกอบด้วยฟลิปฟล็อป D จำนวน 4 ตัวที่เชื่อมต่อกัน สัญญาณเคลียร์ (CLR) จะเชื่อมต่อเพิ่มเติมจากสัญญาณนาฬิกาไปยังฟลิปฟล็อปทั้ง 4 ตัวเพื่อรีเซ็ตสัญญาณ เอาต์พุตของฟลิปฟล็อปตัวแรกจะเชื่อมต่อกับอินพุตของฟลิปฟล็อปตัวถัดไป และต่อไปเรื่อยๆ ฟลิปฟล็อปทั้งหมดเหล่านี้จะซิงโครนัสกัน เนื่องจากสัญญาณนาฬิกาเดียวกันถูกป้อนให้กับฟลิปฟล็อปแต่ละตัว
วงจรข้างต้นเป็นตัวอย่างของรีจิสเตอร์เลื่อนขวา ซึ่งรับอินพุตข้อมูลอนุกรมจากด้านซ้ายของฟลิปฟล็อปและสร้างเอาต์พุตแบบขนาน วงจรเหล่านี้ใช้ในสายสื่อสารที่ต้องการแยกสัญญาณข้อมูลหนึ่งสายออกเป็นหลายสายขนาน เนื่องจากการใช้งานหลักของรีจิสเตอร์ SIPO คือการแปลงข้อมูลอนุกรมเป็นข้อมูลขนาน
ชิฟต์รีจิสเตอร์ซึ่งรับอินพุตแบบขนาน (ข้อมูลจะถูกส่งแยกกันไปยังฟลิปฟล็อปแต่ละตัวและในเวลาเดียวกัน) และผลิตเอาต์พุตแบบอนุกรม เรียกว่าชิฟต์รีจิสเตอร์แบบขนานเข้า-ออก วงจรลอจิกที่แสดงด้านล่างแสดงชิฟต์รีจิสเตอร์แบบขนานเข้า-ออก วงจรนี้ประกอบด้วยฟลิปฟล็อป D จำนวน 4 ตัวที่เชื่อมต่อกัน อินพุตสัญญาณนาฬิกาเชื่อมต่อโดยตรงกับฟลิปฟล็อปทั้งหมด แต่ข้อมูลอินพุตจะเชื่อมต่อแยกกันไปยังฟลิปฟล็อปแต่ละตัวผ่าน มัลติเพล็กเซอร์ ที่อินพุตของฟลิปฟล็อปแต่ละตัว เอาต์พุตของฟลิปฟล็อปตัวก่อนหน้าและอินพุตข้อมูลแบบขนานจะเชื่อมต่อกับอินพุตของ MUX และเอาต์พุตของ MUX จะเชื่อมต่อกับฟลิปฟล็อปตัวถัดไป ฟลิปฟล็อปทั้งหมดเหล่านี้จะซิงโครไนซ์กัน เนื่องจากสัญญาณนาฬิกาเดียวกันถูกป้อนไปยังฟลิปฟล็อปแต่ละตัว
รีจิสเตอร์เลื่อนแบบขนานเข้าและออกแบบอนุกรม (PISO) ใช้ในการแปลงข้อมูลขนานเป็นข้อมูลอนุกรม
ชิฟต์รีจิสเตอร์ ซึ่งรับอินพุตแบบขนาน (ข้อมูลจะถูกส่งแยกกันไปยังฟลิปฟล็อปแต่ละตัวและในเวลาเดียวกัน) และยังสร้างเอาต์พุตแบบขนานอีกด้วย เรียกว่าชิฟต์รีจิสเตอร์แบบขนาน-เข้า-ขนาน-ออก วงจรลอจิกที่แสดงด้านล่างแสดงชิฟต์รีจิสเตอร์แบบขนาน-เข้า-ขนาน-ออก วงจรนี้ประกอบด้วยฟลิปฟล็อป D สี่ตัวที่เชื่อมต่อกัน สัญญาณเคลียร์ (CLR) และสัญญาณนาฬิกาเชื่อมต่อกับฟลิปฟล็อปทั้ง 4 ตัว ในรีจิสเตอร์ประเภทนี้ไม่มีการเชื่อมต่อระหว่างฟลิปฟล็อปแต่ละตัว เนื่องจากไม่จำเป็นต้องเลื่อนข้อมูลแบบอนุกรม ข้อมูลจะถูกส่งเป็นอินพุตแยกกันสำหรับฟลิปฟล็อปแต่ละตัว และในทำนองเดียวกัน เอาต์พุตก็จะถูกรวบรวมแยกกันจากฟลิปฟล็อปแต่ละตัวเช่นกัน
รีจิสเตอร์เลื่อนแบบขนานเข้า ขนานออก (PIPO) ใช้เป็นอุปกรณ์จัดเก็บข้อมูลชั่วคราว และเช่นเดียวกับรีจิสเตอร์เลื่อน SISO ที่ทำหน้าที่เป็นองค์ประกอบการหน่วงเวลา
หากเราเลื่อนเลขฐานสองไปทางซ้ายหนึ่งตำแหน่ง จะเทียบเท่ากับการคูณเลขฐานสองด้วย 2 และหากเลื่อนเลขฐานสองไปทางขวาหนึ่งตำแหน่ง จะเทียบเท่ากับการหารเลขฐานสองด้วย 2 ในการดำเนินการเหล่านี้ เราจำเป็นต้องมีรีจิสเตอร์ที่สามารถเลื่อนข้อมูลไปในทิศทางใดก็ได้ รีจิสเตอร์เลื่อนแบบสองทิศทางคือรีจิสเตอร์ที่สามารถเลื่อนข้อมูลไปทางขวาหรือซ้ายได้ ขึ้นอยู่กับโหมดที่เลือก หากเลือกโหมดเป็น 1 (สูง) ข้อมูลจะถูกเลื่อนไปทางขวา และหากเลือกโหมดเป็น 0 (ต่ำ) ข้อมูลจะถูกเลื่อนไปทางซ้าย วงจรลอจิกที่แสดงด้านล่างแสดงรีจิสเตอร์เลื่อนแบบสองทิศทาง วงจรนี้ประกอบด้วยฟลิปฟล็อป D สี่ตัวที่เชื่อมต่อกัน ข้อมูลอินพุตจะเชื่อมต่อที่ปลายทั้งสองด้านของวงจร และขึ้นอยู่กับโหมดที่เลือก จะมีเพียงเกตเดียวเท่านั้นที่อยู่ในสถานะใช้งาน
Universal Shift Register คือรีจิสเตอร์ชนิดหนึ่งที่ประกอบด้วยทั้งการเลื่อนขวาและการเลื่อนซ้าย อีกทั้งยังมีความสามารถในการโหลดแบบขนาน โดยทั่วไปแล้ว รีจิสเตอร์ประเภทนี้จะถูกใช้เป็นองค์ประกอบหน่วยความจำในคอมพิวเตอร์ แต่ปัญหาของรีจิสเตอร์ประเภทนี้คือมันเลื่อนไปในทิศทางเดียวเท่านั้น พูดง่ายๆ ก็คือ รีจิสเตอร์ Universal Shift Register คือการรวมกันของ ชิฟต์รีจิสเตอร์แบบสองทิศทาง และ ชิฟต์รีจิสเตอร์แบบทิศทางเดียว
รีจิสเตอร์เลื่อนสากลแบบ N บิต ประกอบด้วยฟลิปฟล็อปและมัลติเพล็กเซอร์ ทั้งสองมีขนาด N ในกรณีนี้ มัลติเพล็กเซอร์ n ตัวทั้งหมดจะใช้เส้นเลือกเดียวกัน และอินพุตที่เลือกนี้จะเลือกอินพุตที่เหมาะสมสำหรับฟลิปฟล็อป
ตัวนับ Shift Register คือตัวนับ Shift Register ที่เอาต์พุตเชื่อมต่อกลับไปยังอินพุตเพื่อสร้างลำดับเฉพาะ โดยทั่วไปมีสองประเภท:
เคาน์เตอร์ริง
ตัวนับริง (Ring Counter) คือตัวนับรีจิสเตอร์เลื่อน โดยที่เอาต์พุตของฟลิปฟล็อปตัวแรกจะเชื่อมต่อกับฟลิปฟล็อปตัวถัดไป และต่อไปเรื่อยๆ จากนั้นเอาต์พุตของฟลิปฟล็อปตัวสุดท้ายจะถูกป้อนกลับไปยังอินพุตของฟลิปฟล็อปตัวแรกอีกครั้ง ดังนั้นจึงเป็นตัวนับริงชื่อ รูปแบบข้อมูลภายในรีจิสเตอร์เลื่อนจะหมุนเวียนตราบใดที่ยังมีการใช้พัลส์นาฬิกา วงจรตรรกะที่แสดงด้านล่างแสดงตัวนับริง
วงจรนี้ประกอบด้วยฟลิปฟล็อป D สี่ตัวที่เชื่อมต่อกัน เนื่องจากวงจรนี้ประกอบด้วยฟลิปฟล็อปสี่ตัว รูปแบบข้อมูลจะวนซ้ำทุกๆ สี่พัลส์นาฬิกา ดังที่แสดงในตารางความจริง โดยทั่วไปจะใช้ตัวนับแบบริงเนื่องจากสามารถถอดรหัสตัวเองได้ ไม่จำเป็นต้องใช้วงจรถอดรหัสเพิ่มเติมเพื่อระบุว่าตัวนับอยู่ในสถานะใด
เคาน์เตอร์จอห์นสัน
ตัวนับจอห์นสัน (Johnson counter) คือตัวนับรีจิสเตอร์เลื่อน ซึ่งเอาต์พุตของฟลิปฟล็อปตัวแรกจะเชื่อมต่อกับฟลิปฟล็อปตัวถัดไป และต่อไปเรื่อยๆ โดยเอาต์พุตกลับด้านของฟลิปฟล็อปตัวสุดท้ายจะถูกป้อนกลับไปยังอินพุตของฟลิปฟล็อปตัวแรกอีกครั้ง ตัวนับเหล่านี้เรียกอีกอย่างว่าตัวนับแบบบิดวงแหวน วงจรตรรกะที่แสดงด้านล่างแสดงตัวนับจอห์นสัน วงจรนี้ประกอบด้วยฟลิปฟล็อป D สี่ตัวที่เชื่อมต่อกัน
ตัวนับจอห์นสันแบบ n-stage ให้ลำดับการนับที่มีสถานะต่างกัน 2n สถานะ จึงเรียกอีกอย่างว่าตัวนับ mod-2n เนื่องจากวงจรประกอบด้วยฟลิปฟล็อป 4 ตัว รูปแบบข้อมูลจึงจะวนซ้ำทุกๆ 8 พัลส์นาฬิกา ดังที่แสดงในตารางความจริง ข้อได้เปรียบหลักของตัวนับจอห์นสันคือต้องการฟลิปฟล็อปเพียง n ตัวเมื่อเทียบกับตัวนับแบบริง เพื่อหมุนเวียนข้อมูลที่กำหนดเพื่อสร้างลำดับสถานะ 2n สถานะ