ENGLISH 简体中文 日本語 한국어  



   
 
キーワードまたは型番を入力    




アプリケーションノート 3664

TINIのIO性能の拡張

要約:TINI DS80C400マイクロコントローラの評価(EV)キット(TINIm400モジュールとTINIs400ソケットで構成)は、TINIハードウェアとソフトウェアを評価するための優れたプラットフォームです。ただし、EVキットは汎用IO (GPIO)ピンが少ないという制約があります。このアプリケーションノートでは、CPLD (コンプレックスプログラマブルロジックデバイス)をソケットボードに追加し、32ビットのパラレルIOインタフェースを実現する方法について説明します。

はじめに

DS80C400評価キットは、TINIm400リファレンス基板とTINIs400ソケットを組み合わせたもので、DS80C400ネットワークマイクロコントローラ上で、TINIランタイム環境を評価してTINIベースのアプリケーションを開発するための優れたプラットフォームです。TINIm400/TINIs400のペアの短所は、汎用IO (GPIO)ピンの数が限られていることです。TINIs400ソケットには、GPIOとして簡単に使用可能なピンがわずかしかありません。ソケット上のIOピンのほとんどは基板全体に散在しており、他の機能で使用されるものです(たとえば、J27のI2CピンやJ4の外部割込みピン)。

このアプリケーションノートでは、コンプレックスプログラマブルロジックデバイス(CPLD)を使用して、32本のGPIOピンをTINIs400ソケットボードに追加するために必要なハードウェア設定とソフトウェア開発の方法を、順を追って示します。

ダウンロード:このアプリケーションノートに関連するソースコードと回路図

ハードウェアの設定

TINIのIO性能を拡張するための最初のステップは、TINIs400ソケットボード上に4つの特別なデバイス、すなわちCPLD、電源レギュレータ、および2つのヘッダを実装することです。TINIs400ソケットボードには、これらのデバイスを追加するためのパッドと配線が含まれています。このようなパッドと配線は、ダラスセミコンダクタが販売する基板には実装されていません。多くのアプリケーションでは、IO性能の拡張は不要であるため、あるいはカスタムボードの設計を使用するため、デバイスは実装されていません。

TINIs400の回路図1の7ページでは、TINIのIO性能を拡張するために必要なデバイスについて詳しく説明しています。この回路図では、100ピンVQFPパッケージのXilinx® XC2C64 CoolRunner®-? CPLDが必要です。TINIハードウェアはXC2C64と、これより大きなXC2C128の両方を用いてテストされているため、ピン配列とパッケージが同じであればサイズの異なる他のいずれのデバイスもサポートすることができます。

CPLDに関連するヘッダは3つありますが、そのうちの2つは、以下を実装する必要があります。
  1. J30のJTAGプログラミングコネクタ。XC2C64 CPLDはJTAGインタフェースを介してプログラミングします。J30コネクタはJTAG信号TMS、TCK、TDI、およびTDOのためのピンを備えています。これについては、以下の「CPLDのプログラミング」という項でさらに詳しく説明します。
  2. J28の拡張IOコネクタ。このコネクタはXC2C64デバイス上の32のピンにアクセスすることができるようにするものです。CPLDをプログラミングすることによって、これらのピンへの読出し/書込みのインタフェースが確保されます。
  3. J29の特別IOコネクタ。このコネクタはXC2C64に対してさらに16の接続を可能とするものですが、このプロジェクトでは使用しません。
J30とJ28のヘッダ以外に、実装を必要とするその他のデバイスを以下に示します。
  • U2 MAX1792EUA18レギュレータ
  • U12 Xilinx CPLD
  • C40~C57のコンデンサ。これらのコンデンサは、CPLDを使用する場合にのみ必要なものですが、ダラスセミコンダクタから入手したTINIs400ソケットボードにすでに配置されています。これらのコンデンサが正しく配置されていない、または欠落していても、他のTINI開発時では、見落とされている可能性があります。

CPLDの構成

CPLDはプログラマブルロジックデバイスです。CPLDは非常に柔軟な内部ロジックを備えたプログラム可能なハードウェアと見なすことが可能で、簡単な再プログラミングでさまざまな機能を実装することができます。CPLDを使用すれば、32のフリップフロップを実装して、CPLDの出力ピンを駆動するためのロジックレベルドライバを格納することができます。ここでは、ハードウェア記述言語(HDL)であるVerilogを使用して、CPLDに実装する機能を記述しています。XilinxのツールはVerilogのソースコードをCPLDの構成に使用するバイナリ形式に変換します。

