อ่าน 3 นาที
เครื่องบันทึกการเปลี่ยนแปลง
ชิ ฟต์รีจิสเตอร์ (Shift Register) เป็น วงจรดิจิทัล ชนิดหนึ่งที่ใช้ ฟลิปฟลอป แบบเรียงต่อกัน โดย เอาต์พุตของฟลิปฟลอปตัวหนึ่งจะเชื่อมต่อกับอินพุตของฟลิปฟลอปตัวถัดไป วงจรเหล่านี้ใช้...
เครื่องบันทึกการเปลี่ยนแปลง
ชิฟต์รีจิสเตอร์ (Shift Register) เป็น วงจรดิจิทัลชนิดหนึ่งที่ใช้ฟลิปฟลอป แบบเรียงต่อกัน โดย เอาต์พุตของฟลิปฟลอปตัวหนึ่งจะเชื่อมต่อกับอินพุตของฟลิปฟลอปตัวถัดไป วงจรเหล่านี้ใช้สัญญาณนาฬิกา เดียวกัน ซึ่งทำให้ข้อมูลที่จัดเก็บในระบบเลื่อนจากตำแหน่งหนึ่งไปยังอีกตำแหน่งหนึ่ง โดยการเชื่อมต่อฟลิปฟลอปตัวสุดท้ายกลับไปยังตัวแรก ข้อมูลสามารถวนซ้ำภายในชิฟต์รีจิสเตอร์ได้เป็นเวลานาน และในการกำหนดค่านี้ ชิฟต์รีจิสเตอร์ถูกนำมาใช้เป็นหน่วยความจำคอมพิวเตอร์แทนที่ ระบบ หน่วยความจำแบบดีเลย์ไลน์ในช่วงปลายทศวรรษ 1960 และต้นทศวรรษ 1970
ในกรณีส่วนใหญ่ จะใช้รีจิสเตอร์เลื่อนแบบขนานหลายตัวเพื่อสร้างหน่วยความจำขนาดใหญ่ที่เรียกว่า " อาร์เรย์บิต " ข้อมูลจะถูกจัดเก็บลงในอาร์เรย์และอ่านกลับออกมาแบบขนาน ซึ่งมักจะเป็นคำของคอมพิวเตอร์ในขณะที่แต่ละบิตจะถูกจัดเก็บแบบอนุกรมในรีจิสเตอร์เลื่อน การออกแบบอาร์เรย์บิตนั้นมีข้อแลกเปลี่ยนโดยธรรมชาติ การใส่ฟลิปฟลอปหลายตัวในแถวเดียวกันทำให้รีจิสเตอร์เลื่อนตัวเดียวสามารถจัดเก็บบิตได้มากขึ้น แต่ต้องใช้รอบสัญญาณนาฬิกามากขึ้นในการส่งข้อมูลผ่านรีจิสเตอร์เลื่อนทั้งหมดก่อนที่จะสามารถอ่านข้อมูลกลับออกมาได้อีกครั้ง
รีจิสเตอร์เลื่อน (Shift register) สามารถมีได้ทั้ง อินพุต และ เอาต์พุต แบบขนาน และแบบ อนุกรมโดยทั่วไปจะกำหนดค่าเป็น"อนุกรมเข้า ขนานออก" (SIPO)หรือ"ขนานเข้า อนุกรมออก" (PISO)นอกจากนี้ยังมีประเภทที่มีทั้งอินพุตแบบอนุกรมและแบบขนาน และประเภทที่มีทั้งเอาต์พุตแบบอนุกรมและแบบขนาน ยังมีรีจิสเตอร์เลื่อนแบบ "สองทิศทาง" ซึ่งอนุญาตให้เลื่อนได้ทั้งสองทิศทาง: ซ้าย → ขวา หรือ ขวา → ซ้าย อินพุตแบบอนุกรมและเอาต์พุตแบบอนุกรมของรีจิสเตอร์เลื่อนจะเชื่อมต่อกันเพื่อสร้างรีจิสเตอร์เลื่อนแบบวงกลม รี จิส เตอร์ PIPO (ขนานเข้า ขนานออก) เป็นเพียงรีจิสเตอร์ชนิด D และไม่ใช่รีจิสเตอร์เลื่อน แต่มีความเร็วสูงมาก – ให้เอาต์พุตภายในพัลส์นาฬิกาเดียว รีจิสเตอร์เลื่อนแบบ "อเนกประสงค์" ให้ทั้งอินพุตและเอาต์พุตแบบอนุกรมสองทิศทาง รวมถึงอินพุตและเอาต์พุตแบบขนานด้วย
อินพุตแบบอนุกรม เอาต์พุตแบบอนุกรม (SISO)
การอ่านค่าที่ทำลายล้าง
เวลา | เอาต์พุต 1 | เอาต์พุต 2 | เอาต์พุต 3 | เอาต์พุต 4 |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 1 | 1 | 0 | 0 | 0 |
| 2 | 0 | 1 | 0 | 0 |
| 3 | 1 | 0 | 1 | 0 |
| 4 | 1 | 1 | 0 | 1 |
| 5 | 0 | 1 | 1 | 0 |
| 6 | 0 | 0 | 1 | 1 |
| 7 | 0 | 0 | 0 | 1 |
| 8 | 0 | 0 | 0 | 0 |
นี่คือรีจิสเตอร์เลื่อนแบบง่ายที่สุด ข้อมูลจะถูกป้อนเข้ามาที่ "ข้อมูลเข้า" และจะถูกเลื่อนไปทางขวาหนึ่งขั้นทุกครั้งที่ "ข้อมูลเลื่อนขึ้น" ถูกยกขึ้นสูงในแต่ละครั้งที่ข้อมูลเลื่อนขึ้น บิตทางซ้ายสุด (เช่น "ข้อมูลเข้า") จะถูกเลื่อนเข้าไปใน เอาต์พุตของ ฟลิปฟลอป ตัวแรก บิตทางขวาสุด (เช่น "ข้อมูลออก") จะถูกเลื่อนออกไปและหายไป
ข้อมูลจะถูกจัดเก็บหลังจากแต่ละครั้งบนเอาต์พุต "Q" ดังนั้นจึงมี "ช่อง" จัดเก็บข้อมูลสี่ช่องในโครงสร้างนี้ จึงเป็นรีจิสเตอร์ 4 บิต เพื่อให้เห็นภาพรูปแบบการเลื่อน ลองนึกภาพว่ารีจิสเตอร์เก็บค่า 0000 (ดังนั้นช่องจัดเก็บข้อมูลทั้งหมดจึงว่างเปล่า) เมื่อ "ข้อมูลขาเข้า" แสดงค่า 1,0,1,1,0,0,0,0 (ตามลำดับนี้ โดยมีพัลส์ที่ "การเลื่อนข้อมูล" แต่ละครั้ง ซึ่งเรียกว่าการกำหนดเวลาหรือการกระพริบ) ไปยังรีจิสเตอร์ นี่คือผลลัพธ์ คอลัมน์ด้านขวาจะสอดคล้องกับขาเอาต์พุตของฟลิปฟลอปตัวขวาสุด และอื่นๆ
ดังนั้นเอาต์พุตแบบอนุกรมของค่าทั้งหมดคือ 00010110 จะเห็นได้ว่าหากมีการป้อนข้อมูลต่อไป ค่าที่ได้จะเป็นค่าเดียวกับที่ป้อนเข้าไป (10110000) แต่จะมีการเลื่อนไปสี่รอบ "การเลื่อนข้อมูล" การจัดเรียงนี้เทียบเท่ากับคิวในระดับฮาร์ดแวร์นอกจากนี้ ในเวลาใดก็ตาม สามารถตั้งค่ารีจิสเตอร์ทั้งหมดเป็นศูนย์ได้โดยการยกขา Reset (R) ขึ้นสูง
การจัดเรียงแบบนี้จะทำการอ่านค่าแบบทำลายล้าง กล่าวคือ ข้อมูลแต่ละค่าจะหายไปเมื่อถูกเลื่อนออกจากบิตขวาสุด
อินพุตแบบอนุกรม เอาต์พุตแบบขนาน (SIPO)

