MAX II CPLD を使用した IDE/ATA コントローラ この資料は英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。こちらの日本語版は参考用としてご利用 ください。設計の際には、最新の英語版で内容をご確認ください。 2007 年 12 月 ver. 1.0 はじめに IDE/ATA コントローラ および インタフェー ス Application Note 495 フロッピー・ドライブ、CD-ROM ドライブ、およびハードディスク・ドライブな どのストレージ・デバイスは IDE/ATA インタフェースを介してコンピュータに 接続されます。このデザイン例では、MAX® II CPLD を使用した IDE/ATA コン トローラの実装について説明します。ホスト・コンピュータやマイクロプロセッ サ・システムはこのコントローラを介して、標準 Integrated Drive Electronics (IDE)デバイスに接続することができます。 コントローラとハード・ドライブに独自技術が使用されている場合、あるメーカ のコントローラを別メーカのハード・ドライブに接続すると正常に動作しません でした。IDE はコンピュータにおけるハード・ドライブの使用を標準化するため に作成されました。IDE はコントローラとハード・ドライブを組み合わせるとい うコンセプトに基づいて、インタフェース・コストを削減しファームウェアの実 装を容易にします。チップ上のコントローラを使用して、ホスト・コンピュータ との間でデータの転送が可能になりました。 ATA(Advanced Technology Attachment)コントローラとも呼ばれる IDE コン トローラは、ホストマイクロプロセッサ・システムと標準 IDE デバイス間の非同 期パラレル・インタフェースです。したがって、IDE コントローラは(すべての) IDE デバイスをホストに接続する手段を提供するので、ホスト・アダプタと呼ぶ ことができます。 当初から ATA インタフェースは頻繁にアップグレードされ、新バージョンが導 入されてきました。このデザイン例では ATA-5 インタフェースと互換性のある IDE コントローラを実装しています。ATA-5 標準は 2 モードの動作 —PIO モード と DMA モード — をサポートしますが、このデザインは PIO モード(モード 0) に限定され、1 個のデバイスだけがコントローラ(マスタ)に接続されます。 図 1 に、IDE/ATA インタフェースのブロック図を示します。 Altera Corporation AN-495-1.0/JP 1 MAX II CPLD を使用した IDE/ATA コントローラ 図 1. IDE/ATA インタフェースの基本ブロック図 注 (1) clk rstn ddo[15:0] arst iderst ddoe ideen da[2:0] piordyen piorqst piotaddr[3:0] cs0n CPU Interface PIO Controller Block IDE Interface cs1n diorn diown piodatain[15:0] dstrb piowe ddi[15:0] piodataout[15:0] iordy pioack intrrqstsignal intrq MAX II CPLD 図 1 の注 : (1) IDE/ATA インタフェースは次の 3 ブロックで構成されています。CPU からのコマンドを受信する CPU インタフェース・ブロッ ク、PIO ステート・マシンを含む PIO コントローラ・ブロック、および IDE デバイスが要求する信号を生成してホスト(コンピュー タ)とのデータ転送を実行する IDE インタフェース・ブロック。 MAX II CPLD を使用した IDE/ATA コントローラ IDE インタフェースは PIO モードと DMA モードの 2 つのモードのデータ転送を サポートします。 このデザイン例はモード0のPIOデータ転送に限定されています。 異なる PIO モードと DMA モードについて詳しくは、以下のサイトで入手可能な ATA/ATAPI-5 規格を参照してください。 www.t13.org/Documents/UploadedDocuments/project/d1321r3-ATA-ATAPI5.pdf 2 Altera Corporation 2007 年 12 月 MAX II CPLD を使用した IDE/ATA コントローラ 表 1 に、2 ページの図 1 で示される信号の概要について説明します。 表 1. インタフェース信号の説明 (1 / 2) サイズ 入力 / 出力 説明 clk 1 入力 プロセッサのクロックと同じです。この例は 100 MHz の クロック周波数で動作します。 arst 1 入力 コントローラをリセットするための非同期アクティブLow リセット。 iderst 1 入力 IDEデバイスをリセットするためのアクティブHigh信号。 ideen 1 入力 IDEデバイスをイネーブルするためのアクティブHigh信号。 pioiordyen 1 入力 IDEデバイスからの IORDY 信号をイネーブルするための アクティブ High 信号。 piorqst 1 入力 PIO のデータ転送サイクルを開始するためのアクティブ High 信号。 pioaddr[3:0] 4 入力 デバイスのアドレスを選択するための 4 ビット・バスで、 IDE デバイスのチップ・セレクト信号です。 piodatain[15:0] 16 入力 IDE デバイスにデータを送信するための 16 ビット・バス piowe 1 入力 データ転送の方向を設定するためのアクティブHigh信号。 piowe = 1; 書き込み動作 piowe = 0; 読み出し動作 intrrqstsignal 1 出力 CPU に割り込むための信号 pioack 1 出力 PIOのリード/ライト・サイクルの終わりを示すための信号。 piodataout [15:0] 16 出力 IDE デバイスからのデータ読み出しを保持するための 16 ビット・バス。 rstn 1 出力 IDEデバイスをリセットするためのアクティブLow信号。 ddo [15:0] 16 出力 CPU が送信したデータをデバイスに転送する 16 ビット・ データ・バス。下位 8 ビットは 8 ビット・データ転送に 使用されます。 da [2:0] 3 出力 3 ビット・アクティブ High 信号。デバイスのレジスタま たはデータ・ポートにアクセスするためにホストによっ てアサートされる 2 進コード化アドレスです。 信号 Altera Corporation 2007 年 12 月 3 MAX II CPLD を使用した IDE/ATA コントローラ 表 1. インタフェース信号の説明 (2 / 2) サイズ 入力 / 出力 説明 それぞれ 1 ビット 出力 コマンド・ブロックまたはコントロール・ブロック・レ ジスタを選択するために使用されるホストからのアクティ ブ Low チップ・セレクト信号。 CS0=0; コントロール・レジスタを選択 CS1= 0; コマンド・レジスタを選択 CS0、CS1= 0/1; DIOR-/DIOW- の遷移を無視してデータ・ バスを解放します。 diorn 1 出力 デバイス・レジスタまたはデータ・ポートを読み出すた めにホストによってアサートされるアクティブ Low スト ローブ信号。 diown 1 出力 デバイス・レジスタまたはデータ・ポートに書き込むた めにホストによってアサートされるアクティブ Low スト ローブ信号。 dstrb 1 出力 デバイスからの data-in strobe 信号。dstrb の立ち 上がりエッジでデバイスからのデータがホストにラッチ されます。 ddi [15:0] 16 入力 IDE デバイスから読み出されたデータを含む 16 ビット・ データ・バス。 iordy 1 入力 デバイスがデータ転送要求に応答する準備ができていな いときに、この信号をネゲートして任意のホスト・レジ スタ・アクセス ( 読み出しまたは書き込み ) のホスト転 送サイクルを延長します。モード 0 ではオプションです が、より高度なモードに必要です。 intrq 1 入力 ホストにイベントを通知するために選択されたデバイス によって使用されます。このイベントが発生するとデバ イスの内部割り込み保留状態が設定されます。 ddoe 1 出力 IDE デバイスからデータを読み出すのに使用されます。 この信号が Low になった後に、 ddi バス上のデータが データ・ライン piodataout 上に出力されます。 信号 cs0n, cs1n 4 Altera Corporation 2007 年 12 月 MAX II CPLD を使用した IDE/ATA コントローラ CPU インタフェース・ブロック CPU インタフェース・ブロックはホスト CPU からの信号を受信して、CPLD の 内部レジスタに格納します。これらの内部レジスタの情報に応じて、PIO コント ローラは PIO のリードおよびライト動作のさまざまなステートを通過します。 PIO コントローラ・ブロック PIO コントローラ・ブロックには PIO ステート・マシンがあります。ホストが リードまたはライト要求を送信するたびに、ステート・マシンは適切なリードま たはライト・ステートになってデータを転送します。このブロックのpiomodecontroller と呼ばれるモジュールによってステートが決まり、それに従ってステート・マシ ンの動作が進行します。runoncecounter と呼ばれる別のモジュールがカウント値 をロードして、リードまたはライト・タイミング要件に従って必要な遅延を生成 します。piomodet1、piomodet2、piomodet4、および piomodeteoc と呼ば れるパラメータによってカウンタ値がロードされます。このデザイン例でロード されるデフォルト値は、100 MHz の周波数で動作するプロセッサ用のものです。 これらのパラメータ値は、異なる周波数で動作するプロセッサ用に変更すること ができます。updowncounter と呼ばれる 3 番目のモジュールが、各クロック・パ ルスでロードされるカウント値をデクリメントして必要な遅延を生成します。 PIO の読み出しおよび書き込みの波形とタイミング仕様について詳しくは、以下 のサイトで入手可能な ATA/ATAPI-5 規格を参照してください。 www.t13.org/Documents/UploadedDocuments/project/d1321r3-ATA-ATAPI5.pdf IDE インタフェース・ブロック この IDE インタフェース・ブロックは IDE デバイスのアドレス指定された内部レ ジスタにデータがロードされるか、またはそのレジスタからデータがロードされ るように適切なインタフェース信号を生成します。選択される内部レジスタは、 da[2:0]、cs0n、および cs1n ラインの値によって異なります。読み出しまたは 書き込み動作はそれぞれ、diorn および diown ラインにより指示されます。 IDE デバイスの各種内部レジスタとそれらの選択方法について詳しくは、以下の サイトで入手可能な ATA/ATAPI-5 規格を参照してください。 www.t13.org/Documents/UploadedDocuments/project/d1321r3-ATA-ATAPI5.pdf Altera Corporation 2007 年 12 月 5 MAX II CPLD を使用した IDE/ATA コントローラ 実装 このデザイン例は、EPM570 デバイスなどの MAX II デバイス、または必要な汎 用 I/O(GPIO) ピン数と LE 数を備えたその他の MAXII CPLD を使用して実装す ることができます。 ソース・ コード このデザイン例は Verilog を使用して作成しており、MDN-B2 デモ・ボードを使 用したデモとなっています。ソース・コード、テストベンチ、および完成した Quartus II プロジェクトは、以下から入手可能です。 www.altera.co.jp/literature/an/an495.zip まとめ 6 このデザイン例が示すとおり、MAXII CPLD は IDE/ATA コントローラの実装時 に効率的に利用できます。標準化された ATA インタフェースにより、MAX II CPLD を利用して任意のストレージ・デバイスをホスト・マイクロコントローラ またはプロセッサ・システムにインタフェースすることができます。MAX II CPLD は高集積度の I/O 数、低コスト、容易なパワーオン・シーケンス、および多電圧 機能を備え、IDE/ATA コントローラの実装に最適なデバイスとなっています。 Altera Corporation 2007 年 12 月 関連情報 ■ MAX II CPLD ホームページ : www.altera.co.jp/products/devices/cpld/max2/mx2-index.jsp 関連情報 ■ MAX II デバイスの資料ページ : www.altera.co.jp/literature/lit-max2.jsp ■ MAX II パワーダウン・デザイン : www.altera.co.jp/support/examples/max/exm-power-down.html ■ MAX II アプリケーション・ノート : ● ● 表 2 に、このアプリケーション・ノートの改訂履歴を示します。 改訂履歴 表 2. 「AN 422: MAX II CPLD を使用したポータブル・システムにおける消費 電力の管理」 「AN 428: MAX II CPLD のデザイン・ガイドライン」 改訂履歴 日付 & ドキュメント・ バージョン 2007 年 12 月 v1.0 101 Innovation Drive San Jose, CA 95134 www.altera.com Literature Services: [email protected] Altera Corporation 変更内容 初版 概要 — Copyright © 2007 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. 7