# Controlador de disquet

El controlador de disquet (FDC, de Floppy Disk Controller) és un xip especial que amb els circuits associats d'un controlador de disc, dirigeix i controla la lectura i escriptura d'una disquetera (FDD).l
Encara que el sistema majoritàriament utilitzat prové del WD1771 i sobretot dels seus successors, el NEC μPD765 utilitzat en l'IBM PC i l'Intel 82072A en l'IBM AT, són dignes de menció els xips usats en l'Apple Macintosh i sobretot per la seva versatilitat els dels Commodore Amiga.
Per connectar amb les disqueteres majoritàriament fan servir un connector mascle de cable pla amb 34 pins, amb una osca guia, encara que en primitives targetes o equips com el Amstrad CPC 6128 es recorria al connector de vora de targeta amb ranura guia, idèntic al present en les unitats de 5¼ "
Aquest article conté conceptes dels FDC basats en el NEC μPD765, Intel 8072A, 82072A i els seus descendents, com van ser usats en l'IBM PC i compatibles des dels anys 1980 i 1990. Els conceptes poden o no ser aplicables o il·lustratius d'altres controladors o arquitectures.

## Introducció

Una simple targeta controladora de disc flexible pot suportar fins a quatre disqueteres. El controlador està connectat amb el bus de sistema de l'ordinador i apareix al CPU com un conjunt de ports d'E/S. Sovint també està connectat a un canal del controlador DMA. En el PC x86 la controlador de la disquetera utilitza l'IRQ 6, en altres sistemes poden ser usats altres esquemes d'interrupció. El controlador de disc flexible usualment realitza la transmissió de dades en la mode d'accés directe a memòria (DMA)
El següent diagrama mostra un controlador de disc flexible que comunica amb el CPU mitjançant un bus d'arquitectura estàndard de la indústria (ISA). Un arranjament alternatiu que és més habitual en els últims dissenys té el FDC inclòs dins d'un xip super I/O que es comunica a través d'un bus Low Pin Count (LPC).
Diagrama de bloc mostrant la comunicació del FDC amb la CPU i la FDD.
| Diagrama de bloc mostrant la comunicació del FDC amb la CPU i la FDD. | Adaptador de controlador de disquets de 5¼" (FDC) de la IBM PC original. Disquetera de 5¼" (FDD) amb un disquet parcialment inserit. |
La majoria de les funcions del controlador de disc flexible (FDC) es realitza pel circuit integrat principal, però algunes són fetes per circuits externs de hardware. La llista de funcions realitzades per cada un és donada a continuació.

### Funcions del controlador de disquet

* Tradueix bits de dades en el format MFM o GCR per poder gravar-los.
* Interpreta i executa ordres com ara cercar, llegir, escriure, formatar, etcètera (seek, read, write, format, etcètera).
* Detecta errors amb la generació de sumes de comprovació i verificació, com ara el CRC.
* Sincronitza dades amb phase-locked loop (PLL).

### Funcions del hardware extern

* Selecció de la unitat de disquet
* Posada en marca del motor de la disquetera
* Senyal de reset pel del controlador de disquet
* Habilitar/deshabilitar els senyals d'interrupció i DMA del controlador de disc flexible
* Lògica de separació de dades
* Lògica de pre-compensació d'escriptura
* Drivers de línia per als senyals cap el controlador
* Receptors de línia per als senyals des del controlador

## Ports d'entrada / sortida per als controladors comuns en el PCx86

El FDC té tres ports d'E/S, que són:
* Port de dades
* Registre de l'estat principal (MSR)
* Port de control
Els dos primers dos estan dins del xip del FDC mentre el port de control està en el hardware associat. Les adreces d'aquests tres ports són les següents::
| Adreça del port[hex] | Nom del port | Ubicació | Tipus de port |
| 3F5 | Registre de dades | Xip del FDC | E/S bidireccional |
| 3F4 | Registre de l'estat principal | Xip del FDC | Entrada |
| 3F2 | Port de control digital | hardware associat | Sortida |

### Ports del FDC

El port 3F5 és utilitzat pel programari per a tres funcions diferents:
* Mentre s'emet una ordre al xip del FDC, bytes de l'ordre i els seus paràmetres són emesos al xip del FDC a través d'aquest port. el FDC emmagatzema l'ordre i els diferents paràmetres en els seus registres interns.
* Després que una ordre és executada, el xip de FDC emmagatzema en els registres interns un conjunt de paràmetres d'estat. Aquests són llegits pel CPU a través d'aquest port. Els diferents bytes d'estatus es presenten pel d'FDC en una seqüència específica.
* En mode de transferència de dades programat i d'interrupció, el port de dades és usat per a transferir dades entre el xip del FDC i les instruccions IN/OUT de la CPU.

