Almost lost technologies

ここは昔の CPU を用いた工作記事を書くために用意しました。

MN1613 の外部タイミング

TMS9900 ボードは動かないため、CPU故障とみなして手配するとして、並行して検討中の中の MN1613 のタイミング考慮です。

まず回路図

 

 

MN1613CPUボード1/2

MN1613CPUボード1/2

MN1613CPUボード2/2

MN1613CPUボード2/2

次にCUPLでのU1613CL0側です。

---------- >8 ---------- >8

Name U1613CTL0;
Partno KF007013;
Date 19/11/24;
Revision 01;
Designer Alp;
Company Alp Design;
Assembly System 18-4-1613 Bus Sequencer;
Location U06;
Device G16V8;

/* *************************************************************** */
/* System 18-4 bus control glue logic */
/* */
/* *************************************************************** */
/* target device GAL18V8-15 */
/* *************************************************************** */

/** inputs **/
Pin 1 = ADSD;
Pin 2 = !DTSD;
Pin 3 = WRT;
Pin 4 = IOP;
Pin 5 = !OE;
Pin 6 = !ZERO;
Pin 7 = !SAS;
Pin 8 = A06;
Pin 9 = A07;
Pin 11 = A08;

/** outputs **/
Pin 19 = CYC1;
Pin 17 = !ZCE;
Pin 18 = SCE;
Pin 12 = !ME;
Pin 13 = !IE;
Pin 15 = !BUFE;
Pin 14 = !RD;
Pin 16 = !WR;
/* logic equations */
CYC1 = ADSD # (!ADSD & !DTSD & CYC1);

ME = (CYC1 & !IOP) # (DTSD & !IOP);
IE = (CYC1 & IOP) # (DTSD & IOP);
RD = (CYC1 & !ADSD & !WRT) # (DTSD & !WRT);
WR = (CYC1 & !ADSD & WRT) # (DTSD & WRT);
BUFE = (CYC1 & !ADSD & WRT) # (DTSD & WRT) # (CYC1 & !ADSD & !OE) # (DTSD & !OE);

ZCE = ME & ZERO;
SCE = IE & SAS & !A06 & !A07 & !A08;

WR.oe = 'b'1;
RD.oe = 'b'1;
ME.oe = 'b'1;
IE.oe = 'b'1;
ZCE.oe = 'b'1;
SCE.oe = 'b'1;
CYC1.oe = 'b'1;
BUFE.oe = 'b'1;

---------- >8 ---------- >8

 Name U1613CTL1;
Partno KF007014;
Date 19/11/26;
Revision 01;
Designer Alp;
Company Alp Design;
Assembly System 18-4-1613 Bus Decorder;
Location U07;
Device G16V8;

/* *************************************************************** */
/* System 18-4 IO decorder Glue logic */
/* *************************************************************** */
/* target device GAL18V8-15 */
/* *************************************************************** */

/** inputs **/
Pin 1 = ADSD;
Pin 2 = !DTSD;
Pin 3 = EA0;
Pin 4 = EA1;
Pin 5 = WAIT;
Pin 6 = A09;
Pin 7 = A10;
Pin 8 = A11;
Pin 9 = A12;
Pin 11 = A13;
Pin 12 = A14;
Pin 13 = A15;
Pin 19 = A16;

/** outputs **/
Pin 18 = !DTAK;
Pin 17 = A17;
Pin 16 = A16;
Pin 15 = !ZERO;
Pin 14 = !SAS;

/* logic equations */
ZERO = !A18 & !A17 & !A16 & !A15 & !A14 & !A13 & !A12 & !A11 & !A10 & !A09 & !A08;
SAS = !A16 & !A15 & !A14 & !A13 & !A12 & !A11 & !A10 & !A09 & !A08;

A18 = (EA1 & ADSD) # (A18 & !ADSD);
A17 = (EA0 & ADSD) # (A17 & !ADSD);

DTAK = !WAIT & DTSD;

DTAK.oe = 'b'1;
A17.oe = 'b'1;
A16.oe = 'b'1;
ZERO.oe = 'b'1;
SAS.oe = 'b'1;

 ---------- >8 ---------- >8

 

 

現在手に入るCPU資料のタイミング規定は色々おかしいところがあって悩みました。

  1. !DTAK をL固定したときのタイミングがわからない。!DTAK よりリードデータは早くなければならないが、!DTSDより 70nS 遅れまで可能とある。この70nSはおそらく !DTAK L 固定時の要求タイミングか。これと関連して!DTAKをどのタイミングで返せば内部で遅れが出ないのかも不明。!DTAK をL固定するのと !DTSD と !DTAK を直結した場合の動きが違うかどうかも不明。一応タイミング依存解釈上命令フェッチは!DTAKをL固定しないと遅れが発生する。他のメモリアクセスは 35nS まで、と解釈して進める。
  •  DTAK 立ち下がり後、BSxx がハイインピーダンスになるまでの規定がない。!OEとの時間関係もない。これは想像がつくが、さらに !OEが上がるのが遅く、!DTSDがたち下がるよりさらに遅い可能性があるのでバッファの切替えタイミングを作るのが困難。多分時間の前後関係があって保証されていると思われるけど、このタイミングチャートは酷い。

それこれ合わせて、ざっと線だけ引いてみました。グリッドは 1/4 Clock の16.325nSです。

READ時タイミング(概略)

READ時タイミング(概略)

WRITE時タイミング(概略)

WRITE時タイミング(概略)

ここから ZERO ページ RAM のアクセスタイム要求は 150nS (ME依存) くらいでしょうか。あまり速い RAM を持ってくるとCPUのアドレス後縁の駆動とぶつかります。

まだ作成は全然手を付けていません。一応!STRTとかは PICで操作することにしてありますが、どうしようかなぁ。