
フロッピーディスクコントローラ(FDC)は、コンピュータのフロッピーディスクドライブ(FDD)の読み取りと書き込みを指示および制御するハードウェアコンポーネントです。1つまたは複数の回路基板上の個別のコンポーネントセットから、専用集積回路(ICまたは「チップ」)またはそのコンポーネントへと進化しました。FDCは、ホストコンピュータから提供されたデータを読み取り、 FMエンコード(単密度)やMFMエンコード(倍密度)などの複数のエンコード方式のいずれかを使用してドライブのディスク上のフォーマットに変換し、それらのフォーマットを読み取って元のバイナリ値に戻す役割を担っています。
プラットフォームに応じて、コントローラとホストコンピュータ間のデータ転送は、コンピュータ自身のマイクロプロセッサ、またはMOS 6507やZilog Z80などの安価な専用マイクロプロセッサによって制御されます。初期のコントローラでは、クロック信号の提供や各種オプションの設定など、特定のタスクを実行するために追加の回路が必要でした。後期の設計では、これらの機能がコントローラに多く組み込まれ、外部回路の複雑さが軽減されました。1980年代後半には、シングルチップソリューションが一般的になりました。
1990年代になると、フロッピーディスクはハードディスクドライブに取って代わられつつあり、ハードディスクドライブにも同様のコントローラが必要となりました。これらのシステムでは、コントローラはマイクロコントローラも搭載し、 SCSIやIDEといった標準的なコネクタを介してデータ転送を行うことも多く、これらのコネクタはどのコンピュータでも使用可能でした。より現代的なシステムでは、FDC(フロッピーディスクドライブ)が搭載される場合でも、通常は単一のスーパーI/Oチップが提供する多くの機能の一部となっています。
最初のフロッピー ディスク ドライブ コントローラ (FDC) は、最初のフロッピー ディスクドライブ (IBM 23FD) と同様に、1971 年に IBM 2305固定ヘッド ディスク ドライブ用の IBM 2385 ストレージ コントロール ユニットのコンポーネントとして出荷されました。[ 1 ]また、System 370 モデル155と165にも搭載されました。同時期に登場した非常によく似たコントローラである IBM 3830 ストレージ コントロール ユニットは、内部プロセッサを使用して 23FD を制御します。[ 2 ]結果として得られた FDC は、数枚のプリント回路カード上にIBM のMSTハイブリッド回路を単純に実装したものです。 [ 2 ]ドライブ、FDC、メディアは IBM 独自のものであり、1973 年以前にも他のメーカーが初期の FDD を提供していましたが、FDC、ドライブ、メディアの標準は存在しませんでした。
IBMが1973年に発表した3740データエントリーシステムは、8インチ片面フロッピーディスク(IBMの「タイプ1」ディスケット)の基本メディア規格を確立しました。これは、多くの小規模アプリケーションで安価で取り外し可能な直接アクセスストレージの需要が急速に高まったことと相まって、ドライブとコントローラの出荷が劇的に増加しました。[ 3 ]
特殊用途の集積回路が導入される前は、ほとんどのFDCは40個以上のICで実装された少なくとも1つのプリント回路で構成されていました。[ 4 ]このようなFDCの例には次のものがあります。
特殊用途集積回路として実装された最初のFDCは、1976年7月19日に発表されたWestern Digital FD1771 [ 14 ]です。 [ 15 ]初期の設計では、単一のフォーマットをサポートし、追加の回路が必要でしたが、時間の経過とともに、ファミリとして、設計はマルチソースになり、多くのフォーマットをサポートし、外部回路を最小限に抑えるように進化しました。
そのNEC μPD765は1978年に発表され[ 16 ]、1979年にNECはμPD72068は、μPD765とソフトウェア互換性があり、デジタルPLLを内蔵していました。 [ 17 ] μPD765は、初代IBM PC(1981年)に採用されたことで準業界標準となりました。FDCは、サポート回路とともに専用のアダプタカードに物理的に配置されていました。Intelなどの他のベンダーも互換部品を製造していました。この設計は、時を経てほぼ完全なFDCをチップ上に提供するファミリーへと進化しました。 [ 18 ]
1986年3月にはシャープがFDC LH0110を商品化していた。[ 19 ]
1987年初頭、インテルは業界標準のPCコンピュータで使用するために82072 CHMOS高集積フロッピーディスクコントローラを発表しました。[ 20 ] [ 21 ]
Intel 82078シリーズフロッピーディスクコントローラは、業界標準の82077AA/SLシリーズフロッピーディスクコントローラをサポートしています。バージョンに応じて、1000個単位で1個あたり4~6ドルで販売されていました。[ 22 ]
最終的に、ほとんどのコンピュータシステムでは、FDCはスーパーI/Oチップまたはサウスブリッジチップ の一部となりました。 [ 18 ] [ 23 ] [ 24 ]しかし、その後のマザーボードでは、フロッピーディスクがパーソナルコンピュータユーザーによって段階的に廃止されたため、このインターフェースは廃止されました。一部のメーカーはUSBベースのフロッピーディスクコントローラを開発しました。[ 25 ]
フロッピーディスクは、バイナリデータを値の連続ではなく、値の変化の連続として保存します。磁気記録媒体の極性に記録されたこれらの変化は、ディスク面が回転する際にドライブヘッドに電圧を誘起します。この極性変化のタイミングと、その結果生じる電圧スパイクが、元のデータの1と0をエンコードします。コントローラの機能の一つは、書き込み時に元のデータを適切な極性パターンに変換し、読み取り時にそれを再現することです。
ストレージはタイミングに基づいており、そのタイミングは機械的および電気的な外乱の影響を受けやすいため、データを正確に読み取るには、何らかの基準信号、つまりクロックが必要です。ディスク上のタイミングは常に変化するため、クロック信号はディスク自体から提供する必要があります。そのためには、元のデータに追加の遷移を加えてクロック信号をデータにエンコードし、読み取り時にクロックリカバリを使用して元の信号を復元します。一部のコントローラでは、このエンコードを外部で実行する必要がありますが、ほとんどの設計ではFMやMFMなどの標準的なエンコードが提供されています。
コントローラは、ドライブ機構自体を制御するための様々なサービスも提供します。これらのサービスには、通常、ドライブヘッドをディスク上の個々のトラックの中央に配置すること、ヘッドの位置を追跡してゼロに戻すこと、そして時にはトラック数、トラックあたりのセクター数、セクターあたりのバイト数といった単純な入力に基づいてディスクをフォーマットすることが含まれます。
完全なシステムを構築するには、コントローラとホストシステム間のブリッジとして機能する追加回路またはソフトウェアを組み合わせる必要があります。Apple IIやIBM PCなどの一部のシステムでは、これはコンピュータのホストマイクロプロセッサ上で実行されるソフトウェアによって制御され、ドライブインターフェースは拡張カードを使用してプロセッサに直接接続されます。一方、Commodore 64やAtari 8ビットコンピュータなどのシステムでは、コントローラからホストCPUへの直接的なパスはなく、この目的のためにMOS 6507やZilog Z80などの2番目のプロセッサがドライブ内部で使用されます。
オリジナルのApple IIコントローラは、ホストコンピュータにプラグインするカード型でした。2台のドライブをサポートし、ドライブは通常のオンボード回路のほとんどを省いていました。これにより、AppleはShugart Associates社と契約を結び、通常の回路のほとんどを省いた簡素化されたドライブを開発することができました。[ 4 ]つまり、ドライブ1台とコントローラカードの合計コストは他のシステムとほぼ同じでしたが、2台目のドライブを接続すれば、より少ない追加コストで済むというわけです。
IBM PCはより従来的なアプローチを採用し、アダプタカードは最大4台のドライブをサポートしました。PC上では、ドライブへのダイレクトメモリアクセス(DMA)はDMAチャネル2とIRQ 6を使用して実行されました。下図は、業界標準アーキテクチャ(ISA)バスまたは類似のバスを介してCPUと通信し、34ピンのリボンケーブルを介してフロッピーディスクドライブと通信する従来のフロッピーディスクコントローラを示しています。最近の設計では、FDCをスーパーI/Oチップに組み込み、 Low Pin Count (LPC)バスを介して通信する構成がより一般的です。

