รีจิสเตอร์แบบเลื่อนข้อมูล (Shift Register) เป็นองค์ประกอบสำคัญในวงจรดิจิทัลที่ใช้สำหรับจัดเก็บ ประมวลผล และส่งผ่านข้อมูล รีจิสเตอร์แบบเลื่อนข้อมูลชนิดหนึ่งที่นิยมใช้คือรีจิสเตอร์แบบเลื่อนข้อมูลชนิด Serial-In Parallel-Out (SIPO) รีจิสเตอร์แบบเลื่อนข้อมูล SIPO ช่วยให้สามารถป้อนข้อมูลแบบอนุกรมและส่งออกข้อมูลแบบขนานได้ จึงเหมาะสำหรับการใช้งานที่หลากหลาย เช่น บัฟเฟอร์ข้อมูล การเก็บรวบรวมข้อมูล และระบบควบคุม ในบทความนี้ เราจะเจาะลึกหลักการทำงานของรีจิสเตอร์แบบเลื่อนข้อมูล SIPO สำรวจคุณสมบัติ และอภิปรายเกี่ยวกับการประยุกต์ใช้งานบางประการ
รีจิสเตอร์แบบเลื่อนข้อมูล SIPO คืออะไร? รีจิสเตอร์แบบเลื่อนข้อมูลชนิดอินพุตอนุกรม เอาต์พุตขนาน (Serial-In Parallel-Out Shift Register) เป็นอุปกรณ์ลอจิกแบบซีเควนเชียล (Sequential Logic) ที่สามารถจัดเก็บและเลื่อนบิตข้อมูลได้ โดยประกอบด้วย ฟลิปฟลอป (Flip-Flops) หลายตัวที่เชื่อมต่อกันเป็นลำดับ พร้อมอินพุตและเอาต์พุตข้อมูล ข้อมูลจะถูกเลื่อนจากฟลิปฟลอปตัวหนึ่งไปยังอีกตัวหนึ่งในรูปแบบอนุกรมหรือขนาน ขึ้นอยู่กับโหมดการทำงาน
คำศัพท์สำคัญของรีจิสเตอร์แบบเลื่อนข้อมูล SIPO รีจิสเตอร์แบบเลื่อนข้อมูล (Shift Register) : อุปกรณ์ลอจิกแบบซีเควนเชียลที่ใช้สำหรับจัดเก็บและเลื่อนบิตข้อมูล โดยประกอบด้วยฟลิปฟลอปหลายตัวที่เชื่อมต่อกันเป็นลำดับ อินพุตอนุกรม (Serial Input: SI) : สายสัญญาณอินพุตที่ใช้ป้อนข้อมูลเข้าสู่รีจิสเตอร์แบบเลื่อนข้อมูลทีละบิต เอาต์พุตขนาน (Parallel Outputs) : สายสัญญาณเอาต์พุตที่ช่วยให้สามารถเข้าถึงข้อมูลที่จัดเก็บอยู่ในรีจิสเตอร์แบบเลื่อนข้อมูลได้พร้อมกัน โดยแต่ละสายเอาต์พุตจะสอดคล้องกับฟลิปฟลอปหนึ่งตัวภายในรีจิสเตอร์ สัญญาณนาฬิกา (Clock Signal: CLK) : สัญญาณกำหนดเวลาที่ควบคุมการเลื่อนข้อมูลภายในรีจิสเตอร์แบบเลื่อนข้อมูล โดยขอบขาขึ้นหรือขอบขาลงของสัญญาณนาฬิกาจะกระตุ้นให้เกิดการถ่ายโอนข้อมูลจากฟลิปฟลอปตัวหนึ่งไปยังอีกตัวหนึ่ง โหมดการเลื่อนข้อมูล (Shift Mode) : โหมดการทำงานที่บิตข้อมูลจะถูกเลื่อนผ่านฟลิปฟลอปแบบอนุกรม โดยบิตข้อมูลใหม่จะเข้าสู่ฟลิปฟลอปตัวแรก ขณะที่บิตข้อมูลเดิมจะถูกเลื่อนไปยังฟลิปฟลอปตัวถัดไป โหมดการโหลดข้อมูลแบบขนาน (Parallel Load Mode) : โหมดการทำงานที่รีจิสเตอร์แบบเลื่อนข้อมูลคงสถานะการทำงานไว้ เพื่อให้สามารถโหลดข้อมูลแบบขนานได้ โดยบิตข้อมูลจะถูกป้อนเข้าสู่อินพุตแบบขนานของฟลิปฟลอปแต่ละตัวโดยตรง ฟลิปฟลอป (Flip-Flop) : องค์ประกอบพื้นฐานของรีจิสเตอร์แบบเลื่อนข้อมูลที่ใช้จัดเก็บข้อมูลหนึ่งบิต โดยสามารถอยู่ในสถานะเสถียรได้สองสถานะ (0 หรือ 1) และคงสถานะดังกล่าวไว้จนกว่าจะมีการเปลี่ยนแปลงจากสัญญาณอินพุต บัฟเฟอร์ข้อมูล (Data Buffering) : กระบวนการใช้รีจิสเตอร์แบบเลื่อนข้อมูลเป็นบัฟเฟอร์สำหรับจัดเก็บข้อมูลชั่วคราว เพื่อถ่ายโอนข้อมูลระหว่างอุปกรณ์ต่าง ๆ ที่ทำงานด้วยความเร็วแตกต่างกัน การถอดรหัสแอดเดรส (Address Decoding) : การใช้รีจิสเตอร์แบบเลื่อนข้อมูล SIPO เพื่อเลือกตำแหน่งหน่วยความจำหรืออุปกรณ์เฉพาะตามแอดเดรสของอุปกรณ์เหล่านั้น ทำให้สามารถอ่านหรือจัดเก็บข้อมูลได้อย่างมีประสิทธิภาพ ระบบควบคุม (Control Systems) : การประยุกต์ใช้รีจิสเตอร์แบบเลื่อนข้อมูลในระบบควบคุมเพื่อจัดเก็บและเลื่อนสัญญาณควบคุม ช่วยให้สามารถดำเนินการตามลำดับและซิงโครไนซ์เวลาได้ หลักการทำงานของ SIPO หลักการทำงานพื้นฐานของรีจิสเตอร์แบบเลื่อนข้อมูล SIPO คือการถ่ายโอนบิตข้อมูลแบบอนุกรมผ่านฟลิปฟลอปหลายตัวที่เชื่อมต่อกัน รีจิสเตอร์จะมีสายอินพุตหนึ่งเส้นที่เรียกว่าอินพุตอนุกรม (SI) และสายเอาต์พุตขนาน (Q0, Q1, Q2 เป็นต้น) ซึ่งสอดคล้องกับฟลิปฟลอปแต่ละตัว สัญญาณนาฬิกา (CLK) จะทำหน้าที่ควบคุมการเลื่อนข้อมูล
อินพุตอนุกรม (Serial Input) : อินพุตอนุกรม (SI) เป็นจุดรับข้อมูลเข้าสู่รีจิสเตอร์แบบเลื่อนข้อมูล บิตข้อมูลจะถูกป้อนเข้าสู่ฟลิปฟลอปตัวแรกภายในรีจิสเตอร์ ในแต่ละรอบสัญญาณนาฬิกา บิตข้อมูลที่อินพุตอนุกรมจะถูกส่งไปยังฟลิปฟลอปตัวแรก และข้อมูลที่มีอยู่เดิมภายในรีจิสเตอร์จะถูกเลื่อนไปหนึ่งตำแหน่ง เอาต์พุตขนาน (Parallel Outputs) : เอาต์พุตขนาน (Q0, Q1, Q2 เป็นต้น) ช่วยให้สามารถเข้าถึงข้อมูลที่จัดเก็บอยู่ในรีจิสเตอร์แบบเลื่อนข้อมูลได้ เอาต์พุตของฟลิปฟลอปแต่ละตัวจะเชื่อมต่อกับสายเอาต์พุตแยกกัน ทำให้สามารถเข้าถึงบิตข้อมูลที่จัดเก็บไว้ทั้งหมดได้พร้อมกัน สัญญาณนาฬิกา (Clock Signal) : สัญญาณนาฬิกา (CLK) ทำหน้าที่ซิงโครไนซ์การเลื่อนข้อมูลภายในรีจิสเตอร์แบบเลื่อนข้อมูล โดยทั่วไป ขอบของสัญญาณนาฬิกาจะกระตุ้นให้เกิดการถ่ายโอนข้อมูลจากฟลิปฟลอปตัวหนึ่งไปยังอีกตัวหนึ่ง ทั้งนี้ สามารถใช้ขอบขาขึ้นหรือขอบขาลงของสัญญาณนาฬิกาได้ ขึ้นอยู่กับรูปแบบการออกแบบวงจรและข้อกำหนดเฉพาะ โหมดการทำงาน รีจิสเตอร์แบบเลื่อนข้อมูล SIPO สามารถทำงานได้สองโหมด ได้แก่:
โหมดการเลื่อนข้อมูล (Shift Mode) : ในโหมดการเลื่อนข้อมูล ข้อมูลอินพุตจะถูกเลื่อนผ่านฟลิปฟลอปแบบอนุกรม บิตข้อมูลจากอินพุตอนุกรมจะเข้าสู่ฟลิปฟลอปตัวแรก ขณะที่บิตข้อมูลเดิมจะถูกเลื่อนไปยังฟลิปฟลอปตัวถัดไป โหมดนี้มีประโยชน์เมื่อต้องประมวลผลข้อมูลอนุกรมตามลำดับ โหมดการโหลดข้อมูลแบบขนาน (Parallel Load Mode) : ในโหมดการโหลดข้อมูลแบบขนาน รีจิสเตอร์แบบเลื่อนข้อมูลจะคงสถานะการทำงานไว้ เพื่อให้สามารถโหลดข้อมูลแบบขนานได้ โดยบิตข้อมูลจะถูกป้อนเข้าสู่อินพุตแบบขนานของฟลิปฟลอปแต่ละตัวโดยตรง เมื่อสัญญาณนาฬิกาถูกกระตุ้น ข้อมูลจะถูกบันทึกลงในฟลิปฟลอปที่สอดคล้องกันพร้อมกัน โหมดนี้มีประโยชน์เมื่อต้องโหลดข้อมูลแบบขนาน การประยุกต์ใช้งานของรีจิสเตอร์แบบเลื่อนข้อมูลชนิดอินพุตอนุกรม เอาต์พุตขนาน รีจิสเตอร์แบบเลื่อนข้อมูลชนิดอินพุตอนุกรม เอาต์พุตขนานถูกนำไปประยุกต์ใช้ในหลากหลายด้าน ได้แก่:
การจัดเก็บและบัฟเฟอร์ข้อมูล (Data Storage and Buffering) : รีจิสเตอร์แบบเลื่อนข้อมูล SIPO ใช้เป็นบัฟเฟอร์สำหรับจัดเก็บข้อมูลชั่วคราว เพื่อถ่ายโอนข้อมูลระหว่างอุปกรณ์ต่าง ๆ ที่ทำงานด้วยความเร็วแตกต่างกัน โดยช่วยแปลงข้อมูลอนุกรมให้เป็นข้อมูลขนาน ทำให้การสื่อสารระหว่างส่วนประกอบต่าง ๆ ของระบบเป็นไปอย่างราบรื่น การแปลงข้อมูลอนุกรมเป็นข้อมูลขนาน (Serial-to-Parallel Conversion) : ในระบบสื่อสาร รีจิสเตอร์แบบเลื่อนข้อมูล SIPO ใช้แปลงสตรีมข้อมูลอนุกรมที่ได้รับจากแหล่งข้อมูลภายนอก เช่น เซนเซอร์หรือช่องทางการสื่อสาร ให้เป็นรูปแบบขนานสำหรับการประมวลผลหรือแสดงผลในขั้นตอนถัดไป การถอดรหัสแอดเดรส (Address Decoding) : รีจิสเตอร์แบบเลื่อนข้อมูล SIPO ใช้สำหรับถอดรหัสแอดเดรสในอุปกรณ์หน่วยความจำและ ไมโครโปรเซสเซอร์ (Microprocessors) โดยช่วยให้สามารถเลือกตำแหน่งหน่วยความจำได้อย่างมีประสิทธิภาพ และอ่านหรือจัดเก็บข้อมูลตามแอดเดรสที่กำหนดได้ ระบบควบคุม (Control Systems) : ในระบบควบคุม รีจิสเตอร์แบบเลื่อนข้อมูลใช้สำหรับจัดเก็บและเลื่อนสัญญาณควบคุม ช่วยให้สามารถดำเนินการตามลำดับและซิงโครไนซ์เวลาได้ โดยมักใช้ในการสร้างลำดับเวลา สัญญาณควบคุม และการนำเครื่องสถานะ (State Machine) มาใช้งาน ตัวอย่าง:
สมมติว่าเรามีรีจิสเตอร์แบบเลื่อนข้อมูล SIPO ขนาด 4 บิต ซึ่งมีอินพุตอนุกรมและเอาต์พุตขนาน สถานะเริ่มต้นของรีจิสเตอร์คือ 0000, และเราต้องการป้อนข้อมูลอนุกรม 1011 โดยสมมติว่าสัญญาณนาฬิกาถูกกระตุ้นด้วยขอบขาขึ้น
วิธีแก้ปัญหา:
ขั้นตอนที่ 1: กำหนดค่าเริ่มต้นของรีจิสเตอร์แบบเลื่อนข้อมูล SIPO ให้มีสถานะเริ่มต้น เป็น 0000
ขั้นตอนที่ 2: ป้อนข้อมูลอินพุตอนุกรม (1011) เข้าสู่อินพุตอนุกรม (SI) ของรีจิสเตอร์แบบเลื่อนข้อมูล
ขั้นตอนที่ 3: กระตุ้นสัญญาณนาฬิกา (CLK) ด้วยขอบขาขึ้น
ขั้นตอนที่ 4: ในรอบสัญญาณนาฬิกาแรก บิตแรกของข้อมูลอินพุตอนุกรม (1) จะเข้าสู่ฟลิปฟลอปตัวแรก และข้อมูลที่มีอยู่เดิมในรีจิสเตอร์แบบเลื่อนข้อมูลจะถูกเลื่อนไปหนึ่งตำแหน่ง สถานะของรีจิสเตอร์แบบเลื่อนข้อมูลหลังจากรอบสัญญาณนาฬิกาแรกคือ 0001
ขั้นตอนที่ 5: ในรอบสัญญาณนาฬิกาที่สอง บิตที่สองของข้อมูลอินพุตอนุกรม (0) จะเข้าสู่ฟลิปฟลอปตัวแรก และข้อมูลที่มีอยู่เดิมในรีจิสเตอร์แบบเลื่อนข้อมูลจะถูกเลื่อนไปหนึ่งตำแหน่ง สถานะของรีจิสเตอร์แบบเลื่อนข้อมูลหลังจากรอบสัญญาณนาฬิกาที่สองคือ 0010
ขั้นตอนที่ 6: ในรอบสัญญาณนาฬิกาที่สาม บิตที่สามของข้อมูลอินพุตอนุกรม (1) จะเข้าสู่ฟลิปฟลอปตัวแรก และข้อมูลที่มีอยู่เดิมในรีจิสเตอร์แบบเลื่อนข้อมูลจะถูกเลื่อนไปหนึ่งตำแหน่ง สถานะของรีจิสเตอร์แบบเลื่อนข้อมูลหลังจากรอบสัญญาณนาฬิกาที่สามคือ 0101
ขั้นตอนที่ 7: ในรอบสัญญาณนาฬิกาที่สี่ บิตที่สี่ของข้อมูลอินพุตอนุกรม (1) จะเข้าสู่ฟลิปฟลอปตัวแรก และข้อมูลที่มีอยู่เดิมในรีจิสเตอร์แบบเลื่อนข้อมูลจะถูกเลื่อนไปหนึ่งตำแหน่ง สถานะของรีจิสเตอร์แบบเลื่อนข้อมูลหลังจากรอบสัญญาณนาฬิกาที่สี่คือ 1011
ขั้นตอนที่ 8: สถานะสุดท้ายของรีจิสเตอร์แบบเลื่อนข้อมูลหลังจากรับสัญญาณนาฬิกาครบทั้งสี่รอบคือ 1011