レジスタ&ALU試作(成功?)

f:id:marlesan:20160807174014j:plain:w300
完璧に仕上がったクロック回路をひっさげて、いざ失敗したレジスタ&ALU回路のデバッグへ赴かん!……って、あれ、一昨日から配線弄ってないのにちゃんと動いてますけど……。これは「なんとなく直っちゃった」というできれば避けたかった事態ですね。釈然としないままTD4の命令を一通り実行できることを確認(JNCだけ命令デコーダ絡みなのでパス)。

以下、気付いたことなど。

  • レジスタの値がめちゃくちゃに変化する!という現象は単に、MOVE命令でImDataを0000にし忘れてただけの気がします。レジスタB→Aとデータをコピーする時にImDataが加算されてるのに気付かず「誤動作だ!」と早とちりしていたのですね。誤動作してるのは私の頭でした。
  • Dレジスタのカウンタが動作してなかった現象は謎です。↑と同じようなミスだと考えると、DレジスタのLOADフラグをONにしてしまっていたか。ただImDataはともかくセレクタ信号ABとレジスタのLOADフラグは本の記述と指差し確認してたはずなんですが。スッキリしない……。
  • 74HC161の出力ピンからLEDを直接ドライブしたために定格電流超えで誤動作 or IC破壊していた疑いは、無罪放免となりました。まず161は全部無事でした。ロード、カウント、リセットともに完全動作することを確認。また、↑の写真はトランジスタでLEDをドライブしてますが、全部161の出力に直接ぶらさげても正常動作しました(定格を超えてるのは間違いないので長い目で見ればアウトでしょうが)。ちなみに単独の動作テスト時にICの差込み位置が1個ズレて200mAくらい流しちゃうウッカリを3度ほどやらかしましたが、それでも(今のところは)壊れてません。結構丈夫だね!
    • 【追記】74HC161のデータシートをよく見てみたら、1ピンあたりの定格電流(Iout)が±25mAで、全ピン合計(Icc)が±50mAということっぽい。それなら今回使ってる抵抗内蔵LEDを4本直接光らせても問題ではなさそうです(赤はギリギリかも)。
  • すると失敗時に161を単独で動作確認して「クロック立ち下がりでも出力が変わる!」とか言ってたのが怪しい。今回、配線は弄ってないとしつつもそれはレジスタとALU部分で、クロック回路は前回作ったモジュールに入れ替えたのでここが原因だったのかなぁ。チャタリングが解消されてるか確認すると書きながら強くは疑っておらず、失敗時のクロック回路を早々にバラして新規に実験を始めてしまったのが悔やまれる。写真から配線を再現して波形確認して、という手順でもうちょっと原因究明できますが、そんな地味な作業で日曜日を終わらせたくないので平日に暇を見てやります。多分。

次は命令デコーダの試作です。