フロッピーディスクコントローラ(FDC)の機能のほとんどは集積回路によって実行されますが、一部は外部ハードウェア回路によって実行されます。それぞれの機能の一覧を以下に示します。
FDCには3つのI/Oポートがあります。これらは以下の通りです。
最初の2つはFDC IC内にあり、制御ポートは外部ハードウェアにあります。これら3つのポートのアドレスは次のとおりです。
| ポートアドレス[16進数] | ポート名 | 位置 | ポートタイプ |
|---|---|---|---|
| 3F5 | データポート | 双方向I/O | |
| 3F4 | メインステータスレジスタ | FDC IC | 入力 |
| 3F2 | デジタル制御ポート | 外部ハードウェア | 出力 |
このポートはソフトウェアによって 3 つの異なる目的で使用されます。
このポートは、ソフトウェアがFDC ICおよびFDDの全体的なステータス情報を読み取るために使用されます。フロッピーディスク操作を開始する前に、ソフトウェアはこのポートを読み取ってFDCおよびディスクドライブの準備状態を確認し、以前に実行したコマンドのステータスを検証します。このレジスタの各ビットは、以下の情報を表します。
| 少し | 表現 |
|---|---|
| 0 | FDD 0: シークモードでビジー |
| 1 | FDD 1: シークモードでビジー |
| 2 | FDD 2: シークモードでビジー |
| 3 | FDD 3: シークモードでビジー |
| 4 | FDC ビジー; 読み取り/書き込みコマンドが進行中 |
| 5 | 非DMAモード |
| 6 | DIO; FDC ICとCPU間のデータ転送方向を示す |
| 7 | MQR; データレジスタがデータ転送の準備ができていることを示します |
| 説明 | |
|---|---|
| MQR | 1 = データレジスタ準備完了、0 = データレジスタ未準備 |
| ディオ | 1 = コントローラは CPU へのデータを持っている、0 = コントローラは CPU からのデータを期待している |
| 非DMA | 1 = コントローラは DMA モードではありません、0 = コントローラは DMA モードです |
| FDCビジー | 1 = 忙しい、0 = 忙しくない |
| FDD 0、1、2、3 | 1 = 実行中、0 = 実行されていない |
このポートは、ソフトウェアがFDDおよびFDC ICの特定の機能を制御するために使用されます。このポートのビット割り当ては次のとおりです。
| 少し | 表現 |
|---|---|
| 0と1 | 選択するデバイス番号 |
| 2 | リセットFDC IC(低) |
| 3 | FDC割り込みとDMA要求信号を有効にする |
| 4~7 | ディスクドライブ0、1、2、3のモーターをそれぞれオンにします。 |
コントローラは、フラットリボンケーブルを使用して1台以上のドライブに接続します。8インチドライブの場合は50本、3.5インチおよび5.25インチドライブの場合は34本のワイヤを使用します。「ユニバーサルケーブル」には、3.5インチおよび5.25インチドライブ用にそれぞれ2つずつ、計4つのドライブコネクタがあります。[ 26 ] IBM PCファミリーおよび互換機では、ケーブルのツイストによって、接続されるソケットによってディスクドライブを区別します。すべてのドライブは同じドライブ選択アドレスセットでインストールされ、ケーブルのツイストによってソケットのドライブ選択ラインが入れ替わります。ケーブルの遠端にあるドライブには、信号品質を維持するために終端抵抗も取り付けられます。[ 27 ]
コントローラとディスクドライブが1つのデバイスとして組み立てられている場合、たとえば一部の外付けフロッピーディスクドライブ(例:コモドール1540とUSBフロッピーディスクドライブ)の場合、[ 28 ]内部フロッピーディスクドライブとそのインターフェースは変更されませんが、組み立てられたデバイスはIEEE-488、パラレルポート、USBなどの異なるインターフェースを備えています。
相互に互換性のないフロッピー ディスク形式が多数考えられます。また、ディスク上の物理形式とは別に、互換性のないファイル システムも考えられます。
| ドライブ | 形式 | 容量 | 転送速度[ kbit/s ] | 回転数 | トラック | TPI | コメント |
|---|---|---|---|---|---|---|---|
| 8インチSD | 8インチSD | 80KB | 33.333 | 360 | 32 | 48 | 古いコントローラーのみ。[ 29 ] |
| 5.25インチSD | 5.25インチSD | 160KB | 125 | 40 | 古いコントローラーのみ。 | ||
| 5.25インチSSD | 5.25インチSSD | 171 KB | 250~308 | 300 | 35 | 48 [ 30 ] | C1541互換機のみ。 |
| 5.25インチSD | 5.25インチSD | 180KB | 150 | 40 | 古いコントローラーのみ。 | ||
| 5.25インチDD | 5.25インチDD | 320/360/400KB | 250 | 300 | 40 | 48 | [ 31 ]それぞれ8/9/10 512バイトセクター。 |
| 5.25インチDD (96tpi) | 5.25インチQD(2DD) | 800KB | 250 | 300 | 80 | 96 | [ 32 ] |
| 5.25インチHD | 5.25インチDD | 360 KB | 300 | 360 | 40 | 48 | [ 33 ] [ 34 ] |
| 5.25インチHD | 5.25インチHD | 1200KB | 500 | 360 | 80 | 96 | 最大83トラック。バイアス電流は異なる。[ 33 ] [ 34 ] |
| 5.25インチHD | 5.25インチHD | 720 KB | 300 | 360 | 80 | 最大83トラック。[ 31 ] | |
| 3.5インチDD | 3.5インチDD | 720 KB | 250 | 300 | 80 | 135 | 最大83トラック。[ 31 ] [ 35 ] |
| 3.5インチDD | 3.5インチDD | 800KB | 394~590 | 80 | Apple Macintoshで使用されている。[ 36 ] | ||
| 3.5インチDD | 3.5インチDD | 800KB | 250 | 300 | 80 | Commodore 1581で使用されました。 | |
| 3.5インチDD | 3.5インチDD | 880 KB | 250 | 300 | 80 | 最大 83 トラック。Amiga コンピューターで使用されます。 | |
| 3.5インチDD | 3.5インチDD | 360 KB | 250 | 300 | 40 | [ 31 ] | |
| 3.5インチHD | 3.5インチDD | 720 KB | 250 | 300 | 80 | 最大83トラック。[ 31 ] | |
| 3.5インチHD | 3.5インチHD | 1280 KB | 500 | 360 | 80 | 135 | 最大83トラック。「3モード」 |
| 3.5インチHD | 3.5インチHD | 1440 KB | 500 | 300 | 80 | 135 | 最大83トラック。[ 31 ] [ 37 ] |
| 3.5インチHD | 3.5インチHD | 1760 KB | 250 | 150 | 80 | Amigaコンピューターで使用されます。 | |
| 3.5インチED | 3.5インチED | 2880 KB | 1000 | 300 | 80 | 135 | 最大83トラック。[ 35 ] [ 38 ] |
サイド:
密度:

主に日本では、3.5インチ高密度フロッピードライブが販売されており、通常の2つのディスクフォーマットモード(1440KB(未フォーマット時2MB)、1.2MB(未フォーマット時1.6MB)、720KB(未フォーマット時1MB))ではなく、3つのディスクフォーマットモードをサポートしています。当初、日本の3.5インチフロッピードライブの高密度モードは、他の地域で使用されている1440KBではなく、1.2MBの容量のみをサポートしていました。[ 40 ]より一般的な1440KBフォーマットは300rpmで回転するのに対し、1.2MBフォーマットは360rpmで回転するため、5.25インチ高密度フロッピーディスクで採用されていた80トラック、トラックあたり15セクター、セクターあたり512バイトの1.2MBフォーマット、または8インチ倍密度フロッピーディスクで採用されていた77トラック、トラックあたり8セクター、セクターあたり1,024バイトの1.2MBフォーマットの形状に酷似している。その後の日本製フロッピードライブは高密度フォーマット(および倍密度フォーマット)の両方をサポートするようになり、3モードと呼ばれるようになった。一部のBIOSには、このモードをサポートするフロッピードライブでこのモードを有効にする設定がある。[ 41 ]
制御ユニットには、制御ロジックのバックアップと非常駐マイクロ診断情報の保存のための読み取り専用ストレージを提供する小型直接アクセス装置が搭載されています。記録媒体は、安価なマイラーコーティングされたディスクカートリッジです。
ハードウェアはすでに64ワード(トラック0、セクター0)を追加しており、このマイクロプログラムは残りの制御ストレージをロードします。
当時、既存のフロッピーディスクコントローラはすべて40個または50個のチップで構成されていました…
このコントローラはIBM 3740および3540と完全に互換性があり、すべてのフォーマットとデフォーマットはコントローラ内で自動的に実行されます。
ミニコンピュータ、マイクロプロセッサI/Oバス、CRT端末、計測器、TTL/MSIマイクロプロセッサ、産業用コントローラ、その他のバイト指向システムなどのホストシステムとの容易なインターフェースとして、汎用ホストインターフェースも提供されています。
この分野の先駆者はウェスタンデジタル社で、1976年に最初のLSIフロッピーディスクコントローラであるFD1771のサンプル出荷を開始しました。
ライセンス供与されたCMOS 765Bフロッピーディスクコントローラ