Controlador de disquete
El controlador de disquete (Floppy Disk Controller, FDC) es un chip especial y los circuitos de controlador de disco asociados, que dirige y controla la lectura y escritura de una disquetera (FDD).
Aunque el sistema mayoritariamente usado proviene del WD1771 y sobre todo de sus sucesores, el NEC µPD765 utilizado en el IBM PC y el Intel 82072A en el IBM AT, son dignos de mención los chips usados en el Apple Macintosh y sobre todo por su versatilidad los de los Commodore Amiga.
Para conectarse con las disqueteras mayoritariamente usan un conector macho de cable plano con 34 pines, con una muesca guía, aunque en primitivas tarjetas o equipos como el Amstrad CPC 6128 se recurría al conector de borde de tarjeta con ranura guía, idéntico al presente en las unidades de 5¼".
Este artículo contiene conceptos comunes a los FDC basados en el NEC µPD765, Intel 8072A, 82072A y sus descendientes, como fueron usados en el IBM PC y compatibles desde los años 1980 y 1990. Los conceptos pueden o no ser aplicables o ilustrativos de otros controladores o arquitecturas.
Introducción
editarUna simple tarjeta controladora de disco flexible puede soportar hasta cuatro disqueteras. El controlador está conectado con el bus de sistema de la computadora y aparece al CPU como un conjunto de puertos de E/S. A menudo también está conectado a un canal del controlador DMA. En el PC x86 la controladora de disquetes utiliza el IRQ 6, en otros sistemas pueden ser usados otros esquemas de interrupción. El controlador de disco flexible usualmente realiza la transmisión de datos en el modo de acceso directo a memoria (DMA).
El diagrama siguiente muestra un controlador de disco flexible que se comunica con el CPU mediante un bus de arquitectura estándar de la industria (ISA). Un arreglo alternativo que es más habitual en los últimos diseños tiene al FDC incluido dentro de un chip super I/O que se comunica a través de un bus Low Pin Count (LPC).
La mayoría de las funciones del controlador de disco flexible (FDC) se realiza por el circuito integrado principal, pero algunas son hechas por circuitos externos de hardware. La lista de funciones realizadas por cada uno es dada a continuación.
Funciones del controlador de disquete
editar- Traduce bits de datos en el formato MFM (Modulación de Frecuencia Modificada) o GCR (Grabación codificada en grupo) para poder grabarlos.
- Interpreta y ejecutar comandos tales como buscar, leer, escribir, formatear, etcétera (seek, read, write, format, etcétera).
- Detección de error con la generación de sumas de comprobación y verificación, como el CRC.
- Sincroniza datos con phase-locked loop (PLL).
Funciones del hardware externo
editar- Selección de la unidad de disquete
- Encendido el motor de la disquetera
- Señal de reset para el IC del controlador de disquete
- Habilitar / deshabilitar las señales de interrupción y DMA en el controlador de disco flexible
- Lógica de separación de datos
- Lógica de precompensación de escritura
- Conductores de línea para señales al controlador
- Receptores de línea para señales desde el controlador
Puertos de entrada/salida para controladores comunes en los PC x86
editarLa FDC tiene tres puertos de la E/S. Estos son:
- Puerto de datos
- Registro del estado principal (MSR)
- Puerto de control
Los dos primeros dos residen dentro de la IC del FDC mientras el puerto de control está en el hardware externo. Las direcciones de estos tres puertos son las siguientes:
Dirección del puerto [hex] |
Nombre del puerto | Ubicación | Tipo de puerto |
---|---|---|---|
3F5 | Registro de datos | IC del FDC | E/S bidireccional |
3F4 | Registro del estado principal | IC del FDC | Entrada |
3F2 | Puerto de control digital | Hardware externo | Salida |
Puertos del FDC
editarPuerto de datos 3F5
editarEl puerto 3F5 es utilizado por el software para tres propósitos diferentes:
- Mientras se emite un comando al IC del FDC, bytes del comando y sus parámetros son emitidos al IC del FDC a través de este puerto. El IC FDC almacena el comando y los diferentes parámetros en sus registros internos.
- Después de que un comando es ejecutado, el IC de FDC almacena en los registros internos un conjunto de parámetros de estado. Estos son leídos por el CPU a través de este puerto. Los diferentes bytes de estatus son presentados por el IC de FDC en una secuencia específica.
- En modo de transferencia de datos programado y de interrupción, el puerto de datos es usado para transferir datos entre el IC del FDC y las instrucciones IN o OUT del CPU.
Registro de estado principal (MSR) 3F4
editarEl puerto 3F4 es utilizado por el software para leer la información general sobre el IC del FDC y los FDD. Antes de iniciar una operación de disquete el software lee este puerto para confirmar el estado de preparación del FDC y las unidades de disco para comprobar el estado del comando previamente iniciado. Los diferentes bits de este registro representan lo siguiente:
+---+---+---+---+---+---+---+---+ | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | +---+---+---+---+---+---+---+---+ | | | | | | | | | | | | | | | +---- 1 = el FDD 0 está ocupado en modo seek | | | | | | +-------- 1 = el FDD 1 está ocupado en modo seek | | | | | +------------ 1 = el FDD 2 está ocupado en modo seek | | | | +---------------- 1 = el FDD 3 está ocupado en modo seek | | | | | | | +-------------------- FDC ocupado; Hay un comando de Lectura/Escritura en progreso | | | 1 = ocupado | | | 0 = no ocupado | | +------------------------ Modo no DMA | | 1 = el controlador no está en modo DMA | | 0 = el controlador está en modo DMA | +---------------------------- DIO; Indica la dirección de la transferencia entre el IC del FDC y el CPU | 1 = controlador tiene datos para el CPU | 0 = el controlador está esperando datos desde el CPU +-------------------------------- MQR; Indica que el registro de datos está listo para la transferencia de datos 1 = listo 0 = no listo
Puerto auxiliar
editarPuerto de control digital 3F2
editarEl puerto 3F2 es utilizado por el software para controlar ciertas funciones de los FDD y del IC del FDC. Las asignaciones de bit de este puerto son:
+---+---+---+---+---+---+---+---+ | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | +---+---+---+---+---+---+---+---+ | | | | | | | | | | | | | | +---+---- Dispositivo a ser seleccionado | | | | | | 00 = FDD 0 | | | | | | 01 = FDD 1 | | | | | | 10 = FDD 2 | | | | | | 11 = FDD 3 | | | | | | | | | | | +------------ RESET IC del FDC (bajo) | | | | +---------------- Habilita las señales de la interrupción del FDC y la solicitud DMA | | | | | | | | Enciende o apaga la unidad de disquete (1 = enciende, 0 = apaga) | | | +------------------------- FDD 0 | | +----------------------------- FDD 1 | +--------------------------------- FDD 2 +------------------------------------- FDD 3
Formatos
editarUnidad | Formato | Capacidad en KiB | Transferencia velocidad [kbit/s] |
RPM | Pistas | Pistas por pulgadas |
Comentario |
---|---|---|---|---|---|---|---|
8" SD | 8" SD | 80 | 33.333 | 360 | 32 | 48 | Solo en controladores antiguos.[1] |
5.25" SD | 5.25" SD | 160 | 125 | 40 | Solo en controladores antiguos | ||
5.25" SD | 171 | 250 - 308 | 35 | Solo en compatibles del Commodore 1541. | |||
5.25" SD | 180 | 150 | 40 | Solo en controladores antiguos | |||
5.25" DD | 5.25" DD | 360 | 250 | 300 | 40 | [2] | |
5.25" DD | 360 | 300 | 360 | 40 | 48 | [3][4] | |
5.25" HD | 5.25" HD | 1200 | 500 | 360 | 80 | 96 | Hasta 83 pistas. Diferente corriente de bias[3][4] |
5.25" HD | 720 | 300 | 360 | 80 | Hasta 83 pistas.[2] | ||
3.5" DD | 3.5" DD | 720 | 250 | 300 | 80 | 135 | Hasta 83 pistas[2][5] |
3.5" DD | 800 | 250 | 300 | 80 | Usado por el Commodore 1581. | ||
3.5" DD | 880 | 250 | 300 | 80 | Hasta 83 pistas. Usado por los computadores Amiga. | ||
3.5" DD | 360 | 250 | 300 | 40 | [2] | ||
3.5" DD | 720 | 250 | 300 | 80 | Hasta 83 pistas[2] | ||
3.5" HD | 3.5" HD | 1440 | 500 | 300 | 80 | 135 | Hasta 83 pistas[2][6] |
3.5" HD | 1760 | 250 | 300 | 80 | Usado por los computadores Amiga | ||
3.5" ED | 3.5" ED | 2880 | 1000 | 300 | 80 | 135 | Hasta 83 pistas.[5][7] |
[8]
Caras | Densidad |
---|---|
|
[9]
Referencias
editar- ↑ hypertextbook.com - Angular Speed of a Floppy Disk
- ↑ a b c d e f «unifr.ch - sys/src/kernel/floppy.c». Archivado desde el original el 19 de julio de 2011. Consultado el 5 de mayo de 2011.
- ↑ a b iesleonardo.info - This diskette tutorial provides technical information concerning diskettes
- ↑ a b oldskool.org - Let HD 5,25" FDDs operate at 300 rpm instead of 360 rpm
- ↑ a b intel.com - Intel 82077SL for Super Dense Floppies Archivado el 8 de octubre de 2012 en Wayback Machine.
- ↑ 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
- ↑ «Linux-2.6.17/drivers/block/floppy.c». Archivado desde el original el 23 de agosto de 2008. Consultado el 18 de marzo de 2013. 090504 gelato.unsw.edu.au
- ↑ «What is the difference between the traditional floppy disk and the high capacity floppy disks? - Yahoo! Answers». Archivado desde el original el 17 de octubre de 2012. Consultado el 18 de marzo de 2013. 100626 answers.yahoo.com