軟碟控制器

軟碟控制器（Floppy Disk Controller，簡稱：FDC），是一個特殊功能的晶片，由控制讀取與寫入電腦軟式磁碟機相關磁碟控制器電路所組成。在1980年代到1990年代，軟碟控制器普遍使用於個人電腦或與IBM PC相容的機型上，如NEC μPD765、Intel 82072A或是82072A及其後繼晶片型號。而在除上所列外其他的軟碟控制器，可能存在結構上有著與之不同的觀念或實作方式。

## 概觀

一個軟碟控制器電路板最多可以控制到四個軟式磁碟機，控制器連接到電腦的系統匯流排，並提供I/O埠給中央處理器。一般也與直接記憶體存取控制器連接。在x86個人電腦上，軟碟控制器使用中斷服務6，在其他的系統上，其他的中斷服務方式也可能被使用。軟碟控制器通常使用直接記憶體存取模式來實現資料的傳送。

在下面的方塊圖上顯示軟碟控制器經由工業標準結構（ISA）匯流排來與中央處理器溝通。在後來的設計裡，軟碟控制器被包含在Super I/O晶片中，並透過LPC匯流排來與外界溝通。

<image>

大部分的軟碟控制器功能是以積體電路的方式實現。但是有些是用外部電路的方式實現。軟碟控制器的功能詳列如下。

### 軟碟控制器的功能

- 將位元資料轉換成MFM或GCR格式來紀錄
- 解析並執行命令，如搜尋、讀取、寫入、格式化等等
- 以校驗和的產生與驗證來做錯誤偵測，如同循環冗餘校驗
- 用鎖相迴路（PLL）來同步資料

### 外部電路功能

- 選擇軟碟機
- 開啟軟碟機馬達
- 提供軟碟控制器晶片的重置信號
- 致能/取消在軟碟控制器內的中斷與直接記憶體存取信號
- 資料分離邏輯電路
- 寫前補償邏輯電路
- 為控制器提供線性驅動訊號
- 從控制器接收線性訊號

## 一般x86個人電腦軟碟控制器的輸入/輸出埠

軟碟控制器有三個I/O埠，如下所示：

- 資料埠
- 主狀態暫存器（MSR）
- 控制埠

前兩個埠存在於軟碟控制器晶片中，而控制埠則位於外部電路裡。下面是三個埠的對應位址。

埠位址hex｜埠名稱｜所在位置｜埠型態

3F5｜資料暫存器｜軟碟控制器晶片｜雙向輸出/輸入

3F4｜主狀態暫存器｜軟碟控制器晶片｜輸入

3F2｜數位控制埠｜外部電路｜輸出

### 資料埠

軟體使用資料埠有三個不同的目的：

- 當軟體發出命令給軟碟控制晶片，命令與命令參數是經由資料埠發出給軟碟控制器晶片。軟碟控制器晶片將命令與命令的不同參數儲存在控制器內部的暫存器中。
- 當命令被執行後，軟碟控制器晶片儲存一組狀態參數於控制器內部暫存器中。這些狀態參數經由資料埠被中央處理器讀取。這些不同的狀態位元組被軟碟控制器晶片依特定的順序排列呈現。
- 當工作在資料傳輸模式中，軟碟控制器晶片與中央處理器的輸出輸入指令間的資料傳遞是經由資料工作來完成的。

### 主狀態暫存器（MSR）

軟體使用此埠來讀取軟碟控制器晶片與軟碟機所有的狀態資訊。在進行軟碟機操作初始化前，軟體讀取此埠的資料來確定軟碟控制器是否已是準備就緒的狀態，並且軟碟機經由先前的初始化命令來驗證相關的狀態。以下列出狀態暫存器不同位元意義的說明：

位元｜說明

0｜FDD 0：0號軟碟機處於搜尋模式忙碌

1｜FDD 1：1號軟碟機處於搜尋模式忙碌

2｜FDD 2：2號軟碟機處於搜尋模式忙碌

3｜FDD 3：3號軟碟機處於搜尋模式忙碌

4｜FDC Busy：軟碟控制器忙碌;讀取/寫入命令進行中

5｜Non-DMA mode：不是處於直接記憶體存取模式

6｜DIO：指出軟碟控制器晶片與中央處理器間資料傳輸的方向

