Z80GALの構想(その2)GALの設計 [Z80]
前回の記事ではシリアル通信用のタイマー割込みを発生させるためのGAL22V10による分周器の実験について書き、GALで実現するには不適切なので8ピンのPICで対応予定であることを書きました。
今回はシリアル通信用のタイマー以外の周辺機能(ROM/RAM切替え、SD Card用のSPI、調歩同期シリアル通信)のインターフェース部分をGALに実装すべく、GALの設計を行いましたのでメモを残しておきます。
GALはPALにレジスタ(D-FF)が追加になったりしていますが、1個でSPIと調歩同期シリアルのシリパラ変換を実現できるほどパワフルではありません。今回はそれぞれのインターフェースに必要なビット単位でのインターフェースをGALで実現しました。
現時点でのソースは下記になります。
メモリ切替え用の23ピンに配置した「RAM」は外部に出す必要が無いのですが前回の記事に書いたようにNODE宣言してピンにアサシンしないようにすることができないようなのでもったいないですが外部ピンにアサインしています。
WinCuplもだいぶ慣れてきたのでソース作成はあまり問題がないのですが、シミュレータを動かす度にSIファイルにヘッダ情報が無かったり、エラーが発生したりである程度複数なパターンをシミュレーションして確認するのは苦労します(一つのファイルで全て試験すればいいのかも)
今回行ったそれぞれの機能についてのシミュレーション結果をメモとして残しておきます。
シミュレーション時にSIファイルのヘッダ情報が空になるエラーが高い頻度で発生し手動で設定し直してもすぐになくなることもあり、回避方法がまだつかめていません。
プロジェクトのファイル構成ツリーを見ると複数パターンのシミュレーションを管理できるように見えますがやり方が判っていません。
まぁ、GALにはあまり複雑な機能は実装できないのでシミュレーターでの確認がなんとかできました。
★追記 2020/10/23 {
WinCuplでコンパイルして生成されたJEDACファイルをTL866II Plusに読込む際に「format error」が表示される場合があります。
ネットで探すと「GALを使ってみる.1」にもWinCuplで作ったJEDACファイルは読み込みエラーが発生するようなことが書いてあります。
エラーが発生したJEDACファイルを調べてみると
以上のことからTL866で読込み時にエラーが表示されてもJEDECファイルの内容は読込まれているようです。
エラーの表示は行数に依存する(ように見える)のでTL866側の問題の可能性が高いと思います。
TL866II Plusのソフトを最新(App:Ver10.41,Firm:Ver04.2.122)にしても状況は同じでした。
尚、JEDECファイルのフォーマットに関してはChaNさんの「PLDフューズファイルについて」を参考にさせて頂きました。
}
★追記 2020/10/24
TL866で発生する「file format error」の画面キャプチャ追加
★追記 2020/10/23 {
今後も変更する可能性がありますが最新版を貼っておきます。
・メモリ後半のアクセスは必ずRAMになるように変更
・余分なIORQチェックを削除
★更新 2020/10/25 Ver0.02
・PICからのタイマー割込み信号を疑似的なopen drain出力にし、PullUp抵抗を追加
・タイマー割込み要求をGAL経由で読み込み可能とした
・これに伴いI/Oアドレスディコード用のアドレス線を一本削減
}
[TOP] [ 前へ ] 連載記事 [ 次へ ]
今回はシリアル通信用のタイマー以外の周辺機能(ROM/RAM切替え、SD Card用のSPI、調歩同期シリアル通信)のインターフェース部分をGALに実装すべく、GALの設計を行いましたのでメモを残しておきます。
GALはPALにレジスタ(D-FF)が追加になったりしていますが、1個でSPIと調歩同期シリアルのシリパラ変換を実現できるほどパワフルではありません。今回はそれぞれのインターフェースに必要なビット単位でのインターフェースをGALで実現しました。
現時点でのソースは下記になります。
メモリ切替え用の23ピンに配置した「RAM」は外部に出す必要が無いのですが前回の記事に書いたようにNODE宣言してピンにアサシンしないようにすることができないようなのでもったいないですが外部ピンにアサインしています。
Z80ワンボードマイコン(Z80GAL)用GALソース |
|
WinCuplもだいぶ慣れてきたのでソース作成はあまり問題がないのですが、シミュレータを動かす度にSIファイルにヘッダ情報が無かったり、エラーが発生したりである程度複数なパターンをシミュレーションして確認するのは苦労します(一つのファイルで全て試験すればいいのかも)
今回行ったそれぞれの機能についてのシミュレーション結果をメモとして残しておきます。
- ROM/RAM切替機能
リセット後のメモリリードはROM側が選択されていて、メモリ切替え用I/Oアドレスに書き込むことでDAT0(LSB)が1の場合はRAM、0の場合はROMが選択されます。
下図のシミュレーションは以下の動作のシミュレーションです。
- ROM選択状態でのメモリリード
- RAM選択操作(RAMが1になる)
- RAM選択状態でのメモリリード
- メモリ選択状態のリード(DAT0にRAMの状態が出力される
- ROM選択操作(RAMが0になる)
ROM/RAM切替機能のシミュレーション結果
- SPIインターフェース
GALに実装しているのはSPI用のクロックと選択信号(SDCS)の出力とSDI/SDOそれぞれの入出力機能です。実装するのはビット単位でのインターフェースだけでシリパラ変換等はZ80上のソフトで実現する予定です。
下図のシミュレーションは以下の操作を確認しています。
- SDCS(選択信号)をactive(0)に設定
- クロックとSDOを1に設定
- クロックを0に変更
- クロックを1、SDOを0に設定
- SDI(1)とSDCS(1)の読込み
- SDI(0)とSDCS(1)の読込み
SPIインターフェース機能のシミュレーション結果
- 調歩同期シリアル通信インターフェース
シリアル通信に関してはGALに実装するのは送受用の2ビットのインターフェースのみです。
下図のシミュレーションは以下の操作を確認しています。
- TXを1に設定
- TXを0に設定
- RX(1)の読込み
- RX(0)の読込み
- 0xE8のI/Oアドレス(SPI関連の読込み)の読込み(SDIを設定していなかったのでLSBは不定になっている)
調歩同期シリアル通信インターフェース機能のシミュレーション結果
シミュレーション時にSIファイルのヘッダ情報が空になるエラーが高い頻度で発生し手動で設定し直してもすぐになくなることもあり、回避方法がまだつかめていません。
プロジェクトのファイル構成ツリーを見ると複数パターンのシミュレーションを管理できるように見えますがやり方が判っていません。
まぁ、GALにはあまり複雑な機能は実装できないのでシミュレーターでの確認がなんとかできました。
★追記 2020/10/23 {
WinCuplでコンパイルして生成されたJEDACファイルをTL866II Plusに読込む際に「format error」が表示される場合があります。
ネットで探すと「GALを使ってみる.1」にもWinCuplで作ったJEDACファイルは読み込みエラーが発生するようなことが書いてあります。
エラーが発生したJEDACファイルを調べてみると
- JEDECファイルの末尾のチェックサムでエラーが発生しているのか確かめるためにエラーが発生しないJEDECファイルの末尾の^C前後のチェックコードを変更してからTL866で読込んでもエラーは発生しなかった
- *Lの行を1行削除するとエラーは発生しなくなった
- 読込みでエラーが発生してもTL866で読込んだ内容をファイルに書き出し、元のJEDECファイルと内容を比較すると違いは無かった
- エラーが発生した場合(当然コンパイルは通るもの)でもPLDファイル内の論理式などを変更してJEDACファイルの行数が変わるとエラーが発生しなくなった
以上のことからTL866で読込み時にエラーが表示されてもJEDECファイルの内容は読込まれているようです。
エラーの表示は行数に依存する(ように見える)のでTL866側の問題の可能性が高いと思います。
TL866II Plusのソフトを最新(App:Ver10.41,Firm:Ver04.2.122)にしても状況は同じでした。
尚、JEDECファイルのフォーマットに関してはChaNさんの「PLDフューズファイルについて」を参考にさせて頂きました。
}
★追記 2020/10/24
TL866で発生する「file format error」の画面キャプチャ追加
TL866II PlusでWinCuplで生成したJEDECファイル読込み時のエラー |
|
★追記 2020/10/23 {
今後も変更する可能性がありますが最新版を貼っておきます。
・メモリ後半のアクセスは必ずRAMになるように変更
・余分なIORQチェックを削除
★更新 2020/10/25 Ver0.02
・PICからのタイマー割込み信号を疑似的なopen drain出力にし、PullUp抵抗を追加
・タイマー割込み要求をGAL経由で読み込み可能とした
・これに伴いI/Oアドレスディコード用のアドレス線を一本削減
Z80ワンボードマイコン(Z80GAL)用GALソース(最新版) |
|
}
[TOP] [ 前へ ] 連載記事 [ 次へ ]