اعداد اعشاری ممیز ثابت (بخش اول: مفاهیم کلی)

یکی از مقدمات پردازش سیگنال در FPGA ، فراگیری شیوه نمایش اعداد اعشاری ممیز ثابت علامت دار و بدون علامت و همچنین قوانین لازم برای کار کردن با آن‌ها است.
نمایش اعداد اعشاری ممیز ثابت

مقدمه

در این آموزش از پایگاه دانش هگزالینکس قصد داریم نحوه نمایش اعداد اعشاری ممیز ثابت علامت دار و بدون علامت را به شما آموزش دهیم و همچنین قوانین و چهارچوب های لازم برای کار کردن با این اعداد در محاسبات و عملیات منطقی را بیان نماییم. در اولین بخش از این سری آموزشی، مجبوریم روابط و تعاریف ریاضی را با هم مرور کنیم. از این رو ممکن است بخش اول از جذابیت کافی برخوردار نباشد، اما به شما اطمینان می‌دهیم با مثال‌های بسیار خوب هیچ ابهامی در ذهن شما باقی نگذاریم. پیشنهاد می‌کنیم پیش از شروع به خواندن از دو چیز اطمینان حاصل کنید. اول اینکه با شیوه نمایش اعداد علامت دار در FPGA به شکل کامل آشنایی دارید و دوم اینکه به اندازه کافی وقت برای مطالعه و مکث روی مفاهیم ارائه شده دارید.

نمایش اعداد دودویی ممیز ثابت

با یک مجموعه N تایی از اعداد دودویی (عدد ‘0’ یا ‘1’)، قادر خواهیم بود 2N حالت مختلف را تولید کنیم. چون برای گزینه اول ۲ حالت داریم و برای گزینه بعدی نیز ۲ حالت و به همین ترتیب تا انتها، پس داریم:

\[ 2\times2\times2\times \: … \:\times2 = 2^N \]

در حالت کلی این 2N حالت می‌توانند هر چیزی تصور بشود.

  • دانشجویان یک دانشگاه
  • گونه‌های گیاهی یا جانوری
  • اعداد صحیح
  • سطوح ولتاژ
  • و …

هر یک از گزینه‌های فوق می‌توانند به عنوان نمایشی از نگاشت حالت‌های دودویی به المان‌های یک زیر مجموعه نشان داده شوند.

نکته اساسی این است که یک کلمه دودویی به طور ذاتی هیچ معنی و مفهومی ندارد. اما بیشتر افراد تمایل دارند که آن را (حداقل در نگاه اول) به عنوان اعداد صحیح مثبت یا اعداد طبیعی در نظر بگیرند. اما در واقع معنی و مفهوم یک عدد دودویی N بیتی کاملاً به تفسیری که می‌شود، بستگی دارد. حال با این نگاه و اینکه هر مجموعه‌ای را می‌توان با عدد N بیتی نمایش داد، ما قصد داریم یک زیر مجموعه از اعداد گویا را نمایش دهیم. یادآوری می‌کنیم که اعداد گویا مجموعه‌ای از اعداد هستند که بصورت کسری (a/b) نشان داده می‌شوند. به طور کلی a و b به صورت زیر تعریف می‌شوند:

\[b \neq 0 \:\:and \:\:a,b \in Z \]

زیر مجموعه‌ای که ما به دنبال آن هستیم، زیر مجموعه‌ای است که در آن عدد b توانی از ۲ است. یعنی b = 2n باشد.

علاوه بر این، محدودیت‌های دیگری نیز در نمایش این زیر مجموعه مورد نظرمان در نظر می‌گیریم. اول اینکه هر کدام از اعضای این زیر مجموعه باید تعداد بیت‌های دودویی یکسانی داشته باشند. دوم اینکه نقطه اعشار آن‌ها در موقعیت ثابتی قرار داشته باشد، یعنی نقطه ممیز در یک مکان ثابت باشد. دقیقاً به همین دلیل، به این نمایش از اعداد، اصطلاحاً ممیز ثابت گفته می‌شود. در ادامه چهار حالت برای نمایش دودویی اعداد به شما معرفی می‌کنیم:

  • اعداد صحیح بدون علامت
  • اعداد اعشاری بدون علامت
  • اعداد صحیح علامت دار مکمل دو
  • اعداد اعشاری علامت دار مکمل دو

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

