AN82250 PSoC® 3、PSoC 4、および PSoC 5LP の Verilog によるプログラマブル ロジック設計の実 装方法 著者: Vijay Kumar Marrivagu/Antonio Rohit De Lima Fernandes 関連製品ファミリー: CY8C3xxx、CY8C5xxx、CY8C42xx 関連サンプル コード: なし 関連アプリケーション ノート: AN81623、 AN82156 本アプリケーション ノートの最新版または関連プロジェクト ファイルについては、 http://www.cypress.com/AN82250 をご覧ください。 AN82250 は、PSoC® 3、PSoC 4 および PSoC 5LP の PLD 部にプログラマブル デジタル ロジックの設計を実施する方法を説明 します。また、PSoC の汎用デジタルブロック (UDB) およびそれらのプログラマブルロジックデバイス (PLD) のサブブロックを紹介 します。サンプルプロジェクトは、PSoC Creator™内に Verilog ベースのコンポーネントを作成することにより、設計で PLD を使用 する方法を説明します。 目次 はじめに .................................................................... 1 PSoC UDB ............................................................... 2 2.1 PSoC UDB 内の PLD のアーキテクチャ ............ 2 3 PSoC Creator ........................................................... 5 4 サンプル プロジェクト .................................................. 6 1 2 付録 B: マクロセル構成図 ........................................ 23 C 付録 C: シーケンス検出器の Verilog コード .............. 24 D 付録 D: ビルド後の設計の注意事項 ......................... 27 D.1 プロジェクトの報告ファイル .............................. 27 D.2 静的タイミング解析 .......................................... 27 4.1 Verilog コンポーネントの作成: Counter4Bit ....... 9 改訂履歴 .......................................................................... 28 4.2 Verilog コンポーネントの作成: SeqDetector ..... 16 ワールドワイド販売と設計サポート .................................... 29 5 データパス設計対 PLD ベースの設計 ....................... 20 6 まとめ ...................................................................... 20 6.1 7 B その他の情報 ................................................. 20 関連リソース ............................................................ 21 著者について ............................................................ 21 A 付録 A: PSoC PLD と競合他社の CPLD とのリソース 比較 .......................................................................... 22 1 はじめに PSoC 3、PSoC 4 および PSoC 5LP (以降は PSoC と記載) は単なるマイクロコントローラ以上のものです。PSoC により、 マイクロコントローラ、コンプレックス プログラマブル ロジック デバイス(CPLD)、および高性能アナログの機能を統合し、他に 例を見ない柔軟性を得ることができます。これにより、費用、基板面積、消費電力、および開発時間を低減できます。 注:PSoC 41xx に UDB が備えられていないため、このアプリケーションノートは適用されません。 このアプリケーションノートは、PSoC の汎用デジタルブロック (UDB) 内の PLD を紹介し、PSoC Creator コンポーネントを作 成することにより、それらを使用する方法を説明します。それは、コンプレックス プログラマブル ロジック デバイス (CPLD) 機 能を PSoC に移植するための効果的な最初のステップです。このアプリケーションノートをお読みいただいた後は、PSoC PLD に詳しくなり、PSoC Creator を使用して Verilog ベースの独自のカスタム コンポーネントを作成することができます。 www.cypress.com 文書番号: 001-89367 Rev. *B 1 ® PSoC 3、PSoC 4、および PSoC 5LP の Verilog によるプログラマブル ロジック設計の実装方法 PSoC のデジタル機能の詳しい活用方法については、次のステップとして「AN82156 – PSoC 3, PSoC 4 and PSoC 5LP Designing PSoC Creator Components with UDB Datapaths」をお読みください。 注:これは上級のアプリケーションノートであり、読者が PSoC Creator に精通していることを前提にしています。PSoC に初 めてのユーザは、「AN54181 – Getting Started with PSoC 3」、「AN79953 – Getting Started with PSoC 4」および 「AN77759 – Getting Started with PSoC 5LP」をご参照ください。PSoC Creator が初めての方は、PSoC Creator ホームページを ご参照ください。 このアプリケーションノートは、デジタル設計および Verilog の基礎的な知識があることを前提にしています。これらの概念が 初めてであれば、「AN81623 – PSoC 3 and PSoC 5LP Digital Design Best Practices」および「KBA86336 – Just Enough Verilog for PSoC」をご参照ください。関連の PSoC デジタル設計のリソースは「参考資料」節に記述されています。 2 PSoC UDB PSoC は、汎用デジタルブロック (UDB) と呼ばれる小型、高速、低電力デジタル ブロックのアレイによってプログラマブル ロジックを実装しています。PSoC のデバイスは最大 24 個の UDB があります。図 1 に示すように、UDB は 2 個の小型プログラマ ブル ロジック デバイス (PLD)、1 個のデータパス モジュール、および 1 個のステータス コントロール ロジックから成っています。 図 1. UDB のブロック図 PLD Chaining PLD 12C4 (8 PTs) PLD 12C4 (8 PTs) Clock and Reset Control Status and Control Datapath Datapath Chaining Routing Channel 名前が示す通り、プログラマブル ロジックは、論理素子 (AND、OR、INVERT および FLIP-FLOP) のアレイを備えている デバイス ファミリです。一般的に、PLD は、特定のロジック機能を実行するよう設定できる回路です。 PSoC PLD は、レジスタ付きまたは組み合わせ積和ロジック、ルックアップ テーブル、マルチプレクサ、ステート マシン、および データパス動作の制御などを作成するのに使用されます。UDB データパスの詳細については、AN82156 をご参照ください。 2.1 PSoC UDB 内の PLD のアーキテクチャ PSoC PLD は、ほとんどの標準 PLD と同様、AND アレイの後に OR アレイが続きます。それらの両方はプログラム可能です。 これは、普通、積和アーキテクチャと呼ばれています。 AND アレイ内の 8 本のプロダクト ターム (PT) に 12 本の入力を供給します。各 PT 内で、入力の真 (T) またはその補数 (C) を 選択できます。PT の出力は OR アレイへの入力となります。OR ゲートの出力はマクロセル (MC) に提供されます。マクロセルは、 追加の組み合わせロジックを持ったフリップ フロップです。 www.cypress.com 文書番号: 001-89367 Rev. *B 2 ® PSoC 3、PSoC 4、および PSoC 5LP の Verilog によるプログラマブル ロジック設計の実装方法 図 2 に示すように、各 UDB に 2 個の PLD があり、それぞれには 8 本の PT と 4 個のマクロセルがあります。PSoC には最大 48 個の PLD があり、そのため最大 192 個のマクロセルと最大 384 本の PT があります。各 PLD は独立しています。また、 キャリーチェーンを介して接続するか、またはデジタル システム インターコネクト (DSI) に接続することができます。 付録 A では、PSoC PLD リソースを競合他社の同じサイズの PLD と比較します。 図 2. PSoC PLD の構造 PT0 PT1 PT2 PT3 PT4 PT5 PT6 PT7 IN0 TC TC TC TC TC TC TC TC IN1 TC TC TC TC TC TC TC TC IN2 TC TC TC TC TC TC TC TC IN3 TC TC TC TC TC TC TC TC IN4 TC TC TC TC TC TC TC TC IN5 TC TC TC TC TC TC TC TC IN6 TC TC TC TC TC TC TC TC IN7 TC TC TC TC TC TC TC TC IN8 TC TC TC TC TC TC TC TC IN9 TC TC TC TC TC TC TC TC IN10 TC TC TC TC TC TC TC TC IN11 TC TC TC TC TC TC TC TC T T T T T T T T MC0 OUT0 T T T T T T T T MC1 OUT1 T T T T T T T T MC2 OUT2 T T T T T T T T MC3 OUT3 AND Array OR Array 図 3 には、PSoC PLD にマップされた論理式の例を示します。 図 3. PLD にマップされた論理式 www.cypress.com A B C D TC TC TC TC TC TC TC TC TC TC TC TC TC TC TC TC TC TC TC TC TC TC TC TC TC TC TC TC TC TC TC TC IN4 TC TC TC TC TC TC TC TC IN5 TC TC TC TC TC TC TC TC IN6 TC TC TC TC TC TC TC TC IN7 TC TC TC TC TC TC TC TC IN8 TC TC TC TC TC TC TC TC IN9 TC TC TC TC TC TC TC TC IN10 TC TC TC TC TC TC TC TC IN11 TC TC TC TC TC TC TC TC T T T T T T T T MC0 T T T T T T T T MC1 T T T T T T T T MC2 OUT2 T T T T T T T T MC3 OUT3 X = (A & B) | (~C & D) Y = (A & B) | ( C & D) 文書番号: 001-89367 Rev. *B X Y 3 ® PSoC 3、PSoC 4、および PSoC 5LP の Verilog によるプログラマブル ロジック設計の実装方法 マクロセルのアーキテクチャは図 4 に示されます。マクロセル出力はレジスタ付き出力、または組み合わせ出力のいずれかです。 付録 B では、2 つの例を使ってマクロセルを介したデータフローを説明します。詳細情報については、使用しているデバイス のテクニカル リファレンス マニュアルの UDB 章のマクロセルの節をご参照ください。 図 4. PSoC PLD マクロセルのアーキテクチャ XOR Feedback (XORFB) 00: D FF 01: Arithmetic (Carry) 10: T FF on high 11: T FF on low (from prev MC) XORFB[1:0] SSEL selin cpt1 cpt0 3 2 1 0 CONST 1 1 0 To macrocell read-only register Constant (CONST) 0: D FF true in 1: D FF inverted in 0 Set Select (SSEL) 0: Set not used 1: Set from input 1 set D Q From OR gate clk out 0 QB res pld_en reset 1 0 COEN Carry Out Enable (COEN) 0:Carry Out disabled 1: Carry Out enabled selout RSEL BYP Output Bypass (BYP) 0: Registered 1: Combinational Reset Select (RSEL) 0: Set not used 1: Set from input (to next MC) www.cypress.com 文書番号: 001-89367 Rev. *B 4 ® PSoC 3、PSoC 4、および PSoC 5LP の Verilog によるプログラマブル ロジック設計の実装方法 3 PSoC Creator PSoC Creator は、ハードウェア開発に対応した回路図ベース の環境を提供します。それは、次の 2 つの大まかな方法で UDB PLD 内にロジック機能とステート マシンを実装すること ができます。 1. Verilog: PSoC Creator は、ハードウェア記述言語 (HDL) である Verilog に対応しています。Verilog を使用して、 PSoC UDB にマップされるデジタル機能を実装できます。 このプロセスでは、PSoC Creator に備えられた Verilog コンパイラである Warp™合成ツールを使用します。 このアプリケーションノートは、Verilog ベースのコンポーネント の作成方法を説明します (図 5 をご参照ください)。 2. 回路図: このプロセスは、必要な機能を実行する ために個別のゲート (AND、OR、XOR、NOT)、DFF、 および他のデジタル論理ブロックを配線することを必要 とします。PSoC Creator は、すべての論理演算だけ でなく、マルチプレクサ、ルックアップ テーブル (LUT)、 および他の簡単な PLD ベースの機能にもゲート記号 を提供します。 また、PSoC Creator は作成済み、且つテスト済みの 標準ペリフェラル コンポーネントも提供します。これら のコンポーネントは、PLD とデータパスの両方を含む UDB アレイにマップされます。その一部を図 6 に示し ます。これらのコンポーネントを使用するのは、Verilog を使わずに PSoC の PLD 機能を使用する際の最も簡 単な方法です。 Verilog の詳細については、「KBA86336 – Just Enough Verilog for PSoC」をご参照ください。 図 6. PSoC Creator 内のデジタル コンポーネント 注:Warp の詳細については、PSoC Creator の Warp Verilog リファレンス ガイド (Help > Documentation) をご参照ください。 図 5. Verilog ベースのコンポーネント www.cypress.com 文書番号: 001-89367 Rev. *B 5 ® PSoC 3、PSoC 4、および PSoC 5LP の Verilog によるプログラマブル ロジック設計の実装方法 4 サンプル プロジェクト PSoC について学ぶための最良の方法の 1 つは、それを使用することです。このサンプル プロジェクトでは、簡単な PLD ベースの Verilog コンポーネントを作成する手順について説明します。 まず、アプリケーションノートのランディング ページで AN82250.zip ファイルをダウンロードします。プロジェクトを見るために、その ファイルをフォルダに解凍して、PSoC Creator で AN82250.cywrk ファイルを開きます。このプロジェクトは、回路図面の指示に 従って CY8CKIT-001 PSoC 開発キット (DVK) の PSoC 3 で作業するよう設計しました。少し変更すると、他の開発 プラットフォームで実行できます。このプロジェクトをビルドして PSoC DVK にプログラムします。 このサンプル プロジェクトでは、ファームウェアを必要とせず、5 ビットのシーケンス検出器をハードウェアに完全に実装します。 回路図面の詳細については、図 7 をご参照ください。 このプロジェクトの重要な特長は、回路図面に表示されている全ての コンポーネントが、クロックとピンを除き、UDB PLD に実装されていることです。 このプロジェクトは 2 進数のパターンを入力とします。パターンは、PSoC DVK での 2 個の押しボタン式スイッチにより生成さ れます。「SW_1」スイッチのボタンを押すと論理 0、また「SW_2」スイッチのボタンを押すと論理 1 と解釈されます。検出器の 状態を示すために、4 個の出力で、DVK 上の LED を駆動します。 PsoC をリセットすると、LED が灯り、PSoC が入力受け入れ準備 (即ち、スイッチを押すこと) ができたことを示します。PSoC は図 8 に示した状態図に従います。不完全ではあるが、正しいシーケンスを入力すると、LED は消えて、部分的なシーケンス が入力されたことを示します。間違えてスイッチを押すと、4 個の LED が灯ります。完全な 5 ビット シーケンスを正しく入力すると、 LED は 2 進数でカウントし始めます。 図 7. サンプル プロジェクト用の TopDesign 回路図面 www.cypress.com 文書番号: 001-89367 Rev. *B 6 ® PSoC 3、PSoC 4、および PSoC 5LP の Verilog によるプログラマブル ロジック設計の実装方法 入力から出力への信号の流れは以下の通りです。 2 個の押しボタン スイッチの入力は、デバウンサ コンポーネントを使って跳ね返りが抑えられ、エッジが検出されます。 このコンポーネントをアクセスするためには、PSoC Creator をコンポーネント パック 4 かそれ以降のものに更新してください。 入力ピンは、抵抗プルアップとして設定されます。そのため、押しボタンの入力は、スイッチを押すとハイからローに変化し ます。従って、デバウンサの「ネガティブ エッジでの検出」出力は、スイッチが押されたことが有効であることを示すために 使用されます。 その後、これらの信号は、10110 のシーケンスを検出するよう設定された SeqDetector コンポーネントに行きます。この パターンは、コンポーネントのカスタマイザで 0 (00000) ~ 31 (11111) の間の値を入力することで変更できます (図 9 を ご参照ください)。 シーケンス全体を正しく入力すると、「検出」出力がアサートされます。入力をたった一度だけ間違えても、「再起動」出力 がアサートされます。 「検出」信号がアサートされると、4 ビット カウンターはカウントし始めます。それまでは、リセット状態が維持されます。 カウンター周期は、コンポーネントのカスタマイザ内に 1 ~ 15 の間の望ましい 4 ビット周期値を入力することで調整できます (図 12 をご参照ください)。 「再起動」および「検出」信号は出力のマルチプレクサを制御して、図 8 の状態図に基づき 4 個の LED を駆動します。 図 8. サンプル プロジェクトの状態図 Correct SW press LEDs ON Wrong SW press Reset Reset/ Wrong Sequence ct r r e e ss Co pr SW detect, restart = 0,1 es W ro s s SW Press 5 Correct detect, restart = 1,0 ss Wrong SW press p re gS W es p re Wr on pr W gS Correct SW press LEDs OFF SW on Wr detect, restart = 0,0 ng Correct SW press pr ss SW Press 1 Correct ro W ng SW LEDs counting SW Press 2 Correct SW Press 4 Correct detect, restart = 0,0 detect, restart = 0,0 LEDs OFF Co rre ct SW pr es s SW Press 3 Correct detect, restart = 0,0 Co rre c W tS pr es s LEDs OFF LEDs OFF www.cypress.com 文書番号: 001-89367 Rev. *B 7 ® PSoC 3、PSoC 4、および PSoC 5LP の Verilog によるプログラマブル ロジック設計の実装方法 図 9. SeqDetector コンポーネントのカスタマイザ 図 10. カウンタ コンポーネントのカスタマイザ 注: 4 ビット カウンタ用の Verilog ファイルとシーケンス検出器コンポーネントを表示するために、Workspace Explorer の Components タブに移動してください。 PSoC PLD を効果的に使用するための重要な点は、PSoC Creator で Verilog ベースのコンポーネントを作成することです。 「KBA86338 – Creating a Verilog-based Component」では、Verilog ベースのコンポーネントの作成プロセスをまとめます。 事例として SeqDetector と Counter4Bit コンポーネントを使用すると、このプロセスについて理解できるようになります。 www.cypress.com 文書番号: 001-89367 Rev. *B 8 ® PSoC 3、PSoC 4、および PSoC 5LP の Verilog によるプログラマブル ロジック設計の実装方法 4.1 Verilog コンポーネントの作成: Counter4Bit 最も簡単なカスタム Verilog ベースのコンポーネントの一つは、同期リセットとイネーブル機能を備えた 4 ビットのアップカウンタです。 4.1.1 4 ビット カウンタ コンポーネントの作成手順 既存のプロジェクトに新しいコンポーネントを追加することができますが、この事例では、既存のプロジェクトが無い状態から始めます。 PSoC Creator を起動して、新規プロジェクトを作成します。この事例では、図 11 に示すように、「MyComponents」を プロジェクト名とします。 注: Creator 3.3 およびそれ以降の場合、新規プロジェクトの作成ダイアログは変更されました。Design Project のダイアログ内で、 Target Device を選択し 、 使用し てい る デバイ スを選 んで、 それか ら Next をク リック しま す。次の画面で、 Empty Schematic を選択し、Next をクリックします。最後の画面で、ワークスペースおよびプロジェクト名を「MyComponents」に変 更し、Finish をクリックします。 1. 図 11. 新規プロジェクトのダイアログ ボックス 2. Workspace Explorer の Source タブで、MyComponents ワークスペースを右クリックして、Add > New Project を クリックします。 3. この新規プロジェクトをコンポーネント ライブラリに設定するために、New Project ダイアログ ボックスで Other タブをク リックして PSoC Library を選択します( 図 12 をご参照ください)。この例でそれに「MyLibrary」と名付け、ロケーションを デフォルト値のままにします。 カスタム コンポーネントを個別のライブラリ プロジェクトで作成したほうが良いです。これにより、コンポーネントの管理と 再利用が簡単になります。 図 12. ライブラリ プロジェクトを追加する www.cypress.com 文書番号: 001-89367 Rev. *B 9 ® PSoC 3、PSoC 4、および PSoC 5LP の Verilog によるプログラマブル ロジック設計の実装方法 注: Creator 3.3 およびそれ以降の場合、新規プロジェクトの作成ダイアログは変更されました。ダイアログでは、Library project を選択し、Next をクリックします。ライブラリに「MyLibrary」という名前をつけて、Finish をクリックします。 作成したライブラリに新しいコンポーネントを以下の通りに追加します。 4. Components タブで、「MyLibrary」プロジェクトを右クリックして、コンテキスト メニューから Add Component Item を クリックします(図 13 をご参照ください)。 バージョン番号をコンポーネント名に含めるのは良いやり方です。コンポーネント名に「_vX_Y」タグを加えます (その内、 「X」はメジャーバージョンであり、「Y」はマイナー バージョンです)。PSoC Creator はバージョン管理機能を持っていて、 コンポーネントの複数のバージョンを追跡できます。 5. Symbol Wizard コンポーネントのテンプレートを選択して、コンポーネントに「Count4Bit_v1_00」と名付けます。 図 13. カスタム コンポーネントを作成する 空のシンボルから始めることができますが、この事例では、時間をかけないためにウィザードを使用します。詳細につい ては、Help > Documentation にあるコンポーネント作成者ガイドをご参照ください。 6. Create New ボタンをクリックして、コンポーネントのシンボル ウィザードを起動します。 このウィザードでは、入力と出力を定義するよう要求して、この情報を使ってコンポーネント シンボルを作成します。 7. 図 14 に示すように、回路図シンボル用に 3 個の入力端子と 2 個の出力端子を定義します。 図 14. Count4Bit 用のシンボル作成ウィザード www.cypress.com 文書番号: 001-89367 Rev. *B 10 ® PSoC 3、PSoC 4、および PSoC 5LP の Verilog によるプログラマブル ロジック設計の実装方法 図 15 に示すように、OK をクリックして、シンボル回路図でシンボルを生成します。 図 15. 4 ビット カウンタ用の最初のシンボル 図 16 に示すように、コンポーネントのサイズを変更でき、コンポーネントの外観も変更できます。 図 16. 4 ビット カウンタの最終シンボル 8. シンボル回路図で空きスペースを右クリックして、Properties をクリックします。図 17 に示すように、プロパティ フィールドの Symbol セクションで、Doc.CatalogPlacement の省略記号 (…) をクリックします。 図 17. シンボル属性のダイアログボックス 9. 図 18 に示すように、Catalog Placement ダイアログで、「Community/Digital/Logic/Counter 4-bit」を入力します。 これにより、カウンタは、Component Catalog ウィンドウの Community タブで、「Digital」フォルダの「Logic」サブフォルダの 中に配置されます。そのカタログ名は「Counter 4-bit」です。 図 18. カタログ配置を設定する www.cypress.com 文書番号: 001-89367 Rev. *B 11 ® PSoC 3、PSoC 4、および PSoC 5LP の Verilog によるプログラマブル ロジック設計の実装方法 カウンタ用に設定可能な周期値を持たせるために、コンポーネントのパラメータを追加する必要があります。 10. シンボル回路図で空きスペースを右クリックして、Symbol Parameters をクリックします (図 19 をご参照ください)。 パラメータの名、タイプ、およびデフォルトの値を、それぞれ「period」、「uint8」、および「15」に指定します。このパラメーター により、ユーザーはカスタマイザでカウンターの周期値を指定できます (図 10 をご参照ください)。 図 19. Count4Bit のシンボル パラメータ 11. Parameter Definition ダイアログ ボックスの Misc セクションで Description フィールドをクリックして、このパラメータ 用に記述します。 Validators フィールドをクリックして、パラメータの検証ツールを設定します。検証ツールは、パラメータが許容入力範囲 以内にあるかをチェックします。 図 20 のように、周期値が 1~15 の間にあることを保証するよう検証ツールを設定します。OK をクリックして、変更を適 用します。 図 20. Count4Bit の検証ツールを追加する www.cypress.com 文書番号: 001-89367 Rev. *B 12 ® PSoC 3、PSoC 4、および PSoC 5LP の Verilog によるプログラマブル ロジック設計の実装方法 12. 図 21 に示すように、Parameter Definition ダイアログ ボックスで、Hardware フィールドを True にセットします。これ は、パラメーターを Verilog ファイルに渡すために必要です。 図 21. パラメーターのハードウェアへの引き渡し 次のステップとして、回路図シンボルを Verilog ファイルにリンクさせます。PSoC Creator は、コンポーネント シンボルに 基づいて Verilog シェルを生成します。 13. このためには、シンボル回路図で空きスペースを右クリックして、Generate Verilog をクリックします。 図 22 のように、 Generate Verilog ダイアログ ボックスでデフォルト設定のままにして、Generate をクリックします。 図 22. シンボル用の Verilog ファイルの生成 Target の値は、特定のデバイスの設定を制限するのに使用できますが、この事例ではデフォルト設定を使用します。 作成したシンボルの Verilog ファイルが出来上がります。 注: Verilog ファイルには、3 組の#start header - #end があります。このファイルを編集する時、全てのコードをこれらの セクション内に配置してください。これらのセクション外での Verilog ファイルへの変更は、Verilog ファイルを再生成すると無く なります。 この時点で、Verilog でカウンタを記述できるようになります。参照のために、完全なコードはコード 1 に示します。 www.cypress.com 文書番号: 001-89367 Rev. *B 13 ® PSoC 3、PSoC 4、および PSoC 5LP の Verilog によるプログラマブル ロジック設計の実装方法 4.1.2 Verilog 設計: 4 ビット カウンター まず、出力をレジスタ付き出力にします。Count4Bit_v1_00 モジュールの I/O リストを次のように変更します。 output reg [3:0] count, output reg tc, 注: Verilog ファイルを再生成する場合、これらの変更を再び行う必要があります。また、これらの定義はファイル内のどこか 他の所で行うことはできません。 次に、これが同期設計であるため、Verilog ファイルで#start body と#end コメントの間に always ブロック (およびクロッ ク エッジの情報) を加えます。 always @ (posedge clock) begin . . . end 注: タイミングと同期化の失敗の可能性を低減するために、PSoC 設計でポジティブ エッジ クロックを使用したほうが良いです。 カウンタには同期リセット信号があります。この信号がアサートされると、「tc」と「count」の両方をクリアします。 if(reset) begin count <= 4'b0000; tc <= 1'b0; end 注:非同期リセット/プリセット信号もサポートされます。非同期フリップ フロップ合成の詳細については、「Warp Verilog Reference Guide」の 3.3.2 節をご参照ください。 en 入力は、ハードウェア イネーブルです。この入力が LOW の場合、出力はアクティブのままであるが、コンポーネントの状 態は変わりません。 if(en) /* start counting */ begin . . . end else /* preserve state */ begin count <= count; tc <= tc; end count が周期値に達すると、count が period に等しいである限り、端末のカウント出力 tc は論理 1 となる必要がありま す。 if(count == period) begin tc <= 1'b1; count <= 4'b0000; end www.cypress.com 文書番号: 001-89367 Rev. *B 14 ® PSoC 3、PSoC 4、および PSoC 5LP の Verilog によるプログラマブル ロジック設計の実装方法 そうでないと、4 ビット カウンターは 0 から period までカウントし、ポジティブ エッジ毎に count 出力をインクリメントする必 要があります。 else begin count <= count + 1; tc <= 1'b0; end Verilog ファイルへの変更が終わったら、保存します。ここで、4 ビット アップ カウンターの Verilog 記述が完了します。完全な コードはコード 1 に示します。 コード 1. 4 ビット カウンターの完全な Verilog 設計 module Count4Bit_v1_00 ( output reg [3:0] count, output reg tc, input clock, input en, input reset ); parameter period = 0; //`#start body` -- edit after this line, do not edit this line always @ (posedge clock) begin if(reset) begin count <= 4'b0000; tc <= 1'b0; end else begin if(en) begin if(count == period) begin tc <= 1'b1; count <= 4'b0000; end else begin count <= count + 1; tc <= 1'b0; end end else begin count <= count; tc <= tc; end end end //`#end` -- edit above this line, do not edit this line endmodule www.cypress.com 文書番号: 001-89367 Rev. *B 15 ® PSoC 3、PSoC 4、および PSoC 5LP の Verilog によるプログラマブル ロジック設計の実装方法 「MyComponents」プロジェクトでこのコンポーネントを使用するには、「MyLibrary」を依存関係として設定する必要があります。 そうするためには、Source タブで MyComponents を右クリックして、Dependencies を選択します。図 23 に示すように、 User Dependencies の下にある「MyLibrary」のチェックボックスがチェックされていることを確認してください。 図 23. コンポーネントのライブラリ依存関係を追加 設計で使用するためには、Component Catalog プロジェクトの TopDesign.cysch ファイルを開いて、Component Catalog に移動します。4 ビット カウンタは Community タブに配置されています。それを回路図にドラッグしドロップして、必要な接続 を行います。 注:ライブラリ プロジェクトの作成と使用方法については、PSoC Creator のヘルプ記事「Library Component Project」と 「Basic Hierarchical Design Tutorial」をご参照ください。 次は、Verilog でシーケンス検出器コンポーネントを作成します。 4.2 Verilog コンポーネントの作成: SeqDetector SeqDetector コンポーネントはこのサンプルプ ロジェクトの中心です。それは、PSoC PLD に実装された設定可能な 5 ビット の 2 進数のシーケンス検出器です。 4.2.1 SeqDetector コンポーネントの作成手順 SeqDetector の作成手順はカウンタと同様です。 1. Workplace Explorer の Components タブを選択します。MyLibrary プロジェクトを右クリックして、Add Component Item をクリックします。 2. Symbol Wizard コンポーネントのテンプレートを選択して、コンポーネントに SeqDetect_v1_00 と名付けます。 3. Create New ボタンをクリックして、コンポーネント シンボル ウィザードを起動します。 4. 図 24 のように、回路図シンボル用に 4 個の入力端末と 2 個の出力端末を定義します。 www.cypress.com 文書番号: 001-89367 Rev. *B 16 ® PSoC 3、PSoC 4、および PSoC 5LP の Verilog によるプログラマブル ロジック設計の実装方法 図 24. SeqDetector 用のシンボル作成ウィザード 5. 図 25 に示すように、OK をクリックして、シンボル回路図でシンボルを生成します。 図 25. シーケンス検出器の最初のシンボル 図 26 に示すように、コンポーネントのサイズを変更できます。 図 26. シーケンス検出器の最終のシンボル 6. シンボル回路図で空きスペースを右クリックして、Properties をクリックします。 プ ロ パ テ ィ フ ィ ー ル ド の Symbol セ ク シ ョ ン で 、 Catalog Placement の 省 略 記 号 (…) を ク リ ッ ク し ま す 。 CatalogPlacement で Community/Digital/Logic/Sequence Detector 5-bit を入力します。 これにより、SeqDetector は、Component Catalog の Community タブで、「Digital」フォルダの「Logic」サブフォルダの 中に配置されます。そのカタログ名は「Sequence Detector 5-bit」です。 www.cypress.com 文書番号: 001-89367 Rev. *B 17 ® PSoC 3、PSoC 4、および PSoC 5LP の Verilog によるプログラマブル ロジック設計の実装方法 7. SeqDetector のシーケンス値を設定可能にするために、コンポーネントのパラメータを追加します。 シンボル回路図で空きスペースを右クリックして、Symbol Parameters をクリックします。 図 27 のように、パラメーターの名称、タイプ、および初期値をそれぞれ「sequence」、「uint8」、および「22」に指定します。 図 27. SeqDetect 用にパラメータを定義する 8. Parameter Definition ダイアログボックスの Misc セクションで Description フィールドをクリックして、このパラメータ 用に記述します。 9. Validators フィールドをクリックして、シーケンスの検証ツールを設定します。図 28 のように、シーケンス値が 0~31 の 間にあることを保証するために検証ツールを設定します。OK をクリックして、変更を適用します。 図 28. SeqDetect 用の検証ツール 10. Parameter Definition ダイアログ ボックスに戻った時、Hardware フィールドを True にセットします。 11. このためには、シンボル回路図で空きスペースを右クリックして、Generate Verilog をクリックします。 次のステップとして、回路図シンボルを Verilog ファイルにリンクさせます。 12. Generate Verilog ダイアログ ボックスですべての設定を初期値のままにして、Generate をクリックします。 シーケンス検出器モジュール用の完全な Verilog コードは、付録 C に記載されています。次の節では、コードの主なパーツを 説明します。 www.cypress.com 文書番号: 001-89367 Rev. *B 18 ® PSoC 3、PSoC 4、および PSoC 5LP の Verilog によるプログラマブル ロジック設計の実装方法 4.2.2 Verilog 設計: SeqDetector カウンタと同様、最初の段階として、SeqDetect モジュールの端末リストに出力を登録します。 output reg detect, output reg restart, シーケンス検出器の重要な要素は、合計 6 状態あるステートマシンです (図8)。それぞれの状態に対応したローカル パラメータを 作成するために、下記のコードを #start body コメントの直後に加えます。 localparam START = 3'd0; localparam STATE_1 = 3'd1; localparam STATE_2 = 3'd2; localparam STATE_3 = 3'd3; localparam STATE_4 = 3'd4; localparam DETECT = 3'd5; 状態定義の定数がlocalparam キーワードを使って宣言されることに注意してください。これにより、他のモジュールで同じ名前 の定数と衝突することを防ぎます。 状態変数を「register」タイプとして、パターン変数を「wire」タイプとして宣言します。 reg [2:0] state_curr, state_next; wire [4:0] pattern = sequence; シーケンス検出器モジュールには、順次ブロックと組み合わせブロックという 2 個の always ブロックがあります。 always 順次ブロックはポジティブ エッジでトリガーされたフリップ フロップと同じように動作します。 always 組み合わせブロックは、以下の通りに定義されるセンシティビティ リストがあります。 always @ (oneIn or zeroIn or state_curr or pattern) 注: PSoC Creator 用に Verilog、always の文言はセンシティビティ リストを持たなければなりません。 always 組み合わせブロックは、入力をデコードし、入力と現時点での状態に基づいて次の状態を割り当てます。1 か 0 の入 力のいずれかが検出されると、その入力がチェックされ、あるいは現時点での状態が維持されます。 例えば、最初の状態は以下のようです。 if((oneIn & pattern[4]) || (zeroIn & !pattern[4])) begin state_next <= STATE_1; end else begin state_next <= START; end 注: pattern[4]はシーケンスの最初の正しい値を保存します。 他の状態は同様に、コンポーネント入力を pattern[3], … , pattern[0]と比較して、次の状態をデコードします。 Verilog ファイルへの変更が終わったら、保存します。この時点で、シーケンス検出器の設計は完了しました。それを設計で使 用するには、カウンタの節で説明した手順に従います。 www.cypress.com 文書番号: 001-89367 Rev. *B 19 ® PSoC 3、PSoC 4、および PSoC 5LP の Verilog によるプログラマブル ロジック設計の実装方法 5 データパス設計対 PLD ベースの設計 通信、タイミング、および制御アプリケーションは、各機能を支える論理構成に関する要求が異なります。 経験則として、UDB リソースを利用する最適な方法は以下の通りです。 PLD (ランダム ロジック): 制御機能、CPLD 統合、グルーロジック。 データパス (ストラクチャード ロジック): 通信、タイミング、演算。 例えば、以下の、データパス対 PLD で実行された 8 ビット演算と論理演算を考えてみます。 PLD のみにおけるリソース消費 データパスのみにおけるリソース消費 機能 PLD 使用量 (%) データパス 使用量 (%) ADD8 5 10.4% 1 4.2% SUB8 5 10.4% 1 4.2% CMP8 3 6.3% 1 4.2% SHIFT8 3 6.3% 1 4.2% 注:率は 24 個の UDB を備えているデバイスで計算されます。 PSoC PLD で複合機能を実行できますが、データパス モジュールを活用しないと、リソース不足になりがちです。 6 まとめ このアプリケーション ノートでは、UDB PLD を紹介し、PSoC Creator で Verilog ベースのコンポーネントを作成するための設 計プロセスについて説明します。このアプリケーション ノートをお読みいただいた後、PLD アーキテクチャに詳しくなり、 Verilog ベースの独自のカスタム コンポーネントを作成することができます。 PSoC UDB は、デジタル設計に柔軟且つ効果的なアーキテクチャを提供しています。簡単なものからある程度複雑なものま で広範囲のロジック設計を PSoC の PLD に移植することができます。高度に複雑な設計は、PLD とデータパスを組み合わ せて使用することで最もよく設計できます。UDB データパスの詳細については、AN82156 をご参照ください。 6.1 その他の情報 付録 A は、リソース カウントに関する、PSoC PLD と競合他社の CPLD との比較表を記載します。 付録 B では、2 つの例を使ってマクロセルを介したデータフローを説明します。 付録 C には、シーケンス検出器モジュール用の完全な Verilog コードを記載します。 付録 D では、プロジェクトの報告ファイルと静的タイミング解析を簡単に説明します。 www.cypress.com 文書番号: 001-89367 Rev. *B 20 ® PSoC 3、PSoC 4、および PSoC 5LP の Verilog によるプログラマブル ロジック設計の実装方法 7 関連リソース アプリケーション ノート AN82156 - PSoC 3, PSoC 4 and PSoC 5LP Designing PSoC Creator Components with UDB Datapaths AN81623 – PSoC 3 and PSoC 5LP Digital Design Best Practices AN62510 – Implementing State Machines with PSoC 3 and PSoC 5LP AN61290 – PSoC 3 and PSoC 5LP Hardware Design Considerations AN72382 – Using PSoC 3 and PSoC 5LP GPIO Pins AN60580 – SIO Tips and Tricks in PSoC 3 and PSoC 5LP AN54181 – Getting started with PSoC 3 AN79953 – Getting Started with PSoC 4 AN77759 – Getting started with PSoC 5LP KB 記事 KBA86336 – Just Enough Verilog for PSoC KBA86338 – Creating a Verilog-based Component KBA81772 – Adding Component Primitives / Verilog Components to a Project Basics of Verilog and Datapath Configuration Tool for Component Creation ビデオ 以下のビデオは、PSoC Creator および Verilog コンポーネントの作成プロセスについて説明します。 基本 Creating a New Project Using the Start Page コンポーネントの作成 PSoC Creator 113: PLD Based Verilog Components Creating a New Component Symbol Creating a Verilog Implementation Creating a Schematic Implementation 著者について 氏名: Vijay Kumar Marrivagu 役職: システム エンジニアのプリンシパル 経歴: デジタル設計と検証で数年の経験。 氏名: Antonio Rohit De Lima Fernandes 役職: アプリケーション エンジニア 経歴: 電気工学における B.E (India、Rajasthan、Pilani、BITS)。 www.cypress.com 文書番号: 001-89367 Rev. *B 21 ® PSoC 3、PSoC 4、および PSoC 5LP の Verilog によるプログラマブル ロジック設計の実装方法 A 付録 A: PSoC PLD と競合他社の CPLD とのリソース比較 表 1 では、PSoC PLD リソースを競合他社の同じサイズの CPLD と比較しています。この表では、UDB データパスでのプロ グラマブル ロジックを考慮に入れていないことに注意してください。PSoC PLD とデータパスの両方を使用すれば、PSoC は より大きなサイズの CPLD と競争できるようになります。 表 1. PSoC PLD と競合他社の PLD とのマクロセル比較 マクロセル (MC) ブロック数 ブロック毎の マク ロセル (MC) 数 ブロック毎の 入力数 プロダクト ターム (PT) 数 ブロック毎のプロ ダクト ターム (PT) 数 スーパセット PSoC 3、PSoC 5LP 192 48 4 12 384 8 CY8C42 32 8 4 12 64 8 128~240* 24 10 36 * * 4032ZE 32 2 16 36 160 80 4064ZE 64 4 16 36 320 80 40128ZE 128 8 16 36 640 80 XC2C32A 32 2 16 56 112 56 XC2C64A 64 4 16 56 224 56 XC2C128 128 8 16 56 448 56 デバイス サイプレス PSoC Altera MAX-II EPM240 Lattice ispMACH Xilinx Coolrunner-II * Altera MAX-II は従来のプロダクト タームのアーキテクチャではありません。 www.cypress.com 文書番号: 001-89367 Rev. *B 22 ® PSoC 3、PSoC 4、および PSoC 5LP の Verilog によるプログラマブル ロジック設計の実装方法 B 付録 B: マクロセル構成図 図 29 および図 30 には、それぞれ D フリップ フロップ (D-FF) と T フリップ フロップ (T-FF) 機能のマクロセルを介したデータ フローを示します。 図 29. D-FF 機能が有効なマクロセル 00 SSEL selin cpt1 cpt0 0 3 2 1 0 1 0 To macrocell read-only register 1 0 1 out set D Q From OR gate clk 0 QB res pld_en reset 1 0 0 COEN RSEL selout 図 30. T-FF 機能が有効なマクロセル 10 SSEL selin cpt1 cpt0 CONST 3 2 1 0 1 0 To macrocell read-only register 1 0 1 out set D Q From OR gate clk 0 QB res pld_en reset 1 0 COEN 0 RSEL selout www.cypress.com 文書番号: 001-89367 Rev. *B 23 ® PSoC 3、PSoC 4、および PSoC 5LP の Verilog によるプログラマブル ロジック設計の実装方法 C 付録 C: シーケンス検出器の Verilog コード module SeqDetect_v1_20 ( output reg detect, output reg restart, input clock, input oneIn, input reset, input zeroIn ); /* Note that the value assigned to the parameter in this line * has no effect. The actual parameter value is taken from * the component customizer. */ parameter sequence = 0; //`#start body` -- edit after this line, do not edit this line /* Six states are required. * The states follow START -> STATE_1 -> ... -> DETECT if the * correct inputs are entered. As soon as a wrong input is entered * the design jumps to the START state. The states are defined as * localparams (instead of `defines) to limit their scope to this * module only. */ localparam START = 3'd0; /* detect, restart = 0, 1 */ localparam STATE_1 = 3'd1; /* detect, restart = 0, 0 */ localparam STATE_2 = 3'd2; /* detect, restart = 0, 0 */ localparam STATE_3 = 3'd3; /* detect, restart = 0, 0 */ localparam STATE_4 = 3'd4; /* detect, restart = 0, 0 */ localparam DETECT = 3'd5; /* detect, restart = 1, 0 */ /* registered value to hold 3-bit state */ reg [2:0] state_curr, state_next; /* pattern[4:0] holds the user-supplied sequence value * suppose sequence = 22 then pattern[4:0] = 5'b10110 * Note that pattern[4] is the first-entered user input */ wire [4:0] pattern = sequence; /* Sequential block of the state machine - outputs are assigned here */ always @ (posedge clock) begin /* reset causes the component to enter the START state */ if(reset) begin state_curr <= START; /* Immediately assign detect and restart values */ detect <= 1'b0; restart <= 1'b1; end else /* reset is not asserted - go through states */ begin state_curr <= state_next; /* Assign 'detect' value - 1 only in DETECT state, 0 otherwise */ if (state_next == DETECT) begin detect <= 1'b1; end else www.cypress.com 文書番号: 001-89367 Rev. *B 24 ® PSoC 3、PSoC 4、および PSoC 5LP の Verilog によるプログラマブル ロジック設計の実装方法 begin detect <= 1'b0; end /* Assign 'restart' value - 1 only in RESTART state, 0 otherwise*/ if (state_next == START) begin restart <= 1'b1; end else begin restart <= 1'b0; end end end /* Finite State Machine combinatorial block - contains most of the * combinatorial logic. */ always @ (oneIn or zeroIn or state_curr or pattern) begin /* If either a one or zero has been entered, take action */ if(oneIn | zeroIn) begin case(state_curr) START: /* Initial state */ begin /* check whether the first bit entered is correct */ if((oneIn & pattern[4]) || (zeroIn & !pattern[4])) begin state_next <= STATE_1;/* advance to the next state */ end else /* revert to the initial state */ begin state_next <= START; end end STATE_1: /* First input is correct */ begin if((oneIn & pattern[3]) || (zeroIn & !pattern[3])) begin state_next <= STATE_2; end else begin state_next <= START; end end STATE_2: /* Two inputs are correct */ begin if((oneIn & pattern[2]) || (zeroIn & !pattern[2])) begin state_next <= STATE_3; end else begin state_next <= START; end end www.cypress.com 文書番号: 001-89367 Rev. *B 25 ® PSoC 3、PSoC 4、および PSoC 5LP の Verilog によるプログラマブル ロジック設計の実装方法 STATE_3: /* Three inputs are correct */ begin if((oneIn & pattern[1]) || (zeroIn & !pattern[1])) begin state_next <= STATE_4; end else begin state_next <= START; end end STATE_4: /* Four inputs are correct */ begin if((oneIn & pattern[0]) || (zeroIn & !pattern[0])) begin state_next <= DETECT; end else begin state_next <= START; end end DETECT: /* All five inputs are correct! */ begin /* When in the detect state, if an input is given, show same behavior as START */ /* check whether the bit entered is the correct beginning to a new sequence*/ if((oneIn & pattern[4]) || (zeroIn & !pattern[4])) begin state_next <= STATE_1; end else /* revert to the initial state */ begin state_next <= START; end end default:/* we should never get here - reset the component*/ begin state_next <= START; end endcase end else /* if neither 1 or 0 have been entered, stay in same state */ begin state_next <= state_curr; end end //`#end` -- edit above this line, do not edit this line endmodule www.cypress.com 文書番号: 001-89367 Rev. *B 26 ® PSoC 3、PSoC 4、および PSoC 5LP の Verilog によるプログラマブル ロジック設計の実装方法 D 付録 D: ビルド後の設計の注意事項 D.1 プロジェクトの報告ファイル Workspace Explorer ウィンドウの Results タブからプロジェクトのビルド レポート (<project_name>.rpt) をアクセスします。 正常に完了したビルド後に作成されます。以下は、報告ファイルの主な部分です。 技術的なマッピングのまとめ: マクロセル、プロダクト ターム、データパス、ピン、クロック分周器などが図 31 に示されます。 図 31. PSoC Creator プロジェクトのビルド リポート ファイル 合成結果: Verilog コンパイル、構文解析、高レベルの合成、最適化など合成の各段階で生成されたエラーと警告を一覧 表示します。同節は、シンセサイザによって最適化して除去したロジックの詳細情報を含みます。これは、デバッギング およびトラブルシューティングに役立ちます。 デジタル部の配置: PLD パッキングのまとめ。図 32 図 32 は PLD の利用例を示します。 図 32. PLD パッキングのまとめレポート デジタル部の配置: PLD パッキングのまとめ: PLD の統計値: 図 33 は、ロジック アレイ ブロック (LAB) 毎の PLD PT と マクロセルの平均使用量の例を示します。 図 33.PLD の使用量のレポート例 D.2 最終配置のまとめ: コンポーネントの詳細を提示します。同節は、UDB の使用量、占有率、統計値、および配置 (座標) の詳細を示します。 静的タイミング解析 デジタル設計のデバッグ処理の重要な一部は、静的タイミング解析 (STA) です。STA はデジタル設計を評価し、信号の入出 力間の遅延を計算します。それらの遅延に基づいて、設計で使用される各クロックの最大許容周波数を算出します。 プロジェクトをビルドすると、PSoC Creator は静的タイミング解析レポートを自動的に作成します。このレポートは、各クロック の周波数を制限する、設計内の重要な部分を提示します。算出された最大周波数が要求されたクロック周波数より小さい場 合、設計内にタイミング違反が存在することを示す警告を表示します。 タイミング違反の回避方法、および PSoC Creator STA 警告の処理の詳細については、「AN81623 – PSoC 3 and PSoC 5LP Digital Design Best Practices」をご参照ください。 www.cypress.com 文書番号: 001-89367 Rev. *B 27 ® PSoC 3、PSoC 4、および PSoC 5LP の Verilog によるプログラマブル ロジック設計の実装方法 改訂履歴 文書名: AN82250 - PSoC® 3、PSoC 4 および PSoC 5LP の Verilog によるプログラマブル ロジック設計の実装方法 文書番号: 001-89367 版 ECN 変更者 発行日 ** 4136657 HZEN 09/26/2013 これは英語版 001-82250 Rev. *D を翻訳した日本語版 001-89367 Rev. **です。 *A 4722751 HZEN 04/27/2015 これは英語版 001-82250 Rev. *F を翻訳した日本語版 001-89367 Rev. *A です。 *B 5184202 HZEN 03/22/2016 これは英語版 001-82250 Rev. *H を翻訳した日本語版 001-89367 Rev. *B です。 www.cypress.com 変更内容 文書番号: 001-89367 Rev. *B 28 ® PSoC 3、PSoC 4、および PSoC 5LP の Verilog によるプログラマブル ロジック設計の実装方法 ワールドワイド販売と設計サポート サイプレスは、事業所、ソリューション センター、メーカー代理店および販売代理店の世界的なネットワークを保持しています。お客様 の最寄りのオフィスについては、サイプレスのロケーション ページをご覧ください。 PSoC®ソリューション 製品 車載用 cypress.com/go/automotive psoc.cypress.com/solutions クロック & バッファ cypress.com/go/clocks PSoC 1 | PSoC 3 | PSoC 4 | PSoC 5LP インターフェース cypress.com/go/interface サイプレス開発者コミュニティ 照明 & 電源管理 cypress.com/go/powerpsoc コミュニティ | フォーラム | ブログ | ビデオ | トレーニング メモリ cypress.com/go/memory テクニカル サポート PSoC cypress.com/go/psoc タッチ センシング cypress.com/go/touch USB コントローラー cypress.com/go/usb ワイヤレス/RF cypress.com/go/wireless cypress.com/go/support PSoC はサイプレス セミコンダクタ社の登録商標です。本書で言及するその他すべての商標または登録商標は、それぞれの所有者に帰属します。 Cypress Semiconductor 198 Champion Court San Jose, CA 95134-1709 Phone : 408-943-2600 Fax : 408-943-4730 Website : www.cypress.com © Cypress Semiconductor Corporation, 2012-2016. 本文書に記載される情報は、予告なく変更される場合があります。Cypress Semiconductor Corporation (サイプレス セミコンダクタ社) は、サイプレス製品に組み込まれた回路以外のいかなる回路を使用することに対して一切の責任を負いません。サイプレス セミコン ダクタ社は、特許またはその他の権利に基づくライセンスを譲渡することも、含意することもありません。サイプレス製品は、サイプレスとの書面による合意に基づ くものでない限り、医療、生命維持、救命、重要な管理、または安全の用途のために使用することを保証するものではなく、また使用することを意図したものでもあ りません。さらにサイプレスは、誤作動や故障によって使用者に重大な傷害をもたらすことが合理的に予想される生命維持システムの重要なコンポーネントとして サイプレス製品を使用することを許可していません。生命維持システムの用途にサイプレス製品を供することは、製造者がそのような使用におけるあらゆるリスク を負うことを意味し、その結果サイプレスはあらゆる責任を免除されることを意味します。 このソースコード (ソフトウェアおよび/またはファームウェア) はサイプレス セミコンダクタ社 (以下「サイプレス」) が所有し、全世界の特許権保護 (米国およびそ の他の国)、米国の著作権法ならびに国際協定の条項により保護され、かつそれらに従います。サイプレスが本書面によりライセンシーに付与するライセンスは、 個人的、非独占的かつ譲渡不能のライセンスであり、適用される契約で指定されたサイプレスの集積回路と併用されるライセンシーの製品のみをサポートするカ スタム ソフトウェアおよび/またはカスタム ファームウェアを作成する目的に限って、サイプレスのソース コードの派生著作物をコピー、使用、変更そして作成す るためのライセンス、ならびにサイプレスのソース コードおよび派生著作物をコンパイルするためのライセンスです。上記で指定された場合を除き、サイプレスの 書面による明示的な許可なくして本ソース コードを複製、変更、変換、コンパイル、または表示することはすべて禁止します。 免責条項: サイプレスは、明示的または黙示的を問わず、本資料に関するいかなる種類の保証も行いません。これには、商品性または特定目的への適合性の黙 示的な保証が含まれますが、これに限定されません。サイプレスは、本文書に記載される資料に対して今後予告なく変更を加える権利を留保します。サイプレス は、本文書に記載されるいかなる製品または回路を適用または使用したことによって生ずるいかなる責任も負いません。サイプレスは、誤作動や故障によって使 用者に重大な傷害をもたらすことが合理的に予想される生命維持システムの重要なコンポーネントとしてサイプレス製品を使用することを許可していません。生命 維持システムの用途にサイプレス製品を供することは、製造者がそのような使用におけるあらゆるリスクを負うことを意味し、その結果サイプレスはあらゆる責任 を免除されることを意味します。 ソフトウェアの使用は、適用されるサイプレス ソフトウェア ライセンス契約によって制限され、かつ制約される場合があります。 www.cypress.com 文書番号: 001-89367 Rev. *B 29