TINIs400上で、TINIマイクロコントローラであるDS80C400のメモリバスにXC2C64を接続します。この接続によって、TINIプログラムは、特定のアドレスで書込みと読出しを行ってCPLDにアクセスすることができます。このため、アドレスラインがCPLDを選択したときに応答するようCPLDをプログラミングする必要があります。CPLDは、書き込まれたデータバス信号をラッチし、また読み出されたときにポート入力をバスに送出する必要があります。

図1. CPLD関数のブロック図
図1. CPLD関数のブロック図

図1は、CPLDに必要とされる機能のブロック図を示しています。右上のブロック(IO7:0、IO15:8、IO23:16、IO31:24)は、出力される値を格納するためのフリップフロップを表します。これらの8ビットレジスタバンクのそれぞれがデータバスに接続されます。適切なアドレスラインと書込みストローブ(nWr)によってイネーブルにされると、データバスの内容がレジスタにラッチされます。IOピンの入力レベルが検知され、4:1マルチプレクサに供給されます。マルチプレクサでは、アドレスの下位ビットがデータバスに渡す8ビットの値を選択します。CPUが(アドレスラインとnPSEN信号によって指定された)読出しを要求している場合、マルチプレクサの出力はイネーブルになり、データバスを駆動します。

10のアドレスライン(チップイネーブルは含まず)がCPLDに接続されていますが、このデモアプリケーションは、このうちの4つのラインだけを使用します。A17:A16は上位アドレスラインで、チップイネーブル6とともに使用されます。アドレスビットA17:A16がローで、かつnCE6がアクティブ(ロー)のときにCPLDが選択されますが、読出し信号または書込み信号もアクティブになるまでCPLDは動作しません。他の2つのアドレスビットA1:A0は4つの8ビットレジスタのうちの1つを書込みのターゲットまたは読出しのソースとして選択します。このアドレス方式は、多くのアドレスによって、4つの8ビットレジスタにアクセス可能であることを意味します。このアドレスの柔軟性を表1にまとめています。

表1. CPLDレジスタを起動するアドレスラインの値
Register A21 A20 A19 A18 A17 A16 A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
IO7:0 X X X X 0 0 X X X X X X X X X X X X X X 0 0
IO15:8 X X X X 0 0 X X X X X X X X X X X X X X 0 1
IO23:16 X X X X 0 0 X X X X X X X X X X X X X X 1 0
IO31:24 X X X X 0 0 X X X X X X X X X X X X X X 1 1

TINIライブラリおよび動作ファームウェアは、DS80C400をチップイネーブル当り2MBに構成するため、またDS80C400のアドレス範囲が24ビット(16MB)であるため、8つのチップイネーブルがアドレスの上位3ビットを表しています。チップイネーブル6を起動するには、24ビットアドレスの上位3ビットが110bであることが必要です。

表1は、複数のアドレスがレジスタを有効にすることができることを示していますが、ここでは、以下のアドレスのみをレジスタに使用しています。
  • アドレスC00000h→IO7:0
  • アドレスC00001h→IO15:8
  • アドレスC00002h→IO23:16
  • アドレスC00003h→IO31:24

Verilogのコーディング

6つのVerilogファイルを使用してCPLDに32ビットのGPIO機能を実装します。ファイルはこのアプリケーションのソースコードに含まれており、Xilinx WebPACK™のプロジェクトファイルが添付されています(以下の説明を参照)。このプロジェクトのVerilogソースファイルは、以下のとおりです。
  • Buffer8.v:TINIから4つの8ビットレジスタにデータバスを接続するために使用する8ビットバッファ
  • Mux2x8.v:2つの8ビットバスの選択に使用する2対1マルチプレクサ
  • OneO4e.v:下位のアドレスビットに応じて1つのアクティブ信号を出力する2対4デコーダ
  • Reg8OD.v:出力値の格納に使用する8ビットの擬似オープンドレインフリップフロップアレイ
  • TSBuffer8.v:入力値をデータバスに送出するのに使用する8ビットのトライステートバッファ
  • CPLD.v:ブロック間のトップレベルの接続
