52
234262 Tutorials #4-#5 Controller + DataPath design 234262 – © Yohai Devir 2007 Technion - IIT

234262 Tutorials #4-#5 Controller + DataPath design 234262 – © Yohai Devir 2007 Technion - IIT

  • View
    226

  • Download
    2

Embed Size (px)

Citation preview

Page 1: 234262 Tutorials #4-#5 Controller + DataPath design 234262 – © Yohai Devir 2007 Technion - IIT

234262

Tutorials #4-#5

Controller + DataPath design

234262 – © Yohai Devir 2007Technion - IIT

Page 2: 234262 Tutorials #4-#5 Controller + DataPath design 234262 – © Yohai Devir 2007 Technion - IIT

Controller & DP

DP = מסלולנתונים

זיכרון•

כלים )לוגיקה צירופית(•

נתב•

Controller = בקר "מוח המערכת"

פלט

קלט

אותות בקרה

אותות סטטוס

234262 – © Dima Elenbogen 200910:02 PM

פלט

Page 3: 234262 Tutorials #4-#5 Controller + DataPath design 234262 – © Yohai Devir 2007 Technion - IIT

Register

FF = מערך של רגיסטר

D Q

רגיסטר לא מותנה

D Q

רגיסטר מותנה

load

234262 – © Dima Elenbogen 200910:02 PM

Page 4: 234262 Tutorials #4-#5 Controller + DataPath design 234262 – © Yohai Devir 2007 Technion - IIT

Computing N!

#1 – pseudo-Codei = N;result = 1;while (i > 1) {

result = result * i;i = i - 1;

}done = 1;output(result);

234262 – © Yohai Devir 2007Technion - IIT

Page 5: 234262 Tutorials #4-#5 Controller + DataPath design 234262 – © Yohai Devir 2007 Technion - IIT

Computing N! )2(

#1 – pseudo-Codei = N;result = 1;while (i > 1) {

result = result * i;i = i - 1;

}done = 1;output(result);

i = N;result = 1;

LOOP: if (i ≤ 1) goto END;result = result * i;i = i - 1;goto LOOP;

END: done = 1;output(result);

234262 © Yohai Devir 2007 Technion - IIT © Dima Elenbogen 2009

Page 6: 234262 Tutorials #4-#5 Controller + DataPath design 234262 – © Yohai Devir 2007 Technion - IIT

Computing N! )3(

#2 – finding variablesi = N;result = 1;while (i > 1){

result = result * i;i = i - 1;

}done = 1;output(result);

234262 © Yohai Devir 2007 Technion - IIT © Dima Elenbogen 2009

Page 7: 234262 Tutorials #4-#5 Controller + DataPath design 234262 – © Yohai Devir 2007 Technion - IIT

