2022年04月23日 | 更新。 |
74HC595は、74HCシリーズの高速CMOSロジックICの一つで、シリアル入力・パラレル出力の8ビットのシフトレジスタの機能を持っています。主にシリアル-パラレル変換回路として利用されます。
マイコンなどのICの出力ピン数の拡張に便利な様に、シフトレジスタの出力にはストレージレジスタが接続されています。このストレージレジスタの働きにより、パラレル-シリアル変換の途中結果は出力ピンに出力されず、変換結果だけが出力されます。
シフトレジスタを構成する8つのDフリップフロップに共通の負論理の非同期クリア端子があり、この端子をLにする事により、速やかにシフトレジスタの全ビットをLにリセットできます。
シフトレジスタの最終段のDフリップフロップの出力は、ストレージレジスタを通さずに取り出す事ができ、この信号を別の74HC595のシリアル入力に接続する事で、シフトレジスタの段数(パラレル出力のビット数)を8ビット単位で増やす事ができる様になっています。
また、パラレル出力の各端子には3ステートバッファが入っており、パラレル出力をハイインピーダンス状態にする事ができます。ハイインピーダンス状態にするかどうかの制御信号は1つで、8ビットのパラレル出力をまとめて、通常の出力(HまたはLの出力)とハイインピーダンス状態のどちらにするかを切り替えます。
74HC595よりも入力電圧の閾値を下げてTTLと接続できるようにした74HCT595や、TTLの74LS595も、機能やピン配置は、このページで説明する74HC595と同じです。
74HC595を使ってマイコンのI/Oピンの拡張をしたい場合は、74HC595を使ってArduinoの出力ピンを拡張する方法という記事に、参考になる情報が載っています。
74HC595の入手先を知りたい方は、このページの最後の購入ページの一覧表をご利用ください。
74HC595はシリアル入力・パラレル出力の8ビットシフトレジスタのICですが、74HCシリーズの汎用ロジックICには、他にもシリアル入力・パラレル出力の8ビットシフトレジスタのICがあります。それらの類似ICについて、74HC595と比較しながら説明します。
74HC595と機能が似た汎用ロジックICとして74HC594がありますが、74HC594には3ステートバッファが内蔵されておらず、出力をハイインピーダンス状態にする事はできません。その代わり、74HC594には8ビットのストレージレジスタに負論理の非同期クリア端子があり、この端子をLにする事で、速やかに全てのパラレル出力端子をLに初期化する事ができます。
Arduino Unoなどの、I/Oピンの少ないマイコンの出力ピンを拡張するために74HC595が使われる事がありますが、3ステート出力の必要がないなら、74HC594で代用できます。
シリアル入力、パラレル出力の8ビットのシフトレジスタとしては、他にも74HC164があります。74HC164にはストレージレジスタが内蔵されていませんので、シリアル-パラレル変換中に、変換の途中結果が出力されてしまいます。そのため、74HC164は、マイコンなどのICの出力ピン数の拡張には向いていません。シリアル-パラレル変換に使う場合は、変換の中間結果が出力されてもよい用途にしか使えません。
リングカウンタやジョンソンカウンタを構成するなど、シフトクロックが入るごとに出力の状態がどう変わるかを逐一出力する用途には、74HC595より74HC164の方が向いています。
74HC595のピン配置を図1に示します。また、DIPパッケージのTC74HC595AP(東芝セミコンダクター製)の写真を写真1に示します。
注:このページは、Texas Instruments社のSN74HC595のデータシートを参考に記述していますので、ピンの名称はそのデータシートに従っています。他社の互換ICの場合、ピン名称が異なる場合がある事に注意してください。他社の互換ICのピン名称に関しては、74HC595を使ってArduinoの出力ピンを拡張する方法(2)に説明が載っています。
各端子の意味を、表1にまとめました。
名称 | 意味 |
---|---|
SRCLR | シフトレジスタの負論理の非同期クリア端子です。この端子をLにすると、シフトレジスタの全ビットがLに初期化されます。SRCLR端子は、2つのクロック信号(SRCLK信号とRCLK信号)とは非同期で動作します。 |
SER | シリアル入力端子です。SER端子に入力した信号は、SRCLK信号の立ち上がりに同期して、シフトレジスタの初段のDフリップフロップに取り込まれます。 |
SRCLK | シフトレジスタのシフトクロック入力端子です。SRCLK信号の立ち上がりに同期して、シフトレジスタが動作します。(ポジティブエッジトリガ) |
QH' | シフトレジスタの最終段の出力端子です。QH'信号を、他の74HC595のSER端子に接続する事により、シフトレジスタの段数(パラレル出力のビット数)を8ビットずつ増やす事ができます。 |
RCLK | ストレージレジスタへの書き込みタイミングを知らせるクロック信号です。RCLK信号の立ち上がりに同期して、シフトレジスタの出力がストレージレジスタに転送されます。(ポジティブエッジトリガ) |
QA | パラレル出力の1番目の端子です。シフトレジスタの初段(1段目)の出力をストレージレジスタのDフリップフロップで取り込んだ信号を出力します。OE端子にHを入力するとハイインピーダンス状態になります。 |
QB | パラレル出力の2番目の端子です。シフトレジスタの2段目の出力をストレージレジスタのDフリップフロップで取り込んだ信号を出力します。OE端子にHを入力するとハイインピーダンス状態になります。 |
QC | パラレル出力の3番目の端子です。シフトレジスタの3段目の出力をストレージレジスタのDフリップフロップで取り込んだ信号を出力します。OE端子にHを入力するとハイインピーダンス状態になります。 |
QD | パラレル出力の4番目の端子です。シフトレジスタの4段目の出力をストレージレジスタのDフリップフロップで取り込んだ信号を出力します。OE端子にHを入力するとハイインピーダンス状態になります。 |
QE | パラレル出力の5番目の端子です。シフトレジスタの5段目の出力をストレージレジスタのDフリップフロップで取り込んだ信号を出力します。OE端子にHを入力するとハイインピーダンス状態になります。 |
QF | パラレル出力の6番目の端子です。シフトレジスタの6段目の出力をストレージレジスタのDフリップフロップで取り込んだ信号を出力します。OE端子にHを入力するとハイインピーダンス状態になります。 |
QG | パラレル出力の7番目の端子です。シフトレジスタの7段目の出力をストレージレジスタのDフリップフロップで取り込んだ信号を出力します。OE端子にHを入力するとハイインピーダンス状態になります。 |
QH | パラレル出力の8番目の端子です。シフトレジスタの最終段(8段目)の出力(QH'信号)をストレージレジスタのDフリップフロップで取り込んだ信号を出力します。OE端子にHを入力するとハイインピーダンス状態になります。 |
OE | パラレル出力の3ステート制御用入力端子です。OE端子にHを入力した場合は、QA~QHの8つの出力端子がハイインピーダンス状態になります(出力ディゼーブル)。OE端子にLを入力した場合は、QA~QHの8つの出力端子にストレージレジスタの出力が出力されます(出力イネーブル) |
VCC | 電源端子です。74HC595の場合は、この端子に2~6Vの範囲の電源を供給します。74HCT595および74LS595の場合は、この端子に5Vの電源を供給します。 |
GND | グランド端子です。 |
74HC595の動作を理解するには、IC内部の回路構成をある程度理解する事が必要です。まず、74HC595の大まかな回路構成を表す、ブロック図を示します。次に回路を構成する各ブロックの働きについて説明します。
図2に、74HC595の大まかなブロック図を示します。
この図に示す様に、74HC595は、シリアル-パラレル変換を行うシフトレジスタと、シリアル-パラレル変換の結果を記憶するストレージレジスタと、ストレージレジスタの出力を3ステート制御する3ステートバッファの3つの部分から成ります。次に、それぞれのブロックの回路構成と働きについて説明します。
74HC595には、シリアル入力・パラレル出力の8ビットのシフトレジスタが内蔵されています。このシフトレジスタは、例えば図3の様な回路で構成できます。
注:74HC595に内蔵されているシフトレジスタが、完全に図3の様な回路でできている事を保証するものではありません。ただし、図3と論理的に等価な回路が74HC595に内蔵されています。
QA'~QG'の各信号は、74HC595の内部信号で、外部端子に取り出す事はできません。
SN74HC595のデータシートによれば、シフトレジスタの初段のみDフリップフロップを使っており、2段目以降はクロック同期式のRSフリップフロップを使っています。これは、この様に構成する方がゲート数が少なくなるからだと思われます。(初段のフリップフロップはSER信号しか受け取れませんが、2段目以降のフリップフロップは、前の段のフリップフロップからQ出力とQ出力の両方を受け取れます。正論理と負論理の入力を両方受け取れる場合は、Dフリップフロップよりもクロック同期式のRSフリップフロップの方が、少ないゲートで構成できるのでしょう) また、各フリップフロップはネガティブエッジトリガで、SRCLK信号が入力された直後のところにNOT回路が挿入されており、実質的に全フリップフロップがポジティブエッジトリガとして働くようになっています。これも、ICの製造上、ポジティブエッジトリガのフリップフロップよりも、ネガティブエッジトリガのフリップフロップの方が、ゲート数が少なくなるからと思われます。この様なIC製造上の理由で最適化された回路を掲載すると初学者の混乱の原因になるため、ここでは、74HC595に内蔵されているシフトレジスタと論理的に等価で(同じ働きで)より単純な回路を載せています。
参考:図3の回路は、シリアル入力にAND回路が付いていない事を除けば、74HC164の等価回路(この用語集の74HC164のページの図2を参照)と同じです。
ここで図4の様な回路記号が出てきますが、これは負論理の非同期クリア端子(CLR)を持ったDフリップフロップです。
非同期クリア端子を持ったDフリップフロップは、CLR信号がHの場合は、通常のフリップフロップと同様に、クロック(CLK信号)の立ち上がりでD信号を取り込み、それをQ信号に出力する動作をします。
一方でCLR信号がLになると、D信号やCLK信号やDフリップフロップが記憶していた真理値(CLR信号がLになる直前のQ信号の値)にかかわらず、Dフリップフロップの記憶する値が強制的にLにされ、CLR信号がHになった後にクロックの立ち上がりでD信号からHが取り込まれるまで、Q信号はLのままになります。この動作を非同期クリアまたは非同期リセットといいます。
図5に、非同期クリア端子を持ったDフリップフロップのタイミングチャートの例を示します。
3つの入力端子(CLK、CLR、D)の中ではCLR端子の信号が最優先で処理されます。そのため、CLRをLにすれば、クロック(CLK信号)が供給されていない時にでもDフリップフロップにの値をクリア(リセット)する事ができます。
電源投入時には、(Dフリップフロップを含む)フリップフロップの初期状態は不定(LになるのかHになるのか予測できない状態)です。初期状態が不定のまま同期回路(フリップフロップを含む回路)を動作させると、予期しない動作をすることがありますので、通常は電源投入直後にリセット信号でフリップフロップの状態を強制的にL(場合によってはH)に確定してしまいます。
電源投入直後にリセットをかける場合は、その時点でクロック信号が供給されている保証がありません。というのは、電源投入後にクロック発振器がクロック信号を供給し始めるまでには、意外と長い時間がかかるからです。例えば、水晶発振回路でクロックを発生する場合は、クロックが安定して供給されるまでmsオーダーの長い時間がかかります。
この点では、非同期クリア端子を持ったDフリップフロップの場合、クロックがなくても値をクリアできるため、電源投入直後のリセットが確実にかかります。
参考:同期クリア端子を持ったフリップフロップの場合、クロック信号が供給されていないとリセットがかかりません。そのため、フリップフロップの初期化には、クロック信号が確実に安定供給されるようになるまで、リセットをかけ続ける必要があります。
非同期クリア端子を持ったDフリップフロップの動作を踏まえて、図3の74HC595に内蔵されているシフトレジスタの等価回路の、タイミングチャートの例を図示すると、図6の様になります。
タイミングチャートの左端で、SRCLR信号がLになっている期間がありますが、同信号がLになったタイミングで、8つのDフリップフロップがリセットされ、QA'~QH'の値がLに確定します。これが電源投入直後のリセットです。
その後8波のクロックがSRCLK端子に入力されますが、クロックの立ち上がりのタイミングで、SER端子に入力されたシリアルデータをシフトレジスタに取り込みます。8波目のクロックの立ち上がりのタイミングで、QA'~QH'の端子に、データがパラレルに出力されます。これがシリアル-パラレル変換です。
その後、しばらく時間をおいて、もう8波のクロック(9~16波目)がSRCLK端子に入力されます。この時にも先ほどと同様、シリアル-パラレル変換が行われます。16波目のクロックが立ち上がった瞬間に、SER端子から入力されたシリアルデータが、QA'~QH'の端子にデータがパラレルに出力されます。
ただし、図3のシフトレジスタでは、8波のクロックを送ってシフト動作を行っている最中には、QA'~QH'の各ピンに、シリアル-パラレル変換の途中結果が出力されてしまっている事に注意が必要です。
このシリアル-パラレル変換の働きは、GPIOピンの少ないマイコンにおいて、出力ピンを拡張するのに使われる事があります。
例えば図7は、図3のシフトレジスタを8つのLEDの制御に応用した例です。
この回路では、マイコンのGPIOを3つ使って、8つのLEDを制御していますので、出力ピンを5つ拡張できた事になります。
さらに、電源を入れてから最初にシリアル-パラレル変換をするまでの間に、各LEDの点灯状態がどうなるか分からない点に目をつぶれば、SRCLR信号をGPIOに接続せずにプルアップしてもいいので、2つのGPIOで8つのLEDを制御できる事になります。
参考1:マイコンのリセット信号が負論理ならば、SRCLR信号をプルアップせずに、マイコンのリセット信号に直結する方法もあります。マイコンがリセットされるたびに、シフトレジスタの全ビットが自動的にLに初期化されます。
参考2:図7の回路において、例えばLED1とLED4だけを点灯させ、他のLEDを消灯させたい場合は、SRCLK信号の立ち上がりに同期して、SER信号にL、L、L、H、L、L、H、Lの順にシリアル信号を送ればいい事になります。先に送った信号ほど、マイコンから離れたLEDに届くことに注意しましょう。
参考3:マイコンの起動時に、SRCLKの立ち上がりに同期して、まず8ビットのLをSER信号から出力する様にプログラムを組んでおくと、SRCLR信号を使わないでも、マイコン起動後速やかに全LEDが消灯する様にできます。
しかし、図7の回路には、欠点があります。シリアル-パラレル変換をするために、SRCLKに8波のクロックを送っている間は、8つのLEDにシリアル-パラレル変換の途中結果が表示されてしまうのです。
ただし、LEDの制御に応用する場合は、人の目が短時間のLEDの点灯・消灯を検知できないために、シリアル-パラレル変換を短時間にしてしまえば、実用上問題は生じません。例えば、1μsに1波の割合(1MHz)でSRCLK信号を送ると仮定すると、シリアル-パラレル変換はたった8μsで終了し、人の目には留まらないでしょう。
ところが、制御対象がLEDではなく、一瞬でも誤った信号を出力する事が許容されない場合は、図7の回路をそのまま使う訳にいきません。この、一瞬誤った信号が出力される問題を解決するのが、次の節で説明するストレージレジスタです。
74HC595には、図8に示す様な8ビットのストレージレジスタが内蔵されています。
QA'~QG'とQA''~QH''の各信号は、74HC595の内部信号で、外部端子に取り出す事はできません。
SN74HC595のデータシートによれば、ストレージレジスタは、実際にはDフリップフロップではなく、クロック同期式のRSフリップフロップで構成されている様です。これは、ストレージレジスタにデータを供給するシフトレジスタに、Q出力とQ出力の両方があるフリップフロップを使用しており、この様に正論理と負論理の両方の信号が受け取れる状況では、Dフリップフロップよりもクロック同期式のRSフリップフロップの方が少ないゲートで構成できるためだと推測されます。ゲート数を少なくするために最適化を行った回路を掲載すると初学者の混乱の原因になるため、ここでは、データシートに記載されている回路よりも理解のしやすい、Dフリップフロップによるストレージレジスタを掲載しています。回路構成は実際の74HC595とは異なりますが、論理的に等価な(同じ働きをする)回路です。
このストレージレジスタは、RCLK信号の立ち上がりのタイミングでQA'~AH'の入力信号を取り込み、その取り込んだ信号を、次にRCLK信号が立ち上がるまでQA''~AH''信号に出力し続けます。
図8のストレージレジスタのタイミングチャートの例を、図9に示します。
Uは不定(LかHか分からない状態)を表します。
ストレージレジスタは、この図に示す様にRCLK信号の立ち上がりのタイミングでQA'~AH'の各入力信号を取り込み、その取り込んだ信号をそれぞれQA''~QH''の各信号に出力します。RCLK信号の立ち上がり以外のタイミングでQA'~QH'の各入力信号がどの様に変化しようとも、QA''~QH''の各出力信号には影響しません。
このタイミングチャートは、図8のストレージレジスタ単体を取り出して、QA'~AH'の各入力端子に上に示した様な信号を与えた場合に、QA''~QH''の各出力端子にどの様な信号が出てくるかを示した概念図です。実際には、QA'~QH'の各信号は、シフトレジスタの各段から供給されているため、このタイミングチャートに示した様に、QA'~QH'の信号が無関係に変化する事はありません。QA'~QH'の入力信号が、お互いに相関を持つ信号の場合は、図示してもストレージレジスタの働きが理解しにくいので、この様に現実にはあり得ない入力信号波形を仮定してタイミングチャートを作成しました。
図3のシフトレジスタと図8のストレージレジスタを組み合わせて図10の様な回路を作り、パラレル-シリアル変換が終わったのちにRCLK信号を立ち上げる様にすると、図11のタイミングチャートに示す様に、QA''~AH''の信号には、パラレル-シリアル変換の途中結果が出力されなくなり、最終結果だけが出力されるようになります。
図11のタイミングチャートを見て分かる様に、図10の回路で、シリアル-パラレル変換の中間結果が出力に表れる不具合は解決しているため、マイコンの出力ピンの拡張には、このまま使えるのですが、74HC595の場合、さらにQA''~AH''の各信号が、次の節で説明する3ステートバッファを通って端子に出力されます。
通常、論理回路の出力はH(高い電圧)とL(低い電圧)の2値を取りますが、HとLに加えてハイインピーダンス状態(Hi-Zと表す事が多い)という3値を取る出力形式を、3ステート(スリーステート)あるいはトライステートといいます。
注:「トライステート」の名称は旧National Semiconductor社(現Texas Instruments社)の登録商標なので、扱いに注意が必要です。
ここで、論理回路の出力段の回路構成について説明します。現在使われている論理回路の出力段は、TTLにしろ、CMOSにしろ、たいてい図12や図13の様に、2つのスイッチが電源とGNDの間に直列につながった構造をしており、2つのスイッチの接続点から出力端子が出ています。この様に、電源につながったスイッチ(ハイサイドスイッチ)とGNDにつながったスイッチ(ローサイドスイッチ)2つのスイッチを使って出力信号を作る回路形式(あるいはその回路形式を用いて作った回路)をトーテムポール出力と呼びます。
注:図12や図13では、機械式のスイッチの記号を使っていますが、実際の論理回路では半導体スイッチを使います。TTLの場合はNPNトランジスタをスイッチとして使います。CMOSの場合は、MOSFET(ハイサイドスイッチがPチャネルMOSFETでローサイドスイッチがNチャネルMOSFET)をスイッチとして使います。
トーテムポール出力の論理回路は通常、ハイサイドスイッチとローサイドスイッチのどちらか一方をONにし、残りの一方をOFFにする様に制御します。
例えば図12の様に、ハイサイドスイッチをONにし、ローサイドスイッチをOFFにすれば、出力端子はVCCと接続され、出力電圧はVCC(H)となります。
逆に図13の様に、ハイサイドスイッチをOFFにし、ローサイドスイッチをONにすれば、出力端子はGNDと接続され、出力電圧は0V(L)となります。
通常は図12か図13の状態になる様に2つのスイッチを制御するのですが、もし図14の様に、ハイサイドスイッチとローサイドスイッチの両方をOFFにすれば、出力端子はどこにも電気的に接続されていない状態になり、出力電圧は不定になります。この状態をハイインピーダンス状態(Hi-Z)と呼びます。
先ほど説明した様に、HとLとHi-Zの3つの状態を取り得る出力形式を3ステートといいます。3ステート出力を使うと、1本の信号線に複数のデバイス(ICなど)の出力をつなげた時に、時分割で信号線を共有して使用できるのですが、詳細の説明は省略します。
3テート出力を実現するために、しばしば3ステートバッファという部品が使われます。3ステートバッファの回路記号を図15に示します。また、3ステートバッファの真理値表を表2に示します。
入力信号 | 出力信号 | |
---|---|---|
IN | OE | OUT |
L | L | Hi-Z |
H | L | Hi-Z |
L | H | L |
H | H | H |
3ステートバッファには2つの入力(IN信号とOE信号)と1つの出力(OUT信号)があります。IN信号は通常の入力信号で、OEは出力を許可するかどうかの制御信号です。
参考:OEはOutput Enableの略です。enable(イネーブル)は「可能にする」、「許可する」などの意味がある英単語ですが、ここでは"output enable"を「出力を許可する」という意味で使っています。
OEがLの場合は、出力が許可されない(出力がディゼーブルされている)事を表し、IN信号がLであれ、Hであれ、OUT信号はHi-Zになります。
参考:disable(ディゼーブル)は、enableの反対語です。
OEがHの場合は、出力が許可される(出力がイネーブルされている)事を表し、OUT信号にはIN信号と同じ電圧が出力されます。
図2のブロック図を見れば分かる様に、ストレージレジスタの8ビットの出力端子にはそれぞれに3ステートバッファがつながっています。8つの3ステートバッファの制御信号には、OE信号をNOT回路で論理反転した信号が入力されています。
よって、74HC595のOE端子にHを入力すれば、QA~QHの8つの端子はHi-Zになります。
逆に、OE端子にLを入力すれば、QA~QHの8つの端子には、ストレージレジスタの出力がそのまま出てきます。
74HC595は8ビット(8段)のシフトレジスタですが、2個の74HC595をカスケード接続(多段接続)する事により、16ビットのシフトレジスタを構成する事ができます。さらに3個の74HC595をカスケード接続すると24ビット、4個をカスケード接続すると32ビット・・・という具合に、74HC595を1個増やすごとに、シフトレジスタのビット数が8ビットずつ増えます。
この章では、複数の74HC595をカスケード接続して、ビット数の多いシフトレジスタを構成する方法を説明します。
74HC595は、シフトレジスタ部と、ストレージバッファ部と、3ステートバッファ部の3種類の部分で構成された複雑な回路なので、3つのそれぞれの部分のビット数の拡張方法をそれぞれ説明し、その後に74HC595全体のビット数の拡張方法を説明します。
74HC595に内蔵されているシフトレジスタの部だけの等価回路が図3です。
QA'~QG'が内部信号(IC外部に取り出せない信号)であるのに対して、QH'だけ外部信号(ICのピンから取り出せる信号)である事に注意してください。
ここで、2つの74HC595を使う場合を考えます。
SRCLK信号とSRCLR信号は2つの74HC595で共有し、一方の74HC595のQH'端子を、もう一方の74HC595のSER端子と接続すると、図16の様な回路になります。
この回路図を見ると、1つ目の74HC595内部の一番右のDフリップフロップのQ端子が、2つ目の74HC595内部の一番左のDフリップフロップのD端子と接続されており、全体で16ビットのシフトレジスタを構成している事が分かります。
3つ以上の74HC595を使う場合でも、SRCLK信号とSRCLR信号は全ての74HC595で共有し、最終の74HC595以外のQH'端子を次の74HC595のSER端子に接続すると、全体で74HC595の数×8ビットのシフトレジスタを構成できます。
74HC595のストレージレジスタ部だけの等価回路が図8です。
ここで、2つの74HC595でRCLK信号を共有する回路(図17)を考えます。
この回路は、RCLKの立ち上がりエッジで全てのDフリップフロップのD端子(ストレージレジスタの入力端子)の信号を取り込み、同じDフリップフロップのQ端子(ストレージレジスタの出力端子)にする様に動作します。よって、全体で16ビットのストレージレジスタを構成している事が分かります。
3つ以上の74HC595を使う場合も、全ての74HC595でRCLK信号を共有すれば、全体で74HC595の数×8ビットのストレージレジスタを構成できます。
74HC595の3ステートバッファ部だけの等価回路を図18に示します。8つの3ステートバッファの制御信号(OE信号)は内部信号なので、OE信号を論理反転してOE信号を生成するNOT回路もこの図に含めています。
ここで、2つの74HC595でOE信号を共有する回路(図19)を考えます。
図19の回路で、8つの3ステートバッファには、全てOE信号を論理反転した制御信号が入力されますから、2つのNOT回路を1つにまとめて、図20の等価回路にする事もできます。
この等価回路をみれば分かる様に、2つの74HC595でOE信号を共有すると、全体で16ビットの3ステートバッファとして働きます。
3つ以上の74HC595を使う場合も、全ての74HC595でOE信号を共有すると、全体で74HC595の数×8ビットの3ステートバッファを構成できます。
前節までは、複数74HC595を使ってビット数を拡張する方法について、シフトレジスタ部、ストレージレジスタ部、および3ステートバッファ部に分けて説明しましたが、74HC595全体について説明します。
複数の74HC595を使ってビット数を拡張するには、図21の様に、SRCLK信号、SRCLR信号、RCLK信号、およびOE信号の4つの信号を全ての74HC595で共有し、かつ、最後の74HC595を除いて、QH'端子を次の74HC595のSER端子に接続します。
青い数字は、DIPパッケージの場合のピン番号です。
また、VCC端子に付いている0.1μFのコンデンサは、電源電圧を安定化させ74HC595の誤作動を防止するためのパスコンです。容量は0.1μFでなくても0.01μF~0.1μFの範囲に入っていれば使えます。高周波特性の良い積層セラミックコンデンサまたはディスクセラミックコンデンサを74HC595のVCC端子のすぐそばに付けてください。
ビット数を拡張せず8ビットの場合は、図11に示す様に、SRCLK端子に8クロック入力してからRCLK端子に正のパルス(L→H→Lの順に変化するパルス)を入力しましたが、74HC595をN個使って8Nビットに拡張した場合は、SRCLK端子に8Nクロック入力してからRCLK端子に正のパルスを入力します。
Q0~Q23は、パラレル出力端子です。SER端子に後に入力されたデータほど若い番号の端子に出力され、最後に入力されたデータはQ0端子に出力されます。
74HC595の入力端子の中に、使用しない端子がある場合は、オープンのまま(どこにも接続しないまま)放置せずに、適切な処理をする必要があります。
参考:使用しない出力端子はオープンのまま放置しても大丈夫です。
74HC595に入力端子は、SRCLR、SRCLK、RCLK、OE、SERの5つあります。これらの内、SER、SRCLK、RCLKの3端子は、使用しないと74HC595を使う意味がありませんから、使用しない可能性のある入力端子はSRCLRとOEの2つになります。
シフトレジスタの非同期クリアを行わない場合は、SRCLR端子にHを入力して、非同期クリア機能を無効化します。直接VCCに接続しても、抵抗を使ってプルアップしても結構です。
また3ステート制御をしないで、常にQA~QHの端子に出力電圧が出る様にする場合は、OE端子にLを入力します。直接GNDに接続しても、抵抗を使ってプルダウンしても結構です。
趣味の電子工作で74HC595、および同機能のIC(74HCT595等)を使う方を想定して、インターネット上で購入できるサイトへのリンクを集めました。下の表で部品の型番をクリックすると、販売ページにジャンプします。
なお、この表は2019年9月時点での情報をまとめたものです。
ユニバーサル基板で試作する場合は、DIPパッケージの製品を購入してください。
企業名・店舗名 | 部品の型番 | パッケージ | メーカー | 備考 |
---|---|---|---|---|
秋月電子 | U74HC595AG-D16-T | DIP | UTC | |
TC74HC595AF | SOP | 東芝 | ||
SN74HC595D | SOIC | Texas Instruments | ||
マルツ | TC74HC595AP(F) | DIP | 東芝 | |
共立エレショップ | 74HC595 | DIP | 各社 | どのメーカーの製品が届くか分からないので、微妙な特性が問題になる場合は要注意。 |
千石電商 | TC74HC595AP | DIP | 東芝 | |
RSコンポーネンツ | 74HC595PW | TSSOP | Nexperia | 購入単位は10個。 |
74HCT595PW | TSSOP | Nexperia | 購入単位は12個。 | |
74HCT595PW-Q100 | TSSOP | Nexperia | 購入単位は10個。車載品。 | |
74VHC595MTCX | TSSOP | ON Semiconductor | 購入単位は5個。74VHC595は74HC595を高速化し、電源電圧よりも高い入力電圧を許容する様にしたタイプ。 |