最も興味深いVerilogソースファイルはCPLD.vです。このファイルには入力、出力、およびノードの定義が含まれており、他のファイルで定義されたブロックを具体化します。また、このソースファイルで、読出しと書込みのパルスを取り出します。
assign Reset = ~nRstOut; // make a hi-active Reset
assign IOBank = ~nCE6 & ~|AH; // decode the I/O bank
assign ReadT = IOBank & ~nPSEn; // qualify Read strobe
assign WriteT = IOBank & ~nWr; // qualify Write strobe
次に、信号ReadTはトライステートバッファのイネーブルとして使用され、検知された入力値をDS80C400のデータバスに送出します。
// Tri-State data bus to TINI needs this buffer
TSBuffer8 U4(ReadT, DataToTINI, D);
信号WriteTは、クロック信号として4つの8ビットレジスタバンクに供給されます。
// 4 8-bit pseudo-open-drain output drivers
Reg8Out U6(Reset, ~WriteT, Enable[0], DataFromTINI, UIO[ 7: 0]);
Reg8Out U7(Reset, ~WriteT, Enable[1], DataFromTINI, UIO[15: 8]);
Reg8Out U8(Reset, ~WriteT, Enable[2], DataFromTINI, UIO[23:16]);
Reg8Out U9(Reset, ~WriteT, Enable[3], DataFromTINI, UIO[31:24]);
もう1つの重要なソースファイルは(Verilogファイルではありませんが)、CPLD.ucfです。このファイルは、CPLD.vで宣言された信号名とXC2C64デバイスの実際のピンとの間のマッピングを行います。以下に、アドレスラインといくつかのIOピンの定義を示します。
NET "AL<1>" LOC = "P30";
NET "AL<0>" LOC = "P32";
NET "AH<1>" LOC = "P37";
NET "AH<0>" LOC = "P39";
NET "UIO<5>" LOC = "P43";
NET "UIO<6>" LOC = "P49";
NET "UIO<7>" LOC = "P50";
NET "UIO<8>" LOC = "P52";
NET "UIO<9>" LOC = "P53";
これらのピンの定義は、TINIs400回路図の7ページに記載されている内容そのものです。たとえば、回路図はアドレスライン3~0 (A[3:0])がピン28、29、30、および32に接続されていることを示します。上記のリストは、2つの最下位アドレスライン(AL<1>およびAL<0>)の信号が定義され、これらがCPLD上のピン30と32にマッピングされることを示します。

CPLDのプログラミング

CPLDプログラミングのプロジェクトファイルは、このアプリケーションノート用のソースコードのCPLDディレクトリにあります。Xilinxの無料WebPACK®ツールを使用すると、CPLDを構築してプログラミングすることができます。このアプリケーションノートはバージョン6.3.03iで開発しました。CoolRunner 2 CPLDファミリをサポートしている限り、バージョン6.3.03i以降のXilinxツールが適合します。

ハードウェアの接続

ここでは、Avnet Avenue JTAGプログラミングケーブルを使用し、コンピュータのパラレルポートをCPLDのJTAGピンに接続しました。JTAGプログラミングケーブルは多くのCPLDまたはFPGA評価キットに付属しています。プログラミングケーブルを図2に示します。

図2. Avnet Avenue JTAGプログラミングケーブル
図2. Avnet Avenue JTAGプログラミングケーブル

図3は、プログラミングケーブルとTINIs400ソケットボードとの間に必要な接続を示します。信号はラベル付けされているため、その他のプログラミングケーブルを使用することができます。TINIs400ソケットボードは、VCCが3.3Vであると想定しています。

図3. TINIs400ソケットボードへのJTAGプログラマの接続。ラベル付けされていないJ30のピンは接続されません。
図3. TINIs400ソケットボードへのJTAGプログラマの接続。ラベル付けされていないJ30のピンは接続されません。

プロジェクトのロード

プロジェクトをロードするには、[File]メニューに移動し、[Open Project]を選択します。このアプリケーションノートのソースファイルを探して、[parallel32.npl]を選択します。これでプロジェクトが開いて構築することができるようになります。この項の残りの部分では、この新プロジェクトの構成方法について説明します。この説明を飛ばして、CPLDのプログラミング方法を学ぶ次の項に進むこともできます。

