"Kazutoshi Fukui" <fukui.kazutoshi@xxxxxxxxxxx> 様
こんにちは。 亀田@fellowです。
>方法としては、通常時はH8がSRAMにアクセスし、
>あるタイミングで、H8が自分自身でBREQをLoにして
>バス権を解放します。
H8の出力ポート端子をBREQ端子に接続してLowにし
てるって事でしょうか?
としたら、ゲートアレイのアクセスが完了した状態を示す
信号を監視して、ポートをLow→Highにすれば良い気がしますが...
これだとダメって事なんですよね。(^^;)
>バスアービタをはじめて使うので、とまどっています。
>また、サンプル等のデータも探したのですがあまりありませんでした。
簡単なアビトレーションなら、CPUを一番下位のバスマスタにするのが
一般的だと思います。(恐らくマニュアルにも載っている?)
1) 外部のゲートアレイ(GA)がバスマスタになるタイミング
(SRAMをアクセスし始めるタイミング)で、
BREQをGAがアサートします。(バス要求中)
この時、GAはアクセスWait中です。
2) CPUがBACKをアサートして、バス権を開放したなら、
GAはSRAMのアクセスを開始します。(GAアクセス中)
3) GAは所定のSRAMアクセスを完了した時点で、
BREQをネゲートします。(GAバス開放)
4) CPUは通常通りアクセスをします。
と言った仕組みになると思います。
ここでGAがSRAMへのチップセレクトやRead/Write信号を出すタイミングは、
BREQとBACK信号の両方がアサート状態の時
(通常この条件でBUS GRANTと言う信号を作ります)
を条件に取って、信号を作成する必要があります。
出来れば、CPUのクロックでBUS GRANT信号をラッチして、2)の時に
CPUがバス開放しても1〜2ステート遅らせてGAがアクセスするのが
良いかもしれません。
同様に3)でGAがバス開放するのも、アクセス完了後1〜2ステート
遅らせてBREQ信号をネゲートするのが良いでしょう。
また、この場合CPUはGAがSRAMアクセスした事を知る手段がありません。
CPUがGAのアクセスを知りたいのであれば、外部割込み等を使用して
通知する等の手段を取れば良いのかもしれませんね。
こんな回答で役に立ちますか?
/*****************************/
Fellow System Co., LTD.
亀田 秀樹<kameda@xxxxxxxxxxxx>
http://www.fellow.co.jp/
/*****************************/