日本橋電気街徘徊日誌

いいとしのおっさんがジャンク屋で買ったものをいじったり電子工作したりします。

広告

※このエリアは、60日間投稿が無い場合に表示されます。記事を投稿すると、表示されなくなります。

FM-7用拡張ボードを作ってる件(その5)

2017-02-13 17:53:05 | 電子工作

2013年の末ぐらいからなのかな。
ちょっと手をつけては挫折を繰り返してきた
FM-7用FDC-FDDエミュレータボードだけど、
ようやくそれっぽく動き出した。

最初はトラ技2006/4付録のCPLD基板を
ダイオードと抵抗経由してFM-7のバスに
接続してi/oポートというかレジスタとして
読み書きできるようにわりと簡単にできて
もうほとんどできたような気分になって
AVRマイコン(atmega328p)をつなごうと
してどんなことをすればいいか考えてみて
たとえば0xfd19(トラック)に0、0xfd1a(セクタ)に
1、0xfd1c(ヘッド)に0、0xfd18(コマンド)に0x80を
CPUが書き込んだら、
0x19 0x00 0x1a 0x01 0x1c 0x00 0x18 0x80
みたいなデータをそのまま渡してやって、
それに対する反応として0xfd1bにデータを返して
やるようにすればだいたいうまくいきそうな
気がして、ほぼその通りに作ったんだけど、
コマンドにデータを書かれたらステータスレジスタに
即busyが立つようにするとか、READコマンドで
データをデータレジスタに反映したらDRQを立てて、
CPUがデータを読み込んだらそれを認識したと
AVRマイコンに通知してDRQを寝かせるとか
そんな感じのロジックがAVRマイコンとCPLDに
要るんだけど、CPLDのロジックを記述する方法が
よくわからなくて七転八倒でした。

まあ、まだほんとに完成しているわけではなくて、
SEEK・RESTORE・READあたりをF-BASICが動く程度に
実装して、FM-7用のプログラムもDISK BASIC関連の
セクタとBASIC+機械語のプログラムをAVRマイコンの
プログラムメモリに押し込んであるだけなんだけどね。

今後の課題は、動いた直後は完璧かと狂喜したけど
パワーオン時に動かない時があるので初回処理が
間に合っていないのか、パワーオン時の信号線の処理が
悪いのか確認してどうするか考えるのと、なんとか
ChaN氏のfatfsをつないでSDカード上のイメージを
扱えるようにすることだな。その次は書き込みも
できるようにしたいかな。

ロジックを記述するのではまった部分は、CPLDは
CPLD基板上のクロックで動くのにFM-7の非同期の
信号をどう取り込むかという話で、
process(clk)
begin
 if(nrst='0') then
 elsif(clk'event and clk='1') then
としてCPLD基板のクロックのエッジのイベントでしか
書けないのにどのようにして拡張バスのEやらQやらが
立ったり寝たりしたのを確実に検知するかってところです。
(我ながら根本的すぎる)
その次は信号を複数の場所から変更しようとすると
マイコンの考えが全く通用しないところか。回路として
考えれば確かにそれが正しいんだけどマイコンにCで書いてる
感じからするとトンチみたいな記述になる。
こーいうのは初心者向けの本には書かれていないし
初級以上の本には書かれているんだろうけど、独学で
どはまりしていると書かれている意味が理解できなかったり。
教育を受けられる環境なら、例をだして説明されたら
それですっと越えられる山なんだろうけど。

理解がちょっと進んだんで、次はRS232Cカード+漢字RAMカード
を作ろうかと。FDDエミュよりはだいぶ楽なはず。

画像は明日以降ぽちぽち貼る予定。

 

 

ジャンル:
ウェブログ
コメント   この記事についてブログを書く
この記事をはてなブックマークに追加
« FM-7用拡張ボードを作ってる... | トップ | FM-7用拡張ボードを作ってる... »
最近の画像もっと見る

コメントを投稿


コメント利用規約に同意の上コメント投稿を行ってください。

数字4桁を入力し、投稿ボタンを押してください。

あわせて読む

トラックバック

この記事のトラックバック  Ping-URL
  • 30日以上前の記事に対するトラックバックは受け取らないよう設定されております。
  • 送信元の記事内容が半角英数のみのトラックバックは受け取らないよう設定されております。
  • このブログへのリンクがない記事からのトラックバックは受け取らないよう設定されております。
  • ※ブログ管理者のみ、編集画面で設定の変更が可能です。