Rapid Development of Dependable Mobile Applications

Download Report

Transcript Rapid Development of Dependable Mobile Applications

Department of Computer and IT Engineering
University of Kurdistan
Computer Architecture
Register Transfer Language (RTL)
By: Dr. Alireza Abdollahpouri
‫اجزا يک کامپيوتر ديجيتال‬
‫‪Digital Components -1‬‬
‫يک سيستم ديجيتال از اجزايي نظير رجيستر ‪ ,‬ديکودر ‪ ,‬اجزاء محاسباتي و منطق کنترل تشکيل مي شود‬
‫‪Data and Control Path -2‬‬
‫اين اجزا توسط مسيرهاي داده و کنترل به هم مرتبط مي شوند‬
‫مشخصه هاي يک کامپيوتر ديجيتال‪:‬‬
‫يک کامپيوتر ديجيتال توسط رجيسترها و عملياتي که روي داده ذخيره شده در آن قابل انجام است شناخته ميشود ‪.‬‬
‫‪: Micro Operation‬‬
‫به عملياتي گفته مي شود که روي داده هاي ذخيره شده روي رجيسترها انجام ميشوند مانند ‪Shift , Load :‬‬
‫‪, Clear , Inc ,Dec‬‬
‫‪2‬‬
‫زبان انتقال رجيستر‬
‫) ‪RTL ( Register Transfer language‬‬
‫براي مشخص کردن يک کامپيوتر بايد موارد زير تعيين شوند ‪:‬‬
‫‪ -1‬مجموعه رجيسترهاي آن و توانايي هاي هر رجيستر‬
‫‪ -2‬دنباله ميکرواپريشن هاي قابل اجرا بر روي اطالعات ذخيره شده در هر رجيستر‬
‫‪ -3‬شرط کنترلي که باعث انجام مجموعه اي متوالي از ميکرواپريشن ها مي شود‪.‬‬
‫زبان انتقال رجيستر ‪: RTL‬‬
‫براي سهولت در توصيف دنباله اي از عملوندها و نقل و انتقال داده بين رجيسترها از‬
‫سيستم نمايش ويژه اي به اسم ‪ RTL‬استفاده ميشود ‪ .‬استفاده از ‪ RTL‬سبب‬
‫سهولت توصيف عملکرد کامپيوتر و راحتي کار طراحي آن ميگردد ‪.‬‬
‫‪3‬‬
‫يک ‪ RTL‬ساده‬
‫اسامي رجيسترها ‪:‬‬
‫اسامي رجيسترها با حروف بزرگ که معموال ساده شده کار رجيستر است مشخص ميشوند ‪.‬نظير‪:‬‬
‫‪MAR=Memory Address Register‬‬
‫‪PC= Program Counter‬‬
‫‪IR= Instruction Register‬‬
‫)رجيستر شماره ‪R1=(1‬‬
‫نمايش رجيسترها ‪:‬‬
‫براي نمايش يک رجيستر از يک مستطيل استفاده ميشود که نام‬
‫رجيستر در وسط آن نوشته ميشود‬
‫‪PC‬‬
‫نمايش بيت ها ‪:‬‬
‫بيت هاي يک رجيستر ‪ n‬بيتي از ‪( 0‬سمت راست) تا ‪( n-1‬سمت چپ‬
‫ترين بيت) شماره گذاري ميشوند‬
‫گاهي يک رجيستر ‪ 16‬بيتي به ‪ 2‬بايت کم ارزش و پر‬
‫ارزش بصورت زير تقسيم ميشود‬
‫از پرانتز و شماره بر اي مشخص کردن يک قسمت‬
‫از رجيستر استفاده ميشود‬
‫‪4‬‬
‫‪76543210‬‬
‫‪7‬‬
‫‪0‬‬
‫)‪PC(L‬‬
‫‪15‬‬
‫‪8‬‬
‫)‪PC(H‬‬
‫)‪PC(H)= PC(8-15‬‬
‫) ‪PC(L)= PC( 0-7‬‬
‫نمايش انتقال داده بين رجيسترها‬
‫انتقال اطالعات يک رجيستر به ديگري بضورت زير نمايش داده ميشود‪:‬‬
‫‪R2‬‬
‫‪R1‬‬
‫عبارت فوق نشان دهنده انتقال محتويات رجيستر ‪ R1‬به رجيستر ‪ R2‬است ‪.‬محتوي ‪ R1‬بدون‬
‫تغييرباقي مي ماند ولي محتوي ‪ R2‬برابر با محتوي ‪ R1‬ميشود‪.‬‬
‫الزمه سخت افزاري انتقال ‪:‬‬
‫‪ -1‬موجود بودن مسيري از خروجي ‪ R1‬به ‪R2‬‬
‫‪ -2‬رجيستر‪ R2‬بايد قابليت بارکردن موازي (‪ )Parallel Load‬داشته باشد ‪.‬‬
‫‪5‬‬
‫تابع کنترلي‬
‫شرط انتقال ‪:‬‬
‫گاهي اوقات انتقال فقط بايد در صورت تحقق يک شرط کنترلي خاص انجام شود نظير‬
‫عبارت ‪:‬‬
‫)‪If (P=1) ( then (R2 R1‬‬
‫تابع کنترلي ‪:‬‬
‫يک عبارت بولي است که مقدار صفر يا يک دارد اين‬
‫تابع بصورت زير در عبارت ميکرواپريشن گنجانيده‬
‫ميشود‬
‫‪CLK‬‬
‫‪Load‬‬
‫‪R2‬‬
‫‪6‬‬
‫‪P‬‬
‫‪Control‬‬
‫‪Circuit‬‬
‫‪n‬‬
‫‪R1‬‬
‫‪P: R2  R1‬‬
‫زمان بندي‬
‫مدار كنترل در زمان ‪ t‬سيگنال‬
‫‪ P‬را فعال ميكند لذا وقتي كالك‬
‫‪ t+1‬به وقوع ميپيوندد با ‪P‬‬
‫فعال روبرو شده و باعث انتقال‬
‫‪ R1‬به ‪ R2‬ميشود‪.‬‬
‫‪t+1‬‬
‫‪t‬‬
‫‪Clk‬‬
‫)‪Load (P‬‬
‫عمل انتقال در اين زمان اتقاق مي افتد‬
‫اين انتقال در لبه كالك ‪ t+1‬اتفاق مي افتد‪ .‬اگر ‪ P‬بيش از يك ‪ Clk‬فعال‬
‫باشد عمل انتقال در ساير كالك ها هم اتفاق خواهد افتاد‪.‬‬
‫فعال بودن به لبه باعث ميشود تا بتوان عمل را در يك كالك پالس انجام داد‪.‬‬
‫‪R2‬‬
‫‪7‬‬
‫‪R1‬‬
‫‪R1‬‬
‫‪T: R2‬‬
‫انتقال از طريق گذرگاه (‪) Bus‬‬
‫‪‬‬
‫در يک کامپيوتر تعداد زيادي رجيستر وجود دارد که همه آنها بايد به‬
‫نوعي به هم متصل شوند براي سهولت در اتصال از ‪ Bus‬استفاده مي‬
‫شود‪.‬‬
‫‪ Bus‬به مجموعه اي از خطوط مشترک اتالق ميشود که با داشتن ‪n‬‬
‫خط مي توانند اطالعات رجيسترهاي ‪ n‬بيتي را به طور همزمان منتقل‬
‫کنند ‪.‬‬
‫‪‬‬
‫براي پياده سازي ‪ Bus‬از دو طريق استفاده مي شود ‪:‬‬
‫مالتي پلکسرها‬
‫گيت هاي با خروجي ‪ 3‬حالته‬
‫‪‬‬
‫‪.1‬‬
‫‪.2‬‬
‫‪8‬‬
‫‪ Bus‬با استفاده از‪MUX‬‬
‫‪3 2 1 0‬‬
‫‪4x1‬‬
‫‪MUX‬‬
‫‪Reg Selected‬‬
‫‪4x1‬‬
‫‪MUX‬‬
‫‪S0 S1‬‬
‫‪A‬‬
‫‪0‬‬
‫‪0‬‬
‫‪B‬‬
‫‪1‬‬
‫‪0‬‬
‫‪C‬‬
‫‪0‬‬
‫‪1‬‬
‫‪D‬‬
‫‪1‬‬
‫‪1‬‬
‫‪A‬‬
‫‪B‬‬
‫‪4x1‬‬
‫‪MUX‬‬
‫‪C‬‬
‫‪4x1‬‬
‫‪MUX‬‬
‫‪S0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪2‬‬
‫‪3‬‬
‫‪0‬‬
‫‪1‬‬
‫‪2‬‬
‫‪3‬‬
‫‪S1‬‬
‫‪D‬‬
‫‪4 line Bus‬‬
‫‪0‬‬
‫‪1‬‬
‫‪2‬‬
‫‪3‬‬
‫‪S1 S0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪2‬‬
‫‪3‬‬
‫تعداد ‪MUX‬ها ‪ :‬به تعداد بيتهاي رجيسترها ( ‪ Mux 0‬بيت صفر تمام رجيسترها را روي ‪ bus‬قرار ميدهد و ‪) ...‬‬
‫تعداد ورودي ‪ MUX‬ها ‪ :‬به تعداد رجيسترها‬
‫‪9‬‬
‫انتقال از طريق ‪BUS‬‬
‫‪‬‬
‫معموال ورودي همه رجيسترهاي مقصد به ‪ BUS‬متصل ميباشند ‪.‬از اينرو کافيست‬
‫‪ S1S0‬بنحوي انتخاب شود که خروجي رجيستر روي ‪ BUS‬قرار گيرد ‪.‬همزمان ورودي‬
‫‪ Load‬رجيستر مقصد نيز فعال شود تا داده از مبدا به مقصد انتقال يابد ‪.‬براي مثال‬
‫براي انتقال رجيستر ‪ A‬به رجيستر ‪ B‬از طريق باس به ترتيب زير عمل ميشود‪:‬‬
‫‪‬‬
‫در صورتي که وجود ‪ BUS‬را بصورت ضمني قبول کنيم بصورت ساده مي نويسيم‪:‬‬
‫‪, B  Bus‬‬
‫‪BUS  A‬‬
‫‪BA‬‬
‫‪10‬‬
‫پياده سازي ‪ Bus‬با استفاده از گيتهاي ‪ 3‬حالته ‪TriState BUffer :‬‬
‫‪‬‬
‫گيت سه حالته ‪ :‬مداري است که خروجي آن عالوه بر ‪ 2‬حالت صفر و يک مي‬
‫تواند دروضعيت سومي قرار گيرد که اصطالحا حالت امپدانس باال ناميده شده‬
‫و در اين حالت خروجي گيت بصورت مدار باز عمل ميکند يعني نه به صفر‬
‫وصل است نه به يک ‪.‬‬
‫‪Output Y‬‬
‫يك بافر ‪ 3‬حالته و عملكرد آن‬
‫‪11‬‬
‫‪c=1‬‬
‫‪Y=A‬‬
‫‪c=Ø‬‬
‫‪Y=High Impedance‬‬
‫‪Input A‬‬
‫‪Control C‬‬
‫پياده سازي ‪ Bus‬با استفاده از گيتهاي ‪ 3‬حالته ‪TriState BUffer :‬‬
‫‪‬‬
‫استفاده از گيتهاي سه حالته سبب ميشود تا‬
‫بتوان يک ‪ Bus‬را براحتي از طريق اتصال‬
‫خروجي رجيسترهاي سه حالته و يا استفاده‬
‫از يک بافر سه حالته بوجود آورد‬
‫‪‬‬
‫فقط بايد مواظب بود که در هر لحظه فقط يکي‬
‫از گيت هاي سه حالته فعال باشد اين اطمينان‬
‫با استفاده از يک ‪ Decoder‬حاصل ميشود‬
‫‪Bus line for bit 0‬‬
‫‪A0‬‬
‫‪B0‬‬
‫‪C0‬‬
‫‪D0‬‬
‫‪S0‬‬
‫‪2x4‬‬
‫‪S1‬‬
‫‪Decoder‬‬
‫‪Enable‬‬
‫‪12‬‬
‫انواع ميکرو اپريشن‬
‫ميکرواپريشن هاي متداول پياده سازي شده در کامپيوتر هاي ديجيتال عبارتند از‪:‬‬
‫‪‬‬
‫انتقال رجيستر ‪ :‬اطالعات را از يک رجيستر به ديگري منتقل مي کنند‪.‬‬
‫محاسباتي ‪ :‬عمليات محاسباتي را روي داده ذخيره شده در رجيسترها انجام ميدهند‪.‬‬
‫منطقي ‪ :‬عمليات دستکاري روي بيت هاي رجيستر را انجام مي دهد‪.‬‬
‫‪ : Shift‬عمل شيفت را روي داده ذخيره شده روي رجيسترها انجام مي دهند ‪.‬‬
‫‪.1‬‬
‫‪.2‬‬
‫‪.3‬‬
‫‪.4‬‬
‫‪13‬‬
‫انتقال حافظه‬
‫دو رجيستر در کار با حافظه دخيل هستند‪DR ، AR :‬‬
‫عمل خواندن حافظه ‪Read :‬‬
‫براي خواندن از يک محل مشخص از حافظه بايد آدرس آن محل مشخص شده در‬
‫رجيستر خاصي به نام ‪ Address Register‬نوشته شود‪ .‬داده خوانده شده‬
‫از حافظه نيز در رجيستر ‪ DR‬نوشته مي شود ‪.‬‬
‫عمل نوشتن درحافظه ‪Write :‬‬
‫‪ ‬آدرس محل مورد نظر در ‪ AR‬ريخته ميشود ‪.‬اين محل حافظه بصورت‬
‫]‪M[AR‬نشان داده ميشود ‪.‬داده مورد نظر ميتواند در هر يک از رجيسترها‬
‫قرار داشته باشد‪.‬‬
‫‪ ‬ميکرو اپريشن هاي مربوطه بصورت زير خواهند بود‪:‬‬
‫‪Reed :DR  M AR‬‬
‫‪Write :M AR  R1‬‬
‫‪14‬‬
‫ميکرواپريشن هاي محاسباتي‬
‫‪‬‬
‫ميکرو اپريشن هاي محاسباتي اصلي عبارتند از‪:‬‬
‫جمع ‪ ،‬تفريق ‪ ،‬افزايش ‪ ،‬کاهش و شيفت‬
‫‪ ‬ميکرواپريشن جمع ‪:‬‬
‫‪ ‬بصورت روبرو نشان داده ميشود‪R3  R1+R2 :‬‬
‫احتياجات سخت افزاري ‪:‬‬
‫سه رجيستر و مدارات ديجيتالي که عمل جمع را انجام دهند ‪.‬‬
‫‪A0‬‬
‫‪C0‬‬
‫‪B0‬‬
‫‪FA‬‬
‫‪S0‬‬
‫‪15‬‬
‫‪A1‬‬
‫‪C1‬‬
‫‪B1‬‬
‫‪FA‬‬
‫‪S1‬‬
‫‪A2‬‬
‫‪C2‬‬
‫‪B2‬‬
‫‪FA‬‬
‫‪S2‬‬
‫‪A3‬‬
‫‪C3‬‬
‫‪B3‬‬
‫‪FA‬‬
‫‪S3‬‬
‫‪C4‬‬
‫ميکرواپريشن هاي محاسباتي‬
‫ميکرو اپريشن تفريق ‪:‬‬
‫اغلب از طريق متمم گيري و جمع انجام مي شود‪:‬‬
‫‪R3  R1-R2‬‬
‫معادل است با‬
‫‪R3  R1+R2+1‬‬
‫ميکرواپريشن ‪: DEC ، INC‬‬
‫( با مدار ترکيبي و با با يک شمارنده باال يائين شمار ساخته مي شوند ‪).‬‬
‫‪R1  R1-1‬‬
‫‪R1  R1+1‬‬
‫‪1‬‬
‫‪A0‬‬
‫‪y‬‬
‫‪x‬‬
‫‪HA‬‬
‫‪S‬‬
‫‪S0‬‬
‫‪16‬‬
‫‪C‬‬
‫‪A1‬‬
‫‪x‬‬
‫‪y‬‬
‫‪HA‬‬
‫‪S‬‬
‫‪S1‬‬
‫‪C‬‬
‫‪A2‬‬
‫‪x‬‬
‫‪y‬‬
‫‪HA‬‬
‫‪S‬‬
‫‪S2‬‬
‫‪C‬‬
‫‪A3‬‬
‫‪x‬‬
‫‪y‬‬
‫‪HA‬‬
‫‪S‬‬
‫‪S3‬‬
‫‪C‬‬
‫‪C4‬‬
‫جمع کننده و تفريق كننده باينري‬
‫براي اجراي ريزعملوند جمع نياز به مداري است که عمل جمع را روي رجيسترها انجام دهد ‪.‬اين‬
‫مداراز ‪ n‬مدار تمام جمع کننده ‪ FA‬ساخته مي شود ‪.‬‬
‫ورودي به اين مدار هريک از رجيسترهاي ‪ R1‬و ‪ R2‬و خروجي مي تواند به هريک از آنها و يا‬
‫رجيستر ديگري منتقل شود ‪.‬‬
‫‪A0‬‬
‫‪A1‬‬
‫‪B0‬‬
‫‪A2‬‬
‫‪B1‬‬
‫‪A3‬‬
‫‪B2‬‬
‫‪B3‬‬
‫‪M‬‬
‫‪C0‬‬
‫‪FA‬‬
‫‪FA‬‬
‫‪C1‬‬
‫‪S=A+B‬‬
‫‪M=0‬‬
‫‪S=A-B‬‬
‫‪M=1‬‬
‫‪17‬‬
‫‪S0‬‬
‫‪FA‬‬
‫‪C4‬‬
‫‪C3‬‬
‫‪C2‬‬
‫‪S1‬‬
‫‪FA‬‬
‫‪S2‬‬
‫‪S3‬‬
‫مدار واحد محاسباتي‬
Cin
S1
S0
B
B
0
1
S1
S0
B
B
0
1
S1
S0
B
B
0
1
S1
S0
B
B
0
1
S0
S1 4x1
0
MUX
1
2
3
S0
S1
0
1
2
3
S0
S1
0
1
2
3
S0
S1
0
1
2
3
4x1
MUX
4x1
MUX
A0
Fi
C0 D0
‫مي توان با استفاده از مدار روبرو انواع ميکرو‬
FA
‫اپريشنهاي محاسباتي را يکجا پياده سازي کرد‬
Y0 C1
. ‫ خروجي اين مداربصورت جدول زير است‬.
Fi
Fi
A1
A2
A3
4x1
MUX
X0
Fi
X1
C1 D1
Y1
C2
X3
C2
Y3
C3
X3
C3
Y3
C4
D= A+Y+Cin
D2
D3
Cout
S0 S1 CIN Y
D
0
0
0
0
1
1
1
1
A+B
A+B+1
A+B
A+B+1
A
A+1
A-1
A
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
B
B
B
B
0
0
1
1
Micro Operatioon
Add
Add With Carry
Sub with Borrow
Sub
Inc
Dec
Transfor
.
18
‫ميکرواپريشن هاي منطقي ‪Logic MicroOperations‬‬
‫‪‬‬
‫‪19‬‬
‫اين ميکرو اپريشن ها عمليات باينري را روي بيت هاي ذخيره شده در رجيسترها انجام‬
‫ميدهند‪ .‬عمل باينري بصورت جداگانه بر روي هر بيت اعمال ميگردد‪.‬‬
‫‪‬‬
‫ميکرواپريشن ‪XOR‬‬
‫‪P : R1  R1  R 2‬‬
‫‪‬‬
‫ميکرواپريشن ‪OR‬‬
‫‪P : R1  R1  R 2‬‬
‫‪‬‬
‫ميکرواپريشن ‪AND‬‬
‫‪P : R1  R1  R 2‬‬
‫‪1010‬‬
‫مثال ‪1100‬‬
‫‪0110‬‬
‫ميکرواپريشن هاي منطقي‬
‫‪‬‬
‫تعداد ‪ 16‬عمل منطقي مختلف را ميتوان بر روي دو متغير باينري انجام داد‪.‬‬
‫‪‬‬
‫اما غلب کامپيوترها فقط ‪ COMPLEMENT ، XOR ، OR ، AND‬را به‬
‫توسط مدارهاي سخت افزاري پياده ميکنند‪.‬‬
‫‪F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15‬‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫‪20‬‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫‪0‬‬
‫‪1‬‬
‫‪1‬‬
‫‪0‬‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫‪0‬‬
‫‪1‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪0‬‬
‫‪YX‬‬
‫‪00‬‬
‫‪01‬‬
‫‪10‬‬
‫‪11‬‬
‫پياده سازي سخت افزاري ميکرواپريشن هاي منطقي‬
S1
S0
S0
Ai
Bi
S1 S0
S1
0
MUX
1
Ei
0
0
1
1
0
1
0
1
OutPut
E  A B
E  A B
E  A B
EA
2
3
21
‫برخي کاربردهاي ميکرو اپريشن هاي منطقي‬
‫‪: Selective Set -1‬‬
‫براي يک کردن بيتهايي از رجيستر ‪ A‬بکار ميرود‪ .‬بيتهايي را که ميخواهيم يک‬
‫شوند ‪ ،‬توسط رجيستر ‪ B‬مشخص ميکنيم‪.‬‬
‫‪1010‬‬
‫‪1100‬‬
‫‪1110‬‬
‫‪A‬‬
‫‪) B‬دو بيت سمت چپ ‪ A‬را مجبور به يک شدن مي کنيم‪ ،‬بقيه دست نمي خورد‪(.‬‬
‫‪A‬‬
‫(بعد از عمل)‬
‫اينکار با ‪A  A  B‬‬
‫‪22‬‬
‫انجام ميشود‪.‬‬
‫برخي کاربردهاي ميکرو اپريشن هاي منطقي‬
‫‪: Selective Complement-2‬‬
‫بيت هاي مشخصي از ‪ A‬را متمم مي کنيم‪.‬‬
‫‪A 1010‬‬
‫‪B 1100‬‬
‫‪( A 0110‬بعد از عمل)‬
‫اينکار با‬
‫‪23‬‬
‫‪A  A B‬‬
‫انجام ميشود‪.‬‬
‫برخي کاربردهاي ميکرو اپريشن هاي منطقي‬
‫‪ : Selective Clear-3‬بيت هاي دلخواه در ‪ A‬را صفر ميکند‪.‬‬
‫‪A  A  B : Mask Operations -4‬‬
‫بيت هاي ‪ A‬در جايي از ‪ B‬که صفر هست ‪ ،‬صفر ميشوند‪.‬‬
‫‪A 1010‬‬
‫‪B 1100‬‬
‫‪A 0010‬‬
‫‪A A B‬‬
‫‪A 1010‬‬
‫‪B 1100‬‬
‫‪A 1000‬‬
‫‪24‬‬
‫ميکرو اپريشن هاي شيفت‬
‫‪‬‬
‫اين ميکرو اپريشن ها براي انتقال سلاير داده بکار ميروند‬
‫شيفت به راست ‪:‬‬
‫‪So‬‬
‫شيفت به چپ ‪:‬‬
‫‪0 1 1 0‬‬
‫‪Si‬‬
‫‪0 1 1 0‬‬
‫قبل از شيفت‬
‫‪25‬‬
‫‪Si‬‬
‫‪So‬‬
‫‪Si 0 1 1‬‬
‫‪1 1 0 Si‬‬
‫بعد از شيفت‬
‫انواع شيفت‬
‫شيفت منطقي ‪: Logical Shift‬‬
‫‪ Si=0‬در نظر گرفته ميشود‪.‬‬
‫‪ ‬مقدار‬
‫شيفت منطقي به سمت چپ‬
‫‪Shl R1‬‬
‫‪R1‬‬
‫در ‪ RTL‬ميکرواپريشن هر دو رجيستر مبدا و مقصد بايد يکسان باشند‪.‬‬
‫شيفت منطقي به سمت راست‬
‫‪26‬‬
‫‪Shr R2‬‬
‫‪R2‬‬
‫انواع شيفت‬
‫شيفت چرخشي ‪: Circular Shift‬‬
‫‪ Si ‬به ‪ So‬وصل ميشود‪.‬‬
‫شيفت چرخش ي به سمت چپ‬
‫شيفت چرخش ي به سمت راست‬
‫‪27‬‬
‫‪Cil R1‬‬
‫‪R1‬‬
‫‪Cir R2‬‬
‫‪R2‬‬
‫انواع شيفت‬
‫شيفت محاسباتي ‪: Arithmetic Shift‬‬
‫‪‬‬
‫در اين نوع شيفت‪ ،‬شيفت به راست به منزله تقسيم بر ‪ 2‬و شيفت به سمت چپ‬
‫به منزله ضرب در ‪ 2‬است‪ .‬از اينرو محتوي بيت عالمت رجيستر در هنگام‬
‫شيفت بدون تغيير باقي ميماند‪.‬‬
‫‪Si‬‬
‫‪asr R‬‬
‫‪R‬‬
‫تقسيم بر ‪2‬‬
‫‪asl R‬‬
‫‪R1‬‬
‫ضرب در ‪2‬‬
‫‪R0‬‬
‫‪Si=Ø‬‬
‫‪R0‬‬
‫‪ ‬اگر در ‪ asl‬مقدار ‪ R n-1‬عوض شود ‪ OverFlow‬اتفاق مي افتد‪.‬‬
‫براي تشخيص اين امر از رابطه زير استفاده ميشود ‪(:‬قبل از شيفت)‬
‫‪28‬‬
‫‪R n-1‬‬
‫‪asr:‬‬
‫‪R n-1‬‬
‫‪ R n 1  R n  2‬‬
‫‪asl:‬‬
‫‪V‬‬
‫پياده سازي سخت افزاري ميکرو اپريشن هاي شيفت‬
‫‪‬‬
‫در يک کامپيوتر با چندين رجيستر‬
‫ميتوان عمل شيفت را با استفاده از‬
‫يک مدار ترکيبي پياده سازي نمود ‪.‬‬
‫ميشود‪.‬خروجي رجيستر مورد نظر از‬
‫طريق يک پالس به مدار ترکيب اعمال‬
‫ميشود و پس از محاسبه نتيحه شيفت‬
‫حاصل به رجيستر مقصد منتقل‬
‫ميگردد‪ .‬اين کار فقط يک پالس نياز‬
‫دارد‪.‬‬
‫‪S‬‬
‫‪0‬‬
‫‪1‬‬
‫‪S‬‬
‫)‪Serial Input (IR‬‬
‫‪A1‬‬
‫‪Mux‬‬
‫‪S‬‬
‫‪0‬‬
‫‪1‬‬
‫‪S‬‬
‫‪A0‬‬
‫‪A2‬‬
‫‪Mux‬‬
‫‪S‬‬
‫‪0‬‬
‫‪1‬‬
‫‪S‬‬
‫‪A1‬‬
‫‪A3‬‬
‫‪S‬‬
‫‪0‬‬
‫‪1‬‬
‫‪S‬‬
‫‪A2‬‬
‫)‪Serial Input (IL‬‬
‫‪H0‬‬
‫‪Mux‬‬
‫‪H1‬‬
‫‪H2‬‬
‫‪Output‬‬
‫‪S H0 H1 H2 H3‬‬
‫‪0 IR A0 A1 A2‬‬
‫‪1 A1 A2 A3 IL‬‬
‫‪29‬‬
‫‪H3‬‬
‫‪Mux‬‬
‫مدار ترکيبي براي شيفت ‪ 4‬بيتي‬
‫‪ALU‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫به جاي اينکه هر رجيستر جداگانه عمليات را انجام دهد ‪ ،‬ميتوان از يک‬
‫واحد محاسباتي منطقي مستقل براي انجام عمليات بر روي رجيسترهاي‬
‫مختلف استفاده کرد‪ .‬اين واحد ‪ ALU‬ناميده ميشود‪.‬‬
‫براي انجام يک ميکرو اپريشن خروجي رجيستر مبدا به ورودي ‪ALU‬‬
‫متصل شده و خروجي ‪ ALU‬به ورودي رجيستر مقصد متصل ميشود‪.‬‬
‫مدار ترکيبي ‪ ALU‬عمل مورد نظر را که توسط وروديهاي کنترل مشخص‬
‫ميشود انجام ميدهد‪.‬‬
‫عمل شيفت ميتواند توسط ‪ ALU‬يا به صورت مجزا توسط واحد ديگري‬
‫انجام شود‪.‬‬
‫‪30‬‬
ALU
: ‫ براي يک بيت‬ALU ‫مدار سخت افزاري‬
Ci
S1
S0
Bi
Ai
S3 S2 S1 S0 Cin
‫يک قسمت‬
‫از مدار‬
‫محاسباتي‬
Di
S2
S3
Ci+1
S1
S0
Bi
Ai
Ei
‫يک قسمت‬
‫از مدار‬
‫منطقي‬
Ai-1 Ai+1
Select
4x1
0
MUX
1
2
3
Fi
0
0
0
0
0
0
0
0
0
0
0
0
1
1
0
0
0
0
0
0
0
0
1
1
1
1
0
1
0
0
0
0
1
1
1
1
0
0
1
1
x
x
0 0
0 1
1 0
1 1
0 0
0 1
1 0
1 1
0 x
1 x
0 x
1 x
x x
x 0
F Operation
A
A+1
A+B
A+B-1
A+B
A+B+1
A-1
A
A B
A B
AB
A
shl A
shr A
31