اعداد اعشاری ممیز ثابت بدون علامت

یک کلمه N بیتی دودویی هنگامی که به عنوان یک عدد اعشاری ممیز ثابت بدون علامت تفسیر شود، می‌تواند مقادیر زیر مجموعه p از اعداد غیر منفی اعشاری را شامل شود. این زیر مجموعه به صورت زیر تعریف می‌شود.

\[P=\lbrace \frac{p}{2^b}\:|\: 0 \leq p \leq {2^N}-1 , p \in Z\rbrace \]

در نظر داشته باشیم که P شامل 2N عضو است، این نوع از اعداد اعشاری را بطور مختصر بصورت ‏(a,b‏)U نمایش می‌دهند که در آن a=N-b است. در یک عدد ‏‏(a,b‏)U، بیت n-ام از راست که می‌تواند اندیسی بین 0 تا N-1 داشته باشد، ارزش یا وزن این بیت معادل 2n-b است. حال اگر n=b باشد، آنگاه وزن بیت برابر با ۱ خواهد بود. یعنی همانند اعداد دهدهی نقطه اعشار دقیقاً بین این بیت و بیت سمت راست آن خواهد بود. در یک عدد ‏(a,b‏)U، ما یک عدد N بیتی دارم که دارای a بیت صحیح و b بیت اعشاری است.

نمایش اعداد اعشاری ممیز ثابت

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

اما هر کدام که برای شما راحتتر است در طراحی‌های خودتان بکار ببرید.

نمایش علامت دارنمایش بدون علامت
Q1402 U1402
Q1614U1614
Q1602U1602
(13,2‏)Q (14,2‏)U
(15,14‏)Q (16,14‏)U
(15,2‏)Q (16,2‏)U
14,214,2

مقدار یک عدد فرضی N بیتی x در فرمت (a,b‏)U به صورت زیر تعیین می‌شود:

\[ x= (\frac{1}{2^b}) \:\sum_{n=0}^{N-1}\: {2^n}x_n \]

که xn بیت n ام عدد x است. در واقع رِنج یا دامنه تغییرات عددی با فرمت (a,b‏)U از 0 تا 2a-2-b خواهد بود.

\[ 2^a-2^{-b}=\frac{2^{N}-1}{2^b} \]

به عنوان مثال یک عدد ۸ بیتی با فرمت (6,2‏)U به شکل زیر نشان داده می‌شود:

\[b_5 \:\: b_4 \:\: b_3 \:\: b_2 \:\: b_1 \:\: b_0 \:\: b_{-1} \:\: b_{-2}\]

از آنجایی که b=2 است، نقطه اعشار در سمت چپ بیت دوم از راست قرار می‌گیرد و عدد ما دارای ۶ بیت صحیح و ۲ بیت اعشاری هست. رِنج اعداد در این فرمت نیز از 0 تا 63.75 است.

\[ 2^6-2^{-2}=64-\frac{1}{4}=63.75 \]

نمایش اعداد صحیح بدون علامت می‌توانند به صورت خاصی از نمایش اعداد اعشاری ممیز ثابت نشان داده شود که در آن b=0 است. یعنی به طور خاص یک عدد صحیح بدون علامت N بیتی به صورت نمایش (N,0‏)U از یک عدد اعشاری ممیز ثابت بیان شود و همچنین رِنج اعدادی که در این فرمت قرار می‌گیرد به صورت زیر است.

\[0 \: \leq \: U(N,0) \: \leq \: 2^N-1 \: \sim(2^N-2^0)\]

اعداد صحیح بدون علامت را اعداد دودویی طبیعی نیز می‌نامند. در ادامه چند مثال برای درک بهتر مطالب فوق خدمتتان بیان می‌کنیم:

۱- عددی با فرمت (6,2‏)U را در نظر بگیرید. بدیهی است این عدد ۸ بیت دارد و رِنج آن از 0 تا 63.75 است. با توجه به این توضیحات، عدد هگزادسیمال (8A‏)h یا دودویی (10001010)b معادل چه عددی در مبنای دسیمال می‌شود؟

\[ x=(\frac{1}{2^2})(2^7+2^3+2^1)=34.5 \]

