شیفت رجیستر SIPO (Serial In Parallel Out) یکی از ساختارهای بنیادی در الکترونیک دیجیتال و پردازش داده است که وظیفه تبدیل دادههای سریال (تکبیتی متوالی) به دادههای موازی (چندبیتی همزمان) را بر عهده دارد. این رجیسترها برای دریافت داده از پروتکلهای ارتباط سریال مانند SPI، UART و I2C بسیار حیاتی هستند.
در معماری FPGA، شیفت رجیستر SIPO به طور مستقیم از منابع اختصاصی فلیپفلاپ نوع D (D-FF) استفاده میکند که بهطور متوالی به هم متصل شدهاند.
ساختار و کارکرد SIPO
یک شیفت رجیستر SIPO با طول N بیت، از N عدد D-FF متوالی تشکیل شده است که ورودی داده سریال (Serial_In) را میپذیرد و پس از N دوره کلاک، داده کامل N-بیتی را در خروجیهای موازی (Parallel_Out) ارائه میدهد.
مراحل عملکرد SIPO (برای یک رجیستر ۴ بیتی):
- ورودی سریال (Serial In): دادهها بیت به بیت (معمولاً از کمارزشترین بیت LSB یا پرارزشترین بیت MSB) در هر لبه کلاک وارد اولین فلیپفلاپ میشوند.
- شیفت داده (Shifting): در هر لبه فعالساز کلاک (
CLK):
- مقدار (بیت ورودی سریال) به منتقل میشود.
- مقدار به ورودی منتقل شده و به تبدیل میشود.
- … و این زنجیره تا آخرین فلیپفلاپ ادامه مییابد.
- خروجی موازی (Parallel Out): خروجیهای بهطور موازی در دسترس هستند. پس از دوره کلاک، کل داده سریال دریافت شده و در خروجی موازی تثبیت میگردد.
پیادهسازی SIPO در FPGA با HDL
در HDL، یک شیفت رجیستر SIPO به سادگی با تعریف یک متغیر رجیستری (آرایه از فلیپفلاپها) و اعمال یک عمل شیفت در هر لبه کلاک پیادهسازی میشود.
بهینهسازی و نگاشت در FPGA
معماریهای مدرن FPGA مانند Xilinx و Intel/Altera، علاوه بر D-FFهای استاندارد، دارای منابع سختافزاری ویژهای برای پیادهسازی کارآمد شیفت رجیسترها هستند:
- LUTs و D-FF: در سادهترین حالت، SIPO به یک زنجیره از فلیپفلاپ متوالی نگاشت میشود. مسیر شیفت بین خروجی یک F به ورودی F بعدی، توسط سیمکشی محلی (Routing) انجام میگردد.
- منابع اختصاصی شیفت رجیستر (SRLs): برخی از FPGAها، به ویژه Xilinx، از منابعی بهنام Shift Register Look-Up Tables (SRLs) استفاده میکنند. این منابع میتوانند تعداد زیادی (مثلاً ۳۲ یا ۶۴) فلیپفلاپ را با حداقل مصرف انرژی و بیشترین سرعت، در یک ساختار تخصصی پیادهسازی کنند. ابزارهای سنتز مدرن بهطور هوشمند کدهای شیفت رجیستر را به جای زنجیرهای از D-FFهای مجزا، به این منابع بهینه (SRLs) نگاشت میکنند. این بهینهسازی برای رجیسترهای با طول زیاد بسیار حیاتی است.
چالش کنترل دریافت داده
SIPO به تنهایی داده را پیوسته شیفت میدهد. در کاربردهای واقعی، طراح به یک مدار کنترلی دیگر برای مدیریت زمانبندی نیاز دارد:
- شمارنده (Counter): یک شمارنده -بیتی (برای طول رجیستر ) نیاز است تا تعداد بیتهای دریافت شده را پیگیری کند.
- ماشین حالت متناهی (FSM): یک FSM میتواند عملیات شیفت را فعال و پس از دریافت N بیت، سیگنال
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