ROM回路の部分試作

というわけでTD4の製作日記です。
方針としては、まずブレッドボードでモジュールごとに回路を組んで動作確認してから基板実装に移ります。 まずはROM回路から。

f:id:marlesan:20160802000116j:plain:w300
機能別にボードを分けてます。一番下がアドレスデコーダで、ROM上の読み出したいデータの番地を2進数で入力すると、対応する8bitDIPスイッチに繋がる信号線がONに(負論理なのでLに)なります。2進数の入力はCPU本体から来るところ、ここでは4bitDIPスイッチで入力しています(スイッチが上下逆になっているのは、2日前の私がプルダウンを知らなかったからです)。それから本番では4bit2進数を16bit10進数(と言っていいのか?)にデコードしますが、実験回路ということで3bit2進→8bit10進のデコーダになっています。

真ん中がROM部分です。本番で16個作るうちの2個をボード上に実装しています。アドレスは左が0番地、右が6番地になるようデコーダと結線していて、今、アドレス入力用のDIPスイッチが0110、つまり6番地を指しているので、右側のLEDが光って読み出し中であることを示しています。ばっちりですね。ところで今回、回路製作の手間を省くために抵抗内蔵LEDというものを買いましたが、大きすぎて本番回路のROM部分の表示用としては使えないようです。残念。

ROM部分のDIPスイッチはプルアップで配線されています。すなわち、スイッチが開(OFF)の時にHを出力し、閉(ON)の時にLを出力する負論理の信号なので、それを正論理に反転してCPUに渡すのが上のデータバス部分。今はCPUではなく隣のLEDアレイに接続して読み出したデータを表示しています。6番地(右)のDIPスイッチが01010101になっていて、LEDも01010101(右詰め)で光っているのでこちらもばっちり。スイッチを色々弄っても、それに応じて正しく動作します。

私は電子工作は素人ですが、高専情報工学科で一応の専門教育を受けているのでこういう0と1の2値論理の世界には親しみがあります。 一応というのは学校に問題があったのではなく、私が不真面目な学生だったゆえの但し書きで、 論理回路設計の授業はレポート提出を無視し続けて説教されたというのが一番鮮やかな記憶だったりするので、 こうして10年以上前に学んだことがなんとなくでも体に染み付いてるのを感じるのは不思議な気持ちです。