ポケコン(G850)用拡張基板(その2)確認事項 [ポケコン]
前回の記事で書いた PC-G850 用の拡張基板(Eborsy)が届いているので部品実装しました。
下の写真がトップ面で右下の白いコネクタは aitendo さんから購入した PC-G850 のシステムバスに適合するものです。各信号は確認し易いようにボトム面に実装したピンソケットに出していて、信号名をトップ面にもシルク印刷しましたが、薄暗い場所では字が小さくて良く見えませんw
ボトム面が下の写真で、GALとメモリ等を実装しています。SDコネクタから怪しげな線が GAL のソケットの下に這い出ていますが、基板製造依頼後に気が付いた SPI の DI 信号線です^^;
最初は接続していたはずなのですが、いつの間にか無くなっていました。再発防止の意味でも原因分析と対策が必要なので、記憶を辿ってみるにSDコネクタ部を1回書き直す必要があり、変更前の画面表示をキャプチャし、それを参考に変更した際に抜けてしまったようです。今後はある程度の変更が生じる場合、変更前のCADファイを残して変更後に比較するようにしたいと思います。
それでは今の時点で確認できたことを以下に列挙します。
今時点で確認できたことは以上になります。結果だけを書けば簡潔にまとまるのですが、後で参照できるように作業メモとしてロジアナ波形等も付けたことで雑多感が滲み出だしてきましたので今回はここまでと致します。
★追記 2122/01/01
「ポケコン(G850)用拡張基板(その6)確認事項5」の記事にバンク No. 16 から 63 までを再調査した結果を記載しました。
[TOP] [ 前へ ] 連載記事 [ 次へ ]
下の写真がトップ面で右下の白いコネクタは aitendo さんから購入した PC-G850 のシステムバスに適合するものです。各信号は確認し易いようにボトム面に実装したピンソケットに出していて、信号名をトップ面にもシルク印刷しましたが、薄暗い場所では字が小さくて良く見えませんw
Bborsy 部品実装後(トップ面) |
|
ボトム面が下の写真で、GALとメモリ等を実装しています。SDコネクタから怪しげな線が GAL のソケットの下に這い出ていますが、基板製造依頼後に気が付いた SPI の DI 信号線です^^;
最初は接続していたはずなのですが、いつの間にか無くなっていました。再発防止の意味でも原因分析と対策が必要なので、記憶を辿ってみるにSDコネクタ部を1回書き直す必要があり、変更前の画面表示をキャプチャし、それを参考に変更した際に抜けてしまったようです。今後はある程度の変更が生じる場合、変更前のCADファイを残して変更後に比較するようにしたいと思います。
Bborsy 部品実装後(ボトム面) |
|
それでは今の時点で確認できたことを以下に列挙します。
- IORQ/でGALが動作可能か?
結果:可能
[詳細]
前回の記事でも書いたように、この基板を作成しようと思った動機は GAL のクロック信号として IORQ/ を使えると思い付いたからです(特に Wincupl のシミュレータを使っているとクロックは周期的なものであるという固定観念が付いてしまうw)。
GAL はクロックの立上りエッジでレジスタをラッチするので WR/ 信号を認識するために WR/信号に少しディレーをかけて GAL に入力しています(Z80は IORQ/とWR/の立上りはほぼ同時)
始めに SDカードの チップセレクト信号である SDCS/ を I/O 命令で設定できるか確認してみました。試験用のプログラムは下記になります。
SDCS/ 設定試験プログラム(Z80アセンブラ) ;+++++++++++++++++++++++++++++++++++ ; test program for Eborsy ; Ver 0.01 2021/12/18 by skyriver ;+++++++++++++++++++++++++++++++++++ 0100 ORGAD EQU 0100H ; +++ 850 I/O +++ 0017 INTMASK EQU 017H ; interrupt mask ; +++ GAL I/O address +++ 0080 AdrSdcs EQU 80H ; set SDCS(D0) 0081 AdrSpiD EQU 81H ; write/read SPI data(D0) 0000' ASEG ORG ORGAD 0100 DB 17 Start: IN A,(INTMASK) 0102 5F LD E,A 0103 AF XOR A 0104 D3 17 OUT (INTMASK),A ; no effect 0106 F3 DI 0107 01 0000 LD BC,0000H 010A AF XOR A 010B D3 80 LOOP: OUT (AdrSdcs),A 010D EE 01 XOR 1 010F 10 FA DJNZ LOOP 0111 0D DEC C 0112 20 F7 JR NZ,LOOP 0114 7B LD A,E 0115 D3 17 OUT (INTMASK),A 0117 FB EI 0118 C9 RET END
PC-850V は周期的にかなり割込み処理が行われているので割込み禁止の状態で実行しました。念のために 17H ポートで割込みマスクもかけていますが、このマスクは掛けなくても変化はないようでした(周期的にかかっている割込みには NMI は無いと思われる)
前述の WR/ のディレー状況をロジアナで確認した結果が下図です。
WR/と GAL 用 WRdlay/ 信号 [sampling:100MHz]
立上りエッジの遅れは立下りに比べてかなり少なくっています。全体的な図が下図で、SDCS/ 設定のために OUT命令が繰返されていることが判ります。SDCS/をトグルで変更しているはずなのですが SDCS/ に変化は見られません^^;
SDCS/ 設定プログラム実行結果 [sampling:25MHz]
前述のWR/ の立上りのディレー時間が少ないためかと思いディレー用コンデンサを 22pF から 68pF に変更後のロジアナ波形が下図になります。
WR/と GAL 用 WRdlay/ 信号(68 pFに変更後) [sampling:100MHz]
立上りエッジのディレーは多くなりましたが SDCS/ が設定できないという状況は変わりませんでした。基本に返り、GAL の仕様を確認したところ、遅れ無し(th)でも問題無いようです。
GAL22V10 Specification 1
GAL22V10 Specification 2
WR/ のディレー幅に問題ないことが判ったので GAL のcuplソースを再確認し、修正したところ、SDCS/ が設定できるようになりました^^;
SDCS/ 設定OK1 [sampling:32MHz]
SDCS/ 設定OK2 [sampling:32MHz]
- C000Hバンク切替えで外部メモリアサイン可能か?
結果:可能性は見いだせなかった
[詳細]
SDCS/ が設定できるようになり、トリガやマーキングに使えるので作業が少し楽になりました。今回作成した C000H バンク切替え試験プログラムは下記でバンクを 0~15 に切替えそれぞれ 100H バイトをバッファにコピーするというものです。
また、このプログラムを実行する際はデータバスの LSB(D0)を 10K でプルアップしているので、もし対応メモリが無く、データバスがフローティング状態になった場合には リード時に D0 が 1 に固定されるはずです。特にバンク0は N/A(Not Available?)と記されていたので期待したいところです(詳細は前回の記事を参照して下さい)
バンク(C000H)切替え試験プログラム(Z80アセンブラ) ;+++++++++++++++++++++++++++++++++++ ; Bank C000H test for Eborsy ; Ver 0.01 2021/12/18 by skyriver ;+++++++++++++++++++++++++++++++++++ 0100 ORGAD EQU 0100H ; +++ 850 I/O +++ 0017 INTMASK EQU 017H ; interrupt mask 0019 BANKSEL EQU 019H ; select bank 8000h,c000h ; +++ GAL I/O address +++ 0080 AdrSdcs EQU 80H ; set SDCS(D0) 0081 AdrSpiD EQU 81H ; write/read SPI data(D0) ; +++ memory adress +++ C000 BNKADR EQU 0C000H 1000 SAVADR EQU 01000H 0000' ASEG ORG ORGAD 0100 F3 Start: DI 0101 21 1000 LD HL,SAVADR 0104 1E FF LD E,0FFH 0106 3E 20 LD A,high SAVADR + 010H 0108 73 Ini: LD (HL),E 0109 23 INC HL 010A BC CP H 010B C2 0108 JP NZ,Ini 010E 3E 01 LD A,1 0110 D3 80 OUT (AdrSdcs),A ; set SDCS:0 0112 DB 19 IN A,(BANKSEL) 0114 F5 PUSH AF 0115 11 1000 LD DE,SAVADR 0118 E6 F0 AND 0F0H 011A D3 19 Loop: OUT (BANKSEL),A 011C 21 C000 LD HL,BNKADR 011F 01 0100 LD BC,0100H 0122 ED B0 LDIR 0124 3C INC A 0125 F5 PUSH AF 0126 E6 0F AND 0FH 0128 CA 012F JP Z,NEXT 012B F1 POP AF 012C C3 011A JP Loop 012F F1 NEXT: POP AF 0130 AF XOR A 0131 D3 80 OUT (AdrSdcs),A ; set SDCS:1 0133 F1 POP AF 0134 D3 19 OUT (BANKSEL),A ; restore setting 0136 FB EI 0137 C9 RET END
実行中のロジアナ波形が下図になります。SDCS/ が 0 の部分がバンク切替えしている箇所になります。BK0,BK1にバンク番号の下位 2bit が出力されているのが面白いですね。
バンク(C000H)切替え試験実行中のロジアナ波形1 [sampling:25MHz]
拡大したものが下図で BK0 が出力されているのはブロック転送中の3回目のメモリリードなので C000H のバンク内をリードしている時になります。
バンク(C000H)切替え試験実行中のロジアナ波形2 [sampling:25MHz]
C000H のバンクを切り替えながら各バンクの先頭 100H バイトをコピーした結果が下記になります(モニタでHex出力したものをZSIDで読込みダンプコマンドで表示しました)
期待していた バンク0 もプログラムが詰まっています。バンク10(1A00H)、バンク11(1B00H)、バンク12(1C00H)の3つのバンクで同じ内容が読めているのも面白いですね。
バンク(C000H)切替え試験プログラム結果 #d1000 1000: C3 AD 13 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1010: 21 31 7F CB 8E 21 18 7F 18 12 21 31 7F CB 96 21 !1...!....!1...! 1020: 20 7F 18 08 21 31 7F CB 86 21 10 7F 3E 00 77 2C ...!1...!..>.w, 1030: 77 2C 77 2C 77 2C 77 2C 77 2C 77 2C 77 C9 21 31 w,w,w,w,w,w,w.!1 1040: 7F CB 8E 21 18 7F 06 08 3E 00 77 2C 10 FC 2E 1A ...!....>.w,.... 1050: CB E6 C9 21 19 7F 18 0D 21 21 7F 18 08 21 29 7F ...!....!!...!). 1060: 18 03 21 11 7F 7E E6 F0 77 2C 06 06 3E 00 77 2C ..!..~..w,..>.w, 1070: 10 FC C9 21 18 7F 18 03 21 10 7F 36 00 2C 7E E6 ...!....!..6.,~. 1080: 0F 77 C9 C3 32 85 CB 9E CB 4E 28 02 CB DE 11 28 .w..2....N(....( 1090: 7F 18 22 C3 59 85 CB 8E CB 5E 28 02 CB CE 11 18 ..".Y....^(..... 10A0: 7F 21 28 7F C3 19 81 C3 70 85 CB 86 CB 4E 28 02 .!(.....p....N(. #d1100 1100: 3E 01 D3 1A 31 FE 7F 3E 8B D3 7B 3E A0 D3 7A 3E >...1..>..{>..z> 1110: 01 D3 69 3E FF D3 16 AF D3 1B D3 11 D3 12 3E 02 ..i>..........>. 1120: D3 1E 06 D2 CB 47 CB 47 10 FA DB 1D 4F 06 0A 10 .....G.G....O... 1130: FE DB 1D A1 1F DA D6 BC 3E 03 D3 1E 21 03 79 CB ........>...!.y. 1140: 86 21 40 7F 3E 5A 77 BE 28 28 DB 19 E6 0F F6 40 .!@.>Zw.((.....@ 1150: D3 19 3E 01 D3 69 11 00 80 21 DA C3 06 11 1A BE ..>..i...!...... 1160: 20 07 13 23 10 F8 C3 10 80 3E 01 D3 19 D3 69 C3 ..#.....>....i. 1170: D6 BC 3E 01 32 00 79 CD D6 BF CD D3 BF 21 27 7F ..>.2.y......!'. 1180: 3E A5 06 06 BE 20 0B 23 10 FA BE 28 08 3E 5A BE >.... .#...(.>Z. 1190: 28 03 CD 9D C0 21 00 79 36 01 C3 CC C0 3E C3 32 (....!.y6....>.2 11A0: 00 00 21 F4 BF 22 01 00 21 03 00 06 3D AF 77 23 ..!.."..!...=.w# #d1200 1200: CD 00 DC 38 09 CD 9D FE C9 00 00 00 00 00 21 1D ...8..........!. 1210: 7F 11 15 7F 01 02 00 ED B0 1A 86 12 A7 C9 CD 00 ................ 1220: DC DA 8C 83 CD 97 FE C9 00 00 00 00 00 CD 91 FE ................ 1230: C9 00 00 00 00 00 00 00 00 CD 8B FE C9 00 00 00 ................ 1240: 00 00 00 00 00 CD 85 FE C9 00 00 00 00 00 00 00 ................ 1250: 00 00 00 00 CD 7F FE C9 00 00 00 00 00 CD 79 FE ..............y. 1260: C9 00 00 00 00 00 CD 73 FE C9 00 00 00 00 00 CD .......s........ 1270: 6D FE C9 00 00 00 00 00 CD 67 FE C9 00 00 00 00 m........g...... 1280: 00 CD 61 FE C9 00 00 00 00 00 CD 5B FE C9 00 00 ..a........[.... 1290: 00 00 00 CD 55 FE C9 00 00 00 00 00 CD 4F FE C9 ....U........O.. 12A0: 00 00 00 00 00 CD 49 FE C9 00 00 00 00 00 CD 43 ......I........C #d1300 1300: 7B FE 00 30 02 1E 00 7A FE 06 38 02 16 05 7E B7 {..0...z..8...~. 1310: C8 FE 0D 28 15 FE 0C 28 25 FE 10 38 1E D5 E5 CD ...(...(%..8.... 1320: 5F BE E1 D1 1C 7B FE 18 38 11 1E 00 14 7A FE 06 _....{..8....z.. 1330: 38 09 E5 D5 CD EB BF D1 E1 16 05 23 18 D0 E5 D5 8..........#.... 1340: CD 68 C3 D1 E1 18 F4 E5 F5 CD 72 C3 F1 57 FE 06 .h........r..W.. 1350: 38 00 1E 00 06 18 E1 7E B7 C8 FE 0D C8 E5 D5 C5 8......~........ 1360: CD 5F BE C1 D1 E1 1C 23 10 ED C9 F5 3A E3 7E E6 ._.....#....:.~. 1370: FD 18 06 F5 3A E3 7E F6 02 32 E3 7E F1 C5 D5 E5 ....:.~..2.~.... 1380: FE 20 30 24 FE 05 28 1C FE 1D 28 32 FE 1C 28 33 . 0$..(...(2..(3 1390: FE 08 28 34 FE 09 28 35 FE 12 28 36 FE 0C 28 37 ..(4..(5..(6..(7 13A0: FE 0B 28 33 E1 D1 C1 C9 FE F9 30 F8 CD B9 C2 CD ..(3......0..... #d1400 1400: 20 20 20 20 20 20 20 2A CD 05 C7 D0 CD 0C C7 D0 *........ 1410: FE 23 D8 FE 2A 3F D0 FE 2D C8 FE 40 C8 FE 5E D8 .#..*?..-..@..^. 1420: FE 60 3F D0 C8 FE 7C 3F D0 FE 7D C8 FE A1 D8 FE .`?...|?..}..... 1430: E0 3F C9 21 11 79 CB 86 CD F5 C6 FE 42 20 05 CB .?.!.y......B .. 1440: C6 CD F5 C6 DD 2B FE 0D 20 2C DD E5 CD F9 BD DD .....+.. ,...... 1450: E1 F5 CD 57 C0 F1 C9 21 7D 79 CB 86 CD 33 C7 20 ...W...!}y...3. 1460: 15 21 65 79 CB 96 3E 20 06 90 11 00 00 CD EE BF .!ey..> ........ 1470: AF 3D 32 23 79 C9 DD 23 C3 79 83 C5 D5 06 91 21 .=2#y..#.y.....! 1480: 00 7E E5 3E 20 77 23 10 FC 21 00 00 22 0E 79 CD .~.> w#..!..".y. 1490: B1 C4 20 14 3A 11 79 1F 30 0E CD DC C0 30 FB 21 .. .:.y.0....0.! 14A0: 0E 79 35 37 20 2D 18 30 CD DC C0 38 2B 3E 1E CD .y57 -.0...8+>.. #d1500 1500: 3A 65 79 E6 01 32 65 79 CD 18 C1 CD 3F C1 DD 56 :ey..2ey....?..V 1510: 4A DD 5E 4B CD 8B C2 DD 56 02 DD 5E 03 CD A7 C2 J.^K....V..^.... 1520: CD D6 C1 21 00 00 39 DD 74 0A DD 75 0B CD 4C C2 ...!..9.t..u..L. 1530: D8 3E 0B CD B0 E3 CD 0F C2 3E 07 30 08 CD B0 E3 .>.......>.0.... 1540: CD E1 D5 18 FB DD CB 4E 56 28 08 3E 15 CD DB D6 .......NV(.>.... 1550: DA BE DE 3E 0C CD 75 E5 CD C0 C2 DD CB 4C C6 DD ...>..u......L.. 1560: CB 4E 56 20 06 DD CB 4E 5E 28 05 3E 0F CD 75 E5 .NV ...N^(.>..u. 1570: CD D6 C1 CD 0F C2 CD C2 DC CD C0 C2 DD CB 4E 46 ..............NF 1580: 28 44 CD C8 DD 3E 0D CD B0 E3 DD 66 39 DD 6E 3A (D...>.....f9.n: 1590: 7C B5 20 28 3E 30 CD DB D6 FE 50 28 09 FE D0 28 |. (>0....P(...( 15A0: 05 CD E4 D5 18 EE 3E 0D DD 77 01 31 FE 7F DD E5 ......>..w.1.... #d1600 1600: 7B 84 3E C9 32 38 00 CD 02 D0 3E 00 32 01 79 32 {.>.28....>.2.y2 1610: 02 79 32 04 79 3A 03 79 E6 00 32 03 79 CD F2 C9 .y2.y:.y..2.y... 1620: 21 74 C0 11 00 00 06 90 CD F1 BF CD 02 D0 3E 06 !t............>. 1630: 32 00 79 CD 42 D3 FE 2C CA 04 C1 FE 2D CA 5B D3 2.y.B..,....-.[. 1640: FE 2E CA 8D D3 FE 34 CA DD D3 FE 35 CA 24 C3 FE ......4....5.$.. 1650: 36 CA 71 C2 FE 3C CA 92 C3 FE 3D CA 3A C4 FE 3E 6.q..<....=.:..> 1660: CA 8E CD FE 24 CA 71 D0 FE 01 CA 5F C2 FE 7E CA ....$.q...._..~. 1670: 5F C2 18 BF 2A 20 50 43 2D 47 38 35 30 56 20 56 _...* PC-G850V V 1680: 31 2E 30 32 20 43 48 45 43 4B 20 2A 31 3A 54 4F 1.02 CHECK *1:TO 1690: 54 41 4C 20 20 20 20 20 32 3A 52 41 4D 20 20 20 TAL 2:RAM 16A0: 20 20 20 20 33 3A 52 4F 4D 20 20 20 20 20 20 20 3:ROM #d1700 1700: 21 00 00 22 00 7C 22 01 7C 3E 20 11 00 00 06 60 !..".|".|> ....` 1710: CD EE BF CD 43 C0 38 22 CD 03 C2 CD EF C0 38 1A ....C.8"......8. 1720: CD 1B C2 CD 8E C1 2A 00 7C 11 01 00 19 22 00 7C ......*.|....".| 1730: 3A 02 7C CE 00 32 02 7C 18 CF CD FD BC FE 51 20 :.|..2.|......Q 1740: F9 18 C6 ED 5B 00 7C 3A 30 79 67 24 2E 00 73 23 ....[.|:0yg$..s# 1750: 72 23 13 3E 00 BD 20 F6 3E 78 BC 20 F1 ED 5B 00 r#.>.. .>x. ..[. 1760: 7C 3A 30 79 67 24 2E 00 4E 23 46 23 E5 60 69 A7 |:0yg$..N#F#.`i. 1770: ED 52 E1 20 49 13 7D FE 00 20 ED 7C FE 78 20 E8 .R. I.}.. .|.x . 1780: 21 AD C0 11 00 00 06 11 CD F1 BF 21 E8 7C 3A 02 !..........!.|:. 1790: 7C CD D0 C0 3A 01 7C CD D0 C0 3A 00 7C CD D0 C0 |...:.|...:.|... 17A0: 21 E8 7C 11 12 00 06 06 CD F1 BF A7 C9 52 41 4D !.|..........RAM #d1800 1800: 31 FE 7F 21 65 79 CB 96 AF 32 00 7C 32 01 7C 32 1..!ey...2.|2.|2 1810: 9A 77 CD 6F D4 CD 8D C4 CD 84 C3 31 FE 7F CD 39 .w.o.......1...9 1820: C4 CD 57 C4 CD 27 C5 FE 0D 28 F0 FE 05 28 EC FE ..W..'...(...(.. 1830: 0C 28 E8 FE 0B 28 E4 FE 43 28 0E FE 54 28 0F FE .(...(..C(..T(.. 1840: 47 28 16 FE 53 28 1C 18 D8 CD 80 C0 18 D3 CD 7B G(..S(.........{ 1850: C0 3E 01 32 02 7C C3 0F C2 CD 7B C0 AF 32 02 7C .>.2.|....{..2.| 1860: C3 0F C2 3A 01 7C B7 28 06 AF 32 01 7C 18 B2 CD ...:.|.(..2.|... 1870: AD BE 38 AD 3E 01 32 01 7C 18 A6 3A 00 7C B7 C0 ..8.>.2.|..:.|.. 1880: CD 77 C4 2A 73 79 22 24 7C 2A E3 79 23 22 26 7C .w.*sy"$|*.y#"&| 1890: 2A FC 79 2B 11 F0 00 B7 ED 52 22 28 7C CD 85 CC *.y+.....R"(|... 18A0: 3A 03 7C B7 20 08 3E 01 32 00 7C C3 82 C4 21 B0 :.|. .>.2.|...!. #d1900 1900: 21 00 00 39 22 2E 7C 2A 2A 7C ED 5B 26 7C B7 ED !..9".|**|.[&|.. 1910: 52 28 0D 4D 44 2A 26 7C AF 77 23 0B 79 B0 20 F8 R(.MD*&|.w#.y. . 1920: AF 32 03 7C 32 43 7C 32 44 7C 21 00 00 22 45 7C .2.|2C|2D|!.."E| 1930: 2A 2A 7C 22 30 7C 2A 2C 7C 22 32 7C 22 34 7C 22 **|"0|*,|"2|"4|" 1940: 36 7C 2A 28 7C 22 38 7C 18 06 CD 85 BC 08 FA FF 6|*(|"8|........ 1950: CD B5 BF 20 F5 21 50 C0 E5 2A 38 7C 7E 2B FE 05 ... .!P..*8|~+.. 1960: 30 13 FE 01 28 1D FE 02 28 2C FE 04 28 3F FE 03 0...(...(,..(?.. 1970: 28 47 C3 34 C1 22 38 7C EB 21 16 E6 4F 06 00 09 (G.4."8|.!..O... 1980: 09 09 E9 7E 2B 56 2B 5E 2B 22 38 7C ED 53 49 7C ...~+V+^+"8|.SI| 1990: 21 16 E9 C3 7C C0 7E 2B 56 2B 5E 2B 22 38 7C 2A !...|.~+V+^+"8|* 19A0: 36 7C 19 22 49 7C EB 21 16 E9 C3 7C C0 7E 2B 22 6|."I|.!...|.~+" #d1a00 1A00: 44 4D 21 00 00 3E 10 29 CB 21 CB 10 30 01 19 3D DM!..>.).!..0..= 1A10: 20 F5 C9 21 00 00 3E 10 CB 23 CB 12 CB 15 CB 14 ..!..>..#...... 1A20: B7 ED 42 30 03 09 18 01 13 3D 20 EC C9 06 00 7E ..B0.....= ....~ 1A30: B7 28 04 23 04 18 F8 78 C9 1A BE 20 09 B7 20 02 .(.#...x... .. . 1A40: 37 C9 23 13 18 F3 B7 C9 EB 1A BE 20 09 B7 20 02 7.#........ .. . 1A50: AF C9 13 23 18 F3 96 C9 1A 77 B7 28 04 23 13 18 ...#.....w.(.#.. 1A60: F7 C9 22 30 7C 7E E6 0F 87 6F 26 00 01 04 7C 09 .."0|~...o&...|. 1A70: 22 32 7C 7E 23 66 6F 22 65 7D 7D B4 28 19 23 23 "2|~#fo"e}}.(.## 1A80: 23 23 EB 2A 30 7C CD 39 C0 38 47 2A 65 7D 7E 23 ##.*0|.9.8G*e}~# 1A90: 66 6F 22 65 7D 18 E3 2A 30 7C CD 2D C0 C6 05 CD fo"e}..*0|.-.... 1AA0: 59 C5 22 65 7D 2A 65 7D 23 23 AF 77 23 77 ED 5B Y."e}*e}##.w#w.[ #d1b00 1B00: 44 4D 21 00 00 3E 10 29 CB 21 CB 10 30 01 19 3D DM!..>.).!..0..= 1B10: 20 F5 C9 21 00 00 3E 10 CB 23 CB 12 CB 15 CB 14 ..!..>..#...... 1B20: B7 ED 42 30 03 09 18 01 13 3D 20 EC C9 06 00 7E ..B0.....= ....~ 1B30: B7 28 04 23 04 18 F8 78 C9 1A BE 20 09 B7 20 02 .(.#...x... .. . 1B40: 37 C9 23 13 18 F3 B7 C9 EB 1A BE 20 09 B7 20 02 7.#........ .. . 1B50: AF C9 13 23 18 F3 96 C9 1A 77 B7 28 04 23 13 18 ...#.....w.(.#.. 1B60: F7 C9 22 30 7C 7E E6 0F 87 6F 26 00 01 04 7C 09 .."0|~...o&...|. 1B70: 22 32 7C 7E 23 66 6F 22 65 7D 7D B4 28 19 23 23 "2|~#fo"e}}.(.## 1B80: 23 23 EB 2A 30 7C CD 39 C0 38 47 2A 65 7D 7E 23 ##.*0|.9.8G*e}~# 1B90: 66 6F 22 65 7D 18 E3 2A 30 7C CD 2D C0 C6 05 CD fo"e}..*0|.-.... 1BA0: 59 C5 22 65 7D 2A 65 7D 23 23 AF 77 23 77 ED 5B Y."e}*e}##.w#w.[ #d1c00 1C00: 44 4D 21 00 00 3E 10 29 CB 21 CB 10 30 01 19 3D DM!..>.).!..0..= 1C10: 20 F5 C9 21 00 00 3E 10 CB 23 CB 12 CB 15 CB 14 ..!..>..#...... 1C20: B7 ED 42 30 03 09 18 01 13 3D 20 EC C9 06 00 7E ..B0.....= ....~ 1C30: B7 28 04 23 04 18 F8 78 C9 1A BE 20 09 B7 20 02 .(.#...x... .. . 1C40: 37 C9 23 13 18 F3 B7 C9 EB 1A BE 20 09 B7 20 02 7.#........ .. . 1C50: AF C9 13 23 18 F3 96 C9 1A 77 B7 28 04 23 13 18 ...#.....w.(.#.. 1C60: F7 C9 22 30 7C 7E E6 0F 87 6F 26 00 01 04 7C 09 .."0|~...o&...|. 1C70: 22 32 7C 7E 23 66 6F 22 65 7D 7D B4 28 19 23 23 "2|~#fo"e}}.(.## 1C80: 23 23 EB 2A 30 7C CD 39 C0 38 47 2A 65 7D 7E 23 ##.*0|.9.8G*e}~# 1C90: 66 6F 22 65 7D 18 E3 2A 30 7C CD 2D C0 C6 05 CD fo"e}..*0|.-.... 1CA0: 59 C5 22 65 7D 2A 65 7D 23 23 AF 77 23 77 ED 5B Y."e}*e}##.w#w.[ #d1d00 1D00: 26 7C 3A 24 79 6F 3A 27 79 BD CA FD C0 3A 25 79 &|:$yo:'y....:%y 1D10: 95 3C 4F 3A 24 79 3D 32 24 79 2B 18 0E 3A 24 79 .<O:$y=2$y+..:$y 1D20: 26 7C 6F 3A 25 79 95 CA FD C0 4F 06 00 54 5D 23 &|o:%y....O..T]# 1D30: ED B0 3A 25 79 3D 32 25 79 CD DC BC 18 32 21 65 ..:%y=2%y....2!e 1D40: 79 CB 4E C2 FD C0 21 26 79 3A 25 79 BE D0 26 7C y.N...!&y:%y..&| 1D50: 3A 24 79 6F 3A 25 79 95 C8 4F 06 00 54 3A 25 79 :$yo:%y..O..T:%y 1D60: 6F 5F 2D D5 ED B8 3A 9B 77 12 D1 1C 7B 32 25 79 o_-...:.w...{2%y 1D70: 2A 22 79 E5 CD 58 BC 3A 25 79 32 13 7F CD 55 BC *"y..X.:%y2...U. 1D80: CD 52 BC 3A 20 79 32 6F 79 E1 ED 5B 22 79 7C 92 .R.: y2oy..["y|. 1D90: D8 28 40 47 3A DA 79 CB 57 28 21 1C 3E 18 93 28 .(@G:.y.W(!.>..( 1DA0: 0A 38 08 D5 47 3E 20 CD EE BF D1 2A 3A 7F 23 23 .8..G> ....*:.## #d1e00 1E00: CD 50 C5 28 2C 21 36 7F CB 4E 20 25 DD E5 E1 CD .P.(,!6..N %.... 1E10: 44 C1 38 1D CD BB BF 38 12 CD 0D BF 3A 12 7F 38 D.8....8....:..8 1E20: 03 3A 17 7F B7 28 05 CD 2B BF B7 C9 CD 79 BF 18 .:...(..+....y.. 1E30: 03 C3 D1 BB DD E5 E1 23 3E 01 32 0A 7F 23 7E FE .......#>.2..#~. 1E40: FF 28 2E 23 23 E5 CD AD C1 FE FE 28 28 FE 3A 20 .(.##......((.: 1E50: 19 23 7E FE FE 20 13 23 7E FE 76 20 0D 3A 0A 7F .#~.. .#~.v .:.. 1E60: 3D 32 0A 7F 28 3C 3C 32 0A 7F E1 5E 16 00 19 18 =2..(<<2...^.... 1E70: CC CD 4F CB C9 23 7E FE 4D 28 12 FE 56 20 EB CD ..O..#~.M(..V .. 1E80: 44 C1 38 E6 3A 0A 7F 3C 32 0A 7F 18 DD 3A 0A 7F D.8.:..<2....:.. 1E90: 3D 32 0A 7F 20 D4 E1 5E 16 00 19 2B E5 DD E1 B7 =2.. ..^...+.... 1EA0: 18 D2 CD AD C1 FE FE 20 14 23 7E FE 56 20 0E E5 ....... .#~.V .. #d1f00 1F00: CD 1F C3 FE 30 CA 1A C0 FE 31 CA 1A C0 FE 0D CA ....0....1...... 1F10: 2E C0 FE 3A CA 2E C0 C3 79 83 D6 30 F5 CD 1F C3 ...:....y..0.... 1F20: FE 0D CA 31 C0 FE 3A CA 31 C0 F1 C3 79 83 3E 00 ...1..:.1...y.>. 1F30: F5 DD 2B DB 60 E6 03 C2 5B C0 F1 CD 61 C0 D0 C2 ..+.`...[...a... 1F40: 56 C0 FE 01 C2 4C C0 3E 84 C3 7B 83 B7 3A 35 7F V....L.>..{..:5. 1F50: CB EF 32 35 7F C9 3E 86 C3 7B 83 F1 3E 72 C3 7B ..25..>..{..>r.{ 1F60: 83 C5 D5 E5 DD E5 FD E5 F5 CD CA BF F1 CD C5 C0 ................ 1F70: DA A6 C0 CD 12 C3 CD 06 C3 CD 06 C3 CD 06 C3 3A ...............: 1F80: 2B C3 47 C5 CD 68 C1 CD AF C1 C1 DA A6 C0 10 F3 +.G..h.......... 1F90: CD 06 C3 CD 06 C3 CD 06 C3 F5 CD 44 BE F1 FD E1 ...........D.... 1FA0: DD E1 E1 D1 C1 C9 C2 C2 C0 B7 20 0D CD 06 C3 CD .......... ..... #
今時点で確認できたことは以上になります。結果だけを書けば簡潔にまとまるのですが、後で参照できるように作業メモとしてロジアナ波形等も付けたことで雑多感が滲み出だしてきましたので今回はここまでと致します。
★追記 2122/01/01
「ポケコン(G850)用拡張基板(その6)確認事項5」の記事にバンク No. 16 から 63 までを再調査した結果を記載しました。
[TOP] [ 前へ ] 連載記事 [ 次へ ]
Pic24MC68Kマイコン(その5)S-record ローダーの制作 [68K]
前回の記事で書いたように PIC と MC68K のインターフェース動作が確認できたので MC68K 側のメモリにプログラムをダウンロードするためのモトローラ S-record フォーマットファイルのダウンローダーを準備します。
今回は「3チップ構成68Kマイコンの構想(その3)Sレコード簡易ローダーの製作」の記事で書いた、以前 68008 環境で行ったことを 68000 環境に合わせて変更するだけなので既にある道を歩いているようなものです。
まずは MC68K 側のプログラムですが、PIC とのインターフェース部分等を若干変更しました。アセンブル環境は EASy68K を使っています。
試験用のダウンロード対象のデータは次のような簡略なものにしました。実行コードではないので冒頭の"start"ラベルは不要なのですが、END ステートメントの後にラベルを書かないと warning が表示されるのでその回避用です。
アセンブルした結果、出力された S-record ファイルの内容が下記になります。
PIC 側のプログラムと実行結果が下記になります。PIC 側のプログラムには上記の MC68K のプログラムのアセンブル結果内容を変換して貼り付けています。プログラム起動後Teratermで S-record ファイルの内容をコピペ操作をしています。S-record ローダーは1レコード毎にレコードタイプを出力するようにしています(末尾の"111"部分)。
問題無くダウンロードされているか簡易的に作ったメモリダンププログラムでメモリの内容を確かめてみます。PIC 側のメモリアドレスは MC68K の 1/2 なので、0x0100 からダンプすれば確かめられるはずです。
末尾のダンプリストを見ると問題無くダウンロードされているみたいですね。
次はいよいよ CP/M-68K の移植ですね。でもその前にブレッドボードに SDコネクタを付けないと・・w
[TOP] [ 前へ ] 連載記事 [ 次へ ]
今回は「3チップ構成68Kマイコンの構想(その3)Sレコード簡易ローダーの製作」の記事で書いた、以前 68008 環境で行ったことを 68000 環境に合わせて変更するだけなので既にある道を歩いているようなものです。
まずは MC68K 側のプログラムですが、PIC とのインターフェース部分等を若干変更しました。アセンブル環境は EASy68K を使っています。
S-record ローダーの MC68K側プログラム(アセンブラ) |
|
試験用のダウンロード対象のデータは次のような簡略なものにしました。実行コードではないので冒頭の"start"ラベルは不要なのですが、END ステートメントの後にラベルを書かないと warning が表示されるのでその回避用です。
S-record ローダーの試験用データ(アセンブラ) |
|
アセンブルした結果、出力された S-record ファイルの内容が下記になります。
アセンブルして出力された S-record データ |
---|
S021000036384B50524F47202020323043524541544544204259204541535936384B6D S1230200000102030405060708090A0B0C0D0E0F30313233343536373839414243444546C0 S12302200123123423453456456756786789789A00000000000000000000000000000000E2 S113024000000000000000000000000000000000AA S804000200F9 |
PIC 側のプログラムと実行結果が下記になります。PIC 側のプログラムには上記の MC68K のプログラムのアセンブル結果内容を変換して貼り付けています。プログラム起動後Teratermで S-record ファイルの内容をコピペ操作をしています。S-record ローダーは1レコード毎にレコードタイプを出力するようにしています(末尾の"111"部分)。
S-record ローダーのプログラムリストと実行結果(picle言語) |
|
問題無くダウンロードされているか簡易的に作ったメモリダンププログラムでメモリの内容を確かめてみます。PIC 側のメモリアドレスは MC68K の 1/2 なので、0x0100 からダンプすれば確かめられるはずです。
末尾のダンプリストを見ると問題無くダウンロードされているみたいですね。
簡易メモリダンププログラムでダウンロード結果の確認(picle言語) |
|
次はいよいよ CP/M-68K の移植ですね。でもその前にブレッドボードに SDコネクタを付けないと・・w
[TOP] [ 前へ ] 連載記事 [ 次へ ]
Pic24MC68Kマイコン(その4)PICとMC68Kのインターフェース処理 [68K]
前回の記事で書いたようにブレッドボード上で MC68K が漸く動くようになったので今回はPCとのインターフェース部分の動作確認について書いてみます。
基本的には以前 68008でやったことを踏襲しますが、メモリアクセス用のデータバスが16bitになったことで3番目にあった文字出力時の出力データ(CoData)を機能番号(FuncNo)の次に移動して MC68K から1回のアクセスで設定できるように変更しました。
アセンブラ環境は EASy68 の EDIT68K を使っています。アセンブラが出力するSフォーマットファイルをバイナリ変更後に自作の bin2state ツールで picleソース内に貼れる形式に変換しています。
今回の環境では MC68K 自体はビッグエンディアンですがPIC内処理はリトルエンディアンです。更にPICのPMP機能でメモリアクセスする際はビッグエンディアンになり、かつアドレス値は MS68K の 1/2 と言うややこしい状態になっています。
試験プログラムを実行してみると出力文字列を最後まで出し切らないうちに暴走して HALT してしまう状態でした。
ロジアナで動作を追ってみると MC68K のメモリ書込み処理(スタックへのリターン値書込み)が最初の内は問題無いのですが時間が経つと上手くいかなくなるようで一文字出力処理からのリターンで予期せぬアドレスに飛んでいるようです。
今回実施したことを全て書くと雑多なメモになってしまうので主要な確認事項と対策を以下に列挙します。
参考に東芝の「LogicIC_ HC_Series Application Note 2021-01-31」から引用した74HCシリーズの入出力電圧の規格を貼っておきます。
下図で赤丸印の部分が2個のPMWR/信号が結合してしまっている箇所です。
PMWR/のプルアップ抵抗を10Kから1Kに変更後のロジアナ波形が下図になります。1Kは小さ過ぎるような気もしますが動作上は問題無くなりました。試しにメモリチップを交換してみましたが状況は変わりませんでした。
ライト信号の幅が細すぎてマージンが少ないのでPMPの TimerM の設定を1から2に変更しました。変更後のロジアナ波形が下図で PMWR/ の信号幅がもともとの 80ns から 160ns 程度に増加しました。
参考に MC68K が動作中のロジアナ波形も貼っておきます。
BR/(バスリクエスト)がhighの部分が MC68K が動作している部分で、MC68K はPICへサービス要求(今回の場合1文字出力)を依頼する場合は RESET命令を実行することで RESET/ 信号を一定時間 low にします。
PIC側は RESET/ 信号を監視していてlowを検出するとバスリクエストして MC68K の要求内容を処理します。
最後に今回使用したメモリ試験プログラムと実行結果を貼っておきます。
末尾でダンプ表示後にある "hello, world" が冒頭で書いた MC68K のプログラムの要求に従って PIC が出力した文字列になります。
[TOP] [ 前へ ] 連載記事 [ 次へ ]
基本的には以前 68008でやったことを踏襲しますが、メモリアクセス用のデータバスが16bitになったことで3番目にあった文字出力時の出力データ(CoData)を機能番号(FuncNo)の次に移動して MC68K から1回のアクセスで設定できるように変更しました。
アセンブラ環境は EASy68 の EDIT68K を使っています。アセンブラが出力するSフォーマットファイルをバイナリ変更後に自作の bin2state ツールで picleソース内に貼れる形式に変換しています。
PICとのインターフェース試験用のMC68K側のhello出力処理(アセンブラ) |
|
今回の環境では MC68K 自体はビッグエンディアンですがPIC内処理はリトルエンディアンです。更にPICのPMP機能でメモリアクセスする際はビッグエンディアンになり、かつアドレス値は MS68K の 1/2 と言うややこしい状態になっています。
試験プログラムを実行してみると出力文字列を最後まで出し切らないうちに暴走して HALT してしまう状態でした。
ロジアナで動作を追ってみると MC68K のメモリ書込み処理(スタックへのリターン値書込み)が最初の内は問題無いのですが時間が経つと上手くいかなくなるようで一文字出力処理からのリターンで予期せぬアドレスに飛んでいるようです。
今回実施したことを全て書くと雑多なメモになってしまうので主要な確認事項と対策を以下に列挙します。
- PIC側PMPのPMWR/信号の設定
5V系のICに接続するにも関わらず、オープンドレイン設定になっていませんでした^^;
74HC に対して highレベルが 3V 程度では厳しいです Fig.1
設定をオープンドレインに変更しました
- PMWR/のプルアップ抵抗
10Kでプルアップしていましたが、ロジアナで観察するとメモリ書込み時にhighレベルに上がりきれない部分が見つかりました Fig.2
プルアップ抵抗を1Kに変更して動作が良くなりました Fig.3(2.7KではNGでした)
- PMPのTimerMの設定
PMWR/信号幅がが80ns程度で短すぎるので PMP の TimerM の値を1から2に変更しまた
変更後のPMWR/の信号幅は160ns程度になりました Fig4
参考に東芝の「LogicIC_ HC_Series Application Note 2021-01-31」から引用した74HCシリーズの入出力電圧の規格を貼っておきます。
Fig.1 74HCシリーズのスレッショルド |
|
下図で赤丸印の部分が2個のPMWR/信号が結合してしまっている箇所です。
Fig.2 PICのメモリライト(PMWR/のプルアップ10K)[sampling:25MHz] |
|
PMWR/のプルアップ抵抗を10Kから1Kに変更後のロジアナ波形が下図になります。1Kは小さ過ぎるような気もしますが動作上は問題無くなりました。試しにメモリチップを交換してみましたが状況は変わりませんでした。
Fig.3 PICのメモリライト(PMWR/のプルアップ1K)[sampling:25MHz] |
|
ライト信号の幅が細すぎてマージンが少ないのでPMPの TimerM の設定を1から2に変更しました。変更後のロジアナ波形が下図で PMWR/ の信号幅がもともとの 80ns から 160ns 程度に増加しました。
Fig.4 PICのメモリライト(TimerMを2に変更後)[sampling:25MHz] |
|
参考に MC68K が動作中のロジアナ波形も貼っておきます。
BR/(バスリクエスト)がhighの部分が MC68K が動作している部分で、MC68K はPICへサービス要求(今回の場合1文字出力)を依頼する場合は RESET命令を実行することで RESET/ 信号を一定時間 low にします。
PIC側は RESET/ 信号を監視していてlowを検出するとバスリクエストして MC68K の要求内容を処理します。
Fig.5 MC68K と PIC の処理実行部のロジアナ波形 [sampling:25MHz] |
|
最後に今回使用したメモリ試験プログラムと実行結果を貼っておきます。
末尾でダンプ表示後にある "hello, world" が冒頭で書いた MC68K のプログラムの要求に従って PIC が出力した文字列になります。
PICとのインターフェース試験用のMC68K側のhello出力処理(picle言語) |
|
[TOP] [ 前へ ] 連載記事 [ 次へ ]
Pic24MC68Kマイコン(その3)68Kからのメモリアクセス [68K]
前回の記事で書いたようにPICからのメモリアクセス動作は問題無いようなのですが、MC68K がうまく動かない状態だったので調べてみた結果等を書いてみます。
始めに評価環境についてですが、下の写真はブレッドボードで評価中の MC68K で1枚のブレッドボードの大半を占有していて幅広なので配線を挿す場所が上下ともに1列しかないのでロジアナが繋ぎ辛いですw
前回の記事でも書いた 元の刻印(だと思いたい)を消さずに16MHzにクロックアップした型名を刻印している主張の強いまがい品を使っていますが、後述のように少なくとも 8MHz では動くようです。
★追記 2021/12/22 {
16MHz で動かしてみた際のロジアナ画面が下図になります。
もしかしたら選別品で16Mhzでも動作するのでは?・・という一縷の望みを持っていましたが世の中そう甘くはありませんでした。16MHzでは謎の動作をしてだんまり後、HALTしました。
}
話を MC68K からのメモリアクセス確認に戻します。
PIC からのアドレス線は下図のように A10 が最上位アドレスで オープンドレイン出力し、+5V でプルアップしています。
更に A11 ~ A18 を 抵抗を介して A10 に接続しています。こうすることで MC68K がリセット後にアクセスする0番からのスタックとPCの初期値及びCP/M-68KのBIOSで使用予定の PIC と MC68K のパラメータ渡し用の実装メモリ末尾の領域を PIC 側からアクセス可能にしています。
実装しているメモリチップは 512K x 16bit なのでアドレス線は A0 - A18 の19本あります。
メモリ上に設定するPCの初期値をPIC側の 0400H に相当する 07F40H に設定して動かしてみましたが MC68K が暴走する状態でした(MC68Kへの供給クロックは 8MHz)。
そこでメモリ後半への切り替えを考えなくてもいいように PC初期値を 0008H にしてプログラムコードを 0008H 以降に設定した上で実行状態をロジアナで観察すると 0003H の PC の下位ワードを読込んだ後に、そのまま 0004H から実行しているようなので PCの初期値を 0010H に変更することでうまく動きました。
MC68K から出ているアドレス線は A1 - A22 でA0が無く、A0の情報は上位/下位バイトを指定する LB#/UB# に置き換わっているのです。つまり MC68K のアドレスは バイト単位で振られているということです。
PIC側は ワード(2バイト)単位でアドレスが振られるのでPIC側のアドレスを2倍すると MC68K のアドレスに対応するようになるということです。
従って、PIC側と MC68K 側とのメモリアドレスの対応は下表のようになります。
開始アドレスを 0010H にした場合のロジアナ波形を貼っておきます。
HALT/信号が highレベルになっている箇所が MC68Kが動作している部分で、拡大したものが下図になります。RESET/がlowレベルになっている部分は MC68K が RESET 命令を実行したことにより発生したものです(立ち上がり部分が画面に入っていませんが lowの時間は15.64us)
実行した試験プログラムと実行結果は下記の通りで、最後の方にある実行後のメモリダンプを見ると 0010H が MC68Kにより想定通り 1234H に書き換えられていることが判ります。
メモリ前半での動作が上手くいったので、最初にやりたかったメモリ後半での MC68K のメモリライト試験を行った際のロジアナ波形と操作ログを貼っておきます。
こちらも結果は想定通りで、okでした。
次回はいよいよ PIC と MC68K とのインターフェース処理の動作確認ですね。
[TOP] [ 前へ ] 連載記事 [ 次へ ]
始めに評価環境についてですが、下の写真はブレッドボードで評価中の MC68K で1枚のブレッドボードの大半を占有していて幅広なので配線を挿す場所が上下ともに1列しかないのでロジアナが繋ぎ辛いですw
前回の記事でも書いた 元の刻印(だと思いたい)を消さずに16MHzにクロックアップした型名を刻印している主張の強いまがい品を使っていますが、後述のように少なくとも 8MHz では動くようです。
ブレッドボード上の MC68K |
|
★追記 2021/12/22 {
16MHz で動かしてみた際のロジアナ画面が下図になります。
もしかしたら選別品で16Mhzでも動作するのでは?・・という一縷の望みを持っていましたが世の中そう甘くはありませんでした。16MHzでは謎の動作をしてだんまり後、HALTしました。
偽16MHz版 MC68HC000 の16MHz動作試験結果 |
|
話を MC68K からのメモリアクセス確認に戻します。
PIC からのアドレス線は下図のように A10 が最上位アドレスで オープンドレイン出力し、+5V でプルアップしています。
更に A11 ~ A18 を 抵抗を介して A10 に接続しています。こうすることで MC68K がリセット後にアクセスする0番からのスタックとPCの初期値及びCP/M-68KのBIOSで使用予定の PIC と MC68K のパラメータ渡し用の実装メモリ末尾の領域を PIC 側からアクセス可能にしています。
実装しているメモリチップは 512K x 16bit なのでアドレス線は A0 - A18 の19本あります。
PIC側のアドレス生成回路 |
|
メモリ上に設定するPCの初期値をPIC側の 0400H に相当する 07F40H に設定して動かしてみましたが MC68K が暴走する状態でした(MC68Kへの供給クロックは 8MHz)。
そこでメモリ後半への切り替えを考えなくてもいいように PC初期値を 0008H にしてプログラムコードを 0008H 以降に設定した上で実行状態をロジアナで観察すると 0003H の PC の下位ワードを読込んだ後に、そのまま 0004H から実行しているようなので PCの初期値を 0010H に変更することでうまく動きました。
MC68K から出ているアドレス線は A1 - A22 でA0が無く、A0の情報は上位/下位バイトを指定する LB#/UB# に置き換わっているのです。つまり MC68K のアドレスは バイト単位で振られているということです。
PIC側は ワード(2バイト)単位でアドレスが振られるのでPIC側のアドレスを2倍すると MC68K のアドレスに対応するようになるということです。
従って、PIC側と MC68K 側とのメモリアドレスの対応は下表のようになります。
PIC | MC68K |
---|---|
0000 - 03FF | 000000 - 0007FF |
0400 - 07FF | 0FF800 - 0FFFFF |
開始アドレスを 0010H にした場合のロジアナ波形を貼っておきます。
00000010Hから開始した際の全体波形(サンプリング:25MHz) |
|
HALT/信号が highレベルになっている箇所が MC68Kが動作している部分で、拡大したものが下図になります。RESET/がlowレベルになっている部分は MC68K が RESET 命令を実行したことにより発生したものです(立ち上がり部分が画面に入っていませんが lowの時間は15.64us)
MC68K動作部の拡大波形(サンプリング:25MHz) |
|
実行した試験プログラムと実行結果は下記の通りで、最後の方にある実行後のメモリダンプを見ると 0010H が MC68Kにより想定通り 1234H に書き換えられていることが判ります。
MC68Kが0010H開始アドレスの試験プログラムと実行結果(picle言語) |
|
メモリ前半での動作が上手くいったので、最初にやりたかったメモリ後半での MC68K のメモリライト試験を行った際のロジアナ波形と操作ログを貼っておきます。
こちらも結果は想定通りで、okでした。
000ff800Hから開始した際の全体波形(サンプリング:25MHz) |
|
MC68Kが0010H開始アドレスの試験プログラムと実行結果(picle言語) |
|
次回はいよいよ PIC と MC68K とのインターフェース処理の動作確認ですね。
[TOP] [ 前へ ] 連載記事 [ 次へ ]
Pic24MC68Kマイコン(その2)PICからのメモリアクセス [68K]
最初に通販ネタですが、今回使用予定のメモリAS6C8016(512Kx16bit)は通販での偽物に対するリスクヘッジで二つの店舗から2個ずつ購入しています。
yahooニュースの見分け困難!半導体の『模倣品』流通…真贋判定会社は大忙し「約3割が模倣品の懸念」を見ると外観で偽物チップを見分ける上で一番重要視されるのがインデックスマークの有無(偽物は表面を削るのでマークが消える)だそうです。
下の写真は今回購入したメモリです。確認のためにそれぞれの店舗から購入したチップを並べて比較してみるとDIP変換基板に半田付けした方はインデックスマークが・・・無いorz
ハードディバッグ時に偽チップの可能性まで考えるのは効率が悪いのでブレッドボード上のメモリを早々にインデックスマーク有りのチップに変えました。
また、CPU本体の MC68HC000P16 も千円以下の安価な物を幾つか海外の通販で購入していますが、最近届いたものが下の写真のように元の刻印を消しもしないである意味正々堂々としたまがい品でしたw
元の刻印のようにP12であれば私の所有しているDIPのMC68HCの中では最高速度かもしれないのでまだいいのですが "P12" も偽刻印で実は・・ってことにならないか不安です。
今回も前回の記事と同様に通販での偽物ネタから入ってしまいましたが、本題のPICからのメモリアクセスの検証結果についてメモを残しておきたいと思います。
始めにPICから供給する68K用のクロックの確認からです。PICからは16MHzと8MHzを供給して68Kのクロックをどちらにするかジャンパーピンで切り替えられるようにする予定です。
下図がロジアナで確認した結果で、ロジアナのサンプリングとの関係でピッタリの数値ではないですが想定通り出ているようです。
PICからのメモリリードとライト時のロジアナ波形が下図になります。PICのパラレルマスタポート(PMP)モジュールのマスターモードを使用してアクセスしています。ウエイトのパラメータ設定はアクセス時の前段/中段/後段の3つ設定できるようになっていて、下図は中段(WAITM)のみ1の設定で前段と後段はゼロの状態です。
SelUpper/はPIC側の8bitデータバスと68K側の上位バイトバスを接続しているHC245をアクティブにするための信号です。
メモリをアクセスする上では問題無い波形に見えるのでメモリライト&リードのテストプログラムを実行してみました。
下記が実行結果で問題無くメモリにアクセスできているようですね。
因みに上で書いた中段のウェイトをゼロにした場合のロジアナ波形が下記で、メモリテストプログラムの結果もNGだったのでウェイトパラメータは中段のみ1で前段と後段はゼロで決定です。
次の段階として MC68Kを動かしてみたいのですが、リセットがうまくかからないようで動作が変です^^;
68Kのマニュアルを再度チェックしたところ、68Kをリセットするためには RESET#のみならず、HALT# もアクティブにする必要があることに気が付きました(HALTは使わないものとして16MHzのクロック出力のためのピンを追加しましたorz)
いつものことではありますがPICのピン不足に悩んでしまいます。今回使用するメモリはライト時に OE# はdon't care(詳細は前回の記事を参照)なので下記の変更をすることにしました。
変更後のメモリリード/ライト時のロジアナ波形が下図になります。想定通りですね。メモリ試験プログラムの結果もOKでした。
それでもまだ68Kがうまく動かないのようなので続きは次回のお楽しみということで今回はここまでにします。
[TOP] [ 前へ ] 連載記事 [ 次へ ]
yahooニュースの見分け困難!半導体の『模倣品』流通…真贋判定会社は大忙し「約3割が模倣品の懸念」を見ると外観で偽物チップを見分ける上で一番重要視されるのがインデックスマークの有無(偽物は表面を削るのでマークが消える)だそうです。
模倣品流通のニュース |
|
下の写真は今回購入したメモリです。確認のためにそれぞれの店舗から購入したチップを並べて比較してみるとDIP変換基板に半田付けした方はインデックスマークが・・・無いorz
購入したメモリチップ |
|
ハードディバッグ時に偽チップの可能性まで考えるのは効率が悪いのでブレッドボード上のメモリを早々にインデックスマーク有りのチップに変えました。
また、CPU本体の MC68HC000P16 も千円以下の安価な物を幾つか海外の通販で購入していますが、最近届いたものが下の写真のように元の刻印を消しもしないである意味正々堂々としたまがい品でしたw
元の刻印のようにP12であれば私の所有しているDIPのMC68HCの中では最高速度かもしれないのでまだいいのですが "P12" も偽刻印で実は・・ってことにならないか不安です。
最近届いた MC68HC000 |
|
今回も前回の記事と同様に通販での偽物ネタから入ってしまいましたが、本題のPICからのメモリアクセスの検証結果についてメモを残しておきたいと思います。
始めにPICから供給する68K用のクロックの確認からです。PICからは16MHzと8MHzを供給して68Kのクロックをどちらにするかジャンパーピンで切り替えられるようにする予定です。
下図がロジアナで確認した結果で、ロジアナのサンプリングとの関係でピッタリの数値ではないですが想定通り出ているようです。
PICからのクロック信号(サンプリング:100MHz) |
|
PICからのメモリリードとライト時のロジアナ波形が下図になります。PICのパラレルマスタポート(PMP)モジュールのマスターモードを使用してアクセスしています。ウエイトのパラメータ設定はアクセス時の前段/中段/後段の3つ設定できるようになっていて、下図は中段(WAITM)のみ1の設定で前段と後段はゼロの状態です。
SelUpper/はPIC側の8bitデータバスと68K側の上位バイトバスを接続しているHC245をアクティブにするための信号です。
PICからのメモリリード(サンプリング:50MHz) |
|
PICからのメモリライト(サンプリング:50MHz) |
|
メモリをアクセスする上では問題無い波形に見えるのでメモリライト&リードのテストプログラムを実行してみました。
下記が実行結果で問題無くメモリにアクセスできているようですね。
メモリ試験プログラムと実行結果(picle言語) |
|
因みに上で書いた中段のウェイトをゼロにした場合のロジアナ波形が下記で、メモリテストプログラムの結果もNGだったのでウェイトパラメータは中段のみ1で前段と後段はゼロで決定です。
ウェイト無しでのPICからのメモリリード(サンプリング:50MHz) |
|
ウェイト無しでのPICからのメモリライト(サンプリング:50MHz) |
|
次の段階として MC68Kを動かしてみたいのですが、リセットがうまくかからないようで動作が変です^^;
68Kのマニュアルを再度チェックしたところ、68Kをリセットするためには RESET#のみならず、HALT# もアクティブにする必要があることに気が付きました(HALTは使わないものとして16MHzのクロック出力のためのピンを追加しましたorz)
いつものことではありますがPICのピン不足に悩んでしまいます。今回使用するメモリはライト時に OE# はdon't care(詳細は前回の記事を参照)なので下記の変更をすることにしました。
変更内容 |
---|
-+- | > > 10K 追加 > | 68K:RESET/ ----+------------- PIC:RA0 -+- | > > 10K > | ↓変更 68K:HALT/ ----+------------- PIC:RA1(BG/ 入力から変更) ・HC368 Y2(5pin) の接続先を MCS/ から AS/に変更 ・PICの11ピン(MRD/)を RB13として BG/入力に変更 |
変更後のメモリリード/ライト時のロジアナ波形が下図になります。想定通りですね。メモリ試験プログラムの結果もOKでした。
変更後のPICからのメモリリード(サンプリング:50MHz) |
|
変更後のPICからのメモリライト(サンプリング:50MHz) |
|
それでもまだ68Kがうまく動かないのようなので続きは次回のお楽しみということで今回はここまでにします。
[TOP] [ 前へ ] 連載記事 [ 次へ ]