以下の手順にしたがい、アプリケーションノートに付属のソースコードをベースにして新しいプロジェクトを作成します。
  1. [File]メニューで、[New Project]を選択します。
  2. 新しいプロジェクトを構築したいディレクトリを選択し、プロジェクト名を入力します。そのプロジェクト名の新しいディレクトリが生成されます。[Top Level Module Type]がHDLであることを確認します。[Next]をクリックします。
  3. このメニューを使用すると、プロジェクトの対象となるデバイスとパッケージを選択することができます。[Device Family]については、[CoolRunner 2 CPLDs]を選択します。次に、提供されるリスト(おそらくXC2C64、XC2C128、または同等のデバイス)からデバイスを選択します。[Package]については、[VQ100]を選択します。VQ100はTINIs400ソケットを想定したパッケージです。このアプリケーションノートで使用する残りの構成オプションについては、図4を参照してください。完了したら、[Next]を押して続行します。

    図4. 新プロジェクトのデバイスと設計フローの構成
    図4. 新プロジェクトのデバイスと設計フローの構成

  4. 次のウィンドウでは、プロジェクトで作成する新しいファイルを入力するよう要求されます。すべてのソースファイルが提供されているため、新しいファイルを追加せずに[Next]をクリックします。
  5. 以下のウィンドウでは、既存のソースファイルを追加するよう求められます。[Add Source]ボタンをクリックし、(前述の「Verilogのコーディング」の項で挙げた)すべてのVerilogファイルとCPLD.ucfファイルをソース区分から追加します。追加すると、「File.v is which source type? The suffix is ambiguous as to type」(ファイル名.vのソースタイプは何ですか。拡張子があいまいです)という質問が表示される場合があります。[Verilog Design File]を選択し、[OK]をクリックします(図5を参照)。すべての入力ファイルを分類したら、[Next]をクリックして続行します。

    図5. 入力ソースファイルのファイルタイプを指定します。
    図5. 入力ソースファイルのファイルタイプを指定します。

  6. 次のウィンドウでは、新しいプロジェクトの概要が示されます。内容を確認し、[Finish]をクリックします。
  7. 上記のステップ5でUCFファイルを追加しているのであれば、このファイルが影響するソースに関連付けるよう求められます。リストから[CPLD]を選択して[OK]をクリックします。
この時点で、プロジェクトは作成されて構成されています。ここで、設計を編集、構築、および統合することができます。

デバイスのプログラミング

この項の説明にしたがって、CPLDプロジェクトを統合し、XC2C64デバイスをプログラミングします。前述の「ハードウェアの接続」の項に記載したとおりにプログラミングケーブルが接続されていることを確認します。

CPLDをプログラミングするには、以下の操作を行います。
  1. [Project View](通常は左上のウィンドウ)で、[Module View]タブを選択します。[Module View]で、メインファイルの[CPLD.v]を選択します。
  2. [Process View]ウィンドウ(通常は[Project View]ウィンドウの下にあります)で、[Implement Design]ブランチを展開し、[Generate Programming File]をダブルクリックします。これによって、Verilogソースコードをバイナリファイル(CPLDをプログラミングするためのファイル)に変換するのに必要なあらゆるプロセスが実行されます。プロセスが実行されると、プロセスの左にマークが表示され、実行の結果がわかります。緑色のチェックマークは、プロセスが正常に終了し、エラーや警告がないことを意味します。黄色の感嘆符は、プロセスが正常終了したものの、警告があることを意味します。赤色のX印は、エラーのためにプロセスが異常終了したことを意味します。
  3. プロセスが終了してプログラミングファイルが正常に生成されたら、[Configure Device (IMPACT) ]をダブルクリックします。
  4. [Configure Devices]というウィンドウが表示されます。オプション[Boundary Scan Mode]を選択し、[Next]をクリックします。
  5. 次のウィンドウ([Boundary-Scan Mode Selection])で、[Automatically connect to cable and identify Boundary Scan chain]を選択し、[Finish]をクリックします。
  6. デバイスが正しく接続されていれば、iMPACTで、「There was one device detected in the boundary-scan chain. iMPACT will now direct you to associate a programming or BSDL file with this device...」(バウンダリスキャンチェーンでデバイスが1つ検出されました。iMPACTはプログラミングまたはBSDLファイルをこのデバイスに関連付けるよう指示します。)というポップアップボックスが表示されます。[OK]をクリックします。
  7. [File Dialog]ウィンドウが開き、現在のプロジェクトディレクトリが表示されます(このディレクトリが開かない場合、正しい場所を探して指定します)。このウィンドウで、CPLD.jedをダブルクリックして選択します。
  8. Xilinxのチップの絵を右クリックして、[Program]を選択します。
  9. [Erase Before Programming and Verify]チェックボックスがオンであること、またその他のチェックボックスはオフであることを確認します。[OK]をクリックします。
  10. プログラミングステータスバーが表示され、数秒(20秒未満)後にプログラミングが終了し、CPLDが構成されます。