#### Registre (MSR) d'estat principal 3F4

l port 3F4 és utilitzat pel programa de lectura de la informació general sobre el xip del FDC i els FDD. Abans d'iniciar una operació de disquet el programari llegeix aquest port per confirmar l'estat de preparació del FDC i les unitats de disc per comprovar l'estat de l'ordre prèviament iniciada. Els diferents bits d'aquest registre representen el següent:

### Port auxiliar
#### Port de control digital 3F2

El port 3F2 és utilitzat pel programari per controlar certes funcions dels FDD i del xip del FDC. Les assignacions de bit d'aquest port són:

## Format data

| Unitat | Format | Capacitat en KiB | Velocitat transferència [kbit/s] | RPM | Pistes | Pistes/polzada | Comentari |
| 8" SD | 8" SD | 80 | 33.333 | 360 | 32 | 48 | Només en controladors antics. |
| 5.25" SD | 5.25" SD | 160 | 125 | | 40 | | Només en controladors antics |
| 5.25" SD | 5.25" SD | 171 | 250 - 308 | | 35 | | Només en compatibles del Commodore 1541. |
| 5.25" SD | 5.25" SD | 180 | 150 | | 40 | | Només en controladors antics |
| 5.25" DD | 5.25" DD | 360 | 250 | 300 | 40 | | |
| 5.25" DD | 5.25" DD | 360 | 300 | 360 | 40 | 48 | |
| 5.25" HD | 5.25" HD | 1200 | 500 | 360 | 80 | 96 | Fins a 83 pistes. Diferent corrent de bias |
| 5.25" HD | 5.25" HD | 720 | 300 | 360 | 80 | | Fins a 83 pistes. |
| 3.5" DD | 3.5" DD | 720 | 250 | 300 | 80 | 135 | Fins a 83 pistes |
| 3.5" DD | 3.5" DD | 800 | 250 | 300 | 80 | | Usat pel Commodore 1581. |
| 3.5" DD | 3.5" DD | 880 | 250 | 300 | 80 | | Fins a 83 pistes. Usat pels computadors Amiga. |
| 3.5" DD | 3.5" DD | 360 | 250 | 300 | 40 | | |
| 3.5" DD | 3.5" DD | 720 | 250 | 300 | 80 | | Fins a 83 pistes |
| 3.5" HD | 3.5" HD | 1440 | 500 | 300 | 80 | 135 | Fins a 83 pistes |
| 3.5" HD | 3.5" HD | 1760 | 250 | 300 | 80 | | Usat pels computadors Amiga |
| 3.5" ED | 3.5" ED | 2880 | 1000 | 300 | 80 | 135 | Fins a 83 pistes. |
| Cares | Densitat |
| SS - Simple Cara DS - Doble Cara | SD -Simple Densitat (FM) DD - Doble Densitat (MFM) HD - Alta Densitat ED - Densitat Estesa (enregistrament perpendicular) |

## Referències

* ↑ hypertextbook.com - Angular Speed of a Floppy Disk
* 1 2 3 4 5 6 «unifr.ch - sys/src/kernel/floppy.c». Arxivat de l'original el 19 de juliol de 2011. [Consulta: 5 maig 2011].
* 1 2 iesleonardo.info - This diskette tutorial provides technical information concerning diskettes
* 1 2 oldskool.org - Let HD 5,25" FDDs operate at 300 rpm instead of 360 rpm
* 1 2 «intel.com - Intel 82077SL for Super Dense Floppies». Arxivat de l'original el 2012-10-08. [Consulta: 30 juny 2019].
* ↑ yi.org - High Density Floppy Disks Mf2hd Disk 3 5 1 Pk
* ↑ mcamafia.de - IBM Personal system/2, 3,5"-inch Diskette Drives, Technical Reference

## Vegeu també

* Controlador de disc
* Disquet
* Unitat de disquet
* Int 13h
* Apple FileWare

## Enllaços externs

* Programming Floppy Disk Controllers
* Diskette Controller Data Sheet Arxivat 2019-11-29 a Wayback Machine.
* NEC uPD765 disc controller