پیادهسازی تبدیل BCD به باینری در FPGA بر پایه الگوریتمی به نام Shift-and-Subtract-3 است که به صورت مفهومی معکوس الگوریتم Double-Dabble عمل میکند. این فرآیند با استفاده از منابع پایهای FPGA مانند ثباتها (Registers)، منطق ترکیبی (Combinational Logic)، و یک ماشین حالت محدود (FSM) کنترل میشود.
1. الگوریتم Shift-and-Subtract-3
الگوریتم Shift-and-Subtract-3 به شرح زیر عمل میکند:
- آمادهسازی: عدد BCD ورودی در قسمتهای پرارزش (MSB) یک ثبات بزرگ و ترکیبی قرار داده میشود، در حالی که قسمتهای کمارزش (LSB) ثبات با صفر پر میشود (جایی که نتیجه باینری خالص تشکیل خواهد شد).
- تصحیح (Correction): قبل از هر شیفت به راست، هر رقم BCD (گروههای 4 بیتی) بررسی میشود. اگر مقدار یک رقم BCD، 5 یا بزرگتر باشد، باید عدد 3 از آن کسر شود. این کسر برای حفظ وزن صحیح دهدهی در طول فرآیند شیفت ضروری است.
- شیفت (Shift): کل محتوای ثبات ترکیبی (شامل BCDهای اصلاحشده و فضای نتیجه) یک بیت به سمت راست شیفت داده میشود.
- تکرار: این مراحل (تصحیح و شیفت) به تعداد بیتهای مورد نیاز برای نتیجه باینری تکرار میشوند. در پایان فرآیند، قسمتهای کمارزش ثبات، حاوی عدد باینری خالص تبدیلشده خواهد بود.
2. اجزای سختافزاری در FPGA
برای پیادهسازی این رویکرد در سختافزار FPGA، به اجزای زیر نیاز داریم:
الف. ثباتهای ذخیرهسازی (Registers)
- ثبات ترکیبی: یک ثبات واحد (یا مجموعهای از ثباتهای متصل) برای نگهداری همزمان عدد BCD (در سمت پرارزش) و فضای خالی برای جمعآوری نتیجه باینری (در سمت کمارزش) مورد نیاز است. به عنوان مثال، برای تبدیل یک عدد 12 بیتی BCD (تا 999) به باینری، به یک ثبات در حدود 20 بیت نیاز است.
- ثباتهای شیفت: تمامی این ثباتها به گونهای سیمکشی میشوند که امکان شیفت همزمان یک بیتی به سمت راست برای کل محتوا فراهم شود.
ب. منطق ترکیبی (Combinational Logic - با استفاده از LUTs)
این منطق مسئول انجام فرآیند تصحیح (Correction) قبل از هر شیفت است:
- مدارهای مقایسهکننده: برای هر گروه 4 بیتی BCD، یک مدار مقایسهکننده (با استفاده از LUTها) پیادهسازی میشود تا بررسی کند آیا مقدار آن رقم ≥5 است یا خیر.
- مدارهای کاهنده (Subtractor): در صورت تأیید شرط (≥5)، یک مدار کاهنده 4 بیتی (که با استفاده از LUTها و Carry Chainها پیادهسازی میشود)، وظیفه کسر 3 از آن رقم BCD را بر عهده دارد.
- مالتیپلکسرها: یک مالتیپلکسر 2 به 1 برای هر گروه 4 بیتی BCD، بین مقدار اصلی BCD (در صورتیکه کمتر از 5 باشد) و مقدار تصحیح شده (در صورتیکه 5 یا بیشتر باشد) انتخاب میکند. این انتخاب توسط خروجی مدار مقایسهکننده کنترل میشود.
ج. شمارنده و ماشین حالت (Counter and FSM)
- شمارنده: یک شمارنده وظیفه ردیابی تعداد مراحل شیفت را بر عهده دارد. این شمارنده در هر سیکل کلاک یک واحد افزایش مییابد تا تعداد شیفتهای مورد نیاز (که برابر با طول عدد باینری نهایی است) تکمیل شود.
- ماشین حالت محدود (FSM): FSM توالی دقیق فرآیند را مدیریت میکند. این ماشین تضمین میکند که:
- داده BCD در ابتدا به درستی بارگذاری شود.
- در هر سیکل کلاک، ابتدا منطق تصحیح (مقایسه و کسر 3) فعال شود.
- سپس، سیگنال فعالسازی شیفت (Shift Enable) به ثباتها ارسال شود.
- شمارنده افزایش یابد.
- در نهایت، وقتی شمارنده به مقدار نهایی رسید، سیگنال “پایان تبدیل” صادر شود.
3. جریان عملیات
- بارگذاری: FSM به حالت بارگذاری میرود و عدد BCD ورودی در قسمتهای پرارزش ثبات ترکیبی قرار میگیرد.
- تکرار (N سیکل): FSM وارد حالت پردازش میشود و برای هر سیکل کلاک، دو مرحله اصلی رخ میدهد:
- مرحله تصحیح: به صورت ترکیبی، منطق مقایسهکننده و کاهنده، هر رقم 4 بیتی BCD را بررسی و در صورت نیاز 3 واحد از آن کسر میکند.
- مرحله شیفت: با لبه کلاک، کل محتوای ثبات ترکیبی، شامل ارقام BCD اصلاحشده و نتیجه باینری انباشتهشده، یک بیت به سمت راست شیفت مییابد.
- پایان: پس از تکمیل تعداد شیفتهای لازم (مثلاً 10 سیکل برای تبدیل 10 بیت)، FSM وارد حالت پایان میشود و عدد باینری خالص در قسمت کمارزش ثبات آماده استفاده خواهد بود.
این روش سختافزاری تضمین میکند که تبدیل BCD به باینری با سرعت بالا و به صورت موازی (برای تصحیح هر رقم BCD) و سریالی (برای فرآیند شیفت کلی) در داخل منابع سختافزاری FPGA انجام شود.
کلیدواژه ها : BCD به باینری-Shift-and-Subtract-3-FPGA-طراحی سختافزار-ماشین حالت محدود-FSM-ثبات شیفت-مدار کاهنده-LUTs-عملیات سریالی-تصحیح BCD-مقایسهکننده