レトロマイコン86ボードの構想(その2) [8086]
86ボード制作ですが、PIC24FJのPMP(パラレルマスタポート)機能について実験してみました。
今回はシリアル通信をアサインするピンを変更するのでブートローダー側のシリアルも変更が必要でPic24FJ用ブートローダーのOneBitLoaderを入れるところからです。
久々にOneBitLoaderの最初の立ち上げ画面を見ました。
次にローダーを使ってpicleコンパイラを書込み、その後はpicleのセルフコンパイル環境でソースを変更し、コンパイルの繰り返し作業なのでローダーすらほとんど使いません。
V20(8088相当品)を使用することを想定しているので8bitのデータバスに下位アドレスがマルチプレクスする半多重化アドレッシングモードを使用します。
データ線とアドレス線がマルチプレクスされることでPIC24側のI/Oに少し余裕ができます。
PMP機能では下図のようにタイミングをパラメータにより色々設定可能なので数通りのパラメータパターンについてロジアナで確認してみました。
タイミングの調整要素としては上図に書かれているように WAITB,WAITM,WAITE(それぞれBegin、Middle、Endの略だと思う)があり、全てゼロの場合の最速タイミングが下図です。PIC24のクロックは内蔵クロックを使用して32MHzにしています。
モニタした信号はメモリアクセスのための下記の信号です。
今回もアクセスタイムが70nsのメモリを使用する予定なので WR/ はもっと広げないと駄目ですね。LATCHもマージンを大きくし、ノイズの発生も少なくするためにもっと広げたいと思います。
下の図が3通りのパラメータで設定した場合のロジアナ波形です。WR/幅が140nsでlatch幅が80nsでlatch後20ns程度アドレスを保持しているWAITB:1,WAITM:2,WAITE:1 を採用することにします。
その時、PIC の PMCON と PMMODE のレジスタの設定値はそれぞれ 0x0ba0、0x0a49 になります。
★2019/07/15 修正
採用パターンのWAITEを0から1に修正(latch後のアドレス保持時間の確保のため))
参考として WAITB:1,WAITM:2,WAITE:1 時のメモリリードタイミングが下図です。
今回の確認に使用したpicleソースと実行結果を貼っておきます。
PMP機能確認用picleソース
[TOP] [ 前へ ] 連載記事 [ 次へ ]
今回はシリアル通信をアサインするピンを変更するのでブートローダー側のシリアルも変更が必要でPic24FJ用ブートローダーのOneBitLoaderを入れるところからです。
久々にOneBitLoaderの最初の立ち上げ画面を見ました。
次にローダーを使ってpicleコンパイラを書込み、その後はpicleのセルフコンパイル環境でソースを変更し、コンパイルの繰り返し作業なのでローダーすらほとんど使いません。
OneBirLoaderの最初の立ち上げ画面 |
|
V20(8088相当品)を使用することを想定しているので8bitのデータバスに下位アドレスがマルチプレクスする半多重化アドレッシングモードを使用します。
データ線とアドレス線がマルチプレクスされることでPIC24側のI/Oに少し余裕ができます。
PMP機能では下図のようにタイミングをパラメータにより色々設定可能なので数通りのパラメータパターンについてロジアナで確認してみました。
PMP半多重化アドレッシングタイミング |
|
タイミングの調整要素としては上図に書かれているように WAITB,WAITM,WAITE(それぞれBegin、Middle、Endの略だと思う)があり、全てゼロの場合の最速タイミングが下図です。PIC24のクロックは内蔵クロックを使用して32MHzにしています。
モニタした信号はメモリアクセスのための下記の信号です。
- MCS/ チップセレクト
- OE/ リードストローブ
- WR/ ライトストローブ
- LATCH 下位アドレスラッチ用のHC573へのG信号
- AD0 データ線のLSBビットの信号
PMPライトタイミング(wait無し) |
|
今回もアクセスタイムが70nsのメモリを使用する予定なので WR/ はもっと広げないと駄目ですね。LATCHもマージンを大きくし、ノイズの発生も少なくするためにもっと広げたいと思います。
下の図が3通りのパラメータで設定した場合のロジアナ波形です。WR/幅が140nsでlatch幅が80nsでlatch後20ns程度アドレスを保持しているWAITB:1,WAITM:2,WAITE:1 を採用することにします。
その時、PIC の PMCON と PMMODE のレジスタの設定値はそれぞれ 0x0ba0、0x0a49 になります。
★2019/07/15 修正
採用パターンのWAITEを0から1に修正(latch後のアドレス保持時間の確保のため))
PMPライトタイミング(WAITB:1, WAITM:1, WAITE:1) |
|
PMPライトタイミング(WAITB:1, WAITM:2, WAITE:1) |
|
PMPライトタイミング(WAITB:1, WAITM:2, WAITE:0) |
|
参考として WAITB:1,WAITM:2,WAITE:1 時のメモリリードタイミングが下図です。
PMPリードタイミング(WAITB:1, WAITM:2, WAITE:1) |
|
今回の確認に使用したpicleソースと実行結果を貼っておきます。
|
[TOP] [ 前へ ] 連載記事 [ 次へ ]