شیفت رجیستر

در طراحی دیجیتال، شیفت رجیستر (به انگلیسی: Shift register) (به معنی ثبات انتقال‌دهنده)، زنجیره‌ای از فلیپ‌فلاپ‌ها است که یک پالس ساعت مشترک دارند و خروجی هر فلیپ‌فلاپ، به ورودی فلیپ‌فلاپ بعدی در زنجیره متصل شده‌است؛ در نتیجه مداری حاصل می‌شود که می‌تواند در هر پالس ساعت، آرایه بیتی که در آن ذخیره شده را یک واحد به سمت چپ یا راست شیفت (انتقال) دهد. در عمل شیفت، بیتی که در ورودی قرار دارد به داخل آرایه آورده می‌شود (شیفت به داخل) و آخرین بیت از آرایه خارج می‌شود و از بین می‌رود (شیفت به بیرون). به عبارت دیگر، ثباتی که بتواند اطلاعات دودویی اش را به سمت راست یا چپ شیفت دهد، ثبات شیفت‌دهنده یا شیفت رجیستر نامیده می‌شود. در هر عمل شیفت، بیت‌ها از یک فلیپ‌فلاپ خارج، و به فلیپ‌فلاپ بعدی وارد می‌شوند.
شیفت رجیسترها می‌توانند به صورت سریال (پشت سر هم) یا موازی (همزمان) باشند. در حالت سری، بیت‌ها به صورت پشت سر هم و به ترتیب وارد شیفت رجیستر می‌شوند و در حالت موازی، داده‌ها به صورت همزمان وارد شیفت رجیستر می‌شوند. مثلاً یک شیفت رجیستر می‌تواند به صورت ورودی سری، خروجی موازی (به انگلیسی: serial-in, parallel-out) یا ورودی موازی، خروجی سری (به انگلیسی: parallel-in, serial-out) باشد. همچنین گونه‌های دیگری هم وجود دارد که در آن هم ورود و هم خروج داده‌ها یا به صورت سری یا به صورت موازی صورت می‌گیرد. مثلاً حالت (به انگلیسی: Serial in, Serial out) که داده‌ها هم به صورت سریال وارد می‌شوند و هم به صورت سریال خارج می‌شوند. همچنین گونه‌های دیگری از شیفت رجیسترها وجود دارد که می‌توانند عمل شیفت را به صورت دوطرفه انجام دهند: شیفت به سمت راست و شیفت به سمت چپ. در یک شیفت رجیستر سری می‌توان آخرین بیت را به اولین بیت متصل کرده تا یک شیفت رجیستر حلقوی حاصل شود. شیفت دادن یک عدد به تعداد n بار به سمت راست، برابر با تقسیم آن عدد به ۲ⁿ است. شیفت دادن یک عدد به تعداد n بار به سمت چپ، برابر با ضرب کردن آن عدد در ۲ⁿ است.
یکی از اولین استفاده‌ها از شیفت رجیسترها در رایانه کولوسوز بود. کولوسوز یک رایانه رمزشکن در دهه ۱۹۴۰ بود.

تعریف

در مدارهای دیجیتال یک شیفت رجیستر یک آبشار از فلیپ فلاپ می‌باشد که در آن خروجی هر فلیپ فلاپ به ورودی فلیپ فلاپ بعدی در یک زنجیره متصل می‌باشد. نتیجه اینکه در یک مدار که موقعیت جابجا می‌شود، آرایه‌ای از بیتها در آن ذخیره شده در هر پالس ساعت یک بیت که در ورودی حاضر است به داخل رفته و آخرین بیت از آن خارج می‌شود.
به‌طور کلی یک شیفت رجیستر ممکن است چند بعدی باشد مانند اینکه داده داخل آن و خروجی‌ها خودشان آرایه‌ای از بیت می‌باشند. با کار کردن چندین شیفت رجیستر با طول بیت یکسان به‌طور موازی به آسانی کار می‌کند.
شیفت رجیسترها می‌توانند ورودی‌ها و خروجی‌های سریال و موازی را بپذیرند. اینها اغلب به صورت سریال – ورودی و موازی خروجی یا به صورت موازی – ورودی و سریال-خروجی دسته‌بندی می‌شوند. همچنین انواعی از آن‌ها وجود دارد که می‌توانند هر دو نوع ورودی موازی و سریال و خروجی موازی و سریال را داشته باشند.
همچنین شیفت رجیسترهای دو جهته وجود دارد که اجزه منتقل شدن را در هر دو طرف می‌دهد :از چپ به راست و از راست به چپ.
ورودی سریال و آخرین خروجی از یک شیفت رجیسترمیتوانند برای ساختن یک مدارشیفت رجیستر به هم وصل شوند.
اینها ساده‌ترین نمونه از شیفت رجیسترها می‌باشند. رشته‌ای از داده‌ها در ورودی قرارمیگیرد و هروقت که کلاک ۱ باشد یک مرحله به راست تغییر مکان می‌دهد. بیتی که در چپ‌ترین قسمت دارد به خروجی اولین فلیپ فلاپ منتقل می‌شود. بیتی که در سمت راست‌ترین قرار دارد (خروجی آخرین فلیپ فلاپ) به خروجی منتقل می‌شود و از بین می‌رود.
داده بعد از هر فلیپ فلاپ روی خروجی ذخیره می‌شود؛ بنابراین ۴ واحد ذخیره‌سازی در این شکل وجود دارد که آن یک شیفت رجیستر ۴ بیتی می‌باشد. برای درک بهتر الگوی جابجایی تصور کنید که رجیستر عدد باینری ۰۰۰۰ را در خود نگه می‌دارد (بنابراین همه واحدهای ذخیره‌سازی خالی می‌باشند). مانند دیتای ورودی برای رجیستر ۱٬۰٬۱٬۱٬۰٬۰٬۰٬۰ می‌باشد؛ بنابراین خروجی سریال کل رجیستر ۱۰۱۱۰۰۰۰ می‌باشد. اگر ورود دیتا به ورودی ادامه پیدا کند در خروجی دقیقاً مانند داده ورودی دیده می‌شود. این مانند یک صف می‌باشد. همچنین در هر زمانی کل رجیستر می‌تواند با صفر کردن پایه ریست، صفر شود.
این مدار اجازه تبدیل از فرمت سریال به موازی را می‌دهد. داده به صورت سریال همانگونه که در بخش قبل توضیح داده شد وارد می‌شود. هنگامی که داده وارد می‌شود ممکن است داده در هر خروجی یا خوانده نشود یا به خروجی منتقل شده و با داده قبلی جایگزین شود. در مواقعی که نباید خروجی‌های موازی در طول پردازشهای سری تغییر کند مطلوب است از لچ استفاده شود. در یک لچ منتقل‌کننده ثبات مانند (۷۴۵۹۵) داده سریال در ابتدا به داخل یک شیفت رجیستر داخلی بار می‌شود سپس به محض دریافت سیگنال موقعیت شیفت رجیستر به خروجی رجیسترها کپی می‌شود. به‌طور عمومی کاربرد شیفت رجیستر ورودی سریال / خروجی موازی تبدیل داده سریال از روی یک رشته سیم به فرمت موازی روی چند سیم می‌باشد.
مدار بالا دارای ورودی داده به صورت موازی روی خط ۱ تا ۴ می‌باشد. برای نوشتن دیتا تو رجیستر خط کنترل (شیفت / نوشتن) باید صفر نگه داشته شود. برای انتقال داده خط کنترل ۱ می‌شود و ثباتها زمانبندی می‌شوند. با این ترتیب مدار با ورودی ۱ به صورت ورودی، اکنون به صورت یک شیفت رجیستر با ورودی سریال و خروجی سریال عمل می‌کند. به هر حال تعداد سیگنال‌های ساعت بیشتر از طول رشته داده نمی‌باشد.
یکی از بیشترین موارد استفاده از یک شیفت رجیستر تبدیل بین رابطهای سریال و موازی می‌باشد. رابط موازی برای خیلی از مدارهایی که روی گروهی از بیتها کار می‌کنند سودمند می‌باشد. اما ساخت رابطهای سریال ساده‌تر می‌باشد. شیفت رجیسترها می‌توانندبه عنوان مدارهای تاخیرانداز ساده نیز استفاده شوند. همچنین چندین شیفت رجیسترهای دو جهته می‌توانند به صورت موازی برای ساخت پشته به هم وصل شوند.
رجیسترهای ورودی سریال / خروجی موازی به‌طور عمومی به خروجی میکروپردازنده‌ها هنگامی که به پینهای عمومی ورودی و خروجی بیشتری نیاز می‌باشد وصل می‌شوند. این ویژگی به دستگاه‌های باینری زیادی اجازه می‌دهند که با استفاده از تنها ۲ یا ۳ پین کنترل شوند اما کندتر از موازی هستند.
دستگاه‌ها به خروجی‌های موازی از شیفت رجیستر متصل می‌باشند سپس حالت مناسب همه آن دستگاه‌ها می‌توانند به خروجی میکروپردازنده با استفاده از یک ارتباط سریال منتقل شوند. به‌طور مشابه پیکربندی ورودی موازی / خروجی سریال به‌طور عمومی برای اضافه کردن ورودی‌های باینریبیشتر به یک ریزپردازنده مورد استفاده قرار می‌گیرند. هر ورودی باینری به یک ورودی موازی از شیفت رجیستر متصل می‌باشد. سپس داده به میکروپردازنده از طریق خطوط سریال با استفاده از خطوط کمتر از مورد نیاز پس فزستاده می‌شود