شیفت رجیستر SIPO (Serial In Parallel Out) یکی از ساختارهای بنیادی در الکترونیک دیجیتال و پردازش داده است که وظیفه تبدیل داده‌های سریال (تک‌بیتی متوالی) به داده‌های موازی (چندبیتی همزمان) را بر عهده دارد. این رجیسترها برای دریافت داده از پروتکل‌های ارتباط سریال مانند SPI، UART و I2C بسیار حیاتی هستند.

در معماری FPGA، شیفت رجیستر SIPO به طور مستقیم از منابع اختصاصی فلیپ‌فلاپ نوع D (D-FF) استفاده می‌کند که به‌طور متوالی به هم متصل شده‌اند.

ساختار و کارکرد SIPO

یک شیفت رجیستر SIPO با طول NNN بیت، از NNN عدد D-FF متوالی تشکیل شده است که ورودی داده سریال (Serial_In) را می‌پذیرد و پس از NNN دوره کلاک، داده کامل NNN-بیتی را در خروجی‌های موازی (Parallel_Out) ارائه می‌دهد.

مراحل عملکرد SIPO (برای یک رجیستر ۴ بیتی):

  1. ورودی سریال (Serial In): داده‌ها بیت به بیت (معمولاً از کم‌ارزش‌ترین بیت LSB یا پرارزش‌ترین بیت MSB) در هر لبه کلاک وارد اولین فلیپ‌فلاپ می‌شوند.
  2. شیفت داده (Shifting): در هر لبه فعال‌ساز کلاک (CLK):
  • مقدار D0D_0 (بیت ورودی سریال) به Q0Q_0 منتقل می‌شود.
  • مقدار Q0Q_0 به ورودی D1D_1 منتقل شده و به Q1Q_1 تبدیل می‌شود.
  • … و این زنجیره تا آخرین فلیپ‌فلاپ ادامه می‌یابد.
  1. خروجی موازی (Parallel Out): خروجی‌های Q0,Q1,Q2,...,QN1Q_0, Q_1, Q_2, ..., Q_{N-1} به‌طور موازی در دسترس هستند. پس از NN دوره کلاک، کل داده سریال دریافت شده و در خروجی موازی تثبیت می‌گردد.

پیاده‌سازی SIPO در FPGA با HDL

در HDL، یک شیفت رجیستر SIPO به سادگی با تعریف یک متغیر رجیستری (آرایه از فلیپ‌فلاپ‌ها) و اعمال یک عمل شیفت در هر لبه کلاک پیاده‌سازی می‌شود.

بهینه‌سازی و نگاشت در FPGA

معماری‌های مدرن FPGA مانند Xilinx و Intel/Altera، علاوه بر D-FFهای استاندارد، دارای منابع سخت‌افزاری ویژه‌ای برای پیاده‌سازی کارآمد شیفت رجیسترها هستند:

  • LUTs و D-FF: در ساده‌ترین حالت، SIPO به یک زنجیره از NN فلیپ‌فلاپ متوالی نگاشت می‌شود. مسیر شیفت بین خروجی QQ یک F به ورودی DDF بعدی، توسط سیم‌کشی محلی (Routing) انجام می‌گردد.
  • منابع اختصاصی شیفت رجیستر (SRLs): برخی از FPGAها، به ویژه Xilinx، از منابعی به‌نام Shift Register Look-Up Tables (SRLs) استفاده می‌کنند. این منابع می‌توانند تعداد زیادی (مثلاً ۳۲ یا ۶۴) فلیپ‌فلاپ را با حداقل مصرف انرژی و بیشترین سرعت، در یک ساختار تخصصی پیاده‌سازی کنند. ابزارهای سنتز مدرن به‌طور هوشمند کدهای شیفت رجیستر را به جای زنجیره‌ای از D-FFهای مجزا، به این منابع بهینه (SRLs) نگاشت می‌کنند. این بهینه‌سازی برای رجیسترهای با طول زیاد بسیار حیاتی است.

چالش کنترل دریافت داده

SIPO به تنهایی داده را پیوسته شیفت می‌دهد. در کاربردهای واقعی، طراح به یک مدار کنترلی دیگر برای مدیریت زمان‌بندی نیاز دارد:

  • شمارنده (Counter): یک شمارنده NN-بیتی (برای طول رجیستر NN) نیاز است تا تعداد بیت‌های دریافت شده را پیگیری کند.
  • ماشین حالت متناهی (FSM): یک FSM می‌تواند عملیات شیفت را فعال و پس از دریافت NNN بیت، سیگنال Data_Ready را فعال کند و عملیات شیفت را متوقف سازد.

به عنوان مثال، در یک گیرنده UART، رجیستر SIPO بخش Shift Register را تشکیل می‌دهد، در حالی که FSM فرآیند دریافت Start Bit، شیفت ۸ بیت داده و تشخیص Stop Bit را مدیریت می‌کند.

کلیدواژه ها : شیفت رجیستر SIPO-Serial In Parallel Out-تبدیل سریال به موازی-Serial-to-Parallel-FPGA-D-FF-فلیپ‌فلاپ D-HDL-Verilog-VHDL-Shift Register-رجیستر شیفت-Shift Register LUTs-SRLs-منابع اختصاصی-Dedicated Resources-FSM-ماشین حالت-UART-SPI-I2C-LSB-MSB-بیت ورودی سریال-Serial_in-خروجی موازی-Parallel_out-زمان‌بندی-Timing-کلاک-CLK-طراحی در FPGA