參考先前所做過的行為層模式的乘法器,來做乘法的動作,另外再加上一個判斷指令及減法動作來做k=k-1的動作。(r3>=1 |pb)是在做判斷k是否大於0,COMPUTE_1是在做k=k-1的動作,(r5>=1)與COMPUTE_2則是我們先前的乘法器動作。下圖為根據N!的基本原理所推導出來的ASM圖。
修改過後的程式碼
r4 <= @(posedge sysclk) x;
r3 <= @(posedge sysclk) x;
ready = 1;
if (pb)
while(r3>=1)
r3 <= @(posedge sysclk) r3-1;
r5 <= @(posedge sysclk) r3;
r2 <= @(posedge sysclk) r4; //r4
r6 <= @(posedge sysclk) 0;
while (r5 >= 1)
r5 <= @(posedge sysclk) r5 -1;
r6 <= @(posedge sysclk) r2 + r6;
r4 <= @(posedge sysclk) r6;
經過執行後的結果
沒有留言:
張貼留言