۲- عددی با فرمت (2,18-)U که عددی ۱۶ بیتی است را در نظر بگیرید. دامنه تغییرات آن از 0 تا 0.004623413085938 است. بنابراین مقدار هگزادسیمال (04BC‏)h یا دودویی (0000010010111100)b برابر است با:

\[x=(\frac{1}{2^{18}})(2^{10}+2^7+2^5+2^4+2^3+2^2)=\frac{1212}{2^{18}}\]

\[x=0.004623413085938\]

۳- همان عدد مثال ۲ در فرمت (16,0‏)U برابر است با:

\[ x=(\frac{1}{2^{0}})(2^{10}+2^7+2^5+2^4+2^3+2^2)=\frac{1212}{2^{0}}=1212 \]

اعداد اعشاری ممیز ثابت علامت دار

در این بخش فرض بر این است که مخاطب با نمایش اعداد علامت دار به صورت مکمل یک و مکمل دو آشناست. به طور کلی مکمل یک از معکوس کردن هریک از بیت های عدد دودویی اصل بدست می آید و مکمل دو حاصل مکمل یک عدد بعلاوه ۱ است. جهت مطالعه بیشتر می‌توانید به اینجا مراجعه کنید.

یک کلمه N بیتی هنگامی که به صورت یک عدد اعشاری ممیز ثابت مکمل دو علامت دار تفسیر شود، می‌تواند مقادیر زیر مجموعه P که به صورت زیر تعریف می‌شود را شامل شود:

\[P=\lbrace \frac{p}{2^b}\:|\: {-2^{N-1}} \leq p \leq {2^{N-1}}-1 , p \in Z\rbrace\]

در اینجا نیز P شامل 2N عضو است و به اختصار آن را به صورت (a,b‏)Q نشان می‌دهند، که در آن a=N-b-1 است. مقدار عدد N بیتی x در فرمت (a,b‏)Q با فرمول زیر محاسبه می‌شود:

\[ x=(\frac{1}{2^b})(-2^{N-1}x_{N-1}+ \:\sum_{n=0}^{N-2}\: {2^n}x_n) \]

که xn مقدار بیت n-ام از عدد x است. دامنه تغییرات عدد x با فرمت (a,b‏)Q برابر است با

\[-2^{N-1-b} \leq \: x \: \leq 2^{N-1-b}-2^{-b} \]

توجه داشته باشید که مولفه بالای علامت ∑ یک عدد از فرمول بیان شده در محاسبه مقدار عدد بدون علامت کمتر است و همچنین این جمع‌ها روی N-1 بیت کم ارزش انجام می‌شود. این به علت آن است که بیت با ارزش در نمایش اعداد علامت دار مکمل دو به عنوان بیت علامت است. اگر عددی با فرمت ‏(13,2‏)Q باشد، تعداد بیت‌های این عدد برابر با 13+2+1=16 خواهد بود و دامنه اعدادی که در این فرمت قرار می‌گیرد از 8192‏-‏=213‏- تا 8191.75‏-‏=213-2-2 است.

جمع بندی

در بخش اول این سری آموزشی، به شما شیوه نمایش اعداد اعشاری ممیز ثابت علامت دار و بدون علامت را آموزش دادیم. شاید تعداد فرمول‌ها و روابط کمی ریاضی زیاد بود و باعث شد، کمی خسته شوید. اگر مفاهیم کلی را یاد گرفتید، نیازی ندارید فرمول‌ها را به خاطر بسپارید، فقط کمی تمرین کنید. هر سوأل یا ابهامی در رابطه با موضوعات مطرح شده دارید، حتماً با ما در میان بگذارید.

در بخش بعدی این آموزش شما را با مفاهیم مهمی همچون دقت محاسبات، یا میزان تفکیک پذیری آشنا خواهیم کرد.

اشتراک
بیشتر بخوانیم
آموزش سریع Vivado HLS ابزارهای طراحی

قسمت چهارم: ساخت HLS IP برای System Generator for DSP

در این ویدئو شیوه ساخت HLS IP برای System Generator for DSP را باهم مرور خواهیم کرد. این HLS IP می‌تواند به صورت یک بلوک فراخوانی و استفاده شود.

مبانی محاسبات ریاضی در FPGA توصیف سخت افزاری

مبانی محاسبات ریاضی در FPGA (قسمت دوم)

برای پیاده‌سازی محاسبات ریاضی و به طور خاص یک تابع تبدیل ریاضی به صورت ممیز ثابت لازم است، ملاحظات سرریز و رشد بیت روی تراشه‌های FPGA در نظر گرفته شود.

