西田さんの作られた基板を送っていただいているので(感謝!)、到着するまでの間、CPLDを使った実装について考え始めています。
まず、手持ちのCPLDがXC9536XL-PC44なので、それでどこまでできるか考えてみました。 結果、次のような課題が明らかになりました。
- このチップは外部I/Oが34ピンしかないため、アドレス線をフルデコードすることは無理。 そのため、アドレスは外部でラッチするか、本体のアドレスカウンタを利用する変態実装をする必要がある。
- (変態実装時)VHDLのコーディングが悪いのか、メモリ系とI/O系を同時にハンドリングするとマクロセル(36個)が不足する。 まぁそれ以前に、変態実装時はアドレスの同期が結構大変そうですけど。
単純に考えると、I/Oは以下のとおりです。
- PCからのアドレスバス(16)
- PCからのデータバス(8)
- PCからのMREQ, IORQ, RD, WR(4)
- SRAMへのアドレスバス(15)
- SRAMおよびAVRへのデータバス(8)
- SRAMへCS, WE, OE(2)
- AVRへの入力および出力の割り込みリクエスト(2)
- AVRからのINIT(PC/SRAMセレクト), WR, RD信号(3)
合計58ピンとなります。 SRAMを使うので、EXRAS/EXCASや、CS2/CS3はなくても動作するのではないかと思います。
もっと規模の大きなCPLDを使えばいいだけなんですが、手持ちにないのと、回路を複雑にしたくないので迷っています。 また、規模の大きいものはかなり値が張るようです。XC9536XLが320円なのに対し、規模を大きくしてピン数の同じXC9572が800円、100ピンのものは1000円します。
やたらI/Oを喰うのはアドレスバスで、これを外部で任せれば、CPLD内で必要なのはSRAMデコードのためのA15, A14およびI/O用のA3~A0(と他のアドレス線をORしたもの)くらいなので、初期化時のアドレス発生を安価なAVRに任せたほうが全体として安くなりそうです。
または、9536を2個使う構成も考えられますね。アドレスの発生とバッファ用に1つ使ってもいいかもしれません。
匿名
画面が真っ暗、でもカーソルは出てる状況。
探して、ここにたどり着きました。
パスワード入力で、復活!
修理に出す寸前でした。ホントにありがとう!