Computing N! )4(

#3 – operations

i = N;result = 1;while (i > 1) {

result = result * i;i = i - 1;

}done = 1;output(result);

234262 © Yohai Devir 2007 Technion - IIT © Dima Elenbogen 2009

GR

Page 8: 234262 Tutorials #4-#5 Controller + DataPath design 234262 – © Yohai Devir 2007 Technion - IIT

Computing N! )8(

The Datapath

i = N;result = 1;while (i > 1) {

result = result * i;i = i - 1;

}done = 1;output(result);

234262 © Yohai Devir 2007 Technion - IIT © Dima Elenbogen 2009

ld_resld_i

sel_i sel_res

GR

out

Page 9: 234262 Tutorials #4-#5 Controller + DataPath design 234262 – © Yohai Devir 2007 Technion - IIT

ld_resld_i

sel_i sel_res

GR

out

Computing N! )9(

Datapath Flow Chart – what operations can be done in parallel ?

i = N;result = 1;while (i > 1) {

result = result * i;i = i - 1;

}done = 1;output(result);

)0(

i = N

result = 1

234262 © Yohai Devir 2007 Technion - IIT © Dima Elenbogen 2009

Page 10: 234262 Tutorials #4-#5 Controller + DataPath design 234262 – © Yohai Devir 2007 Technion - IIT

Computing N! )10(

Datapath Flow Chart – what operations can be done in parallel ?

i = N;result = 1;while (i > 1) {

result = result * i;i = i - 1;

}done = 1;output(result);

)0(

i = N

result = 1 )1(

)i – 1( > 0 ?

234262 © Yohai Devir 2007 Technion - IIT © Dima Elenbogen 2009

Yes

Page 11: 234262 Tutorials #4-#5 Controller + DataPath design 234262 – © Yohai Devir 2007 Technion - IIT

Computing N! )11(

Datapath Flow Chart – which operations can be done in parallel ?

i = N;result = 1;while (i > 1) {

result = result * i;i = i - 1;

}done = 1;output(result);

)0(

i = N

result = 1 )1(

)i – 1( > 0 ?

)2(

result =

result * i

)3(

i = i - 1

234262 © Yohai Devir 2007 Technion - IIT © Dima Elenbogen 2009

Yes

Page 12: 234262 Tutorials #4-#5 Controller + DataPath design 234262 – © Yohai Devir 2007 Technion - IIT

Computing N! )12(

Datapath Flow Chart – which operations can be done in parallel ?

i = N;result = 1;while (i > 1) {

result = result * i;i = i - 1;

}done = 1;output(result);

)0(

i = N

result = 1 )1(

)i – 1( > 0 ?

ניתן למזג

234262 © Yohai Devir 2007 Technion - IIT © Dima Elenbogen 2009

)2(

result =

result * i

)3(

i = i - 1

Yes

Page 13: 234262 Tutorials #4-#5 Controller + DataPath design 234262 – © Yohai Devir 2007 Technion - IIT

Computing N! )13(

Datapath Flow Chart – which operations can be done in parallel ?

i = N;result = 1;while (i > 1) {

result = result * i;i = i - 1;

}done = 1;output(result);

)0(

i = N

result = 1

)1(

)i – 1( > 0?

)2(

result=result*i

i = i - 1

234262 © Yohai Devir 2007 Technion - IIT © Dima Elenbogen 2009

Yes

Page 14: 234262 Tutorials #4-#5 Controller + DataPath design 234262 – © Yohai Devir 2007 Technion - IIT

Computing N! )14(

Datapath Flow Chart – which operations can be done in parallel ?

i = N;result = 1;while (i > 1) {

result = result * i;i = i - 1;

}done = 1;output(result);

)0(

i = N

result = 1

)1(

)i – 1( > 0?

)2(

result=result*i

i = i - 1

234262 © Yohai Devir 2007 Technion - IIT © Dima Elenbogen 2009

האם ניתן להפוך את

סדר ?השורות

Yes

Page 15: 234262 Tutorials #4-#5 Controller + DataPath design 234262 – © Yohai Devir 2007 Technion - IIT

Off the Record )1(

היה הלולאה בגוף השורות סדר האלגוריתם ע''פי אילו גוף את לבצע יכולים היינו עדיין האם הפוך, במקור

הלולאה במחזור יחיד?

234262 © Dima Elenbogen 2010 Technion - IIT

...while (i > 1) {

i = i - 1;

result = result * i;}...

ld_resld_i

sel_i sel_res

GR

out

Page 16: 234262 Tutorials #4-#5 Controller + DataPath design 234262 – © Yohai Devir 2007 Technion - IIT

...while (i > 1) {

i = i - 1;

result = result * i;}...

היה הלולאה בגוף השורות סדר האלגוריתם ע''פי אילו גוף את לבצע יכולים היינו עדיין האם הפוך, במקור

הלולאה במחזור יחיד?

לאאם אסור לשנות את מסלול

הנתונים.

234262 © Dima Elenbogen 2010 Technion - IIT

Off the Record )2(

ld_resld_i

sel_i sel_res

GR

out

Page 17: 234262 Tutorials #4-#5 Controller + DataPath design 234262 – © Yohai Devir 2007 Technion - IIT

...while (i > 1) {

i = i - 1;

result = result * i;}...

היה הלולאה בגוף השורות סדר האלגוריתם ע''פי אילו גוף את לבצע יכולים היינו עדיין האם הפוך, במקור

הלולאה במחזור יחיד?

כן אם מותר לשנות את מסלול

הנתונים ולהזין את הערך ישירות מהמחסרiהחדש של

234262 © Dima Elenbogen 2010 Technion - IIT

Off the Record )3(

ld_resld_i

sel_i sel_res

GR

out

Page 18: 234262 Tutorials #4-#5 Controller + DataPath design 234262 – © Yohai Devir 2007 Technion - IIT

Computing N! )15( – תרשים זרימהבקר

)0(

i = N

result = 1

)1(

)i – 1( > 0?

)2(

result=result*i

i = i - 1

)3(

Yes

)0(

)1(

)2(

)3(

234262 © Yohai Devir 2007 Technion - IIT © Dima Elenbogen 2009

Page 19: 234262 Tutorials #4-#5 Controller + DataPath design 234262 – © Yohai Devir 2007 Technion - IIT

?

Computing N! )16(

– דיאגרמת מצביםבקר

)0(

i = N

result = 1

)1(

)i – 1( > 0 ?

)2(

result=result*i

i = i - 1

)3(

Yes

ld_i,

ld_res

sel_res = 0

sel_i = 0

?

?

?

0

1

2

3

234262 © Yohai Devir 2007 Technion - IIT © Dima Elenbogen 2009

Page 20: 234262 Tutorials #4-#5 Controller + DataPath design 234262 – © Yohai Devir 2007 Technion - IIT

Computing N! )17(

)0(

i = N

result = 1

)1(

)i – 1( > 0 ?

)2(

result=result*i

i = i - 1

)3(

234262 © Yohai Devir 2007 Technion - IIT © Dima Elenbogen 2009

ld_i,

ld_res

sel_res = 0

sel_i = 0

?

?

gr

0

1

2

3

gr

– דיאגרמת מצביםבקר

Yes

Page 21: 234262 Tutorials #4-#5 Controller + DataPath design 234262 – © Yohai Devir 2007 Technion - IIT

Computing N! )18(

)0(

i = N

result = 1

)1(

)i – 1( > 0 ?

)2(

result=result*i

i = i - 1

)3(

234262 © Yohai Devir 2007 Technion - IIT © Dima Elenbogen 2009

ld_i,

ld_res

sel_res = 0

sel_i = 0

ld_i

ld_res

sel_res = 1

sel_i = 1

?

0

1

2

3

gr

gr

– דיאגרמת מצביםבקר

Yes

Page 22: 234262 Tutorials #4-#5 Controller + DataPath design 234262 – © Yohai Devir 2007 Technion - IIT

Computing N! )19(

– דיאגרמת מצביםבקר

)0(

i = N

result = 1

)1(

)i – 1( > 0 ?

)2(

result=result*i

i = i - 1

)3(

234262 © Yohai Devir 2007 Technion - IIT © Dima Elenbogen 2009

ld_i,

ld_res

sel_res = 0

sel_i = 0

ld_i

ld_res

sel_res = 1

sel_i = 1

done

0

1

2

3

gr

gr

Yes

Page 23: 234262 Tutorials #4-#5 Controller + DataPath design 234262 – © Yohai Devir 2007 Technion - IIT

Computing N! )20(

מהו סוג הבקר? Mealy Moore

234262 © Yohai Devir 2007 Technion - IIT © Dima Elenbogen 2009

ld_i,

ld_res

sel_res = 0

sel_i = 0

ld_i

ld_res

sel_res = 1

sel_i = 1

done

0

1

2

3

gr

gr

Page 24: 234262 Tutorials #4-#5 Controller + DataPath design 234262 – © Yohai Devir 2007 Technion - IIT

Computing N! )20(

ld_i,

ld_res

sel_res = 0

sel_i = 0

ld_i

ld_res

sel_res = 1

sel_i = 1

done

0

1

2

3

234262 © Yohai Devir 2007 Technion - IIT © Dima Elenbogen 2009

gr

gr

Page 25: 234262 Tutorials #4-#5 Controller + DataPath design 234262 – © Yohai Devir 2007 Technion - IIT

Computing N! )21(

– מימושבקר

ld_i,

ld_res

sel_res = 0

sel_i = 0

ld_i

ld_res

sel_res = 1

sel_i = 1

done

0

1

2

3

234262 © Yohai Devir 2007 Technion - IIT © Dima Elenbogen 2009

gr

gr

Page 26: 234262 Tutorials #4-#5 Controller + DataPath design 234262 – © Yohai Devir 2007 Technion - IIT

Computing N! )22(

– מימושבקר

CS Sel_i Load_i Sel_res Load_res Done

00 0 1 0 1 0

01 0 0 0 0 0

10 1 1 1 1 0

11 0 0 0 0 1

234262 © Yohai Devir 2007 Technion - IIT © Dima Elenbogen 2009

ld_i,

ld_res

sel_res = 0

sel_i = 0

ld_i

ld_res

sel_res = 1

sel_i = 1

done

0

1

2

3

gr

gr

Page 27: 234262 Tutorials #4-#5 Controller + DataPath design 234262 – © Yohai Devir 2007 Technion - IIT

234262 © Yohai Devir 2007 Technion - IIT © Dima Elenbogen 2009

Computing N! )23(

CONTROL + DP

CONTROL

DATA PATH

GR

SEL_I

Sel_res

Load_i

Load_res

Result N

done

External Clock

Page 28: 234262 Tutorials #4-#5 Controller + DataPath design 234262 – © Yohai Devir 2007 Technion - IIT

Computing N! )24(

234262 © Yohai Devir 2007 Technion - IIT © Dima Elenbogen 2009

Page 29: 234262 Tutorials #4-#5 Controller + DataPath design 234262 – © Yohai Devir 2007 Technion - IIT

DP signals Control signals Comment N i res i-1 i*res GR CS NS seli selres loadi loadres done

1 3 ? ? 00

2

345678

CS Sel_i Load_i Sel_res Load_res Done

00 0 1 0 1 0

01 0 0 0 0 0

10 1 1 1 1 0

11 0 0 0 0 1

Page 30: 234262 Tutorials #4-#5 Controller + DataPath design 234262 – © Yohai Devir 2007 Technion - IIT

DP signals Control signals Comment N i res i-1 i*res GR CS NS seli selres loadi loadres done

1 3 ? ? 00 0 0 1 1 0

2

345678

CS Sel_i Load_i Sel_res Load_res Done

00 0 1 0 1 0

01 0 0 0 0 0

10 1 1 1 1 0

11 0 0 0 0 1

Page 31: 234262 Tutorials #4-#5 Controller + DataPath design 234262 – © Yohai Devir 2007 Technion - IIT

DP signals Control signals Comment N i res i-1 i*res GR CS NS seli selres loadi loadres done

1 3 ? ? ? ? ? 00 0 0 1 1 0 iN; res 1

2

345678

CS Sel_i Load_i Sel_res Load_res Done

00 0 1 0 1 0

01 0 0 0 0 0

10 1 1 1 1 0

11 0 0 0 0 1

Page 32: 234262 Tutorials #4-#5 Controller + DataPath design 234262 – © Yohai Devir 2007 Technion - IIT

DP signals Control signals Comment N i res i-1 i*res GR CS NS seli selres loadi loadres done

1 3 ? ? ? ? ? 00 01 0 0 1 1 0 iN; res 1

2

345678

CS Sel_i Load_i Sel_res Load_res Done

00 0 1 0 1 0

01 0 0 0 0 0

10 1 1 1 1 0

11 0 0 0 0 1

Page 33: 234262 Tutorials #4-#5 Controller + DataPath design 234262 – © Yohai Devir 2007 Technion - IIT

DP signals Control signals Comment N i res i-1 i*res GR CS NS seli selres loadi loadres done

1 3 ? ? ? ? ? 00 01 0 0 1 1 0 iN; res 1

2 01

345678

CS Sel_i Load_i Sel_res Load_res Done

00 0 1 0 1 0

01 0 0 0 0 0

10 1 1 1 1 0

11 0 0 0 0 1

Page 34: 234262 Tutorials #4-#5 Controller + DataPath design 234262 – © Yohai Devir 2007 Technion - IIT

DP signals Control signals Comment N i res i-1 i*res GR CS NS seli selres loadi loadres done

1 3 ? ? ? ? ? 00 01 0 0 1 1 0 iN; res 1

2 3 1 01

345678

CS Sel_i Load_i Sel_res Load_res Done

00 0 1 0 1 0

01 0 0 0 0 0

10 1 1 1 1 0

11 0 0 0 0 1

Page 35: 234262 Tutorials #4-#5 Controller + DataPath design 234262 – © Yohai Devir 2007 Technion - IIT

DP signals Control signals Comment N i res i-1 i*res GR CS NS seli selres loadi loadres done

1 3 ? ? ? ? ? 00 01 0 0 1 1 0 iN; res 1

2 3 1 01 0 0 0 0 0 i=1?

345678

CS Sel_i Load_i Sel_res Load_res Done

00 0 1 0 1 0

01 0 0 0 0 0

10 1 1 1 1 0

11 0 0 0 0 1

Page 36: 234262 Tutorials #4-#5 Controller + DataPath design 234262 – © Yohai Devir 2007 Technion - IIT

DP signals Control signals Comment N i res i-1 i*res GR CS NS seli selres loadi loadres done

1 3 ? ? ? ? ? 00 01 0 0 1 1 0 iN; res 1

2 Ø 3 1 2 3 01 0 0 0 0 0 i=1?

345678

CS Sel_i Load_i Sel_res Load_res Done

00 0 1 0 1 0

01 0 0 0 0 0

10 1 1 1 1 0

11 0 0 0 0 1

Page 37: 234262 Tutorials #4-#5 Controller + DataPath design 234262 – © Yohai Devir 2007 Technion - IIT

DP signals Control signals Comment N i res i-1 i*res GR CS NS seli selres loadi loadres done

1 3 ? ? ? ? ? 00 01 0 0 1 1 0 iN; res 1

2 Ø 3 1 2 3 1 01 0 0 0 0 0 i=1?

345678

CS Sel_i Load_i Sel_res Load_res Done

00 0 1 0 1 0

01 0 0 0 0 0

10 1 1 1 1 0

11 0 0 0 0 1

Page 38: 234262 Tutorials #4-#5 Controller + DataPath design 234262 – © Yohai Devir 2007 Technion - IIT

DP signals Control signals Comment N i res i-1 i*res GR CS NS seli selres loadi loadres done

1 3 ? ? ? ? ? 00 01 0 0 1 1 0 iN; res 1

2 Ø 3 1 2 2 1 01 10 0 0 0 0 0 i=1?

345678

CS Sel_i Load_i Sel_res Load_res Done

00 0 1 0 1 0

01 0 0 0 0 0

10 1 1 1 1 0

11 0 0 0 0 1

Page 39: 234262 Tutorials #4-#5 Controller + DataPath design 234262 – © Yohai Devir 2007 Technion - IIT

DP signals Control signals Comment N i res i-1 i*res GR CS NS seli selres loadi loadres done

1 3 ? ? ? ? ? 00 01 0 0 1 1 0 iN; res 1

2 Ø 3 1 2 3 1 01 10 0 0 0 0 0 i=1?

3 3 1 1045678

CS Sel_i Load_i Sel_res Load_res Done

00 0 1 0 1 0

01 0 0 0 0 0

10 1 1 1 1 0

11 0 0 0 0 1

Page 40: 234262 Tutorials #4-#5 Controller + DataPath design 234262 – © Yohai Devir 2007 Technion - IIT

DP signals Control signals Comment N i res i-1 i*res GR CS NS seli selres loadi loadres done

1 3 ? ? ? ? ? 00 01 0 0 1 1 0 iN; res 1

2 Ø 3 1 2 3 1 01 10 0 0 0 0 0 i=1?

3 Ø 3 1 2 3 1 10 01 1 1 1 1 0resi*res

ii-1

45678

CS Sel_i Load_i Sel_res Load_res Done

00 0 1 0 1 0

01 0 0 0 0 0

10 1 1 1 1 0

11 0 0 0 0 1

Page 41: 234262 Tutorials #4-#5 Controller + DataPath design 234262 – © Yohai Devir 2007 Technion - IIT

DP signals Control signals Comment N i res i-1 i*res GR CS NS seli selres loadi loadres done

1 3 ? ? ? ? ? 00 01 0 0 1 1 0 iN; res 1

2 Ø 3 1 2 3 1 01 10 0 0 0 0 0 i=1?

3 Ø 3 1 2 3 1 10 01 1 1 1 1 0resi*res

ii-1

4 Ø 2 3 1 6 1 01 10 0 0 0 0 0 i=1?

5 Ø 2 3 1 6 1 10 01 1 1 1 1 0resi*res

ii-1

6 Ø 1 6 0 6 0 01 11 0 0 0 0 0 i=1?7 Ø 1 6 0 6 0 11 11 0 0 0 0 1 done8 Ø 1 6 0 6 0 11 11 0 0 0 0 1 done

CS Sel_i Load_i Sel_res Load_res Done

00 0 1 0 1 0

01 0 0 0 0 0

10 1 1 1 1 0

11 0 0 0 0 1

Page 42: 234262 Tutorials #4-#5 Controller + DataPath design 234262 – © Yohai Devir 2007 Technion - IIT

234262 – © Yohai Devir 2007Technion - IIT

Another example

Page 43: 234262 Tutorials #4-#5 Controller + DataPath design 234262 – © Yohai Devir 2007 Technion - IIT

234262 – © Yohai Devir 2007Technion - IIT

2nd example - hardware

DIVIDER

X/Y X%Y

X Y

m m

m m

i = N;K = 2;while (i / K >= K) {

If (i % K == 0) {i = i + 1;K = 2;

} else {K = K + 1;

}}done = 1;output (i);

Page 44: 234262 Tutorials #4-#5 Controller + DataPath design 234262 – © Yohai Devir 2007 Technion - IIT

234262 – © Yohai Devir 2007Technion - IIT

2nd example - hardware

DIVIDER

X/Y X%Y

X Y

m m

m m

COMP

X≥Y X=Y

X Y

m m

+1

X+1

X

m

m

i = N;K = 2;while (i / K >= K) {

If (i % K == 0) {i = i + 1;K = 2;

} else {K = K + 1;

}}done = 1;output (i);

Page 45: 234262 Tutorials #4-#5 Controller + DataPath design 234262 – © Yohai Devir 2007 Technion - IIT

234262 – © Yohai Devir 2007Technion - IIT

2nd example - hardware

DIVIDER

X/Y X%Y

X Y

m m

m m

COMP

X≥Y X=Y

X Y

m m

+1

X+1

X

m

m

Universal Switchi = N;K = 2;while (i / K >= K) {

If (i % K == 0) {i = i + 1;K = 2;

} else {K = K + 1;

}}done = 1;output (i);

Page 46: 234262 Tutorials #4-#5 Controller + DataPath design 234262 – © Yohai Devir 2007 Technion - IIT

234262 – © Yohai Devir 2007Technion - IIT

KLoad_K iLoad_i

Universal Switch

DIVIDER

X/Y X%Y

X Y

COMP

X≥Y X=Y

X Y

+1

X+1

X

i = N;K = 2;while (i / K >= K) {

If (i % K == 0) {i = i + 1;K = 2;

} else {K = K + 1;

}}done = 1;output (i);

Page 47: 234262 Tutorials #4-#5 Controller + DataPath design 234262 – © Yohai Devir 2007 Technion - IIT

234262 – © Yohai Devir 2007Technion - IIT

i = N;K = 2;while (i / K >= K) {

If (i % K == 0) {i = i + 1;K = 2;

} else {K = K + 1;

}}done = 1;output (i);

i =NK =2

Page 48: 234262 Tutorials #4-#5 Controller + DataPath design 234262 – © Yohai Devir 2007 Technion - IIT

234262 – © Yohai Devir 2007Technion - IIT

i = N;K = 2;while (i / K >= K) {

If (i % K == 0) {i = i + 1;K = 2;

} else {K = K + 1;

}}done = 1;output (i);

i =NK =2

i/K >= K?

NO

Page 49: 234262 Tutorials #4-#5 Controller + DataPath design 234262 – © Yohai Devir 2007 Technion - IIT

234262 – © Yohai Devir 2007Technion - IIT

i = N;K = 2;while (i / K >= K) {

If (i % K == 0) {i = i + 1;K = 2;

} else {K = K + 1;

}}done = 1;output (i);

i =NK =2

i/K >= K?

i % K == 0?

NO

YES

YESNO

Page 50: 234262 Tutorials #4-#5 Controller + DataPath design 234262 – © Yohai Devir 2007 Technion - IIT

234262 – © Yohai Devir 2007Technion - IIT

i = N;K = 2;while (i / K >= K) {

If (i % K == 0) {i = i + 1;K = 2;

} else {K = K + 1;

}}done = 1;output (i);

i =NK =2

i/K >= K?

i % K == 0?

NO

YES

i = i + 1K =2

K = K +1

YESNO

Page 51: 234262 Tutorials #4-#5 Controller + DataPath design 234262 – © Yohai Devir 2007 Technion - IIT

234262 – © Yohai Devir 2007Technion - IIT

0 1sel_K

2

KLoad_K

iLoad_i

DIVIDER

x%y x/y

y x

COMP

X≥Y X=Y

y x

m

m

stat1

Stat2

x+1xm

0 1

sel_i

N

0 1sel_y

0

sel_x1 0

1 0sel_incm

m m m

result

m mm

m

mm

m

mm mm

i =NK =2

i/K >= K?

i % K == 0?

NO

YES

i = i + 1K =2

K = K +1

YESNO

Page 52: 234262 Tutorials #4-#5 Controller + DataPath design 234262 – © Yohai Devir 2007 Technion - IIT

234262 – © Yohai Devir 2007Technion - IIT

0 1sel_K

2

KLoad_K

iLoad_i

DIVIDER

x%y x/y

y x

COMP

X≥Y X=Y

y x

m

m

stat1

Stat2

x+1xm

0 1

sel_i

N

0 1sel_y

0

sel_x1 0

1 0sel_incm

m m m

result

m mm

m

mm

m

mm mm

i =NK =2

i/K >= K?

i % K == 0?

NO

YES

i = i + 1K =2

K = K +1

YESNO

)0(sel_i=0sel_K=0load_i=1load_K=1

)1(

sel_x=0sel_y=0

)2(

sel_x=1sel_y=1

)5(

Done = 1

NOT)stat1(

stat1

)3(sel_inc=0sel_i=1sel_K=0load_i=1load_K=1

)4(sel_inc=1sel_K=1oad_K=1

stat2NOT)stat2(