การกำหนดค่านี้ช่วยให้สามารถแปลงจากรูปแบบอนุกรมเป็นรูปแบบขนานได้ การป้อนข้อมูลเป็นแบบอนุกรม ดังที่อธิบายไว้ในส่วน SISO ด้านบน เมื่อข้อมูลถูกป้อนเข้ามาแล้ว ข้อมูลนั้นสามารถอ่านออกที่เอาต์พุตแต่ละตัวพร้อมกัน หรือสามารถส่งออกไปทีละส่วนได้
ในการกำหนดค่านี้ ฟลิปฟลอปแต่ละตัวจะ ทำงาน เมื่อได้รับสัญญาณขอบ (edge triggered ) ฟลิปฟลอปทั้งหมดทำงานที่ความถี่สัญญาณนาฬิกาที่กำหนด บิตอินพุตแต่ละบิตจะส่งข้อมูลไปยังเอาต์พุตที่ N หลังจาก N รอบสัญญาณนาฬิกา ทำให้เกิดเอาต์พุตแบบขนาน
ในกรณีที่เอาต์พุตแบบขนานไม่ควรเปลี่ยนแปลงระหว่างกระบวนการโหลดแบบอนุกรม ควรใช้เอาต์พุตแบบล็อคหรือแบบบัฟเฟอร์ในรีจิสเตอร์เลื่อนแบบล็อค (เช่น74595 ) ข้อมูลอนุกรมจะถูกโหลดเข้าไปในรีจิสเตอร์บัฟเฟอร์ภายในก่อน จากนั้นเมื่อได้รับสัญญาณโหลด สถานะของรีจิสเตอร์บัฟเฟอร์จะถูกคัดลอกไปยังชุดของรีจิสเตอร์เอาต์พุต โดยทั่วไป การใช้งานจริงของรีจิสเตอร์เลื่อนแบบอนุกรมเข้า/ขนานออก คือการแปลงข้อมูลจากรูปแบบอนุกรมบนสายไฟเส้นเดียวไปเป็นรูปแบบขนานบนสายไฟหลายเส้น
ระบบขนานเข้า ระบบอนุกรมออก (PISO)
การกำหนดค่านี้มีการรับข้อมูลเข้าทางสาย D1 ถึง D4 ในรูปแบบขนาน โดย D1 เป็นบิตที่มีนัยสำคัญที่สุด ในการเขียนข้อมูลลงในรีจิสเตอร์ ต้องดึงสายควบคุมการเขียน/เลื่อน (Write/Shift control line) ให้เป็น LOW ในการเลื่อนข้อมูล ต้องดึงสายควบคุม W/S ให้เป็น HIGH และรีจิสเตอร์จะได้รับสัญญาณนาฬิกา การจัดเรียงในขณะนี้ทำงานเป็นรีจิสเตอร์เลื่อนแบบ PISO โดยมี D1 เป็นข้อมูลเข้า อย่างไรก็ตาม ตราบใดที่จำนวนรอบสัญญาณนาฬิกาไม่เกินความยาวของสตริงข้อมูล ข้อมูลออก Q จะเป็นข้อมูลที่อ่านออกมาแบบขนานตามลำดับ