آموزش سریع Vivado HLS ابزارهای طراحی

قسمت پنجم: استفاده از اینترفیس Tcl در Vivado HLS

در این ویدئو ابتدا روش ساخت و سفارشی سازی یک فایل Tcl و در ادامه نحوه استفاده از اینترفیس Tcl برای اجرای Vivado HLS را با هم مرور خواهیم کرد.

آموزش سریع Vivado HLS ابزارهای طراحی

قسمت هفتم: تعیین اینترفیس AXI4 برای طرح Vivado HLS

در این ویدئوی کوتاه فرایند تعیین اینترفیس‌ AXI4 برای طرح Vivado HLS را بررسی می‌کنیم و مفاهیم مهمی همچون سنتز اینترفیس و پروتکل‌های ورودی خروجی را معرفی می‌کنیم.

عناوین مطالب
    Add a header to begin generating the table of contents

    4 دیدگاه دربارهٔ «اعداد اعشاری ممیز ثابت (بخش اول: مفاهیم کلی)»

    1. سلام و عرض احترام خدمت شما.

      بسیار متشکرم از مطالب مفید شما.

      راستش من یکم گیج شدم… در مثال دوم اعداد بدون علامت، اونجا که نوشتین (2,18-)U منظورتون رو از عدد 18 و2- میفرمایید لطفا؟

      1. سلام بر شما دوست عزیز،
        همانطور که در متن هم اشاره شده، به دلیل استفاده از حرف U این عدد معرف یک عدد ممیز ثابت بدون علامت است. با توجه به اینکه مقدار 18+2- برابر با 16 می‌شود. این عدد ۱۶ بیت دارد. که دو بیت با ارزش آن در این نمایش نشان داده نشده است. برای درک بهتر به این مثال‌ها توجه کنید. (نقطه نشان داده شده فرضی است و در عمل وجود ندارد.)
        همان عدد (0000010010111100)b در نمایش (2,18-)U
        همان عدد (00000010010111100)b در نمایش (1,18-)U
        همان عدد (000000010010111100.)b در نمایش (0,18)U
        همان عدد (0.000000010010111100)b در نمایش (1,18)U
        همان عدد (00.000000010010111100)b در نمایش (2,18)U
        و الی آخر …
        در واقع عدد 2- به ما میگه، دو بیت را با علم به اینکه هر دو بیت صفر هستند و در با ارزشترین جایگاه قرار دارند در عبارت باینری نشان نمی‌دهیم. در اینجا به جای ۱۸ بیت از ۱۶ بیت برای نمایش عدد استفاده می‌کنیم. اما در واقعیت ۱۸ بیت برای بخش اعشاری داریم.

    2. سلام و ممنون از سایت بسیار خوبتون!
      من از تک تک آموزش‌هاتون دارم لذت می‌برم و به نوبت همه رو دارم مطالعه می‌کنم و آرزوی موفقیت برایتون دارم.

      تنها نکته‌ای که به نظرم توی این آموزش اومد این بود که برای بخش اعداد اعشاری ممیز ثابت علامت‌دار اگر مثالی وجود داشت بسیار بهتر بود و در نهایت هم خط انتهایی بخش مذکور (خط انتهایی قبل از جمع‌بندی) دامنه‌ی عددی رو با یک علامت منفی بیشتر نوشتید که لطفا اصلاح بفرمایید
      پاینده باشید

      1. گروه برنامه نویسی

        سلام بر شما دوست عزیز و گرامی
        از اظهار لطفی که نسبت به مطالب منتشر شده داشتید، سپاسگزام و از اینکه زمان گرانبهای خودتون رو گذاشتید تا دیدگاه ارزشمندتون رو به اشتراک بگذارید، بسیار متشکریم.
        نکته‌ای که فرمودید کاملاً صحیح است. دقت شما در مطالعه این مطلب و خطایی که به آن اشاره کردید بیانگر توانایی شما در درک مطالب و روحیه مشارکت پذیری اجتماعی شماست.

        این خطا اصلاح شد.
        امیدوارم پیروز و پاینده باشید.

    دیدگاه‌ خود را بنویسید

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

    اسکرول به بالا

    25% off

    کد تخفیف qnyz99IX