midterm_solution.pdf

‫سَال ‪-1‬‬
‫تِ هٌظَر تزرسی تخصپذیزی اعذاد تایٌزی تز ‪ 9‬تِ صَرت سیز عول هیکٌین‪:‬‬
‫‪128a7 + 64a6 + 32a5 + 16a4 + 8a3 + 4a2 + 2a1 + a0‬‬
‫‪9‬‬
‫‪126a7 + 63a6 + 27a5 + 9a4 + 0a3 + 0a2 + 0a1 + 0a0‬‬
‫‪14a7 + 7a6 + 3a5 + a4‬‬
‫‪2a7 + a6 + 5a5 + 7a4 + 8a3 + 4a2 + 2a1 + a0‬‬
‫ّویٌطَر کِ ضزایة ًطاى هی دٌّذ‪ ،‬الگَی یکساًی درحال تکزار است‪ .‬درٍاقع تا استفادُ اس ّوٌْطتی تِ پیواًِی ‪ّ 9‬ن هیتَاى الگَی‬
‫هزتَطِ را تِ دست آٍرد‪.‬‬
‫‪0‬‬
‫‪1‬‬
‫‪2‬‬
‫‪3‬‬
‫‪4‬‬
‫‪5‬‬
‫‪2 1‬‬
‫‪2 2‬‬
‫‪2 4‬‬
‫‪2 8‬‬
‫‪2 7‬‬
‫‪2 5‬‬
‫‪26 1‬‬
‫‪27 2‬‬
‫‪28 4‬‬
‫‪...‬‬
‫در ًتیجِ عذد هزتَطِ در صَرتی هضزب ‪ 9‬است کِ اس الگَی ‪ 5،7،8،4،2،1‬پیزٍی کٌذ‪ .‬تذیي تزتیة کذ سیز تِ دست هیآیذ‪:‬‬
‫;)‪module Q1(I,Clock,reset,O‬‬
‫;‪input I,Clock,reset‬‬
‫;‪output reg O‬‬
‫; ‪reg [4:0] M‬‬
‫;‪reg [2:0] cnt‬‬
‫)‪always @ (posedge Clock‬‬
‫‪begin‬‬
‫)‪if (!reset‬‬
‫‪begin‬‬
‫;‪cnt = 0‬‬
‫;‪M = 0‬‬
‫;‪O = 0‬‬
‫‪end‬‬
‫‪else‬‬
‫‪begin‬‬
‫;‪if (cnt == 0) M = M + I‬‬
‫;‪if (cnt == 1) M = M + 2*I‬‬
‫;‪if (cnt == 2) M = M + 4*I‬‬
‫;‪if (cnt == 3) M = M + 8*I‬‬
‫;‪if (cnt == 4) M = M + 7*I‬‬
‫;‪if (cnt == 5) M = M + 5*I‬‬
‫;‪M = M % 9‬‬
‫)‪if (M == 0‬‬
‫;‪O = 1‬‬
‫‪else‬‬
‫;‪O = 0‬‬
‫)‪if (cnt < 5‬‬
‫;‪cnt = cnt + 1‬‬
‫‪else‬‬
‫;‪cnt = 0‬‬
‫‪end‬‬
‫‪end‬‬
‫‪endmodule‬‬
‫اس آًجایی کِ تعذاد اعضای الگَی تِ دست آهذُ ‪ 6‬هیتاضذ‪ ،‬تِ یک ضوارًذُ کِ اس ‪ 0‬تا ‪ 5‬هی ضوارد ًیاس دارین ٍ در ًتیجِ ضوارًذُی ها ‪3‬‬
‫تیتی است‪ .‬اس طزف دیگز تا تَجِ تِ عثارت ;‪ ،M = M % 9‬حذاکثز هقذاری کِ ‪ M‬در ّز هزحلِ هیتَاًذ داضتِ تاضذ تزاتز تا ‪ 8‬است ٍ‬
‫درصَرتی کِ ٍرٍدی ‪ 1‬تاضذ‪ ،‬تا دستَر ;‪ M = M + 8*I‬هقذار ‪ 16‬را خَاّذ داضت‪ .‬در ًتیجِ ‪ M‬تایستی ‪ 5‬تیتی تعزیف ضَد‪ .‬ضکل سیز‬
‫خزٍجی تزًاهِ تِ اسای دٍ عذد ‪ 315‬کِ تِ صَرت ‪( 110111001‬اتتذا تیت کن ارسش ٍارد هیضَد) ٍ ‪ 306‬کِ تِ صَرت ‪010011001‬‬
‫ٍارد هیضًَذ را ًطاى هیدّذ‪ّ .‬واًطَر کِ هطخص است در سهاى ٍرٍد عذد اٍل‪ ،‬رضتِ تیت ‪ 11011‬کِ هعادل ‪ 27‬است ًیش خزٍجی را ‪1‬‬
‫هیکٌذ‪ .‬در ٍرٍدی دٍم ّن ‪ 1001 ٍ 0‬کِ هعادل ‪ 9 ٍ 0‬هیتاضٌذ‪ ،‬عالٍُ تز ‪ 306‬خزٍجی را ‪ 1‬هیکٌٌذ‪ .‬اس آًجایی کِ تا صفز ضذى ‪reset‬‬
‫ٍرٍدی جذیذ هطخص هی ضَد ٍ رجیستزّای هزتَطِ هقذار صفز هیگیزًذ ٍ عولیاتی اًجام ًویضَد‪ ،‬السم است اٍلیي تیت ٍرٍدی تا لثِ ‪-‬‬
‫ی کالک تعذی هقذار خَد را حفظ کٌذ ٍ تِ ّویي دلیل اٍلیي تیت ّز عذد‪ ،‬تاخیز تیطتزی دارد‪.‬‬
‫سَال ‪-2‬‬
‫تقسین ضَد‪ .‬در ٍاقع هیتَاى حاصل را هحاسثِ ًوَد ٍ تِ هٌظَر سادُ ضذى فزض کزد کِ‬
‫را تز‬
‫در ایٌجا تایستی عذد کسزی‬
‫دستگاُ هویش را در سوت راست قزار هیدّذ‪ .‬در چٌیي حالتی هیتَاى تقسین دٍ عذد ‪ integer‬تز ّن را اًجام داد‪ .‬اس آًجایی کِ تایستی‬
‫خارج قسوت ‪ 9‬تیتی را گزد کٌین‪ ،‬در اتتذای کار ‪ 9‬تا ‪ 0‬در جلَی هقسَم قزار هیدّین‪ .‬هطخص است کِ ‪ 10‬هزتثِ عولیات تقسین اًجام‬
‫هیضَد ٍ لذا ضوارًذُ را تزاتز تا ‪ 10‬در ًظز هی گیزین‪ .‬در اتتذای کار تایستی هقسَم ٍ هقسَم علیِ تا یکذیگز هقایسِ ضًَذ تا درصَرتی کِ‬
‫هقسَم تشرگتز است ٍ خارج قسوت هقذاری تشرگتز اس ‪ 1‬پیذا هیکٌذ‪ ،‬خزٍجی ‪ error‬فعال ضَد‪ .‬پس اس ایي تقسین را تِ صَرت تفزیق ٍ‬
‫ضیفت اًجام هی دّین‪ .‬در ٍاقع ّزهزتثِ کِ هقسَم تشرگتز اس هقسَم علیِ تاضذ‪ ،‬یک ‪ 1‬تِ خارج قسوت اضافِ کزدُ‪ ،‬هقسَم علیِ را اس‬
‫هقسَم کن هیکٌین ٍ تا ضیفت تِ چپ کار را اداهِ هی دّین‪ .‬اها اگز هقسَم کَچکتز اس هقسَم علیِ تاضذ‪ ،‬یک ‪ 0‬تِ خارج قسوت اضافِ‬
‫کزدُ ٍ تٌْا هقسَم را ضیفت تِ چپ هیدّین ٍ در ّز هزحلِ یک ٍاحذ اس ضوارًذُ کن هیضَد‪ .‬سهاًی کِ ضوارًذُ صفز ضَد‪ ،‬خارج‬
‫قسوت هحاسثِ ضذُ است ٍ در صَرت لشٍم تایذ گزد ضَد‪ .‬اتتذا تزرسی هیضَد تا خارج قسوت هعادل ‪ً 111111111‬ثاضذ‪ .‬سیزا در‬
‫چٌیي حالتی تا گزد ضذى‪ ،‬خارج قسوت هقذاری تیص اس ‪ 1‬پیذا خَاّذ کزد ٍ تایستی ‪ error‬ایجاد ضَد‪ .‬در غیز ایي صَرت تا تَجِ تِ‬
‫تیت آخز خارج قسوت(تیت ضوارُی صفز) هطخص هی ضَد کِ تایستی تِ عذد قثل ٍ یا تعذ گزد ضَد‪ .‬در صَرتی کِ ایي تیت ‪ 1‬تاضذ‬
‫تایستی ایي تیت حذف ٍ ‪ٍ 1‬احذ تِ عذد اضافِ ضَد ٍ در صَرتی کِ صفز تاضذ‪ ،‬ایي تیت حذف ٍ صفز تِ عذد اضافِ هیضَد‪ً .‬وَدار‬
‫‪ ASM‬ایي سَال در اداهِ رسن ضذُ است ٍ ضکلّای سیز تِ تزتیة‪ ،‬خارج قسوت تقسین ‪42‬تز ‪ 37 ٍ 85‬تز ‪ 113‬را ًطاى هیدٌّذ‪.‬‬
A : 17 bit
B : 8 bit
Q : 8 bit
Q1 : 9 bit
AH = A[16:9]
0
s
1
A ← {in1,“000000000”}
B ← in2
Cnt ← 10
E←0
Er ← 0
Q1 ← 0
AH ≥ B
1
Er ← 1
0
AH ≥ B
0
0
1
Q1 ← {shlQ1,“1”}
AH ← AH – B
A ← shlA
Cnt ← Cnt - 1
Q1 ← {shlQ1,“0”}
A ← shlA
Cnt ← Cnt - 1
Cnt = 0
0
Q ← Q1[8:1] + Q1[0]
E←1
1
Q1 = 111111111
1
Er ← 1