CPLDの機能設計を開始するときには、DS80C400がCPLDと通信していないときに、CPLDコードがアドレス、制御、およびデータの各信号をハイインピーダンス状態に解放していることを確認します。この確認を怠ることはよくあり、基板のリセット状態が持続したり基板が不規則にリブートしたりするなど、正常動作がうまくいかない症状が発生する原因となります。この問題が発生したときには、CPLDを消去するだけで症状が治まります。

デバッグ基板

32のLEDからなる単純なバンクによってTINIの拡張IO性能を実証します。デモ基板は4つのLEDバンクと4つのレジスタパックを使用して、CPLDの各IOピンの状態を示します。LED基板を図6に示します(TINIs400に取り付けた状態)。

図6. デバッグIO基板を取り付けたTINIs400/TINIm400
図6. デバッグIO基板を取り付けたTINIs400/TINIm400

この単純な基板の回路図は、このアプリケーションノートのソースコードに含まれています。抵抗器の値は推奨値であることに留意してください。すなわち、抵抗が大きすぎると、表示が極端に薄暗くなり、抵抗が小さすぎると、過大な電流をTINI電源から消費することになるため、実行が停止されます。

ソフトウェアインタフェース

この単純なメモリインタフェースを実装すると、拡張IOピンにアクセスするためのソフトウェアは非常に簡単になるため、アセンブリ言語で実装します(ネイティブメソッドとしてJavaアプリケーションに統合するため)。

表2は、インタフェース用に定義されるJavaネイティブメソッドを示します。

表2. TINI-CPLD間インタフェースに使用するJavaメソッド
Function Arguments Returns Description
program0 int x none Write the input value x to the address C00000h (IO7:0).
program1 int x none Write the input value x to the address C00001h (IO15:8).
program2 int x none Write the input value x to the address C00002h (IO23:16).
program3 int x none Write the input value x to the address C00003h (IO31:24).
Read0 none int Reads from address C00000h.
Read1 none int Reads from address C00001h.
Read2 none int Reads from address C00002h.
Read3 none int Reads from address C00003h.

program (int address, int x) およびread (int address) の2つの関数を用いても、同じジョブを遂行可能であることに留意してください。ただし、このアプリケーションの場合、アドレス当り1機能を割り当てるよう選択しました。これによって、アプリケーションは別のアドレスを機能レジスタとして取り出すことができます。programとread機能の各アセンブリコードは極めて単純です。このコードで必要なことは、データポインタに正しいアドレスをロードしてから、movx命令でメモリバスを起動することだけです。
Native_program0:
clr a ; request first parameter
lcall NatLib_LoadPrimitive ; load parameter into r3:r0
mov dptr, #0C00000h ; point to memory mapped peripheral
mov a, r0 ; move low byte of source into accumulator
movx @dptr, a ; write to memory mapped peripheral
clr a ; indicate no error condition
ret ;
...
Native_read0:
mov dptr, #0C00000h ; point to memory mapped peripheral
movx a, @dptr ; read from memory mapped peripheral
mov r0, a ; move into low byte of result
clr a ; indicate no error condition
mov r1, a ; unsigned extend to 32-bits
mov r2, a ; unsigned extend to 32-bits
mov r3, a ; unsigned extend to 32-bits
ret ;

アプリケーション例

アプリケーション例は、ソースコードのjavacodeフォルダにあります、このアプリケーションは、増分していく値を4つのLEDバンクに書き込んでいます。値は500ミリ秒ごとに更新されるため、アプリケーションが正しく動作しているかどうかを簡単に知ることができます。

