CPU実験室

誰も見向きもしない古いCPUをいじって動かしてみようというプロジェクトです

USBコントローラの配線ミス?

コントロールレジスタへの書込みがうまく行かずプログラミングに失敗している
とも考えられます。
まずI/Oとしてレジスタを正常に読み書きできるかどうかですが既にRIDとCCONF
は正常にアクセスできることは見ました。
ところがこれは下4ビットしか確認できません。
そこでR/W可能なレジスタとしてMAMSKレジスタに0~255のデータを書込み、
読出しベリファイをしてみました

  for(x=0;x<256;x++)
  {
    WriteUSB(USB_MAMSK,x);
    y=ReadUSB(USB_MAMSK);
    if(x!=y)
    {
      sprintf(str,"X=%02X Y=%02X\n\r",x,y);
      putstr(str);
    }
  }

すると書込んだデータと違うものが読み出されるパタンがヒットしました

書込み     読出し
0x2? →  0x6?
0x3? →  0x7?
0x4? →  0x0?
0x5? →  0x1?
0x8? →  0xC?
0x9? →  0xD?
0xA? →  0xE?
0xB? →  0xF?   ?は書いた値と同じ

上位4ビットが化けてしまっています。
ビット列で書くとD6ビットのセット/リセット状態が不安定のようです

そこでUSBN9603につながるデータラインD6をモニタしてみると

イメージ 1


  ch1:D6 ch2:USBN9603チップセレクト

データラインのレベルが中途半端で非常に怪しいす。
何か別のラインと接触してコンフリクトしてる感じです