کد BCD

کد BCD روشی برای تبدیل اعداد دسیمال به معادل باینری آن است. همانطور که در مقالات پیشین اشاره شد، در مدارهای دیجیتالی و الکترونیکی از کدهای باینری بسیار متفاوتی استفاده می‌­شود که هرکدام کاربرد خاص خود را دارند.

محاسبات روزانه در جهان بر مبنای ده (اعداد اعشاری) ارائه می‌­شوند، از طرفی سیستم­‌های الکترونیکی و دیجیتال تنها قادر به درک اعداد باینری هستند، از این رو تبدیل اعداد دسیمال به اعداد باینری دارای اهمیت فراوان است، که یکی از این روش­‌ها استفاده از کد BCD است.

با توجه به آموزش­‌های قبلی، یک کد باینری n بیتی، شامل گروهی از n بیت خواهد بود که می‌­تواند حداکثر  ترکیب مجزا از ارقام ۰ و ۱ را ایجاد کند. یکی از ویژگی­‌های استفاده از کد BCD معرفی هر رقم اعشاری توسط مجموعه‌­ای از ۴ بیت باینری مشابه با اعداد هگزادسیمال است، بنابراین هر رقم دسیمال (۰ تا ۹) توسط یک کد باینری ۴ بیتی نمایش داده خواهد شد.

کدهای BCD و اعداد هگزادسیمال کاملا مشابه نیستند. در حالی که یک عدد هگزادسیمال ۴ بیتی، می‌­تواند تا عدد F16 معادل عدد دسیمال ۱۵ (۱۱۱۱ باینری) را تولید کند، یک کد BCD می­‌تواند تا عدد ۱۰۰۱ دسیمال یا  باینری را تولید کند.

با وجود اینکه یک مجموعه ۴ رقم باینری می­‌تواند حداکثر ۱۶ (۲ به توان ۴) ترکیب عددی را تولید کند، در سیستم شمارش BCD شش ترکیب باینری (۱۰۱۰)، (۱۰۱۱)، (۱۱۰۰)، (۱۱۰۱)، (۱۱۱۰)و (۱۱۱۱) به عنوان اعداد ممنوعه طبقه‌بندی می‌­شوند و استفاده از آن­ها مجاز نخواهد بود.

مزیت اصلی استفاده از کد BCD فراهم کردن امکان تبدیل اعداد باینری و دسیمال به روشی ساده خواهد بود. با این حال عدم استفاده این کد از ارقام (۱۰۱۰ باینری) معادل ۱۰ دسیمال تا رقم (۱۱۱۱ باینری) معادل ۱۵ دسیمال، یکی از نقطه ضعف­‌های این روش است. با این وجود کد BCD کاربردهای بسیار مهمی به ویژه در نمایش‌گرهای دیجیتال دارد.

در سیستم شماره‌گذاری BCD، هر رقم از اعداد دسیمال به ۴ بیت تقسیم خواهد شد. هر رقم دسیمال توسط مقدار وزن باینری خود، به صورت مجموعه­‌های ۴ بیتی از رقم ۰۰۰۰ (صفر) تا ۱۰۰۱ (نه) را شامل خواهد شد.

به عنوان مثال، کد BCD معادل عدد دسیمال  به صورت زیر معرفی خواهد شد.

Screenshot 2021 12 22 170258
کد Bcd

واضح است که، سیستم شماره گذاری BCD از کد‌گذاری وزنی استفاده می‌­کند، و هر گروه ۴ بیتی دارای وزن معینی از مقدار نهایی با توجه به جایگاه گروه خواهد بود. به بیان دیگر، BCD یک کد وزنی است و وزن­‌های معرفی شده در کد BCD عبارتند از ۸,۴,۲,۱. با توجه به اینکه روش کد BCD امکان نمایش اعداد دسیمال در قالب باینری را فراهم خواهد کرد، معمولا با نام کد ۸۴۲۱ نیز شناخته می­‌شود.

ارائه کد BCD یک عدد دسیمال (Binary Coded Decimal Representation of a Decimal Number)

Screenshot 2021 12 22 171211
کد Bcd

وزن هر رقم در سیستم اعداد دسیمال با حرکت به سمت چپ با ضریب ۱۰ افزایش می‌­یابد. همان طور که در جدول فوق نشان داده شده است، در سیستم اعداد BCD، وزن باینری هر رقم با ضریب ۲ افزایش می­‌یابد. به این ترتیب، وزن رقم اول معادل ۱ (۰^۲)، رقم دوم وزنی معادل ۲ (۱^۲)، رقم سوم ۴ (۲^۲)، و وزن رقم چهارم برابر با ۸ (۳^۲) خواهد بود.

رابطه بین اعداد دسیمال و ارقام BCD در جدول زیر ارائه شده است.

جدول صحت کد BCD

Screenshot 2021 12 22 171718
کد Bcd

