80C188でSBC(その2:失敗に学ぶ編:)の続き
80C188でSBC(その2:失敗に学ぶ編:) - aki_iic’s blog
1.n80C188_v1の問題点(振返り)
・CPUからのA19-A16をALEでlatchしていなかった。
・nS2(M/IOに相当)もALEでlatchしていなかった。
・A18-A16(4Mbit SRAMのアドレス)のlatchしたアドレスをSRAMのA18-16として提供していなかった
MPX busのaddressをaleでlatchしていないという基本的なミス(恥ずかし)・・・
2.対策内容
・A19,A18のPSD入力は(偶然)latch指定可能だったのでそのまま使用。A17,A16はlatch選択不可能だったのでlatch可能なピンに再割当て
・nS2をlatchは!aleでPSD内のマクロセル(DFF)でラッチし、nS2Lとして使用(n80c188_v1で適用済)
・4Mbit sramへのlatchしたA18-16をPSDの出力ピンに割当
・上記ピン数確保の為にnCFピンをPSDから80c188XLのPCS0に移動
3.PSDのピン再割り当て

図右上のCPLD inputがlatched addressに設定されています。A19-A16全て。
4.80c188メモリリード・ライトタイミング(再掲)


5.修正したPSDのPLA(抜粋:赤字が修正部分)
equations
rs0 = *1;
csiop = *2;
fs0 = *3;
! nCS16550 = *4;
! nRAM = *5;
! nFT245RD = *6;
FT245WR = *7;
a18o = a18;
a18o.oe = Vcc;
pb7.oe = _reset;
a16o = a16;
a16o.oe = Vcc;
a17o = a17;
a17o.oe = Vcc;
nS2L := nS2;
nS2L.ck = !ale;
la0.le = ale; "latched by ale/as
la1.le = ale; "latched by ale/as
la2.le = ale; "latched by ale/as
la3.le = ale; "latched by ale/as
la4.le = ale; "latched by ale/as
la5.le = ale; "latched by ale/as
la6.le = ale; "latched by ale/as
la7.le = ale; "latched by ale/as
a16.le = ale; "latched by ale/as
a17.le = ale; "latched by ale/as
a19.le = ale; "latched by ale/as
a18.le = ale; "latched by ale/asend n80188v0
A19-16をALEでlatchし、A18o-A16oとしてSRAMのA18-16に出力する。
6.再設計した回路図(n80c188_v2)

5月5日にJLCPCBに発注し、5月7日に出荷された様なので来週には手元に届くと思われる↓

7.PCSnレジスタ関連(80C188XL manualより)

PCBはPeripheral Control Block(プリント基板ではなく)なるintel 方言


レジスタ設定は基板が届いてから・・・dba更新も
8.パターン図(全レイヤ合成)

9.基板イメージ(3D:部品面)

(つづく)
前回のトピック:
*1:address >= ^h80000) & (address <= ^h81FFF) & (nS2L
*2:address >= ^hF000) & (address <= ^hF03F) & (!nS2L
*3:address >= ^hF8000) & (address <= ^hFFFFF) & (nS2L
*4:address >= ^hF090) & (address <= ^hF09F) & (!nS2L
*5:address >= ^h0000) & (address <= ^h7FFFF) & (nS2L
*6:address >= ^hF080) & (address <= ^hF08F) & (!nS2L & !_rd
*7:address >= ^hF080) & (address <= ^hF08F) & (!nS2L & !_wr