2022年04月23日 | 更新。 |
74HC165は、74HCシリーズの高速CMOSロジックICの一つで、パラレル入力、シリアル出力の8ビットのシフトレジスタの機能を持っています。74HC165は、パラレル入力端子にパラレル信号を入力し、その信号をシリアル出力端子からシリアル形式で出力する、パラレル-シリアル変換回路として通常は使われます。74HC165によるパラレル-シリアル変換回路は、Arduino UnoなどのGPIO端子の少ないマイコンの、入力端子の拡張のため使われる事が多くあります。
74HC165は、次の様な特徴を持ったシフトレジスタです。
74HC165よりも入力電圧の閾値を下げてTTLと接続できるようにした74HCT165や、TTLの74LS165も、機能やピン配置は、このページで説明する74HC165と同じです。
74HC165の入手先を知りたい方は、このページの最後の購入ページの一覧表をご利用ください。
74HC165のピン配置を図1に示します。また、DIPパッケージのTC74HC165AP(東芝セミコンダクター製)の写真を写真1に示します。
注:このページは、Texas Instruments社のSN74HC165のデータシートを参考に記述していますので、ピンの名称はそのデータシートに従っています。他社の互換ICの場合、ピン名称が異なる場合がある事に注意してください。
各端子の意味を、表1にまとめました。
名称 | 意味 |
---|---|
A~H | パラレル信号の入力端子です。これらの端子にパラレル信号を入力した状態で、SH/LD信号をLにすると、パラレル信号がCLK信号とは非同期にシフトレジスタに取り込まれます。なお、A信号がシフトレジスタの初段のDフリップフロップに取り込まれ、L信号がシフトレジスタの最終段のDフリップフロップに取り込まれます。 |
SH/LD | シフト動作とパラレル入力動作を切り替える制御信号を入力する端子です。SH/LD端子にH、CLK INH端子にLを入力すると、CLK信号の立ち上がりに同期してシフトレジスタがシフト動作します。SH/LD端子にLを入力すると、その時のパラレル入力端子(A~H端子)の状態がシフトレジスタに取り込まれます。(パラレル入力動作) |
CLK | シフトレジスタをシフトするためのクロック信号の入力端子です。SH/LD端子にH、CLK INH端子にLを入力すると、CLK信号の立ち上がりに同期してシフトレジスタがシフト動作します。SH/LD端子にLを入力している場合は、CLK信号は無視されます。 |
CLK INH | CLK信号の動作を妨げる(inhibit)ための信号です。CLK INH端子にHが入力されている時は、CLK信号が無効になり、SH/LD端子にHが入力されていても、CLK信号の立ち上がりで、シフトレジスタはシフト動作しません。CLK信号の立ち上がり1つを妨害してシフト動作を1回止めるためには、その立ち上がりのタイミングの直前のCLK信号がLになった期間全体で、CLK INH信号をHに保つ必要があります。 |
SER | シリアル入力端子です。SH/LD端子にH、CLK INH端子にLを入力すると、CLK信号の立ち上がりに同期して、SER信号がシフトレジスタの初段のDフリップフロップに取り込まれます。SER端子は主に、複数の74HC165を使用して、16ビット以上のシフトレジスタを構成するために使用されます。 |
QH | 正論理のシリアル出力端子です。シフトレジスタの最終段のDフリップフロップの、正論理の出力端子につながっています。 |
QH | 負論理のシリアル出力端子です。QH信号を論理反転した信号が出力されます。 |
VCC | 電源端子です。74HC165の場合は、この端子に2~6Vの範囲の電源を供給します。74HCT165および74LS165の場合は、この端子に5Vの電源を供給します。 |
GND | グランド端子です。 |
以下に74HC165の動作について説明します。理解を深めるためには、この用語集のシフトレジスタのページもご覧ください。
なお、74HC165の動作原理に興味がなく、74HC165をどのように配線し、にどのような制御信号を与えれば、シリアル-パラレル変換が行えるかを手っ取り早く知りたい方は、パラレル-シリアル変換時の動作波形の項からお読みください。
74HC165の真理値表を表2に示します。
入力信号 | 内部信号 | 出力信号 | 動作 | |||||
---|---|---|---|---|---|---|---|---|
SH/LD | CLK INH | CLK | SER | A~H | QA~QG | QH | QH | |
L | X | X | X | PA~PH | PA~PG | PH | PH | パラレル入力動作 |
H | H | X | X | 全てX | qA~qG | qH | qH | 保持 |
H | L | L | X | 全てX | qA~qG | qH | qH | |
H | L | H | X | 全てX | qA~qG | qH | qH | |
H | L | ↓ | X | 全てX | qA~qG | qH | qH | |
H | ↓ | X | X | 全てX | qA~qG | qH | qH | |
H | ↑ | H | X | 全てX | qA~qG | qH | qH | |
H | ↑ | L | S | 全てX | S、qA~qF | qG | qG | シフト動作 |
H | L | ↑ | S | 全てX | S、qA~qF | qG | qG |
ただし、表2には次の記号が使われています。
表2の真理値表を満たす様に74HC165の等価回路を考えると、図2の様になります。
注:Dフリップフロップの詳しい動作については、この用語集のDフリップフロップのページをご覧ください。
図2の等価回路の中に、図3の様な回路記号が出てきますが、これは非同期プリセット端子PREと非同期クリア端子CLRを持つ、Dフリップフロップを表しています。
非同期プリセット端子PREと非同期クリア端子CLRを持つDフリップフロップは、PRE信号とCLR信号が共にLの場合は、通常のフリップフロップと同様に、クロック(CLK信号)の立ち上がりでD信号を取り込み、Q信号に出力する動作をします。(図4参照)
上の回路図に示す様に、非同期プリセット端子(PRE端子)と非同期クリア端子(CLR端子)の両方にLを入力すると、非同期入力のない通常のDフリップフロップと等価になります。
下のタイミングチャートにUと書いてある部分がありますが、これは不定を表します。
PRE端子がHで、CLR端子がLの場合は、D信号やCLK信号の状態にかかわらず、DフリップフロップにHが書き込まれ、出力信号QはHとなります。(非同期プリセット) なおその後、PRE端子がLになっても出力信号QはHのままです。(図5参照)
VCCは電源電圧を表します。
上の回路図に示す様に、PRE端子にH、CLR端子にLを入力した状態では、D信号やCLK信号の影響を受けず、強制的にQ信号がHになります。
下のタイミングチャートにUと書いてある部分がありますが、これは不定を表します。
下のタイミングチャートから、非同期プリセット状態でQ信号にHが出力される事と、その後PRE信号がLになって非同期プリセット状態が解除されても、Q信号がHを維持する事が分かります。
PRE端子がLで、CLR端子がHの場合は、D信号やCLK信号の状態にかかわらず、DフリップフロップにLが書き込まれ、出力信号QはLとなります。(非同期クリア) なおその後、CLR端子がLになっても出力信号QはLのままです。
VCCは電源電圧を表します。
上の回路図に示す様に、PRE端子にL、CLR端子にHを入力した状態では、D信号やCLK信号の影響を受けず、強制的にQ信号がLになります。
下のタイミングチャートにUと書いてある部分がありますが、これは不定を表します。
下のタイミングチャートから、非同期クリア状態でQ信号にLが出力される事と、その後CLR信号がLになって非同期クリア状態が解除されても、Q信号がLを維持する事が分かります。
なお、PRE端子とCLR端子に同時にHを入力する事は禁止されています。
参考:PRE端子とCLR端子に同時にHを入力しても、別にDフリップフロップが壊れるわけではありませんが、そういう入力状態の場合のDフリップフロップの動作が、一般には規定されていません。(つまり、そういう入力状態の時に、Dフリップフロップが特定の状態になる事を期待してはいけません)
非同期プリセット端子と非同期クリア端子を持つDフリップフロップ(図3)の動作が理解できたところで、次にSH/LD端子にLが入力された場合の74HC165の動作について考えます。
図2の74HC165の等価回路において、SH/LD端子にLを入力すると、図7に示す様に、等価回路中の16個のAND回路において、片方の入力端子がHに確定します。
ここで、図8に示す様に、片方の端子にHが入力されたAND回路は、もう一方の入力端子Xの信号を出力端子Yにそのまま出力する事を思い出しましょう。
図8の等価回路を利用して図7の回路を書き換えると、図9に示す様に、SH/LD端子をLにした時の74HC165の等価回路が簡略化できます。
8つのDフリップフロップは、それらの周辺回路が同じですので、図10に示す様に、1段目(一番左)のDフリップフロップに注目します。
この図10において、端子AにHを入力すると、DフリップフロップのPRE端子がH、CLR端子がLとなります。そのため非同期プリセット状態になり、Dフリップフロップには、クロック端子やD端子の状態に関係なく、Hが書き込まれます。その結果、出力端子QもHを出力します。
一方で、端子AにLを入力すると、DフリップフロップのPRE端子がL、CLR端子がHとなります。そのため非同期クリア状態になり、Dフリップフロップには、クロック端子やD端子の状態に関係なく、Lが書き込まれます。その結果、出力端子QもLを出力します。
つまりSH/LD端子にLを入力した状態の74HC165では、A端子に入力する電圧が、初段のDフリップフロップに取り込まれるのです。また、他の端子(B~H)でも端子に入力する電圧が、対応するDフリップフロップに取り込まれます。これが74HC165のパラレル入力状態(表2の一番上の行に示しています)と呼ばれる状態で、この様にクロックに非同期に端子A~Hの電圧をフリップフロップに取り込む動作を非同期ロードといいます。
前の節ではSH/LD端子にLを入力した場合を扱いましたが、この節では逆にSH/LD端子にHを入力した場合に何が起こるか考えてみます。
図2の74HC165の等価回路において、SH/LD端子にHを入力すると、図11に示す様に、等価回路中の16個のAND回路において、片方の入力端子の電圧がLに確定します。
ここで、図12に示す様に、片方の端子にLが入力されたAND回路は、もう一方の入力端子Xの入力がLであれ、Hであれ、出力端子YにLを出力する事を思い出しましょう。
この事より、図11の回路図中のの16個のAND回路は、全てLを出力する事が分かります。その結果、図11の回路図中の8つのDフリップフロップのPRE端子とCLR端子には、全てLが入力される事が分かります。
図4に示した様に、DフリップフロップのPRE端子とCLR端子の両方にLが入力される場合には、PRE端子やCLR端子のないDフリップフロップと等価になります。
上の回路図に示す様に、非同期プリセット端子(PRE端子)と非同期クリア端子(CLR端子)の両方にLを入力すると、非同期入力のない通常のDフリップフロップと等価になります。
下のタイミングチャートにXと書いてある部分がありますが、これは「不定」を表します。
この性質を利用して図11を書き直すと、図13が得られます。
ここで、CLK INH端子にHが入力される場合と、Lが入力される場合に分けて、図13の回路の動作を考えます。
図13の回路において、CLK INH端子にHが入力される場合について考えます。
CLK INH信号とCLK信号が共に、OR回路に入力されています。ここで、図14の様に片方の入力端子にHが入力されたOR回路は、もう一方の入力端子Xの電圧によらず、出力端子YにはHが出力される事を思い出しましょう。
この事から、図13の回路のCLK INH端子にHが入力された場合の等価回路は、図15の様になります。
VCCは電源電圧を表します。
CLK端子に付いている×印は、CLK端子が回路内のどこにも接続されていない事を示します。
図15の回路図から分かる様に、SH/LD端子とCLK INH端子を共にHにした場合は、8つのDフリップフロップのクロック信号が全てHに固定されてしまい、決して立ち上がる事はないため、74HC165内蔵のシフトレジスタは直前の状態を保持します。この動作は、表2の真理値表の上から2行目に示されています。
本来シフトレジスタは、CLK信号の立ち上がり(ネガティブエッジトリガのシフトレジスタではCLK信号の立ち下がり)に同期してシフト動作するのですが、74HC165の場合は、CLK信号が入ってきてもシフト動作を止められるように、CLK INH端子を設けてあります。これは、回路が動作している間はずっとCLK端子にシステムクロックが入力されている設計の場合に、必要な時のみシフト動作させるためだと思われます。
図13の回路において、CLK INH端子にLが入力される場合について考えます。
CLK INH信号とCLK信号が共に、OR回路に入力されています。ここで、図16の様に片方の入力端子にLが入力されたOR回路は、もう一方の入力端子Xの電圧がそのまま出力端子Yに出力される事を思い出しましょう。
この事から、図13の回路のCLK INH端子にLが入力された場合の等価回路は、図17の様になります。
図17の回路図は、負論理のシリアル出力端子(QH端子)がある事を除けば、典型的な8ビットのシフトレジスタの回路を表しています。
この回路は、CLK信号が立ち上がるたびに、Dフリップフロップの記憶した内容が、1つ右のDフリップフロップに移動(シフト)します。ただし、初段(一番左)のDフリップフロップには、それよりも左にDフリップフロップがないため、代わりにSER信号を取り込みます。また最終段(一番右)のDフリップフリップの出力は、他のDフリップフロップに取り込まれることなくQH端子に出力されます。この様な動作をシフト動作といい、表2の真理値表の一番下の行に示されています。
CLK信号が立ち上がる時以外(CLK信号がHの時、Lの時、および立ち下がる時)は、シフトレジスタは直前の状態を保持します。これは表2の真理値表の3~5行目に示されています。
前述の様に、CLK INH端子にHを入力する事でCLK信号の働きを止め、74HC165にシフト動作をさせない事ができますが、CLK INH端子にHを出力するタイミングには注意する必要があります。
CLK端子に入力されるクロック信号1波の働きをCLK INH端子で止める場合、図18の様に、CLK信号の立ち上がりの直前から直後までの期間だけCLK INH信号をHにしても、シフト動作を止めるには不十分です。
このタイミングチャートにはICLKという信号が出てきますが、このICLK信号は、CLK信号とCLK INH信号の論理和(OR)です。図19の様に、シフトレジスタを構成する8つのDフリップフロップに供給されるクロック信号は、このICLK信号です。
図18を見れば分かる様に、CLK INH信号の立ち上がりでICLK信号も立ち上がってしまいます。そのため、CLK INH信号が立ち上がるタイミングでシフト動作が起こってしまいます。
CLK INH端子によりシフト動作を止めようと思えば、図20に示す様に、CLK信号の立ち上がりの前のCLK信号がLの期間ずっと、CLK INH信号をHに保つ必要があります。
74HC165は、主にパラレル-シリアル変換のために用いられるICです。パラレル-シリアル変換をするには、まずSH/LD端子にLを入力してパラレル入力端子(A~H端子)からパラレル信号を読み込み、その後SH/LD端子をHに切り替えてから、CLK端子にクロックを7波入力します。図21にパラレル-シリアル変換時のタイミングチャートの例を示します。
タイミングチャートにUと書いてある部分がありますが、これは不定を表します。不定の部分では、QH信号やQH信号がHなのかLなのかを予測する事はできませんが、QH信号はQH信号を論理反転したものである事だけは確かです。
最初にSH/LD信号をLにしてパラレル信号を74HC165に読み込ませます。図21では、この時に端子A~Hに入力した電圧を、それぞれDA~DHとしています。
その後SH/LD信号をHにすると、シフトレジスタに取り込まれる情報が確定します。この時点でDHがQH端子に出力されていますので、これをマイコンなどで読み取ります。
その後CLK信号を1波入力します。(CLK信号をHにしてからLに戻します) CLK信号をHに立ち上げた瞬間にDGがQH端子に出力されますので、これをマイコンなどで読み取ります。(CLK信号を立ち下げる前でも後でも構いません。)
同じ事を繰り返すと、順にDF、DE、DD、DC、DB、DAの順に、QH端子から信号が読み取れます。
図19にも示した様に、CLK信号とCLK INH信号の論理和が各Dフリップフロップにクロック信号として供給されます。論理和回路(OR回路)の2つの入力には機能的な差がないため、CLK信号とCLK INH信号を入れ替えても、74HC165の動作は変わりません。
これまでCLK信号はシフトレジスタにシフト動作をさせるためのクロック信号で、CLK INH信号はCLK信号によるシフト動作を抑制するための信号だと説明してきましたが、これらの信号の働きを入れ替える事もできます。
しかし、その様な入れ替えを行った場合、"CLK INH"の名称(INHはinhibitの略で、抑止する、抑制する、阻害するなどの意味)の本来の意味が失われてしまい、回路図を読む人の理解の妨げになる可能性があります。
GPIOピンが少ないマイコンなどの入力端子の拡張に74HC165を使う場合は、A~Hのパラレル入力端子を外部からの入力端子として使い、それをQH端子からシリアル信号として取り出し、マイコンに読み込みます。
74HC165を制御する信号としてはSH/LD信号とCLK信号の2つが必要ですから、信号を読み取るためのQH信号と合わせて、合計出力2本、入力1本のGPIOが必要になります。
マイコンにに74HC165を接続して入力端子を拡張する場合の配線図を、図22に示します。
この図でマイコンにはOUT0端子とOUT1端子の2つの出力用GPIO端子と、IN端子の1つの入力用GPIO端子があります。
また、74HC165のCLK INH端子とSER端子は、それらの機能を使わないためGNDに接続してLを入力しています。QH端子は使わない出力端子なので、オープン(どこにも接続しない状態)にしてます。
VCC端子は電源線に接続するだけではなく、端子の近傍に0.1μF程度のパスコンを付けます。コンデンサの種類は、高周波特性の良い積層セラミックコンデンサかディスクセラミックコンデンサがいいでしょう。
図22の配線ができたら、次は図21の様にSH/LD信号とCLK信号を、OUT0端子とOUT1端子の出力で制御してください。そして、図21に示すタイミングで、QH信号をIN端子から読み取ってください。
図21のタイミングチャートでは、SH/LD信号がLの期間は、端子A~Hに入力される信号(DA~DH)が変化しない事を前提にしていました。
しかし、図22の様に、外部信号の入力端子を増やす目的で74HC165を使用する場合、SH/LD信号がLの期間ずっと外部入力端子の電圧を一定に維持するのは、一般には無理です。というのは、外部回路からは、いつSH/LD信号がLになっているか分からないですし、仮にそれが分かった所で、その間電圧を維持する事が難しい回路が多くあるからです。(例えば、押しボタンスイッチの状態の検出に74HC165のパラレル入力端子を使う場合は、人はSH/LD信号がHかLかなど考えずにボタンを押すでしょう)
そう考えると、図21のタイミングチャートは、パラレル-シリアル変換の動作の基本をよく表してはいるものの、SH/LD信号がLの期間はA~H端子の電圧が変わらない事を仮定している点で、一般性を欠いています。またパラレル信号を取り込んだ後、端子A~Hの電圧がLのままになるという必然性もありません。
図23は、SH/LD端子の電圧に関係なく端子A~Hの電圧が変化する場合のタイミングチャートの例です。分かりやすい様に、SH/LD信号がLになっている期間を長めに書いています。
この図のSH/LD信号がLの期間のQH信号とQH信号の変化を見ると分かりますが、H信号の変化に応じて、これらの信号は即座に変化しています。(QH信号はH信号と同じ波形になり、QH信号はH信号の論理反転になっています)
そして、SH/LD信号が立ち上がる瞬間にQH信号が確定し、その後はCLK信号が立ち上がるまで、QH信号は変化しません。
これはSH/LD信号がLの期間は、シフトレジスタ最終段のDフリップフロップが、H端子を入力端子とするラッチ回路として働いている事を示しています。
最終段以外のDフリップフロップの出力端子はICパッケージの外には出ていませんが、これらのDフリップフロップも最終段と同様、SH/LD信号がLの期間は、端子A~Gの信号の変化に応じて出力が変化しており、SH/LD信号が立ち上がる瞬間に出力電圧が確定します。
以上の説明の様に、74HC165がパラレル入力端子から取り込む電圧が確定するのは、SH/LD信号が立ち上がる瞬間なのです。QH信号から読み取れる信号も、SH/LD信号が立ち上がる瞬間の電圧となります。
74HC165の機能を部分的に使わず、使用しない端子が生じる事があります。出力端子の場合は、使わない端子を単にオープンにする(どこにも接続しない)だけでいいのですが、未使用の入力端子は適切に処理する必要があります。この章では、未使用の入力端子の処理法について説明します。
パラレル入力端子(端子A~H)の中で、使わない端子がある場合は、GNDまたはVCCに接続してください。
CLK INH端子でCLK信号の働きを抑制する必要がない場合は、CLK INH端子を必ずGNDに接続してください。
SER端子を使わない場合は、GNDまたはVCCに接続してください。
趣味の電子工作で74HC165、および同機能のIC(74HCT165等)を使う方を想定して、インターネット上で購入できるサイトへのリンクを集めました。下の表で部品の型番をクリックすると、販売ページにジャンプします。
なお、この表は2019年2月時点での情報をまとめたものです。
ユニバーサル基板で試作する場合は、DIPパッケージの製品を購入してください。
企業名・店舗名 | 部品の型番 | パッケージ | メーカー | 備考 |
---|---|---|---|---|
マルツ | SN74HC165N | DIP | Texas instruments | |
TC74HC165AP(F) | DIP | 東芝 | ||
TC74HC165AF(F) | SOP | 東芝 | ||
共立エレショップ | 74HC165 | DIP | 各社 | どのメーカーの製品が届くか分からないので、微妙な特性が問題になる場合は要注意。 |
千石電商 | TC74HC165AP | DIP | 東芝 | |
RSコンポーネンツ | 74HC165PW,112 | TSSOP | Nexperia | 購入単位は24個 |
74HCT165D,652 | SOIC | Nexperia | 購入単位は10個 |