mico8再訪 [PLD]
ユーザーガイドを翻訳してみた(もちろん無許可やっちゅーの)
- 18bit幅命令
- コンフィグレーション可能な16 or 32bit汎用レジスタ
- スクラッチ・パッドメモリ
- I/O page化された256個ものポート
- 2 or 3 サイクル / 命令
- UARTなどが周辺機器として提供されている。
[機能解説]
- 例外処理
mico8は2つのみ提供
ad func
0 外部割込み
1 リセット
- GP-reg 汎用レジスタ
- ページ・ポインタ
追加のアドレスピンで、外部のメモリの量を増やしたい時に使う。
mico8のオペコードは256番地までしか直接アクセスはできない。
そのためR15/R14をシャドウ・レジスタとしてアドレスへのアクセスにしようする。
シャドウ・レジスタのアドレスは、高位バイトのアドレスビットに割り当てられる。
mico8のアドレスバスの幅は8から24までコンフィグが可能である。
そのアドレスバスはR15/R14のつなぎ合わせと、もう8ビットで実現される
(i.e. ext_addr = R15 & R14 & 8bits-opcode)
- スクラッチ・パッド
mico8は独立したメモリ空間を提供する、それはスクラッチパッドと呼ぶ。
(よくわからんけど、アセンブラを書くとき、これを意識して書くと
良い事がおこるらしい。何のメリットがあるかは調べてみます。後ほど)
- HW コール・スタック
"call"命令が実行された場合、次命令のアドレスはコールスタックにプッシュされる。
"ret"命令があれば、スタックはポップされる。そして、スタックの一番上から実行される。
スタックは16個実装されている。サークルバッファになっている。
論理合成時にサイズをコンフィグできる
- 割り込みハンドリング
mcuは1つの割り込みソース、それはレベルセンシティブ。その割り込みは
イネーブル/ディセーブルはSWでやる(cli= clear interrupt/ sti set interrupt)
割り込みack信号線は「H」にセットされる1度割り込みはACKされたら割り込み線は0にされ
ないといけない。
"iret"命令はコールスタックをPopする。そしてスタックの頂上アドレスにする。
「フラグ(carry and zero)」はシャドウ場所にもどされる。
- I/O
mico8は外部とスクラッチパッドメモリのデータやり取りはclockに動機して行われる。
v24実装は8bit address とデータバスを提供する。8bitアドレスバスはmico8に256メモリ空間を
提供する。
外部とスクラッチパッドメモリはひとつのアドレスバスを共有している。各メモリの入力データは
独立したデータバスにより供給される。
最初の32メモリアドレスは直接・間接アドレシングモードを使用する。
残りの224アドレスは間接アドレシングのみである。
v3 エンハンス
mico8はv3でいくつかのエンハンスが行われた。
- READY信号を追加。メモリ入出力で使用。
- 3クロックサイクルメモリ入出力はEBRとREADYをサポートするためのもの
- program rom (prom)は512 - 4096もちろんユーザが設定可能
- 無条件分岐 / call 命令 +/- 2K命令レンジ
[アセンブラと命令セットシミュレータ]
SWツールはアセンブラとISSで、両方Cで記述されてる。
- 18bit幅命令
- コンフィグレーション可能な16 or 32bit汎用レジスタ
- スクラッチ・パッドメモリ
- I/O page化された256個ものポート
- 2 or 3 サイクル / 命令
- UARTなどが周辺機器として提供されている。
[機能解説]
- 例外処理
mico8は2つのみ提供
ad func
0 外部割込み
1 リセット
- GP-reg 汎用レジスタ
- ページ・ポインタ
追加のアドレスピンで、外部のメモリの量を増やしたい時に使う。
mico8のオペコードは256番地までしか直接アクセスはできない。
そのためR15/R14をシャドウ・レジスタとしてアドレスへのアクセスにしようする。
シャドウ・レジスタのアドレスは、高位バイトのアドレスビットに割り当てられる。
mico8のアドレスバスの幅は8から24までコンフィグが可能である。
そのアドレスバスはR15/R14のつなぎ合わせと、もう8ビットで実現される
(i.e. ext_addr = R15 & R14 & 8bits-opcode)
- スクラッチ・パッド
mico8は独立したメモリ空間を提供する、それはスクラッチパッドと呼ぶ。
(よくわからんけど、アセンブラを書くとき、これを意識して書くと
良い事がおこるらしい。何のメリットがあるかは調べてみます。後ほど)
- HW コール・スタック
"call"命令が実行された場合、次命令のアドレスはコールスタックにプッシュされる。
"ret"命令があれば、スタックはポップされる。そして、スタックの一番上から実行される。
スタックは16個実装されている。サークルバッファになっている。
論理合成時にサイズをコンフィグできる
- 割り込みハンドリング
mcuは1つの割り込みソース、それはレベルセンシティブ。その割り込みは
イネーブル/ディセーブルはSWでやる(cli= clear interrupt/ sti set interrupt)
割り込みack信号線は「H」にセットされる1度割り込みはACKされたら割り込み線は0にされ
ないといけない。
"iret"命令はコールスタックをPopする。そしてスタックの頂上アドレスにする。
「フラグ(carry and zero)」はシャドウ場所にもどされる。
- I/O
mico8は外部とスクラッチパッドメモリのデータやり取りはclockに動機して行われる。
v24実装は8bit address とデータバスを提供する。8bitアドレスバスはmico8に256メモリ空間を
提供する。
外部とスクラッチパッドメモリはひとつのアドレスバスを共有している。各メモリの入力データは
独立したデータバスにより供給される。
最初の32メモリアドレスは直接・間接アドレシングモードを使用する。
残りの224アドレスは間接アドレシングのみである。
v3 エンハンス
mico8はv3でいくつかのエンハンスが行われた。
- READY信号を追加。メモリ入出力で使用。
- 3クロックサイクルメモリ入出力はEBRとREADYをサポートするためのもの
- program rom (prom)は512 - 4096もちろんユーザが設定可能
- 無条件分岐 / call 命令 +/- 2K命令レンジ
[アセンブラと命令セットシミュレータ]
SWツールはアセンブラとISSで、両方Cで記述されてる。
2010-05-28 14:28
nice!(0)
コメント(0)
トラックバック(0)
コメント 0