標準TTLだけ(!)でCPUをつくろう!(組立てキットです!)
(ホントは74HC、CMOSなんだけど…)
[第254回]

●前回の説明に追記しました

前回の、タイミングチャートを使っての説明の中で、舌足らずなところがあることに気がつきましたので、追記いたしました。
2009.6.19pm6:20ごろに追記いたしましたので、それ以前に前回([第253回])をお読みいただいた方は、もう一度前回の追記もお読みくださいませ。

●HLレジスタ回路を変更しました

前回の説明で、MOV H,MとMOV L,Mに対しては、現在の回路ではだめで、レジスタ出力から外部アドレスバス出力への間にラッチが必要であることに気がつきました。
しかし、もう基板にはそのようなICの追加(必要なのは、74HC373が2個)をするスペースは、とてもありません。
これはもう諦めるしかないか、とも思ったのですが、せっかくここまでやってきたのですから、それでは余りに残念です(無念です)。

そこでうんうんうなりながら考えてみましたら、おお、なんと。
現在の基板配線の状態で、そこからなんとか変更可能な範囲で、対策をとることができそうな、回路変更案を思いつきました。

問題になっているのはHLレジスタ回路だけですから、HLレジスタの出力のみにラッチを追加することにしました。
でも、その追加する場所がありませんよ。
いーえ。
HLレジスタのみにラッチをつけるのでしたら、こういうことでよいはずです。

変更後のHLレジスタの回路図です。

どこを変更したのでしょうか。
こちら([第23回]HLレジスタ回路図)と比較してみてください。
そうなんです。
外部アドレスバスへの出力ゲートとして使っていた74HC244を取ってしまって、そこに74HC373をはめこんだのです。
74HC244も74HC373も同じ20pinのICです。
勿論端子の接続は異なりますが、それくらいはなんとかなります(なんとかしなければいけません)。

74HC244を74HC373に置き換えただけではだめです。
74HC373がラッチするための信号も用意しなければいけません。

追加した74HC373のG端子に入力する信号は、MOV命令回路に新たに追加した回路で作られます。

図の赤で囲ったゲート回路が、その回路です。
MOV r,Mだけではなくて、MOV命令全部に対して働きます。
ムダな動作も含むことになりますが、間違いではありません。
ムリムリの中での対策ですから、いささか乱暴な回路ではありますが止むをえません。

この回路がどのように働くのか、タイミングチャートで説明します。
前回お見せしたタイミングチャートに、このHLlatch信号を追加しました。

HLlatchはMOV命令のM2の期間中だけ、Lになります。
HLlatchはHLレジスタの新たに追加した(74HC244を置き換えた)74HC373のG入力につながっています。
(タイミングチャートの下から4番目にあるHC373Gという信号は、追加したHC373ではなくて、レジスタ本体のHC373のG入力です)

74HC373はG入力がHの期間は入力が出力に筒抜けになります。ですからこの期間はただの出力バッファと同じです。
G入力が↓になる瞬間に入力データをラッチします。
上のタイミングチャートのT4の始めのタイミングです。
そしてG入力がLの期間中は、ラッチしたデータをそのまま保持します。

変更前の回路では、MOV H,MのT4の期間に、regWRによってHレジスタにメモリからのデータが書き込まれると、HLレジスタからアドレスバスへの出力も変化してしまうことが問題だったのですが、今回変更した回路では、新たに追加したラッチ(74HC373)が、MOV命令のときのM2(T4、T5)の期間中は、外部アドレスバスへの出力を、書き換え前の値のままホールドしますから、そのような問題は発生しなくなります。

●試作基板も変更しました

もちろん回路図を直しただけでは、本当にこれでいいのかどうかはわかりません。
実際に回路を変更して試してみる必要があります。

試作基板の、74HC244を74HC373に置き換えた部分です。

上から2列目、左の2個が置き換えた74HC373です。
ICソケットを使っています。

こちらは同じ部分の基板裏側です。


2009.6.19upload

前へ
次へ
ホームページトップへ戻る