概要
マイコンのペリフェラル制御で、アドレスとデータバスを使用した通信をする機会があり、用語など調べたことを備忘録として残します。
内容
【バスの方式】
- セパレートバス : アドレスバスとデータバスが分かれている
- マルチプレクスバス : アドレスバスとデータバスが兼用
【バスアクセス方法】
- 1ライトストローブモード
- バイトストローブモード
1ライトストローブモード
- bit数に関わらず、1アクセスでR/Wが可能。
- この時のライト信号はWR#。
- データバスがマイコンと一対一で接続されている場合などに使用。
- 基本的には2byte単位でデータをやり取りするため、アドレスは偶数で指定する。
バイトストローブモード
- 外部メモリのデータバスが8bit。
- データを複数回に分けてアクセスする。16bitデータバスならD0~D7、D8~D15で2回に分けてアクセスする
- 利用されるWR信号はWR0#(D0~D7)、WR1#(D8~D15)となる。
- R/W問わずアクセス中にはBC0#(D0~D7)、BC1#(D8~D15)が出力される。
- BC信号は上位バイト下位バイトの選択に使われる。
見分け
どちらの方式か見分けるにはデータシートを読めばわかると思います。自分なりには、アドレス線の0(A0)を使用していなければ1ライトストローブだと思います。
A0 を使わない => 偶数アクセス、バイトアクセスしない、16bitアクセスや32bitアクセス等
今まで出くわした例でいうと、PCL6025というモータのパルスコントロールLSIの場合は1ライトストローブでした。
その他
バスを共有して使う場合はCS信号でチップを選択したり、ICによってはアクセス方法に癖があったりするようです。
マイコンとFPGAのやりとりに使用する事もありますが、ここの設計はきちんとしないと無駄なアクセスをしてしまいますね。FPGAのレジスタが16bit幅なら、1ライトストローブのデータバス16bitにすれば一回のアクセスで済むように。この時、アドレスは偶数となるので注意が必要ですが。
参考
https://japan.renesasrulz.com/cafe_rene/f/forum5/996/thread
http://www.elec-hobbyist.com/MicomMemo/RX62_Intro_3.html