7｜MQR：指出資料暫存器為已準備完成，可以進行資料傳送

解釋

MQR｜1 = 資料暫存器已準備完成，0 = 資料暫存器尚未準備完成

DIO｜1 = 控制器有資料給中央處理器，0 = 控制器從中央處理器接收資料

Non-DMA｜1 = 控制器不在直接記憶體存取模式中，0 = 控制器處於直接記憶體存取模式中

FDC Busy｜1 = 忙碌，0 = 閒置

FDD 0，1，2，3｜1 = 使用中，0 = 非使用中

### 數位控制埠

軟體使用數位控制埠來控制軟碟機和軟碟控制器晶片的特定功能。此埠的位元被賦予的意義說明如下：

位元｜說明

0與 1｜被選擇的裝置號碼

2｜重置軟碟機控制晶片（低位準）

3｜致能軟碟控制器的中斷及直接記憶體存取信號

4到7｜個別位元代表已啟動馬達的磁碟機代號0、1、2或3

## 格式資料

有可能存在彼此互不相容的軟碟片格式;除此之外，因為磁碟片實體格式的不同，也可能存在互不相容的檔案系統。

磁碟機｜格式｜容量｜傳輸速度 kbit/s｜RPM｜磁軌數｜TPI｜註解

8" SD｜8" SD｜80 kB｜33.333｜360｜32｜48｜舊的控制器才有。

5.25" SD｜5.25" SD｜160 kB｜125｜40｜舊的控制器才有。

5.25" SD｜5.25" SD｜171 kB｜250 - 308｜35｜只與相容的才有。

5.25" SD｜5.25" SD｜180 kB｜150｜40｜舊的控制器才有。

5.25" DD｜5.25" DD｜360 kB｜250｜300｜40

5.25" HD｜5.25" DD｜360 kB｜300｜360｜40｜48

5.25" HD｜5.25" HD｜1.2 MB｜500｜360｜80｜96｜最高到83個磁軌。不同的偏壓電流。

5.25" HD｜5.25" HD｜720 kB｜300｜360｜80｜最高到83個磁軌。

3.5" DD｜3.5" DD｜720 kB｜250｜300｜80｜135｜最高到83個磁軌。

3.5" DD｜3.5" DD｜800 kB｜250｜300｜80｜為所使用。

3.5" DD｜3.5" DD｜880 kB｜250｜300｜80｜最高到83個磁軌。為Amiga電腦所使用。

3.5" DD｜3.5" DD｜360 kB｜250｜300｜40

3.5" HD｜3.5" DD｜720 kB｜250｜300｜80｜最高到83個磁軌。

3.5" HD｜3.5" HD｜1.44 MB｜500｜300｜80｜135｜最高到83個磁軌。

3.5" HD｜3.5" HD｜1.76 MB｜250｜300｜80｜為Amiga電腦所使用。

3.5" ED｜3.5" ED｜2.88 MB｜1000｜300｜80｜135｜最高到83個磁軌。

面數：

- SS -
- DS -

密度：

- SD - （FM）
- DD - （MFM）
- HD - 高密度
- ED - 延伸密度（垂直寫入技術）

## "3模式"軟碟機

起初在日本，出現有3.5"高密度軟碟機支援3種磁碟格式取代普遍的支援兩種軟碟片格式的磁碟機 - 1.44 MB（2 MB未格式化），1.2 MB（1.6 MB未格式化）和 720 kB（1 MB未格式化）。最初，在日本3.5"軟碟機的高密度模式只支援1.2 MB的容量磁片而不支援除日本以外普遍所使用的1.44 MB容量磁碟片。但當工作在每分鐘轉速為300的 1.44 MB格式取代了每分鐘轉速為360 的1.2 MB格式的磁片而變得普遍後，就如同每個磁軌有15個磁區的1.2 MB格式磁片取代5.25"高密度磁碟機一樣。此後，日本使用的軟碟機就支援了兩種高密度格式（也支援單密度格式）。因此被稱為3模式。一些BIOS提供設定選項可以來致能此一模式的軟碟機。

## 參考

- ISO/IEC 8860-1:1987 Double-Density (DD)
- ISO/IEC 9529-1:1989 High-Density (HD)
- ISO 10994-1:1992 Extra-high-density (ED)
- ECMA-147