软碟控制器

软碟控制器（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