مدارهای ALU
استاد:
واحد محاسباتی، منطقی و شیفت (ALU)
در کامپیوتر، به جای اجرای ریز عملیات بر روی هر ثبات، معمولاً یک سری ثبات به یک واحد مشترک محاسباتی، منطقی و شیفت ALU متصل می گردند. برای اجرای یک ریز عملیات، محتوای ثبات بخصوصی در ورودی ALU مشترک قرار می گیرد. واحد ALU عملیات مربوط را انجام می دهد، و نتیجه به ثبات موردنظر منتقل ی شود. چون ALU یک مدار ترکیبی است، بنابراین، انتقال اطلاعات از ثبات منبع، به ALU و وارد کردن نتیجه به ثبات مقصد، در یک پریود پالس ساعت انجام می شود.
مدار محاسباتی
ریز عملیات ریاضی جدول (4-3) را می توان در یک مدار محاسباتی انجام داد. مبنای اولیه این مدار محاسباتی جمع کننده است که با کنترل اطلاعات ورودی به این جمع کننده، میتوان عملیات مختلف ریاضی را انجام داد.
مدار شکل 2 یک مدار محاسباتی چهار بیتی را نشان میدهد. این مدار دارای 4 جمع کننده کامل FA و چهار مالتیپلکسر برای انتخاب عملیات مختلف میباشد. مدار مذکور دارای چهار بیت ورودی A است که مستقیماً به ورودی های X جمع کننده ها وارد میشود و چهار بیت عدد B ، و مکمل آنها نیز به ورودی های 0 و 1 مالتیپلکسرها متصل شده است. در ورودی دیگر مالتیپلکسرها مقادیر 0 و 1 قرار داده شده است و خروجی های مالتیپلکسرها نیز به ورودی Y جمع کننده ها اتصال دارد. چهار مالتیپلکسر مذکور توسط دو بیت انتخاب S1S0 کنترل میشوند. بیت نقلی Cin ، به ورودی کوچکترین بیت جمع کننده متصل گردیده و بقیه بیت های نقلی خروجی جمع کننده ها، به ورودی بیت های نقلی جمع کننده بعدی، وصل شده است.
شکل 1 : یک مدار محاسباتی 4 بیتی
خروجی جمع کننده طبق رابطه: D=A+Y+Cin
عمل جمع را انجام می دهد، که A یک عدد 4 بیتی در ورودی Y , X چهار بیت، ورودی دیگر جمع کننده، و Cin بیت نقلی ورودی میباشد. با کنترل نمودن مقدار Y توسط دو بیت انتخاب S1 , S0 ، میتوان هشت عمل ریاضی جدول 1 را با این مدار انجام داد.
جدول 1 : جدول محاسبات ریاضی
به ازاء S1S0=1 باشد، اطلاعات، از ورودی 3 مالتیپلکسرها، که برابر 1 است، وارد مالتیپلکسرها میشود و در نتیجه ورودی Y جمع کننده ها برابر یک است. و چون 1111 مکمل 2 عدد 0001 است، بنابراین عدد A با مکمل 2 عدد یک جمع شده یعنی از عدد A یکی کسر می گردد پس D=A-1 است (در حالتیکه Cin=0). اگر Cin=1 باشد D=A-1+Cin=A میشود یعنی اطلاعات ورودی عیناً به خروجی انتقال داده میشود.
به این ترتیب با کنترل مقادیر S1S0 در مدار مذکور، میتوان هر یک از عملیات، جمع، جمع با بیت نقلی، تفریق، یک اضافه کردن، یک کم کردن …، را انجام داد.
ریز عملیات منطقی
ریز عملیات منطقی، بر روی هر بیت ثبات ها به طور مجزا، انجام می شود، به عنوان مثال ریز عملیات "یا منحصر XOR" بر روی محتوای دو ثبات R2 , R1 که با عبارت زیر بیان میشود:
و باعث می شود، به شرطی که P=1 باشد ریز عملیات منطقی بین هر یک از بیتهای ثبات های مذکور انجام و نتیجه در R1 قرار گیرد.
برای روشن شدن مطلب فرض می کنیم هر یک از ثبات های مذکور که 4 بیتی است دارای مقادیری به ترتیبر برابر R1 = 1010 و R2=1100 باشد. اجرای دستور یا منحصر فوق باعث می شود که عملیات زیر:
محتوی R1 1010
محتوی R2 1100
محتوی R1 بعد از اجرای دستور 0110
انجام گیرد.
لیست ریز عملیات منطقی
لیست 16 عملیات مختلف منطقی که بین دو متغیر باینری وجود دارد در جدول (4-5) نشان داده شده است. در جدول مذکور هریک از ستونهای F0 تا F15، نمایش جدول درستی توابع بولین برای متغیرهای X و Y می باشد.
16 تابع بولین F0 تا F15 در ستون اول جدول (4-6) به صورت تابعی از متغیرهای x و y بیان شده است. در ستون دوم جدول با قرار دادن محتوای ثبات های A و B بجای متغیرهای x و y، شانزده تابع مذکور به صورت 16 عملیات منطقی نشان داده شده است. همانطوری که ملاحظه می شود، تابع منطقی بیان شده در ستون اول جداول، رابطه بین تابع منطقی و دو متغیر باینری می باشد. ولی ریز عملیات منطقی ستون دوم، نشان دهنده رابطه منطقی بین محتوای دو ثبات A و B است، که در این صورت هر بیت ثبات های مذکور به عنوان یک متغیر باینری در نظر گرفته می شود. و ریز عملیات منطقی بین تمام بیت های ثبات ها بطور مجزا انجام می گردد.
پیاده سازی سخت افزاری
برای پیاده سازی ریز عملیات منطقی، لازم است برای هر بیت دو ثبات، مدارهای منطقی لازم پیش بینی شود. گرچه 16 ریز عملیات منطقی در جدول (4-6) تعریف شده است ولی اکثر کامپیوترها فقط عملیات XOR, OR, AND (یا منحصر) و مکمل آنها را انجام می دهند، چون بقیه عملیات را می توان از ترکیب آنها بدست آورد.
شکل (4-10) مدار عملیات مذکور برای یک بیت را نشان می دهد. در این شکل هریک از عملیات منطقی توسط گیتهای مربوطه ایجاد و وارد مالتیپلکسر MUX، 1×4 می شوند. دو ورودی انتخاب S1S0 مالتیپلکسر نیز، هریک از خروجی گیتهای مذکور را مطابق جدول شکل (4-10 ب) انتخاب، و به خروجی E I منتقل می کنند. بدیهی است برای n بیت، کافی است n بار مدار مذکور تکرار و S1S0 به تمام آنها متصل شود.
ریز عملیات شیفت
ریز عملیات شیفت برای انتقال اطلاعات و عملیات ریاضی مصرف می شود. محتوای یک ثبات می تواند به چپ یا راست شیفت داده شود. در زمانی که شیفت به چپ انجام می شود، ورودی سری اطلاعات را به فلیپ فلاپ اول منتقل می کند. در موقعی که شیفت به راست انجام می شود، ورودی سری، اطلاعات را به بزرگترین بیت منتقل می کند. اصولاً سه نوع شیفت منطقی، چرخشی و ریاضی وجود دارد.
نمادهای shr, shl را به ترتیب برای شیفت چپ و راست انتخاب می کنیم. مثلاً:
R1 shl R1
R2 shr R2
دو ریز دستورالعمل هستند که ثبات R1 را یک بیت به طرف چپ و یا ثبات R2 را یک بیت به طرف راست شیفت می دهند. در شیفت منطقی از طریق ورودی سری، صفر وارد ثبات می شود.
در شیفت چرخشی که به Rotate نیز مرسوم است با متصل کردن خروجی سری ثبات، به ورودی سری آن، اطلاعات خارج شده از یک طرف ثبات، از طرف دیگر وارد آن می شود، و در حقیقت اطلاعات در ثبات می چرخد. ما نمادهای cil و cir را برای شیفت چرخشی چپ و راست بکار می بریم. به این ترتیب نمادهای ریز دستورات برای شیفت مطابق جدول (4-7) می باشد.
شیفت ریاضی، یک عدد باینری علامت دار را، به چپ یا راست شیفت می دهد. یک شیفت ریاضی به چپ عدد را در 2 ضرب و شیفت به راست عدد را به 2 تقسیم می کند. در این شیفت پس از عمل شیفت نمی بایستی بیت علامت تغییر نماید، چون در ضرب عدد و یا تقسیم عدد بر 2 علامت آن تغییر نمی کند.
یک شیفت دهنده 4 بیتی ترکیبی، که با مالتیپلکسر طراحی شده، دارای چهار ورودی A 0 تا A3 و چهار خروجی H0 تا H3 می باشد، که در شکل (4-12) نشان داده شده است.
در این مدار ورودی های سری برای شیفت به چپ I L، و شیفت به راست IR وجوددارد.
موقعی که ورودی انتخاب S = 0 است، اطلاعات ورودی A3, A2, A1, A0، به طرف راست (در شکل پایین) شیفت داده می شوند، و در صورتی که S = 1 گردد، اطلاعات به چپ شیفت (در شکل بالا داده می شوند. جدول شکل مذکور، نشان می دهد که بعد از عمل شیفت چه ورودی، به چه خروجی می رود. بدیهی است شیفت دهنده nبیتی را می توان با n مالتیپلکسر مطابق فوق طرح نمود.
یک طبقه از واحد محاسبه منطقی و شیفت در شکل (4-13) نشان داده شده است:
در این شکل ورودی های بین i که Bi , AI می باشند، وارد واحد ریاضی و منطقی می شوند، که با انتخاب S1S0، عملیات بخصوص بر روی آنها انجام می شود، و مالتیپلکسر 1×4، خروجی نتیجه محاسبات Ei و یا منطقی Hi را انتخاب می کند. دو ورودی دیگر مالتیپلکسر، ورودی های Ai-1 را برای عملیات شیفت راست، و Ai+1 را برای عملیات شیفت چپ. انتخاب می کنند. اطلاعات ورودی مالتیپلکسر خروجی، توسط متغیرهای S3S2 انتخاب می شوند. بیت نقلی خروجی Ci+1 دستگاه محاسبه، می بایستی به بیت ورودی نقلی CI طبقه بعدی متصل شود. بیت نقلی ورودی اولین طبقه Cin به عنوان یک متغیر محاسباتی در عمل تفریق و یا سایر محاسبات می تواند بکار گیرد.
مدار شکل مذکور، یک طبقه از دستگاه محاسبه منطقی و شیفت است که با انتخاب پنج متغیر S1S0، S3S2، Cin می توان هشت نوع عملیات ریاضی، چهار عملیات منطقی، و دو نوع عملیات شیفت را انجام داد. اصولاً عملیات شیفت در واحد مجزا انجام می شود، ولی گاهی اوقات واحد شیفت قسمتی از ALU می باشد.
همانطوری که ملاحظه می شود، شکل (4-13) یک طبقه از مدار محاسبه منطقی و شیفت ALU است، که برای n بیت، می بایستی n بار تکرار گردد.
جدول (4-8) فهرست 14 نوع عملیات را در ALU نشان می دهد، که هشت عملیات اول، عملیات محاسباتی (جدول 4-4) است که با S3S2 = 00 انتخاب می گردند. چهار سطر بعدی عملیات منطقی می باشند که با S3S2 = 01 انتخاب می شوند. که در این عملیات، بیت نقلی ورودی Cin اثری ندارد، و با علامت بی تفاوت x نشان داده شده است. و دو سطر آخر عملیات شیفت است که با S3S2 = 01 انتخاب می گردند، که در این حالت سه متغیر دیگر S1S0Cin اثری ندارند.
معرفی ICهای TTL: ALU
1- 74181 واحد منطقی ریاضی (ALU) که می تواند 6 عمب منطقی و 6 عمل ریاضی روی کلمات 4 بیتی انجام دهد.
2- 74281 واحد منطقی ریاضی (ALU) دودویی موازی 4 بیتی (8 عمل ریاضی، 7 عمل منطقی و 6 نوع جابجایی داده)
3- 74381 واحد ریاضی منطقی (ALU) چهار بیتی (3 عمل ریاضی و 3 عمل منطقی) و مولد توابع گوناگون
4- 74382 واحد ریاضی منطقی (ALU) چهار بیتی (3 عمل ریاضی و 3 عمل منطقی) با بیت نقلی سری و مولد توابع گوناگون
5- 74582 واحد ریاضی منطقی (ALU) چهار بیتی (BCD)
6- 74681 واحد ریاضی منطقی (ALU) سرعت بالای دودویی 4 بیتی با 16 عمل منطقی و 16 عمل ریاضی
7- 74881 واحد ریاضی منطقی (ALU) (16 عمل منطقی یا 16 عمل ریاضی روی دو کلمه 4 بیتی)
8- 741181 واحد ریاضی منطقی (ALU) چهار بیتی و فانکشن ژنراتور
ALU CMOS:
1- 4581 – 4 بیتی – 16 عمل ریاضی و 16 عمل منطقی
2- 40181 – 4 بیتی – 16 عمل ریاضی و 16 عمل منطقی
3- 4057 – 4 بیتی –
1
1