Article #248

We may make changes and additions to blogs already published.


posted by sakurai on April 27, 2020 #248



`define call(SUB)                    `_pushNext; state <= State_t {func:SUB, step:S0}
`define _pushNext                   rs.upd(sp, State_t {func:state.func, step:nextStep()}); sp <= sp + 1
`define pushCall(FUNC,SUB)  _pushFunc(FUNC); state <= State_t {func:SUB, step:S0}
`define _pushFunc(FUNC)      rs.upd(sp, State_t {func:FUNC, step:S0}); sp <= sp + 1
`define nextFunc                    state <= State_t {func:nextFunc(), step:S0}
`define return                          state <= rs.sub(sp-1); sp <= sp - 1
`define next                             state.step <= nextStep()


表248.1 マクロ命令の説明
マクロ命令名 説明
call(SUB) サブルーチンコールです。次ステートをプッシュして、サブルーチンSUBをコールします。
_pushNext callに使用されており、次のステートをプッシュする内部マクロ命令です。nextStep()関数を使用しています。ユーザは陽に使う必要は無いため、先頭にアンダースコアを付けています。
pushCall(FUNC,SUB) サブルーチンコールです。戻り先ファンクションFUNCをプッシュして、サブルーチンSUBをコールします。戻り先は指定されたファンクションFUNCの先頭S0となります。
_pushFunc(FUNC) pushCallに使用されており、戻り先ファンクションFUNCをプッシュする内部マクロ命令です。ユーザは陽に使う必要は無いため、先頭にアンダースコアを付けています。
nextFunc 次のファンクションに進めるためのマクロ命令です。nextFunc()関数を使用しています。
return 呼び出し元(の次のステート)に戻るためのマクロ命令です。
next 次のステートに進めるためのマクロ命令です。nextStep()関数を使用しています。


Vivadoによる合成結果は22 LUTのサイズでした。

左矢前のブログ 次のブログ右矢

Leave a Comment

Your email address will not be published.

You may use Markdown syntax. If you include an ad such as http://, it will be invalidated by our AI system.

Please enter the numbers as they are shown in the image above.