このアプリケーションには、ネイティブメソッドとJavaコードの両方が含まれているため、Java専用のプログラムに比べて構築プロセスがやや複雑になります。構築バッチファイルはソースコードとともに含まれていますが、以下に示すように、使用している開発システムに合わせて若干の修正が必要です。
  • c:/work/tini/tini1.16
    ative/bin/win32/macro -Ic:/work/tini/tini1.16
    ative/lib/ cpld.a51
    ハードドライブに格納されたマクロプリプロセッサとネイティブライブラリのインクルードファイルの場所を指し示すようにディレクトリを変更します。これらは、標準TINI SDKの一部であり、ftp.dalsemi.com/pub/tini/index.htmlで入手することができます。
  • c:\work\tini\tini1.16
    ative\bin\win32\a390 -f 1.16 -p 400 -l cpld.mpp
    a390アセンブラプログラムの場所を指し示すようにディレクトリを変更します。このアセンブラプログラムはマクロプリプロセッサと同じディレクトリに格納されています。
  • del *.class
    既存のクラスをカレントディレクトリから削除します。
  • javac -bootclasspath C:\work\tini\tini1.16\bin\tiniclasses.jar demo.java
    TINIクラスファイルに対してソースファイルdemo.javaを構築します。TINIのAPIクラスを指し示すようにディレクトリを変更します。これは、TINI SDKの一部です。
  • java -classpath C:\work\tini\tini1.16\bin\tini.jar;%classpath% TINIConvertor -n cpld.tlib
    -f . -o demo.tini -d C:\work\tini\tini1.16\bin\tini.db
    CPLDとのインタフェース接続のためのネイティブライブラリと組み合わせてTINI実行ファイルを構築します。Javaコードで必要なことは、以下の機能を呼び出してCPLDの拡張IOピンにアクセスするだけです。
    System.loadLibrary("cpld.tlib")
    この場合も、TINI SDKに付属のtini.jarツールファイルとtini.dbクラスデータベースを指し示すようにディレクトリを変更する必要があります。

結論

TINIとCPLDを組み合わせることによって、極めて柔軟な拡張IO性能への簡単なインタフェースを実現することができます。ただし、拡張IOは、プログラマブルロジックデバイスを使用するときの可能性を制約するものではありません。CPLDは、多くのロジック機能やステートマシンに使用することが可能です。TINIのネットワークスタック、Java仮想マシン、およびオペレーティングシステムをCPLDと組み合わせることによって、高度で柔軟性の高いTINIシステムを構成することができます。

1http://files.dalsemi.com/pub/tini/ds80c400/c_libraries/sch_tinis400.zip



CoolRunnerはXilinx, Inc.の登録商標です。

WebPackはXilinx, Inc.の登録商標です。

XilinxはXilinx, Inc.の登録商標です。


関連製品  APP 3664: Jun 02, 2006
DS80C400 ネットワークマイクロコントローラ フルデータシート
(PDF, 1.8MB)
無料
サンプル
DS80C400-KIT DS80C400の評価キット フルデータシート
(PDF, 412kB)
DS80C410 イーサネットおよびCAN付きネットワークマイクロコントローラ フルデータシート
(PDF, 1.8MB)
無料
サンプル
DS80C411 イーサネットおよびCAN付きネットワークマイクロコントローラ フルデータシート
(PDF, 1.8MB)
無料
サンプル
DSTINIM400 ネットワークマイクロコントローラの評価基板 フルデータシート
(PDF, 876kB)
DSTINIS400 DSTINIs400/DSTINIs-00xソケットの評価ボード フルデータシート
(PDF, 496kB)

自動アップデート
お客様が関心のある分野でアプリケーションノートが新規に掲載された際に自動通知Eメールの受信を希望する場合は、EE-Mail™にご登録ください。


We Want Your Feedback!



フィードバックをお寄せください。
内容に満足されましたか、あるいは満足されていませんか?もっと良いページにできると思いますか?あるいは、単なるコメントでも結構です。フィードバックをお待ちしています。—マキシムはお客様からいただく訂正、提案を元に改善していきます。 このページを評価し、フィードバックを送信する。

 

ダウンロード、PDFフォーマットダウンロード、PDFフォーマット(195kB)
 AN3664, AN 3664, APP3664, Appnote3664, Appnote 3664

        •         •         •     プライバシーポリシー     •     法的お知らせ

    Copyright © 2009 by Maxim Integrated Products