MAX II CPLD を使用した アナログ・キーボード・エンコーダ この資料は英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。こちらの日本語版は参考用としてご利用 ください。設計の際には、最新の英語版で内容をご確認ください。 2006 年 6 月 ver. 1.0 はじめに キーボード・ デコード方法 Application Note 426 キーボード・エンコーダは、ごく一般的な CPLD のアプリケーションです。通常、 プロセッサ、ASSP、あるいは ASIC には、キーパッドやキーボードに対応できる だけの十分な数のピンがありません。I/O 拡張は CPLD のごく一般的な機能であ り、これによりプロセッサはごく少数の I/O で非常に大きなキーボードをデコー ドすることができます。MAX® や MAX II などの CPLD は、多数の低コスト I/O を持っているとしても、キーパッドやキーボードをスイッチごとに 1 本の I/O で デコードする方法は望ましくありません。キーボードをより少ない配線でデコー ドする利点は、キーパッドから主回路基板に入る配線の本数が減ること、あるい はキーボード・アセンブリでのスイッチ・マトリックスの複雑さが軽減されるこ とです。このアプリケーション・ノートでは、MAX II デバイスのリソースを活用 して、わずか 2 本の I/O ピンと 1 本の GND ピンで、キーパッドまたはキーボード の多数のスイッチをデコードする方法を説明します。使用したデコーディング方 式では、わずか 4 個のスイッチから多くは 48 個のスイッチで動作します。 CPLD でスイッチをエンコードする最も一般的な方法は、簡単な回路を使用して、 もう一つの端子を通常 10 KΩ のプルアップ抵抗 スイッチの一端を GND に接続し、 を通して VCC に接続することです。switch および resistor ノードは任意の CPLD 入力ピンに接続されます。プッシュボタン式、ノーマルオープン単極単投 (SPST)スイッチの場合、CPLD入力は通常は1で、スイッチが押されると0になります。 図 1 に、スイッチごとに 1 個の CPLD I/O を使用したシンプルな接続回路を示し ます。MAX II デバイスで利用可能なシュミット・トリガ入力バッファを使用し て、この回路を強化できます。シュミット・トリガ入力はスイッチング・ノイズ を低減し、スイッチのデバウンスを容易にします。パワーアップおよびパワーダ ウン・メカニズムをスイッチ・デコード回路に統合する方法については、 「AN 422: MAX II CPLD を使用したポータブル・システムにおける消費電力の管理」を参照 してください。 Altera Corporation AN-426-1.0/JP 1 MAX II CPLD を使用した アナログ・キーボード・エンコーダ 図 1. スイッチ回路あたり 1 個の CPLD I/O を使用したシンプルな回路 VCC R1 10K R2 10K VCCIO, V VCCINIT CCIO, VCCINIT Application Application Logic Logic MAX II CPLD MAX II CPLD GND GND 大きいスイッチ・キーボードのデコードに必要な CPLD ピン数を減らすための最 も一般的な方法は、スイッチをロウ / カラム・マトリックスで接続することです。 この手法では、M × N スイッチの配列が M + N 本の CPLD ピンだけでデコードさ れます。一例として、4 × 4 の配列になった 16 スイッチのカリキュレータ・キー パッドでは、8 本のピンしか必要としません。この場合、1 個のスイッチにつき 1 本のピンを使用する単純な手法と比較して、必要なピン数は半分になります。 2 Altera Corporation キーボード・デコード方法 図 2 は、ロウとカラムに配置されたスイッチ・アレイをデコーディングする標準 的な接続を示します。各スイッチは対応するロウとカラムに接続されます。ロウ には 10 KΩ のプルアップ抵抗も接続されています。MAX II デバイスのプログラ マブル・ロジックに簡単な回路が追加されます。 図 2. ロウとカラムを使用してキーパッドをデコードする一般的な回路 CPLD R1- 4 10K Row 3 Row 2 Row 1 Row 0 Col 3 Col 2 Col 1 Col 0 キーパッドがアイドル状態のときは、CPLD によってカラム・ピンが Low にドラ イブされます。ロウ・ピンは入力で、スイッチが押されるのを待っています。ス イッチが押されていずれかのロウ信号が Low になると、CPLD のロジックがス イッチ・アレイのスキャンを開始して、押されたスイッチ(1 個または複数)を特 定します。 CPLD ロジック回路はすべてのカラムをハイ・インピーダンス状態にドライブし、 次に一度に 1 つずつ各カラムを Low にドライブします。各カラムが Low になる と、対応するロウ入力ピンは、チェック中のカラムのスイッチが押されたかどう Altera Corporation 3 MAX II CPLD を使用した アナログ・キーボード・エンコーダ かを示します。各カラムの結果は 4 ビット・レジスタにロードされます。4 つのカ ラムがすべてスキャンされると、16 ビット・レジスタにすべてのスイッチのロジッ ク値が保持されます。この方法では、単一スイッチと複数のスイッチの組み合わ せを検出できます。レジスタがすべてゼロになると、スキャン・ロジックがアイ ドル状態に戻り、カラムを Low にドライブして電力を節約します。 一般的なスイッチの最小オン・パルスは > 3 ms です。スイッチを押して離すとき の人間の反応時間は、通常約 30 ms です。CPLD は、10 µS 以下で容易にスイッ チ・アレイをスキャンできます。したがって、ユーザがスイッチを離す前に、CPLD が問題なくスイッチをデコードします。 パワーアップおよびパワーダウン・メカニズムをスイッチ・デコード回路に統合 する方法については、 「AN 422: MAX II CPLD を使用したポータブル・システム における消費電力の管理」を参照してください。 新しい 2 線式 キーパッド・ ディサイダ スイッチごとに 1 本のピンを使用する方式、およびロウ / カラム・スイッチ・ア レイ方式は有効ではありますが、すべてのアプリケーションに最適なわけではあ りません。欠点もいくつかあります。スイッチごとに 1 本のピンを使用する方式 には、以下の欠点があります。 ■ 大きなキーボードには多数の CPLD I/O ピンが必要 ■ スイッチを CPLDに接続するために多数のパラレル PCB 配線パターンが必要 ■ シート・スイッチとマザーボード間に高価な多ピン・ワイド・コネクタが必要 ■ スイッチごとに個別の抵抗が必要 ロウ / カラム・スイッチ・アレイ方式では、必要な CPLD ピン数を大幅に減らす ことができ、またシート・スイッチをマザーボードに接続するのに必要なワイヤ 数も減らすことができます。しかし、以下のような欠点もあります。 ■ スイッチを接続するロウとカラムの直交配線パターンのために、 2層PCBのブ ■ レークアウトが必要 より高価な 2 層シート・スイッチが必要 ■ 小さなキーボードのスイッチ・アレイの場合は、CPLD I/O ピン数の削減が 少ない アナログ - デジタル・コンバータを使用して、スイッチ・アレイをデコードする ことができます。一連の抵抗が VCC と GND の間に直列に接続され、スイッチ が各抵抗タップと共通のノードに接続されているとき、スイッチがアクティブに なると、回路は抵抗スタック内のスイッチ・ロケーションに比例する電圧を生成 します。アナログ - デジタル・コンバータの出力を使用して、押されたスイッチ をデコードすることができます。この種のデコードに対応する回路を図3に示します。 4 Altera Corporation 新しい 2 線式キーパッド・ディサイダ 図 3. アナログ - デジタル・コンバータによるスイッチ・アレイのデコーディング VCC VCC R6 10K VCC R1 330Ω R2 330Ω SW1 R3 330Ω SW2 R4 330Ω SW4 R5 330Ω SW5 CPLD CPLD VCC Sense Serial Serial Analog-To-Digital A/D Converter Converter I²C I²C Interface Interface Block Block LPM_Counter LPM_Register D D QQ N Bits Bits N Load Load Switch Switch Value Value Application Application Logic Logic 図 3 では、 VCC と GND の間に抵抗スタックが接続されています。スイッチを閉 じると、関連する抵抗タップがシリアル・アナログ - デジタル・コンバータに接 続されます。スイッチ・アレイから検知した電圧を読み取るように、CPLD をプ ログラムすることができます。CPLD は正しいコマンドとプロトコルで、アナロ グ - デジタル・コンバータをドライブし、データをキャプチャしてパラレル・レ ジスタに置きます。この方式では、スイッチ・アレイが非常にシンプルになり、 VCC、 GND、 Sense の 3 本の配線しか必要ありません。 図 4 に示すように、直列抵抗を単層シート・スイッチに統合するのは非常に簡単 です。シート・スイッチの配線パターンを PCB 抵抗にするには、いろいろな方法 があります。配線パターンの幅を非常に狭くする、より抵抗性が大きい導体を抵 抗セグメントに使用する、配線パターンが薄くなるようにエッチングして抵抗を 増やす、などが可能です。 Altera Corporation 5 MAX II CPLD を使用した アナログ・キーボード・エンコーダ 図 4. アナログ・デコード用シート・スイッチの PCB レイアウト GND Sense VCC この方式ではシート・スイッチまたは PCB スイッチのレイアウトを簡素化 して低コスト化を図りますが、アナログ - デジタル・コンバータにかかる追 加コストを容認できない場合があります。アナログ - デジタル・コンバータ をなくし、MAX II デバイスのリソースを使用してアナログ・スイッチをデ コードすることが可能です。 MAX II デバイスを使用した 2 線式キーパッド・デコード MAX II デバイスは、内部発振器、シュミット・トリガ I/O、および高集積 の演算プログラマブル・ロジック・ファブリックを使用して、アナログ - デ ジタル・コンバータを置き換えて、アナログ・スイッチ・アレイをデコード します。この機能を実現するには、MAX II デバイスは簡単な低コストの外 付けコンデンサしか必要ありません。セルフ・キャリブレーション回路を備 えているため、高品質のコンデンサは必要ありません。この回路は、アナロ グ-デジタル・コンバータによるデコードと同じ一連の抵抗構造を使用します。 図 5 に、一連の抵抗 R1-R5 を示します。抵抗 R2-R5 はそれぞれ 33 Ω です。 R3 と R4 の間には抵抗が多く存在する場合があります。抵抗 R1 は 33 Ω の 倍数です。R1 はスイッチをサンプリングする時の最小抵抗です。R5 はグラ ンドに接続されています。 抵抗 R1 は MAX II デバイスの PreCharge ノードに接続されています。 PreCharge はコンデンサ C1 にも接続されています。コンデンサ C1 のもう 一方の端子はグランドに接続されています。抵抗スタック R1-R5 の各ノード は、共通のノード Sense に接続されているノーマル・オープン・スイッチ に接続されます。Sense は、プルアップ抵抗 R1 を通じて VCC に接続され、 MAX II デバイスに接続されています。 6 Altera Corporation 新しい 2 線式キーパッド・ディサイダ R2-R5 の値は、全抵抗 R2 + R3 + ... + R4 + R5 がスイッチ 1 を通して Sense に短絡されるように設定されます。計算式 1 に示すように、 Sense 電圧が MAX II デバイスの Sense 入力の入力 Low スレッショルドを下回るように トータルの抵抗値は十分低い値でなければなりません。 (1) ( R2 + R3 + … + R4 + R5 ) VSense = ----------------------------------------------------------------------------- < V IL ( R2 + R3 + … + R4 + R5 + R6 ) 計算式 2 に示すように、最小抵抗 R1 は、MAX II PreCharge 出力をドラ イブできるように十分大きな値でなければなりません。 (2) ( VCC – V OH ) --------------------------------R1 < I OH さらに、計算式 3 に示すように、スイッチ 1 が短絡したとき Sense ドライ ブは十分強くなければなりません。 (3) ( VCC – V OL ) --------------------------------R1 < I OL 計算式 4 に示すように、抵抗スタック R1-R5 とコンデンサ C1 は、 Sense がトライ・ステートでいずれのスイッチも押されてないときに、RC 時定数 を形成します。 (4) τ = ( R1 + R2 + R3 + …R4 + R5 ) × C1 スイッチが押されて Sense が Low のときには、RC 時定数が変化します。 スイッチ SW2 が押された場合は、計算式 5 に示すように、RC 時定数が速く なります。 (5) τ = ( R1 + R2 ) × C1 スイッチ SW4 が押された場合、RC 時定数は(計算式 6)になります。 (6) τ = ( R2 + R3 + … + R4 + R5 ) × C1 時定数に基づいて押されたスイッチを特定するには、MAX II デバイスの内 蔵オシレータを使用します。MAX II 内蔵オシレータは、精度は 25% 程度で すが、安定しているため RC 時定数の測定は 2 つの部分に分けて行う必要が あります。 Altera Corporation 7 MAX II CPLD を使用した アナログ・キーボード・エンコーダ まず、リファレンスを測定します。これは PreCharge に High パルスが印 加され、 Sense 信号がトライ・ステートのときの RC 時定数です。次に、 Sense が Low に保持され、PreCharge に High パルスが印加されるときに サンプルを測定します。2 つの時定数の差、および PreCharge と GND の 間の抵抗ユニット値の数に基づいて、押されたスイッチを正しくデコードす ることができます。 図 5. MAX II デバイスを使用した 2 線式キーパッド・デコード VCC VCC EPM570--T100 R6 10K PreCharge PreCharge SampleReset SampleReset PreCharge R1 316 Ω C1 0.2uF R2 33Ω SW1 R3 33 Ω SW2 PreChargeData PreChargeData SampleReset SampleReset Control ControlBlock Block RefReset RefReset Sense Sense RefEnable RefEnable SenseData SenseData SwitchLoad SwitchLoad Sense LPM_Counter LPM_Counter R R QQ 12 12 Bits Bits EN EN NN LPM_Counter LPM_Counter SW4 R5 33Ω SW5 TimerReset TimerReset 100 µS 100µS ÷ D D Q Q 4 Bits Bits 4 Load Load Switch Switch R R QQ 12 Bits Bits 12 EN EN LPM_Counter LPM_Counter R4 33 Ω LPM_Counter LPM_Counter X X Application Application Logic Logic R R ÷÷440 440 EN CO EN CO altufm_osc altufm_osc 2x5 Header JTAG JTAG ~ 4.4MHz 4.4MHz MAX II デバイスの回路はコントロール・ブロックで構成されています。3 個 のカウンタがあります。12 ビット・カウンタは、reference τ とスイッチ τ を 測定するのに使用されます。また、100 µS タイマはデバウンスに使用されま す。MAX II デバイスの演算能力を使用して、Sample カウントを N 倍しま す。ここで、N は、抵抗スタック R1-R5 の合計抵抗ユニット数 R5 です。R1 は通常、R5 の倍数になります。次に、(<Sample> τ)*N が(<reference> τ) で割ります。押されたスイッチに応じた結果のバイナリ値は、保持レジスタ に格納されます。 8 Altera Corporation 新しい 2 線式キーパッド・ディサイダ スイッチの値を特定するための計算式は、(計算式 7)です。 (7) Sample × N Switch = ----------------------------Reference ■ Sample = Sense ピンが Low にドライブされるときの放電時間を測定するカ ■ ウンタのカウント値 reference = Sense ピンがトラ・ステートのときの放電時間を測定するカウン ■ タのカウント値 N =(抵抗ユニット数)全抵抗スタック R1-R5 における R5 このキャパシタ値を使用して標準放電時間を調整します。この時間が長すぎる場 合は、Sense カウンタと Reference カウンタを 12 ビット以上増やすことがで きます。この時間が短すぎる場合は、 Sense カウンタと Reference カウンタ のビット数を減らすことができます。フル reference スタックの推奨最小カウ ンタ・サイズは、N*4 または Log2(N*4)ビット(切り上げ)です。 図 6 のフロー・チャートは、ハイ・レベルのスイッチ・デコード・プロセスを示 します。いくつかの状態で右側にあるループは、デバイスがループしているか、ス イッチ状態の変化を待っているか、あるいはデバウンス・ブロックの場合には、ス イッチが遷移後に安定するまで一定クロック・サイクル数の間待機していること を表しています。 Altera Corporation 9 MAX II CPLD を使用した アナログ・キーボード・エンコーダ 図 6. 2 線式スイッチ・デコード・プロセスのフロー・チャート Wait for Switch Detect Switch Debounce Switch Measure Ref. RC Measure Switch RC Load Register SwitchRC*N/Ref RC Wait for Switch Release Debounce Switch 10 Altera Corporation 新しい 2 線式キーパッド・ディサイダ 図 7 のフロー・チャートは、図 5 のコントロール・ブロックの動作を詳細に示し ています。コントロール・ブロックは、スイッチのサンプル測定、リファレンス 測定、およびデバウンスのタイミングを制御します。この図ではアクティブな信 号出力のみ示しています。ここに示していない信号は、すべて Low または非アク ティブ状態です。 図 7. 2 ピン・キーパッド・デコード用コントロール・ブロック・ステート・マシン (1) POR Reset Sense = Z PreCharge = 1 RefReset = 1 SampleReset = 1 < 100 µS Sense = 0* > 100µS 100 µS Sense = Z Sense = 1* > 100µS PreCharge = Z RefEnable = 1 Sense = Z PreCharge = 1 < 100 µS PreCharge = Z PreCharge = 0 Sense = Z Sense = 0 PreCharge = Z Sense = Z Sense = 1 PreCharge = Z Sense = Z Sense = 1* > 100 µS PreCharge = 1 < 10 µS 100 µS Sense = 0* > 100 µS Sense = Z Sense = 0 PreCharge = Z SampleEnable = 1 < 100 µS PreCharge = Z PreCharge = 1 Sense = 1 PreCharge = 0 Sense = Z Sense = Z Sense = 0 PreCharge = Z PreCharge = Z SwitchLoad = 1 Switch = Sample*N/Ref 図 7 の注: (1) 出力:PreCharge、Sense、RefReset、RefEnable、SampleReset、SampleEnable、SwitchLoad、TimerReset、Inputs、PreCharge、 Sense、100 µS。 Altera Corporation 11 MAX II CPLD を使用した アナログ・キーボード・エンコーダ R1 が正確に R5 の倍数でない場合は、回路の精度を向上させることができます。 R1 は N + 0.5 × R5 でなければなりません。R1 を正確に R5 の倍数にすると、乗算 - 除算ファンクションからの値は、次に低いスイッチ値から 1 LSB しか離れません。 これは除算の剰余が常に 1 または 0 であることを意味します。したがって、 Sense カウンタまたは Reference カウンタのカウントが 1 ビットしか離れていない場 合、少量のノイズで回路がスイッチを誤って読み取る可能性があります。R1 の値 を N*0.5 の倍数にすることによって、除算の剰余は一般に 0.5 × ( Refence ⁄ N ) と な り ます。した が って、 Sense カ ウン タ また は Reference カ ウ ンタ に、 0.5 × ( Reference ⁄ N ) だけの+または−のカウント差が生じるには、多量のノイ ズを必要とします。 PreCharge 入力バッファにシュミット・トリガ入力を使用して、回路の精度を 改善することも可能です。シュミット・トリガは、比較的低速な PreCharge ノードの放電で生じるノイズに対してより感度が低くなっています。 図 8 は、図 5、6、および 7 のキーパッド・デコード回路を、 「AN 422: MAX II CPLDS を使用したポータブル・システムにおける消費電力の管理」に記述するパ ワーアップ検出回路と組み合わせる方法を示しています。この組み合わせ回路に は、配線を効率的に利用しながら、複数のスイッチ・パネルと 1 個のダイオード だけですべてのスイッチに対応できるパワーアップ検出機能を実現する利点があ ります。 図 1 と 2 に示すスイッチ・マトリックス接続では、スイッチごとに 1 個のダイオー ドまたはロウごとに 1 個のダイオードが必要です。計算式 8 に示すように、新し い回路が動作するための唯一の要件は、R7、D1、SW1、および R2-5 の間にある スイッチが押されたときに形成され、Q1 のゲートにターンオンさせるための十分 低い電圧を供給する分圧回路です。 (8) ( VCC – V F ) R7 VGS = – 1 × ------------------------------ × ----------------------------------------------------------------------------- < ~ 0.7V ( VCC ) ( R2 + R3 + … + R4 + R5 + R7 ) ■ VGS = Q1 のゲート・ソース間電圧 ■ VF = D1 の順方向電圧降下 ■ VCC = バッテリ供給電圧。一般的には 3.0 V ですが、最小値はバッテリがな くなる直前の 2.2 V です。 デバイスがパワーアップされると、 PWRDWN ノードが Low になり、これが逆バ イアスされたダイオード D1 を通して Sense ノードに接続されるため、スイッ チ・デコード処理の動作には影響を与えません。また、スイッチ・デコード・プ ロセスは、最も遅いオシレータ周波数プロセス電圧温度(PVT)のときでも 1 ms 以内に完了します。したがって、パワーアップ時間とスイッチ・デコードは、3 ms の最小スイッチ・オン時間内に容易に完了します。 12 Altera Corporation 新しい 2 線式キーパッド・ディサイダ 図 8. パワーアップおよびパワーダウン・コントロール付き 2 線式キーパッド・デコード R7 10K IRLML6302 2 2xAA 1 Other 3 Q1 Components C1 0.1µF EPM570 - T100 R6 10K PreCharge PreCharge PreCharge R1 309 Ω Switch Switch PreChargeData PreChargeData C1 0.2µF Application Application Logic Logic Key Pad SW1 Decode KeyBlock Pad R2 33 Ω Decode Block SW2 R3 33 Ω Sense Sense Sense Clock Clock SenseData SenseData SW4 R4 33 Ω altufm_osc altufm_osc D1 1N914 R5 33 Ω SW5 ~ 4.4 MHz 4.4MHz LPM_Counter LPM_Counter R R ÷440M ÷ 440M EN CO EN CO PWR DWN PWR DWN 2x5 Header Altera Corporation JTAG JTAG 13 MAX II CPLD を使用した アナログ・キーボード・エンコーダ 図 9 は、デコーディングに必要な直列抵抗回路をシート・スイッチを使用してコ スト効率良く実現する方法を示しています。図はシート・スイッチ下の配線パター ンのレイアウトを示したものです。中央にドットがある一部欠けた円は基本スイッ チ構造です。陰影部分の配線パターンは、直列抵抗として働く高抵抗配線パター ンです。この高抵抗は異なる材料を使用し、さらに接続配線パターンまたは最小 ライン幅を使用して実現されます。 図 9. 集積化抵抗付き 2 線式キーパッド・メンブレン GND Sense PreCharge 利点 MAX II デバイスを使用する重要な利点は、スイッチのデコードが必要なときに多 くの選択肢があることです。アプリケーションによっては、ピンごとのスイッチ が最良の選択肢であり、また 2 ピン・アナログ・デコード方式が最もコスト効果 が高いアプリケーションもあります。MAX II デバイスの内蔵オシレータは、外付 けオシレータなしでスイッチをデバウンスし、複雑なデコード動作を可能にする 非常にコスト効果の高い方法です。スイッチ信号は非常に低速でノイズが多いた め、MAX II デバイスのシュミット・トリガ機能は、どの方法を使用する場合で も、スイッチをデコードする上で非常に重要です。シュミット・トリガはデバウ ンスを容易にし、アナログ・スイッチのデコードをより正確なものにします。 MAX II の集積度と演算ファブリックによって、アナログ・スイッチのデバウンス に必要な複雑な計算が容易かつ面積効率の高いものになります。アナログ・デコー ド方式は、従来の CPLD ロジック・ファブリックでは実現できません。 まとめ MAX II CPLD はスイッチのデコードに最良の選択です。すべてのスイッチ・デ コード・モードでパワーダウン技術が可能ですが、MAX II デバイスはバッテリ電 源のポータブル・アプリケーションにも最良の選択です。 14 Altera Corporation 101 Innovation Drive San Jose, CA 95134 (408) 544-7000 www.altera.com Applications Hotline: (800) 800-EPLD Literature Services: [email protected] Copyright © 2004 Altera Corporation. All rights reserved. Altera, The Programmable Solutions Company, the stylized Altera logo, specific device designations, and all other words and logos that are identified as trademarks and/or service marks are, unless noted otherwise, the trademarks and service marks of Altera Corporation in the U.S. and other countries. All other product or service names are the property of their respective holders. Altera products are protected under numerous U.S. and foreign patents and pending applications, maskwork rights, and copyrights. Altera warrants performance of its semiconductor products to current specifications in accordance with Altera's standard warranty, but reserves the right to make changes to any products and services at any time without notice. Altera assumes no responsibility or liability arising out of the application or use of any information, product, or service described herein except as expressly agreed to in writing by Altera Corporation. Altera customers are advised to obtain the latest version of device specifications before relying on any published information and before placing orders for products or services. Printed on recycled paper