[H8-ML(2650)] Re: バスアービタの使い方
From: 亀田 秀樹 <kameda@xxxxxxxxxxxx>
Date: 2003年01月07日(火)15時18分14秒
 "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/
/*****************************/
スレッド概略
[2640(R)](起点)
 └[2645(U)]
   └[表示中]
     └[2660(1)]


投稿順に移動
[←前の記事へ(P)]
[→次の記事へ(N)]


リスト表示へ
[このスレッド(T)]
[本記事の前後(L)]