コンピュータのフロッピーディスクドライブの読み取りと書き込みを制御する回路
IBM 5150 のFDCボード。 上部にある大型の デュアル・インライン・パッケージ がNEC D765AC FDC ICです。
フロッピー ディスクコントローラ ( 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の例としては、以下のものがあります。
1973年: IBM 3741 に搭載されたFDC は、システムのマイクロプロセッサ(IBM用語では「MPU」)からのコマンドを受け取り、接続された33FD上で可能な限り独立して実行するマイクロコントローラの一種です。FDCは、セレクト/ストップ、ライトチェック、シークダウン、シークアップ、データリード、IDリード、データライト、ライトコントロール、IDライト、セットレディ、アクセスカウンタリセット、そして何もしない(ノーオペレーション)というコマンドを受け取り、実行します。これは、 マザーボード上のIBM MSTハイブリッド回路と、独立したデータセパレータ(VFO)PCBを使用して実装されました。 [5] このIBM FDCにより、IBMタイプ1ディスケットは業界初のフロッピーディスクメディアとして確立されましたが、ホストマイクロプロセッサとのインターフェースも33FDとのインターフェースも業界標準として採用されることはありませんでした。
1974年:iCOMのFD360には、業界標準のメディアを生成し、業界標準のホストバスに接続し、業界標準のFDDをサポートする初期のFDCであるCF 360が搭載されていました。 [6] [7] このFDCは、約12×9インチのPCB上に30個のICを使用したステートマシンとして実装されていました。 [8]
1976年:Scientific Micro SystemsのFD0300 FDC [9] は、8インチ×12インチの回路基板上に構築され、マイクロプロセッサと約50個の集積回路を搭載し、多数のホストバスに簡単に接続できるように設計されています。 [10]
1976年: シュガート・アソシエイツ社は、 5¼インチフロッピーディスクドライブと、このフォームファクタに対応した最初のFDCであるSA4400を発表しました。 [11] SA4400は、8ビット汎用ホストインターフェースを用いて、ホストシステムと最大3台のディスクドライブ間のデータ転送制御機能を実行します。このインターフェースは、IBM 3740型メディアフォーマット仕様の改良版に基づいてディスクをフォーマットします。FDCはマイクロプロセッサ制御で、45個のICを搭載した5.75インチ×9.50インチのPCB上に実装されています。 [12]ドライブインターフェースとメディアフォームファクタは業界標準となり、メディアはその後進化を続け、 様々なフォーマットを サポートするようになりました 。
1977年: 「ウォズ・マシン」 ことApple Disc II FDCは 、わずか8個のICで構築されました。 [4] [13] は、はるか以前のIBM 3830 FDCと同様に、ホストプロセッサとファームウェアの使用によって部品点数の削減を実現しました。AppleホストとのインターフェースとApple 5.25インチフロッピーディスクドライブとのインターフェースは独自のものであり、業界標準としては採用されませんでした。
特殊用途の集積回路として実装された最初のFDCは、 1976年7月19日に発表された Western Digital FD1771 [14]です。 [15] 初期の設計では単一のフォーマットをサポートし、追加の回路が必要でしたが、時間の経過とともにファミリとして設計は マルチソースに なり、 多くのフォーマットをサポートし、外部回路を最小限に抑えるように
進化しました。
NEC μPD765は1978年に発表され [16] 、1979年にはμPD765とソフトウェア互換性があり、デジタル PLL を搭載したμPD72068を発表しました。 [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]
82078-1は44ピンと64ピンの QFP パッケージで提供され、最大2MB/秒のデータ転送速度をサポートします。
82078SLは44ピンと64ピンのQFPパッケージで提供されます。3.3V電源に対応し、50マイクロアンペア未満までパワーダウン可能な強化された電源管理機能を備えています。
最終的に、ほとんどのコンピュータシステムにおいて、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)バスを介して通信する構成がより一般的です 。
CPU および FDD との FDC 通信を示すブロック図。
フロッピーディスクコントローラ(FDC)の機能のほとんどは 集積回路 によって実行されますが、一部は外部ハードウェア回路によって実行されます。それぞれの機能の一覧を以下に示します。
フロッピーディスクコントローラ機能(FDC)
外部ハードウェア機能
アドレス指定するフロッピーディスク ドライブ(FDD) の選択
フロッピードライブモーターのスイッチオン
フロッピーコントローラICのリセット信号
フロッピー ディスク コントローラ (FDC) の割り込み信号と DMA 信号を有効/無効にする
データ分離ロジック
事前補償 ロジックを記述する
コントローラへの信号用の ラインドライバ
コントローラーからの信号用のラインレシーバー
FDCには3つの I/O ポートがあります。これらは以下の通りです。
データポート
メインステータスレジスタ(MSR)
デジタル制御ポート
最初の2つはFDC IC内にあり、制御ポートは外部ハードウェアにあります。これら3つのポートのアドレスは次のとおりです。
データポート
このポートはソフトウェアによって 3 つの異なる目的で使用されます。
FDC ICにコマンドを発行する際、コマンドとコマンドパラメータバイトがこのポートを介してFDC ICに送信されます。FDC ICは、各種パラメータとコマンドを内部レジスタに保存します。
コマンドが実行されると、FDC ICは一連のステータスパラメータを内部レジスタに保存します。これらのパラメータは、このポートを介してCPUによって読み出されます。FDC ICは、様々なステータスバイトを特定のシーケンスで表示します。
データ転送のプログラム モードおよび割り込み モードでは、データ ポートは FDC IC と CPU IN または OUT 命令間でデータを転送するために使用されます。
メインステータスレジスタ(MSR)
このポートは、ソフトウェアがFDC ICおよびFDDの全体的なステータス情報を読み取るために使用されます。フロッピーディスク操作を開始する前に、ソフトウェアはこのポートを読み取ってFDCおよびディスクドライブの準備状態を確認し、以前に実行したコマンドのステータスを検証します。このレジスタの各ビットは、以下の情報を表します。
デジタル制御ポート
このポートは、ソフトウェアがFDDおよびFDC ICの特定の機能を制御するために使用されます。このポートのビット割り当ては次のとおりです。
フロッピーディスクドライブへのインターフェース
コントローラは、フラットリボンケーブルを使用して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 などの異なるインターフェースを備えています 。
相互に互換性のないフロッピー ディスク形式が多数考えられます。また、ディスク上の物理形式とは別に、互換性のないファイル システムも考えられます。
[39]
サイド:
SS(または1S) – 片面
DS(または2S)– 両面
密度:
3モードフロッピードライブ
3.5 インチ、1.2 MB および 1440 KB 形式で提供される日本語版Microsoft Office 4.3のセットアップ ディスク 。
主に日本では、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トラック、1トラックあたり15セクター、1セクターあたり512バイトの1.2MBフォーマット、または8インチ倍密度フロッピーディスクで採用されていた77トラック、1トラックあたり8セクター、1セクターあたり1,024バイトの1.2MBフォーマットの形状に非常に似ています。その後、日本製フロッピードライブは高密度フォーマット(および倍密度フォーマット)の両方をサポートしたため、「3モード」と呼ばれています。一部の BIOSに は、このモードをサポートしているフロッピードライブでこのモードを有効にする設定があります。 [41]
参照
参考文献
^ 「IBM 2835 ストレージ制御および IBM 2305 固定ヘッド・ストレージ・モジュール リファレンス・マニュアル」 (PDF) . 1983年10月. 2022年 7月22日 閲覧 . 制御ユニットには、制御ロジックのバックアップと非常駐マイクロ診断情報の保存のための読み取り専用ストレージを提供する小型直接アクセス装置が搭載されています。記録媒体は、安価なマイラーコーティングされたディスクカートリッジです。
^ ab 「IBM メンテナンス・ライブラリー – ストレージ制御、モデル2、第2巻」 (PDF) 。1973年6月4日。pp. MPL 25A、MPL 200、MPL 245、MPL 260。 2022年 7月29日 閲覧 。 ハードウェアはすでに64ワード(トラック0、セクター0)を追加しており、このマイクロプログラムは残りの制御ストレージをロードします。
^ Porter, James N. (1977年8月). 1977 DISK/TREND REPORT – FLEXIBLE DISK DRIVES (レポート). p. 26.
^ abc Gregg, Williams; Moore, Rob, eds. (1984). 「THE APPLE STORY, PART 2, An interview with Steve Wozniak」. Byte . 2022年 8月6日 閲覧 。 当時、既存のフロッピーディスクコントローラはすべて40個または50個のチップで構成されていました…
^ 3741データステーション、理論とメンテナンス。IBM。1974年5月15日。pp. 14–2.14–15 (488/599) 。 2022年 8月9日 閲覧 。
^ 「マイクロコンピュータ用の最初のフロッピーディスク周辺機器」 『エレクトロニック・デザイン 』1974年9月27日、138ページ。 2022年 8月11日 閲覧 。
^ 「CF 360 フロッピーディスクコントローラ」 (PDF) 。iCOM Microperipherals 。 2022年 8月19日 閲覧 。 このコントローラはIBM 3740および3540と完全に互換性があり、すべてのフォーマットとデフォーマットはコントローラ内で自動的に実行されます。
^ 回路図とロジック図 モデルFD360 (PDF) (レポート). iCOM Microperipherals. 1976年3月. pp. 8, 34. 2022年 8月11日 閲覧 。
^ 「ディスク」. INTERFACE AGE . 1976年11月. pp. 65– 66. 2022年 7月24日 閲覧 。
^ 「FD0300 フロッピーディスクコントローラ」 (PDF) . 1976年. 2022年 7月24日 閲覧 。 ミニコンピュータ、マイクロプロセッサI/Oバス、CRT端末、計測器、TTL/MSIマイクロプロセッサ、産業用コントローラ、その他のバイト指向システムなどのホストシステムとの容易なインターフェースとして、汎用ホストインターフェースも提供されています。
^ 「State of the Art Disk Technology」 (PDF) . Byte . 1976年12月. 2022年 9月1日 閲覧 。
^ 「SA4400 ministreaker フロッピーディスクドライブコントローラ」 (PDF) 1977年. 2022年 9月1日 閲覧 。
^ Craig, David T (1978年4月). 「Apple IIコンピュータファミリー情報、回路図:ディスク2インターフェースカード」 (PDF) . 2022年 8月6日 閲覧 。
^ Joe, Jaworski (1985). 「フロッピーディスクコントローラ」. 1985年コントローラコンセプト第1巻 (PDF) (技術レポート). p. SEMI-1 (67/160) . 2022年 9月9日 閲覧。 この分野の先駆者はウェスタンデジタル社で、1976年に最初のLSIフロッピーディスクコントローラであるFD1771のサンプル出荷を開始しました。
^ 「最近のIC発表」。 コンピューター 、IEEE、1976年。 2022年 8月6日 閲覧 。
^ 「μPD765 シングル/ダブル密度フロッピーディスクコントローラ」 (PDF) . NEC. 1978年12月. 2022年 9月9日 閲覧 。
^ 「NEC Electronics Inc. μPD72068 Floppy-Disk Controller」 (PDF) . 2024年 1月24日 閲覧 。
^ ab Necasek, Michal (2011年5月26日). 「フロッピーコントローラの進化」 . 2022年 9月2日 閲覧 。
^ 「シャープ 1986 半導体データブック」 (PDF) pp. 279– 295 . 2024年 1月14日 閲覧 。
^ インテルコーポレーション、「新製品の焦点コンポーネント:シングルチップディスクコントローラがより少ない容量に凝縮」、ソリューション、1987年1月/2月号、14ページ
^ Kearns, Patrick, Begur, Sridhar, and Fischer, Steve, "High Integration/High Performance Floppy Disk Controller Subsystem with the 82072", Intel Corporation, Microcomputer Solutions, 1987年11/12月, 20ページ
^ インテルコーポレーション、「フォーカス:OEM:省スペース設計に適したフロッピーディスクコントローラ」、マイクロコンピュータソリューション、1993年3月/4月、20ページ
^ Mueller, Scott (2005). 「マザーボードのコンポーネント」. Scott Muellers著『ラップトップのアップグレードと修理』第2版. 2022年 9月5日 閲覧 。
^ 「FDC37C78 フロッピーディスクコントローラ」 (PDF) . SMSC. 2007年. 2007年12月13日時点 のオリジナル (PDF)からアーカイブ 。 2022年 9月9日 閲覧。 ライセンス供与されたCMOS 765Bフロッピーディスクコントローラ
^ 「USBフロッピーディスクコントローラUSB97CFDC2-01」 (PDF) keil.com 2001 年12月13日。
^ Davis, Larry (2015年6月13日). 「フロッピードライブのピン配置、信号名、ピン配置の説明、およびケーブルツイスト配線」. interfacebus.com . 2019年 1月29日 閲覧 。
^ スコット・ミューラー著 『PCのアップグレードと修理』第2版 、Que、1992年、 ISBN 0-88022-856-3 、487ページ
^ フィッシャー、ティム (2022年1月18日). 「フロッピーディスクドライブとは何か?」 2022年 9月20日 閲覧 。
^ Ableman, Genna (2005). Elert, Glenn (編). 「フロッピーディスクの角速度」. The Physics Factbook . 2022年 1月25日 閲覧。
^ 「C 64 Workshop / C= 8 Bit & Peripherals」. 1998年5月19日. 2016年 4月18日 閲覧 。
^ abcdef "unifr.ch – sys/src/kernel/floppy.c". 2011年7月19日時点のオリジナルよりアーカイブ 。 2011年 5月5日 閲覧。
^ 「製品仕様 TM100-4 フレキシブルディスクドライブ 96 tpi」 (PDF) . 2022年 1月8日 閲覧 。
^ ab iesleonardo.info – このディスケットチュートリアルでは、ディスケットに関する技術情報を提供しています。
^ ab oldskool.org – HD 5.25インチFDDを360rpmではなく300rpmで動作させる
^ ab intel.com – Intel 82077SL for Super Dense Floppies Archived 8 October 2012 at the Wayback Machine
^ Johnson, Herbert R. (2016年12月22日). 「フロッピードライブ技術情報」 . 2017年 1月14日 閲覧 。
^ yi.org – 高密度フロッピーディスク Mf2hd ディスク 3 5 1 パック [ 永久リンク切れ ]
^ mcamafia.de – IBM パーソナルシステム/2、3.5インチディスケットドライブ、テクニカルリファレンス
^ “Linux-2.6.17/drivers/block/floppy.c”. 2008年8月23日時点のオリジナルよりアーカイブ。 090504 ジェラート.unsw.edu.au
^ books.google.com – コーリー・サンドラー著『Fix Your Own PC』
^ rojakpot.com – 3モードフロッピーディスクのサポート
さらに読む
ジョナサン・デ・ボイン・ポラード(2003年)「3.5インチフロッピーディスクなど存在しない」。 よくある質問集 。
ISO/IEC 8860-1:1987 倍密度(DD)
ISO/IEC 9529-1:1989 高密度(HD)
ISO 10994-1:1992 超高密度(ED)
ECMA-147
NEC μPD72070 – フロッピーディスクコントローラ仕様 バージョン2.0 (PDF) . 2.0 暫定版. NEC Corporation . 1991年10月. 2017年3月20日時点の オリジナル (PDF)からアーカイブ。 2017年 3月20日 閲覧 。
Shah, Katen A. (1996) [1992年9月、1992年4月]. Intel 82077SL for Super-Dense Floppies (PDF) (アプリケーションノート) (第2版). Intel Corporation, IMD Marketing. AP-358, 292093-002. 2017年6月19日時点の オリジナル (PDF)からアーカイブ。 2017年 6月19日 閲覧 。
ジョンソン、ハーブ (2009). 「CP/MとS-100用の最初のフロッピーコントローラ?」 2022年 9月9日 閲覧 。
外部リンク
viralpatel.net フロッピーディスクコントローラのプログラミングに関するチュートリアル
isdaman.com フロッピーディスクコントローラのプログラミング