کاملا واضح است که کد BCD ۸۴۲۱ همان وزن هر رقم باینری است و هر رقم دسیمال توسط معادل باینری ۴ بیتی آن نمایش داده خواهد شد.

تبدیل اعداد دسیمال به کد BCD (Decimal-to-BCD Conversion)

با توجه به توضیحات مطرح شده، تبدیل اعداد دسیمال به کد BCD مشابه با قوانین تبدیل اعداد هگزادسیمال به اعداد باینری خواهد بود. در ابتدا، ارقام وزن‌دار عدد دسیمال را مشخص کرده و سپس معادل باینری هر رقم در قالب چهار بیتی معرفی می­‌شوند. در نهایت معادل کد BCD ۸۴۲۱ عدد با کنار هم قرار دادن بیت­‌های مشخص شده بدست خواهد آمد.

مثال شماره یک

معادل کد BCD ۸۴۲۱ اعداد دسیمال (۸۵۷۹)، (۵۷۲) و (۸۵) با توجه به جدول بالا به صورت زیر محاسبه خواهد شد.

Screenshot 2021 12 22 172255
کد Bcd

نکته مهم در تبدیل اعداد دسیمال به کد BCD توجه به معرفی ارقام در قالب ۴ بیتی است. بنابراین درصورتی که معادل باینری رقمی کمتر از چهار بیت باشد، کافیست در سمت چپ رقم MSB به اندازه مورد نیاز صفر اضافه شود، تا قالب چهار بیتی مورد نظر ایجاد شود.

تبدیل کد BCD به عدد دسیمال (BCD-to-Decimal Conversion)

جهت تبدیل کد BCD به عدد دسیمال، کافیست عکس عملیات‌­های فوق عمل شود. به این ترتیب ابتدا عدد باینری به مجموعه‌­های چهار بیتی گروه‌بندی خواهد شد و سپس معادل دسیمال هر یک از ارقام گروه‌­های باینری به ترتیب از سمت کم ارزش ترین بیت محاسبه می‌­شود. به طور مشابه در صورت نیاز در سمت چپ عدد صفرهای اضافی جهت تشکیل گروه­‌های چهار بیتی اضافه خواهد شد. برای مثال عدد باینری ۱۱۰۱۰۱ به صورت ۰۰۱۱ ۰۱۰۱ و یا ۳۵ دسیمال بیان می‌­­شود.

مثال شماره دو

معادل دسیمال، اعداد باینری ۱۰۱۰۰۱۱۱۰۰۰.۱۰۱، ۱۰۰۰۱۱۱، ۱۰۱۰، ۱۰۰۱ به صورت زیر محاسبه خواهد شد.

Screenshot 2021 12 25 090547
کد Bcd

 ۱۰۱۰ باینری معادل با ۱۰ دسیمال خواهد بود که یک عدد BCD غیر مجاز است.

Screenshot 2021 12 25 091022
کد Bcd

تبدیل عدد BCD به دسیمال یا اعداد دسیمال به کد BCD نسبتا راحت است و پیچیدگی خاصی ندارد؛ البته همواره باید توجه داشت که اعداد BCD در واقع اعداد دسیمال هستند و نه اعداد باینری، هرچند با بیت‌های ۰ و ۱ نشان داده می‌شوند.

درک قالب BCD یک عدد دسیمال بسیار اهمیت دارد، زیرا سیستم‌های مبتنی بر میکروپروسسور (microprocessor) که کاربردهای فراوانی دارند، مبتنی بر اعداد دسیمال هستند.

با این حال، در حالی که کد گذاری و رمز گشایی (decode) توسط کد BCD بسیار ساده است، اما روش مناسبی جهت ذخیره اعداد نخواهد بود. در رمز گذاری استاندارد (encoding) اعداد دسیمال به BCD ۸۴۲۱، همواره تعداد بیت‌های لازم برای نمایش یک عدد دسیمال معین، بیشتر از تعداد بیت‌های لازم جهت رمزگذاری باینری همان عدد خواهد بود.

برای مثال، معادل باینری یک عدد دسیمال سه رقمی (۰ تا ۹۹۹) تنها به ۱۰ بیت (۱۱۱۱۱۰۰۱۱۱ باینری) نیاز خواهد داشت، در حالی که جهت نمایش کد BCD همان عدد به حداقل ۱۲ بیت (۰۰۱۱ ۱۱۱۰ ۰۱۱۱ BCD) نیاز است.

همچنین، اعمال عملیات­‌های محاسباتی روی اعداد BCD ممکن است مشکلاتی ایجاد کند. این اعداد نمی‌­توانند مقادیر بزرگتر از ۹ را اختیار کنند، از این رو ممکن است حاصل جمع دو رقم اعشاری در این سیستم یک بیت کری (carry) ایجاد کند که باید به گروه چهار بیتی بعدی اضافه شود.

