2025年07月05日

シフトレジスタを使用した簡易リモートIO

今回はマイコンやFPGAを使用せずにシフトレジスタとロジックIC、タイマICのみで簡易リモートIOを実現する方法について紹介したいと思います。

少し離れた場所にボタン入力やLED出力等のIO信号を複数、届ける場合、そのまま配線すると信号線に応じて多くの配線が必要となります。そこまで信号の速さが求められない場合は信号線をシリアル化して省配線化できれば理想的です。一般的にはマイコンやFPGA等でシフトレジスタを制御しますが、使用前にマイコンへ書き込みが必要だったり、マイコン周辺の回路も必要になってくるため、より多くの部品が必要になります。

今回はシフトレジスタとロジックICを組み合わせて、マイコンを使用せずにIO信号をシリアル化して、省配線化する方法を紹介したいと思います。この方法で片方向の同期で2線(同期クロック、データ)、双方向の同期で3線(同期クロック、データx2)の信号線で実現することができます。例えば8bitシフトレジスタを使用する場合、片方向で8線から2線で済むことになります。双方向でも16線から3線で済みます。本数が多い場合や伝送距離が長い場合は省配線による効果が非常に大きくなります。


主な使用部品としては、入力ICにSN74HC165、出力ICにSN74HC595、クロック生成にLMC555、ラッチ用カウンタに74HC4017、クロックとラッチの論理変換に2bitのインバータSN74LVC2G04の部品で実現できます。



設計のポイントとしては下記の3点です。
@シフトタイミング
Aラッチ/ロードタイミング
Bリセット後のクロック


@シフトタイミング
 SN74HC165、SN74HC595ともに立ち上がりでシフトするため、同じクロックを使用すると信号変化のタイミングと同時に信号を取り込んでしまうため、タイミングによってデータがずれてしまう問題が生じます。そのため、片方のクロックを反転させることで半周期タイミングをずらすことでシフト後の安定したタイミングで信号の取込みを行うようにしています。具体的にはSN74HC165にメインクロック(MCLK)、SN74HC595にメインクロックの反転クロック(/MCLK)を与えています。

Aラッチ/ロードタイミング
 74HC4017でメインクロック(MCLK)をカウントさせて8つ目にサブクロック(SCLK)として同期信号を生成させてます。9つ目の信号をリセット信号に接続することでカウンタリセットさせています。また、SN74HC165はHighでシフト、ローでパラレル信号の取込みなので同期信号の反転信号(/SCLK)を与えています。さらにそのままでは同期信号立ち上がりとメインクロックの立ち上がりがほぼ同じタイミングのため、タイミングによって先にシフトしてしまいます。その対策としてSN74HC165の反転同期信号(/SCLK)をCRフィルタで遅延させた信号(/SCLK_Delay)を使用することでロード後の最初のクロック(MCLK 0番目)を無視させています。

Bリセット後のクロック
 配線数を減らすためにメイン基板とサブ基板でメインクロック(MCLK)の配線をなくしています。その代わりにサブ基板では同期クロック(SCLK)からメインクロック(MCLK)を生成しています。LMC555やNE555にはリセット入力があるため、そのピンに反転同期クロック(/SCLK)を与えることでリセットさせてメインクロック(MCLK)を同期させています。ただし、LMC555やNE555の注意点としてリセット直後と通常の繰り返しでチャージ電圧が異なる仕様のため、リセット直後のみ周期が遅くなる問題があります。この問題に対して、リセット直後も通常の周期と一致させるためにリセット時にトランジスタを介して予めコンデンサをチャージさせることで回避しています。


TimingChart.jpg





実際に基板を起こして作ってみた基板がこちらです。

img1.jpeg
使い方としては下記のように電源を供給して、メイン基板とサブ基板に通信線と電源線を配線することで各IOが同期します。実際に省配線で入力8bit+出力8bitのIOを同期させることができました。

img3.jpeg


マイコンやFPGAを使用せずにシフトレジスタを活用するのは一般的には想定された使い方ではないと思いますが、シフトレジスタとロジックIC、タイマICのみで簡易リモートIOを実現することができました。今回はユーザ入力を想定しているため、メインクロックは8kHz、同期速度は1kHz程度で安定性や伝送距離(数m程度)を重視した設計にしています。今回の回路図やガーバー等はこちらで公開しています。
posted by Crescent at 00:00| Comment(0) | TrackBack(0) | 電子工作 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック