ADALM2000による実習:トランスファ・ゲートを利用したXOR/XNOR回路

目的

前回の実習「ADALM2000による実習:『CD4007』を使って様々なロジック機能を実現する」では、CMOSロジック回路を取り上げました。今回は、その基本原理に関する解説を補強しつつ、より複雑な論理ゲートについて考えてみます。具体的には、トランスファ・ゲートとインバータを組み合わせることにより、XOR(排他的論理和)とXNORの動作を実現するロジック回路を構築してみます。

背景

今回は、トランジスタ・アレイ「CD4007」、NMOSトランジスタ「ZVN2110A」、PMOSトランジスタ「ZVP2110A」を組み合わせてロジック機能を実現します。これらは、アナログ・パーツ・キット「ADALP2000」に含まれています。CD4007は、図1に示すように3組の相補型MOSFETで構成されています。各ペアのゲートには共通のピンが割り当てられています(3/6/10番ピン)。また、各PMOSの基板(サブストレート)はすべて正の電源に接続されています(14番ピン)。同様に、各NMOSの基板もすべてグラウンドに接続されています(7番ピン)。図1の右側には、より接続を理解しやすいよう描き直した図を示しています。左側のペアを見ると、NMOSのソース端子がNMOSの基板(7番ピン)に接続されています。一方、PMOSのソース端子はPMOSの基板(14番ピン)に接続されています。残る2つのペアは、より汎用性が高い状態になっています。右側のペアについては、NMOSのドレイン端子とPMOSのドレイン端子がいずれも12番ピンに接続されています。

図1. CD4007のブロック図
図1. CD4007のブロック図

CD4007は、多くの用途に利用できる汎用のICです。例えば、CD4007を1個使用することにより、3つのインバータ、1つのインバータと2つのトランスファ・ゲート、NANDゲート、NORゲートなどを構成できます。インバータとトランスファ・ゲートを組み合わせれば、トランスファ・ゲートをベースとするXOR/XNORの機能を実現することが可能です。通常、XORとXNORは回路図では図2に示すシンボルで表現されます。

図2. XOR/XNORのシンボル
図2. XOR/XNORのシンボル

静電放電には要注意

一般に、CMOSベースのICは静電放電による損傷を受けやすいデバイスだと言えます。CD4007も、その例外ではありません。CD4007は、静電放電からの保護を実現するためのダイオードを内蔵しています。それでも慎重に扱わなければ損傷してしまう可能性があります。通常、静電気に弱い電子機器を扱う際には、帯電防止マットやリスト・ストラップを使用します。但し、そうした適切な実験環境ではなく、自宅で作業を行うケースもあるでしょう。その場合、静電気に対応するためのツールまでは準備していないかもしれません。このような場合には、ICに触れる前に自分自身を接地するとよいでしょう。これも、静電気を防止するための簡便な対策になります。CD4007を取り扱う前に、身体にたまった静電気を放電すれば、実験作業の際にチップを壊してしまうのを防ぐことができるでしょう。

準備するもの

  • アクティブ・ラーニング・モジュール「ADALM2000
  • ソルダーレス・ブレッドボード
  • CMOS アレイ:CD4007(1 個)
  • NMOS トランジスタ:ZVN2110A(2 個)
  • PMOS トランジスタ:ZVP2110A(2 個)

説明

図3の回路をご覧ください。この回路では、トランスファ・ゲートとインバータを組み合わせることにより、XOR/XNORの機能を実現しています。2つのトランスファ・ゲートは、DPST (双極単投)スイッチの機能を実現するために使用しています。一方、インバータは全部で3つ使用しています。まず、上記のDPSTスイッチと2つのインバータを組み合わせることにより、XORの機能を実現しています。その出力をもう1つのインバータで反転することにより、XNORの機能も得られるようにしています。2つのトランスファ・ゲートは連動してセレクタの動作を実現します。入力Aの状態に応じ、入力Bまたは入力Bの反転のうちどちらかが出力C(XOR出力)に現れます。トランジスタM9とM10で構成したインバータは、Cを反転させて出力CBAR(XNOR出力)を生成します。

図3に示した回路をソルダーレス・ブレッドボード上に実装してください。トランジスタM1~M6としては、CMOSアレイであるCD4007を使用します。2つのインバータ(M7とM8、M9とM10)は、NMOSのZVN2110AとPMOSのZVP2110Aを1つずつ使用して構成します。実装した回路には、ADALM2000から5Vの電源電圧を供給します。

この回路では、2つのロジック入力AとBを使用します。ノードCには、非反転のXOR出力が現れます。この出力を反転した信号がノードCBARに現れることでXNOR機能が実現されます。

図3. XOR/XNORの構成方法
図3. XOR/XNORの構成方法

ハードウェアの設定

まずは、任意波形ジェネレータ(AWG)の2つの出力をDCソースとして設定してください。必要に応じてオシロスコープの各チャンネルを使用し、回路の入力と出力を観察します。5Vの電源は、回路に電力を供給するために使用します。なお、この実習では、-5Vの電源はディスエーブルの状態に設定してください。

図4. 図3の回路を実装したブレッドボード
図4. 図3の回路を実装したブレッドボード

手順

入力Aに相当する6番ピンをAWG1に接続します。入力Bに相当する1番ピンと9番ピンは、AWG2の出力に接続してください。また、出力Cに相当する2/5/12番ピンはオシロスコープのチャンネル1に接続します。出力CBARとなるM9/M10のドレイン端子は、オシロスコープのチャンネル2に接続してください。実験を開始する際、5Vの電源をオンにすることを忘れてはなりません。なお、信号の表示にはソフトウェア・パッケージ「Scopy」を使用します。

AWGの制御画面を開き、AWG1をDCの0Vに設定します。つまり、入力Aにローの信号を印加するということです。一方、AWG2もDCの0Vに設定します。入力Bにもローの信号を印加するということです。

図5. COUTとCBAR_OUTの波形
図5. COUTとCBAR_OUTの波形

この状態で、オシロスコープのチャンネル1によって出力Cを観察します。オシロスコープの画面には、安定したDC電圧が表示されるはずです。

ここで、AWGの両チャンネルを、ピークtoピークの振幅が5V、オフセットが2.5Vの矩形波(0Vから5Vまでスイング)が生成されるように設定します。なお、AWG1の周波数は1kHz、AWG2の周波数は2kHz(AWG1の周波数の2倍)に設定してください。AWGの両チャンネルについては、必ず同期がとれている状態になるようにします。

オシロスコープの画面で、入力Aと入力Bの信号に対する出力Cと出力CBARを観察してください。

続いて、AWG2の周波数をAWG1と同じく1kHzに設定し、位相を90°に設定します。この状態で、オシロスコープの画面により、入力Aと入力Bの信号に対する出力Cと出力CBARを観察してください。

位相検出器としてのXORゲート

位相検出器(位相比較器)とは、入力された2つのロジック信号の位相差を表すアナログ電圧信号を出力する回路です。位相検出器は、フェーズ・ロック・ループ(PLL)の中心的な要素として使われています。PLLだけでなく、信号間の位相の関係を検出することを目的として様々なシステムで使われています。例えば、モータ制御、レーダー、通信、復調器、サーボ機構などのシステムにおいて、重要な機能ブロックとしての役割を果たしています。

XORゲートを使用すれば、矩形波の信号の位相検出を実現できます。比較する2つの信号が完全に同相、つまりは位相差が0°の場合、XORゲートの出力はゼロのレベルで一定になります。一方、2つの信号の位相が異なる場合、1サイクルの間に2つの信号の値が異なっている期間が生じます。1サイクルに対するその期間の割合に相当する間だけ、XORゲートの出力はハイになります。例えば、位相が10°異なる場合、XORゲートの出力は、1サイクルの10/180、つまり1/18の間、ハイになります。2つの信号の位相が180°異なる場合(一方の信号がハイのときに他方がローである場合、またはその逆の場合)には、XORゲートの出力は各サイクルでハイのままになります。

一般に、PLLでXORゲートを位相検出器として使用する場合、位相検出範囲の中央付近に相当する90°の位相差の近辺でロックします。位相差が90°の場合、XORの出力は、周波数が入力の2倍でデューティ・サイクルが50%の矩形波になります。この矩形波のデューティ・サイクルは、2つの入力信号の位相差に比例して変化します。そのため、XORゲートの出力にローパス・フィルタを適用すると、2つの信号の位相差に比例するアナログ電圧が得られます。なお、2つの入力は対称性のある方形波でなければなりません。一方の入力のデューティ・サイクルが他方のデューティ・サイクルとわずかに異なっている場合、ローパス・フィルタの出力には、90°の位相差に対応する理想的な中央の位置に対してオフセットが生じてしまいます。

説明

図6に示すRCローパス・フィルタを図4のブレッドボードに追加します(図7)。オシロスコープのチャンネル1をこのローパス・フィルタの出力に接続してください。

図6. XORゲートとローパス・フィルタを利用した位相検出器
図6. XORゲートとローパス・フィルタを利用した位相検出器

ハードウェアの設定

AWGの両チャンネルは、ピークtoピークの振幅が5V、オフセットが2.5Vの矩形波(0Vから5Vまでスイング)を生成するように設定します。AWG1とAWG2の周波数はいずれも1kHzに設定してください。その際、AWG1とAWG2の両方の位相は必ず0°に設定します。また、両AWGが必ず同期がとれた信号を出力するように設定してください。

図7. RCフィルタを追加したブレッドボード
図7. RCフィルタを追加したブレッドボード

手順

オシロスコープのチャンネル1をRCフィルタの出力に接続します。それにより、位相検出器の出力にフィルタを適用した結果(DC)を観察してください。一方、オシロスコープのチャンネル2はXORゲートの出力Cに接続します。それにより、XORの出力のパルス幅を観察してください。Scopyで取得した波形の例を図8に示しました。

Scopyで取得した波形の例を図8に示しました。

図8. XORゲートを利用した位相検出器の出力波形
図8. XORゲートを利用した位相検出器の出力波形

代替部品の選択肢

今回は、4つのNMOSトランジスタとPMOSトランジスタ(ZVN2110AとZVP2110A)を使用して2つのインバータを構成しました。これについては、CD4007をもう1つ使用したり、「74HC04」や「CD4049」といったインバータICを使用したりすることで代替できます。74HC04、CD4049は、インバータ回路を6個内蔵するICです。また、CD4007で構成したスイッチについては、クワッド・タイプのSPSTスイッチ「CD4066」で代替することが可能です。

問題 

図3の回路の入力としては、4通りの状態が考えられます。AWG1、AWG2の出力を順次ハイ(5V)とロー(0V)に切り替えて、4通りの状態に対する出力を確認してください。その結果を以下の表1にまとめてください。

表1. 入力A/Bの各組み合わせに対する出力
入力A 入力B 出力C 出力CBAR
0 0
1 0
0 1
1 1

答えはStudentZoneで確認できます。

著者

Antoniu Miclaus

Antoniu Miclaus

Antoniu Miclausは、アナログ・デバイセズのシニア・ソフトウェア・エンジニアです。Linuxやno-OSドライバを対象とした組み込みソフトウェアを担当。それ以外に、アナログ・デバイセズのアカデミック・プログラムやQAオートメーション、プロセス・マネージメントにも携わっています。2017年2月から、ルーマニアのクルジュナポカで勤務。クルジュナポカ技術大学で電子工学と通信工学の学士号、バベシュボヨイ大学でソフトウェア・エンジニアリングの修士号を取得しています。

Doug Mercer

Doug Mercer

Doug Mercerは、1977年にレンセラー工科大学で電気電子工学の学士号を取得しました。同年にアナログ・デバイセズに入社して以来、直接または間接的に30種以上のデータ・コンバータ製品の開発に携わりました。また、13件の特許を保有しています。1995年にはアナログ・デバイセズのフェローに任命されました。2009年にフルタイム勤務からは退きましたが、名誉フェローとして仕事を続けており、Active Learning Programにもかかわっています。2016年に、レンセラー工科大学 電気/コンピュータ/システム・エンジニアリング学部のEngineer in Residenceに指名されました。