ภาพเคลื่อนไหวด้านล่างแสดงลำดับการเขียน/เลื่อน รวมถึงสถานะภายในของรีจิสเตอร์เลื่อน

การใช้งาน

การแปลงแบบอนุกรมและแบบขนาน
หนึ่งในประโยชน์ที่พบบ่อยที่สุดของรีจิสเตอร์เลื่อนคือการแปลงระหว่างอินเทอร์เฟซแบบอนุกรมและแบบขนาน
ล่าช้า
รีจิสเตอร์เลื่อนแบบอนุกรมเข้าอนุกรมออกสามารถใช้เป็นวงจรหน่วงเวลาแบบง่ายได้[ 1 ]
ซ้อนกัน
นอกจากนี้ ยังสามารถเชื่อมต่อรีจิสเตอร์เลื่อนแบบสองทิศทางหลายตัวแบบขนานกัน เพื่อสร้างการใช้งานสแต็ก ในฮาร์ดแวร์ ได้ อีกด้วย
พิน I/O เพิ่มเติม
รีจิสเตอร์เลื่อน (Shift register) มักถูกต่อเข้ากับไมโครคอนโทรลเลอร์เมื่อต้องการพินอินพุต/เอาต์พุตอเนกประสงค์ มากกว่าที่มีอยู่ บางครั้งอาจใช้ผ่านอินเทอร์เฟซอุปกรณ์ต่อพ่วง แบบอนุกรม (Serial Peripheral Interface) ในการต่อแบบเดซี่เชนซึ่งช่วยให้สามารถเข้าถึงอุปกรณ์ไบนารีจำนวนมากได้โดยใช้เพียงสองถึงสี่พิน แม้ว่าจะช้ากว่าการรับส่งข้อมูลแบบขนานก็ตาม
เพื่อให้ได้เอาต์พุตที่มากขึ้น จึงใช้ชิฟต์รีจิสเตอร์ SIPO เอาต์พุตแบบขนานของชิฟต์รีจิสเตอร์และสถานะที่ต้องการสำหรับอุปกรณ์เหล่านั้นทั้งหมดสามารถส่งออกจากไมโครคอนโทรลเลอร์ได้โดยใช้การเชื่อมต่อแบบอนุกรมเพียงเส้นเดียว
สำหรับการรับอินพุตเพิ่มเติม จะใช้รีจิสเตอร์เลื่อน PISO โดยอินพุตไบนารีแต่ละตัว (เช่นปุ่มกดหรือวงจรที่ซับซ้อนกว่า) จะเชื่อมต่อกับอินพุตแบบขนานของรีจิสเตอร์เลื่อน จากนั้นข้อมูลจะถูกส่งกลับไปยังไมโครคอนโทรลเลอร์แบบอนุกรม
ตัวขยายพัลส์
รีจิสเตอร์เลื่อน (Shift register) ยังสามารถใช้เป็นตัวขยายพัลส์ได้อีกด้วย เมื่อเปรียบเทียบกับ มัลติไว เบรเตอร์แบบโมโนสเตเบิล (Monostable multivibrator)จังหวะเวลาจะไม่ขึ้นอยู่กับค่าของส่วนประกอบ แต่ต้องใช้สัญญาณนาฬิกาภายนอก และความแม่นยำของจังหวะเวลาจะถูกจำกัดด้วยความละเอียดของสัญญาณนาฬิกานั้น ตัวอย่างของตัวขยายพัลส์ดังกล่าวคือRonja Twisterซึ่งใช้รีจิสเตอร์เลื่อน 74164 จำนวน 5 ตัว สร้างแกนหลักของตรรกะจังหวะเวลา (ดูแผนผังวงจร )
การประมวลผลข้อมูล
ในคอมพิวเตอร์ยุคแรกๆ มีการใช้รีจิสเตอร์เลื่อน (shift register) ในการประมวลผลข้อมูล โดยตัวเลขสองตัวที่จะบวกกันจะถูกเก็บไว้ในรีจิสเตอร์เลื่อนสองตัว แล้วส่งสัญญาณนาฬิกาออกไปยังหน่วยคำนวณและตรรกะ (ALU)จากนั้นผลลัพธ์จะถูกส่งกลับไปยังอินพุตของรีจิสเตอร์เลื่อนตัวใดตัวหนึ่ง (ตัวสะสม) ซึ่งมีขนาดมากกว่าหนึ่งบิต เนื่องจากผลการบวกเลขฐานสองจะมีขนาดเท่ากันหรือยาวกว่าหนึ่งบิตเท่านั้น
การดำเนินการเลื่อนบิต
ภาษาคอมพิวเตอร์หลายภาษามีการดำเนินการแบบบิตไวส์เพื่อ "เลื่อนไปทางขวา" และ "เลื่อนไปทางซ้าย" ข้อมูลในรีจิสเตอร์ ซึ่งมีผลเป็นการหารด้วยสองหรือคูณด้วยสองสำหรับแต่ละตำแหน่งที่เลื่อนไป
หน่วยความจำรีจิสเตอร์แบบเลื่อน
รีจิสเตอร์เลื่อนแบบอนุกรมเข้าอนุกรมออกขนาดใหญ่มาก(ขนาดหลายพันบิต) ถูกนำมาใช้ในลักษณะที่คล้ายกับหน่วยความจำแบบดีเลย์ไลน์ รุ่นก่อนหน้า ในอุปกรณ์บางชนิดที่สร้างขึ้นในช่วงต้นทศวรรษ 1970 รีจิสเตอร์เลื่อนไม่จำเป็นต้องใช้พินจำนวนมากหรือตรรกะการถอดรหัสที่อยู่ ดังนั้นจึงมีราคาถูกกว่าหน่วยความจำแบบเข้าถึงแบบสุ่ม มาก ในสมัยนั้น[ 2 ]หน่วยความจำรีจิสเตอร์เลื่อนดังกล่าวบางครั้งเรียกว่า หน่วยความ จำ หมุนเวียน
ตัวอย่างเช่นDatapoint 3300 เก็บข้อมูลการแสดงผลเทอร์ มินัลที่มี 25 แถว72 คอลัมน์ของอักขระตัวพิมพ์ใหญ่ 6 บิต โดยใช้รีจิสเตอร์เลื่อน 200 บิต จำนวน 54 ตัว (จัดเรียงเป็น 6 แทร็ก 9 แพ็ค) ซึ่งให้พื้นที่จัดเก็บอักขระได้ 1800 ตัว การออกแบบรีจิสเตอร์เลื่อนหมายความว่าการเลื่อนหน้าจอเทอร์มินัลสามารถทำได้โดยการหยุดเอาต์พุตการแสดงผลชั่วคราวเพื่อข้ามอักขระไปหนึ่งบรรทัด[ 3 ]มีการใช้การออกแบบที่คล้ายกันนี้สำหรับเทอร์มินัลของApple I [ 4 ]
ประวัติศาสตร์
หนึ่งในตัวอย่างแรกๆ ของรีจิสเตอร์เลื่อนที่เป็นที่รู้จักคือในเครื่องถอดรหัส Mark 2 Colossus ที่สร้างขึ้นในปี 1944 เป็นอุปกรณ์หกขั้นตอนที่สร้างจาก หลอดสุญญากาศและไทราตรอน [ 5 ] รีจิสเตอร์เลื่อนยังถูกใช้ในเครื่อง IASซึ่งสร้างโดยJohn von Neumannและคนอื่นๆ ที่สถาบันเพื่อการศึกษาขั้นสูงในช่วงปลายทศวรรษ 1940 รีจิสเตอร์เลื่อนได้เข้ามาอยู่ในวงจรรวมในช่วงทศวรรษ 1960 ดังที่เห็นได้จากสิทธิบัตรยุคแรกๆ ของFrank Wanlass [ 6 ]และ Kent Smith [ 7 ]ที่ทำงานอยู่ที่General Instrument
ดูเพิ่มเติม
- หน่วยความจำแบบดีเลย์ไลน์
- รีจิสเตอร์เลื่อนป้อนกลับเชิงเส้น (LFSR)
- ตัวนับวงแหวน
- SerDes (ตัวแปลงข้อมูลเป็นอนุกรม/ตัวแปลงข้อมูลกลับเป็นอนุกรม)
- บัสอินเทอร์เฟซอุปกรณ์ต่อพ่วงแบบอนุกรม
- ตารางค้นหารีจิสเตอร์เลื่อน (SRL)
- บัฟเฟอร์วงกลม
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ เครื่องบันทึกการเปลี่ยนแปลง
ชิ ฟต์รีจิสเตอร์ (Shift Register) เป็น วงจรดิจิทัล ชนิดหนึ่งที่ใช้ ฟลิปฟลอป แบบเรียงต่อกัน โดย เอาต์พุตของฟลิปฟลอปตัวหนึ่งจะเชื่อมต่อกับอินพุตของฟลิปฟลอปตัวถัดไป วงจรเหล่านี้ใช้...
การอ่านค่าที่ทำลายล้าง
นี่คือรีจิสเตอร์เลื่อนแบบง่ายที่สุด ข้อมูลจะถูกป้อนเข้ามาที่ "ข้อมูลเข้า" และจะถูกเลื่อนไปทางขวาหนึ่งขั้นทุกครั้งที่ "ข้อมูลเลื่อนขึ้น" ถูกยกขึ้น สูง ในแต่ละครั้งที่ข้อมูลเลื่อนขึ้น บิตทางซ้ายสุด (เช่น "ข้อมูลเข้า") จะถูกเลื่อนเข้าไปใน เอาต์พุตของ ฟลิปฟลอป...
อินพุตแบบอนุกรม เอาต์พุตแบบขนาน (SIPO)
การกำหนดค่านี้ช่วยให้สามารถแปลงจากรูปแบบอนุกรมเป็นรูปแบบขนานได้ การป้อนข้อมูลเป็นแบบอนุกรม ดังที่อธิบายไว้ในส่วน SISO ด้านบน เมื่อข้อมูลถูกป้อนเข้ามาแล้ว ข้อมูลนั้นสามารถอ่านออกที่เอาต์พุตแต่ละตัวพร้อมกัน หรือสามารถส่งออกไปทีละส่วนได้
ระบบขนานเข้า ระบบอนุกรมออก (PISO)
การกำหนดค่านี้มีการรับข้อมูลเข้าทางสาย D1 ถึง D4 ในรูปแบบขนาน โดย D1 เป็นบิตที่มีนัยสำคัญที่สุด ในการเขียนข้อมูลลงในรีจิสเตอร์ ต้องดึงสายควบคุมการเขียน/เลื่อน (Write/Shift control line) ให้เป็น LOW ในการเลื่อนข้อมูล ต้องดึงสายควบคุม W/S ให้เป็น HIGH...