اگر حاصل جمع بیت (carry) با چهار بیت باینری کوچکتر مساوی ۹ (۱۰۰۱) باشد، رقم BCD متناظر نیز صحیح خواهد بود. اما اگر این حاصل جمع بزرگتر از عدد ۹ باشد، یک رقم BCD غیرمجاز تولید خواهد شد. بنابراین بهتر است که ابتدا اعداد BCD را به باینری تبدیل کرده، عملیات جمع را بر روی اعداد باینری انجام داده و در آخر نتیجه‌ی به دست آمده مجددا در قالب BCD بیان شود.

با این وجود، استفاه از سیستم کد گذاری BCD در سیستم‌­های میکروالکترونیکی و سیستم‌های کامپیوتری بسیار رایج است، به طور ویژه جهت نمایش یک یا چند رقم دسیمال بر روی LED یا LCD های هفت قسمتی که با نام (۷-Segment) نیز شناخته می‌شوند. مدارهای مجتمع (integrated circuits) بسیار متنوعی نیز جهت دریافت ورودی BCD یا تولید خروجی BCD ارائه شده‌­اند.

آی سی 74LS90 یکی از رایج ترین و پرکاربردترین شمارنده و یا تقسیم کننده‌­ی آسنکرون (asynchronous) با خروجی BCD است. این آی­سی درای دو شمارنده مجزا تقسیم بر دو و تقسیم بر پنج است که از ترکیب هر دو می‌­توان یک شمارنده تقسیم بر ده تولید کرد. همچنین آی سی 74LS390 که نسخه دوگانه آی سی 74LS90 اصلی است و می‌­تواند جهت تولید خروجی­‌های BCD با توجه به نیاز در مدارهای مختلف مورد استفاده قرار گیرد.

رایج‌­ترین آی­سی­‌های رمزگذاری BCD (BCD encoded IC’s) عبارتند از 74LS47 و 74LS48 که کد BCD رمز گذاری شده را به کد ۷-segment تبدیل خواهند کرد. آی سی 74LS48 یک کد BCD چهار بیتی را به کد ۷-segment که جهت راه اندازی یک نمایشگر LED سون سگمنت لازم است، تبدیل خواهد کرد.

در حالی که عملکرد هر دو آی­سی یکسان است، خروجی آی­سی 74LS47 به صورت (active-low) خواهد بود و معمولا جهت راه‌اندازی نمایشگرهای (common-anode) استفاده خواهد شد، در حالی که خروجی آی­سی 74LS48 به صورت (active-high) است و در راه اندازی نمایشگرهای (common-cathode) استفاده می‌­شود.

Bin10
کد Bcd

خلاصه

کد BCD نمایش یک عدد دسیمال توسط گروه­‌های چهار بیتی باینری است، به بیان دیگر هر رقم دسیمال یا صحیح با معادل باینری خود جایگزین خواهد شد. کد BCD از چهار بیت جهت نمایش ۱۰ رقم دسیمال ۰ تا ۹ استفاده خواهد کرد.

بنابراین به عنوان مثال، جهت نمایش اعداد دسیمال در محدوده ۰ تا ۹ (یک رقم) ۴ بیت معادل یک Nibble نیاز است، به طور مشابه برای نشان دادن اعداد دسیمال در بازه ۰ تا ۹۹ (دو رقم) به ۸ بیت معادل یک بایت و اعداد دسیمال در بازه ۰ تا ۹۹۹ (سه رقمی) به  ۱۲ بیت نیاز است. تنها استفاده از یک بایت (۸ بیت) امکان ذخیره سازی و یا نمایش ارقام BCD در بازه ۰۰ تا ۹۹ را فراهم خواهد کرد. این عدد دو رقمی با نام packed BCD نیز شناخته می‌­شود.

کد BCD استاندارد معمولا با نام کد وزن دار BCD ۸۴۲۱ شناخته می‌­شود، و اعداد ۸، ۴، ۲ و ۱ نشان دهنده وزن بیت­‌های مختلف با شروع از پر ارزش ­­ترین  (MSB) تا کم ­ارزش ­ترین بیت (LSB) است. به عبارت دیگر وزن هر یک از بیت‌­های کد BCD با توجه به موقعیت آن برابر با  ۸=۳^۲، ۴=۲^۲ ، ۲=۱^۲ و ۱=۰^۲ است.

مهمترین مزیت کدهای BCD در مقایسه با سیستم اعداد باینری خالص، سریع‌تر بودن و کارآمدی بالای آن­ها در تبدیل اعداد دسیمال به باینری است. لازم به ذکر است که عدم به کارگیری شش ترکیب باینری چهار بیتی ۱۰ تا ۱۶ از گسترش کاربرد این کد جلوگیری خواهد کرد، اما همچنان در نمایشگرهای دسیمال کاربردهای بسیار مهمی دارد.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

جستجو

برای جستجو، کلمه کلیدی مورد نظر خود را بنویسید.

برچسب

فهرست مطالب