Articulo de referencia

Registro de hardware

Estructura interna de un registro básico de n bits. El símbolo del diagrama de bloques correspondiente a nivel de registro se muestra a la derecha. En electrónica digital , un r...

Estructura interna de un registro básico de n bits. El símbolo del diagrama de bloques correspondiente a nivel de registro se muestra a la derecha.

En electrónica digital , un registro es un grupo de celdas de memoria que almacenan una colección de bits y emiten continuamente los datos almacenados. [ 1 ] [ 2 ] Típicamente consta de un grupo sincronizado de biestables en el que cada biestable almacena y emite un bit de la colección. [ 3 ] [ 4 ] [ 5 ] El número de bits que un registro puede almacenar, conocido como su tamaño de palabra , es igual al número de biestables que contiene. [ 6 ] [ 1 ] Es una memoria volátil, lo que significa que el circuito dejará de retener sus datos almacenados al perderse la alimentación de funcionamiento. [ 6 ] Los registros se caracterizan de varias maneras, incluyendo por la capacidad de almacenamiento de bits (por ejemplo, registro de 32 bits), polaridades de señal, nivel lógico y voltajes de alimentación , y parámetros de temporización. [ 3 ]

Los registros son un componente fundamental de los sistemas digitales. Se utilizan en una amplia gama de aplicaciones, incluyendo unidades centrales de procesamiento (CPU) para diversos fines; en contadores digitales y otras máquinas de estados; en comunicación serial y paralela ; y en interfaces de dispositivos para funciones como control y configuración, informes de estado y almacenamiento en búfer de datos.

Señales

Un registro dispone de diversas redes de entrada y salida , que son los conductores eléctricos utilizados para transmitir señales digitales entre el registro y los circuitos externos.

Un registro tiene entradas que reciben los datos que se almacenarán y salidas que emiten los datos almacenados actualmente. [ 6 ] [ 3 ] Sus biestables comparten una entrada de reloj común que, ante flancos de señal relevantes , hace que los biestables muestreen y almacenen los datos de entrada. [ 3 ] [ 5 ] [ 7 ] Normalmente, los biestables también comparten una entrada de reinicio común , que se utiliza para inicializar los datos almacenados. [ 4 ]

señales de entrada

  • Reinicio : inicializa todos los flip-flops a estados conocidos, normalmente 0. Dependiendo del diseño del registro, esto puede ser síncrono o asíncrono. [ 3 ] Normalmente se utiliza para poner a cero los flip-flops antes de iniciar el funcionamiento síncrono. [ 4 ]
  • Reloj : al subir o bajar el flanco de la señal (el flanco activo [ 3 ] ), los datos presentados en las entradas de datos se almacenan en los flip-flops del registro. En los registros que tienen una entrada de reinicio síncrono donde el reinicio está activado, un flanco activo del reloj provocará un reinicio del registro en lugar de almacenar los datos de entrada.
  • Datos de entrada : datos que se almacenarán en el flanco activo del reloj, un bit por flip-flop. Para un registro connorte{\displaystyle n}Los flip-flops, las entradas de datos suelen llamarseD0{\displaystyle D_{0}}aDnorte1{\displaystyle D_{n-1}}.

señales de salida

  • Salida de datos : datos almacenados actualmente, un bit por flip-flop, emitidos continuamente, estables excepto al pasar a nuevos valores almacenados. Para un registro connorte{\displaystyle n}chanclas, estas suelen ser designadasQ0{\displaystyle Q_{0}}aQnorte1{\displaystyle Q_{n-1}}Algunos registros proporcionan salidas de datos tanto verdaderas como complementarias. Por ejemplo, el circuito integrado 74175 de MSI tiene cuatro biestables, cada uno con sus salidas verdaderas y complementarias conectadas a los pines del encapsulado.

Señales no utilizadas

Las entradas no utilizadas suelen conectarse a niveles lógicos fijos para evitar que queden flotantes , lo que podría provocar un comportamiento impredecible o dañar los circuitos del registro.

Las salidas no utilizadas normalmente se dejan sin conectar.

Estructura de datos

Los datos almacenados en un registro pueden representar cualquier dato binario arbitrario que quepa en la capacidad de almacenamiento del registro. En los casos en que los datos representan un número entero binario, los bits de datos menos significativos a los más significativos suelen estar asociados a las entradas del registro.D0{\displaystyle D_{0}}aDnorte1{\displaystyle D_{n-1}}y resultadosQ0{\displaystyle Q_{0}}aQnorte1{\displaystyle Q_{n-1}}respectivamente, aunque esto no es obligatorio.

Implementación

Los registros se implementan de diversas maneras, incluyendo como circuitos integrados MSI independientes , como registros integrados en ASIC y procesadores programables, y como bloques IP en FPGA . En este último caso, un registro se instancia típicamente sintetizándolo a partir de una descripción escrita en VHDL , Verilog u otro lenguaje de descripción de hardware . Por ejemplo, el siguiente código VHDL describe un registro de 32 bits con habilitación de carga y reinicio asíncrono:

La entidad reg32 es -- registro de 32 bits con puerto de habilitación de carga ( CLK : in std_logic ; -- reloj RESET : in std_logic ; -- reinicio asíncrono LD : in std_logic ; -- habilitación de carga D : in std_logic_vector ( 31 downto 0 ); -- entradas de datos Q : out std_logic_vector ( 31 downto 0 ) -- datos almacenados ); fin reg32 ;La arquitectura de comportamiento de reg32 es begin process ( CLK , RESET ) begin if RESET = '1' then -- si RESET está activado Q <= ( others => '0' ); -- datos almacenados a cero elsif rising_edge ( CLK ) then -- si no, si CLK está activo en el flanco if LD = '1' then -- y se permite la carga Q <= D ; -- almacenar datos de entrada end if ; end if ; -- si no, conservar los datos almacenados end process ; end behavioral ;

En los circuitos integrados MSI independientes, un registro se implementa como un chip semiconductor que se une y encapsula en un paquete semiconductor . [ 8 ]

Visibilidad de la señal

Según su implementación y propósito, las entradas y salidas de datos de un registro pueden ser todas públicas (accesibles a circuitos externos), o bien, algunas entradas o salidas de datos (o ambas) pueden estar destinadas únicamente a uso interno. Un ejemplo de esto último es un registro de desplazamiento serie-serie-entrada, que expone solo una entrada y una salida de datos a circuitos externos.

Aplicaciones

En muchas aplicaciones, la lógica combinacional se utiliza para controlar cuándo y cómo se almacenan nuevos datos en un registro. [ 1 ] Por ejemplo, los registros suelen estar dotados de una función de habilitación de carga que emplea puertas lógicas, junto con una señal de carga , para permitir o impedir que se almacenen nuevos datos. [ 3 ] En un registro de desplazamiento de entrada paralela , las puertas lógicas se utilizan para transferir cada bit almacenado a un flip-flop adyacente, desplazando así la palabra binaria almacenada una posición de bit en un solo ciclo de reloj. [ 3 ] En un contador binario síncrono, las puertas lógicas hacen que el valor almacenado avance a través de una secuencia de conteo binario.

En los sistemas organizados por bus, se utilizan multiplexores o búferes triestado (o ambos) para enrutar las salidas de los registros a buses compartidos. [ 3 ] Ejemplos comunes de esto incluyen archivos de registros , interfaces periféricas y buses de direcciones/datos multiplexados. Para facilitar esto, a menudo se utilizan decodificadores de direcciones para seleccionar uno de entre un grupo de registros para ingresar datos o enviar datos almacenados a un bus compartido. Por ejemplo, en las computadoras , a menudo se accede a los registros de la interfaz periférica de manera similar a la memoria de acceso aleatorio (RAM), utilizando una dirección de memoria o puerto para seleccionar un registro en particular. [ 9 ]

Habilitar carga

En muchas aplicaciones, es necesario cargar (almacenar nuevos datos) un registro solo durante ciclos de reloj específicos y mantener (conservar los datos almacenados) durante otros ciclos. Esto se facilita añadiendo una función de habilitación de carga al registro, que consta de compuertas lógicas y una entrada de control asociada —generalmente denominada habilitación de reloj (CE), habilitación de carga o simplemente carga (LD)— que permite o inhibe la carga según su estado.

Una forma sencilla de implementar esto es controlar la entrada de reloj del registro con la señal de control, pero esto interfiere con la temporización del sistema porque introduce un retardo de propagación en la ruta de la señal de reloj. [ 4 ] En cambio, para evitar la problemática desviación del reloj, la señal de control se utiliza normalmente para gestionar el enrutamiento de la señal a las entradas de datos del registro [ 4 ] mediante primitivas como las que se muestran a continuación.

Registros direccionables

En los sistemas orientados a bus, es común que los registros reciban datos de un bus compartido o envíen datos almacenados a él (o ambas cosas). Ejemplos ampliamente utilizados de esto incluyen los bancos de registros y los registros de interfaz de periféricos. Para facilitar esto, a cada registro se le asigna un número binario único conocido como su dirección , que se utiliza para seleccionar el registro para operaciones de lectura y escritura. El mecanismo de selección a menudo se basa en un decodificador binario 1 de n , que en este contexto se conoce comúnmente como decodificador de direcciones . Un registro al que se puede acceder y manipular utilizando una dirección específica se denomina registro direccionable . [ 1 ]

Para simplificar el acceso y la gestión, los registros relacionados suelen organizarse en grupos, donde a cada grupo se le asigna un rango contiguo de direcciones. [ 10 ] En general, no es necesario que todas las direcciones del rango se asignen a un registro, y a un registro se le pueden asignar varias direcciones dentro del rango.

Los registros de un grupo suelen compartir un bus de entrada de datos para operaciones de escritura, un bus de salida de datos para operaciones de lectura, o ambos. En este último caso, según la aplicación, un grupo de registros puede usar buses separados para operaciones de lectura y escritura, o un único bus para ambas.

Operación de escritura

En una operación de escritura, se selecciona un registro direccionable enviando su dirección a un decodificador de direcciones (normalmente un decodificador binario). Al activarse, el decodificador de direcciones habilita el registro seleccionado para almacenar nuevos datos. Las entradas de datos del registro están conectadas a un bus compartido y, por lo tanto, reciben los datos que se van a almacenar desde él. Al activarse su entrada de reloj, el registro seleccionado almacena la palabra presente en el bus de datos.

Dependiendo de la arquitectura del bus de datos, la señal de reloj del registro puede consistir en pulsos de escritura (un pulso por escritura) o puede ser un reloj continuo (flujo de pulsos periódicos). Este último es característico de los sistemas que emplean buses paralelos síncronos (p. ej., FPGA, ASIC, registros de procesador) en los que es práctica habitual sincronizar todos los elementos de almacenamiento con un reloj continuo, [ 6 ] [ 11 ] mientras que la sincronización de pulso por escritura es característica de los buses paralelos asíncronos (p. ej., registros de E/S periféricos). [ 6 ] A continuación se muestran ejemplos de circuitos de ambos tipos.

Operación de lectura

El proceso de lectura de un registro direccionable implica el envío de sus datos de salida a un bus compartido. Según la aplicación, el mecanismo de envío puede emplear multiplexores, búferes triestado o ambos. Las salidas de todos los registros de un grupo son accesibles al mecanismo de envío, lo que permite que la palabra de salida de cualquier registro se envíe al bus. Algunas aplicaciones emplean múltiples instancias de este mecanismo para permitir que diferentes registros (o un solo registro) se envíen simultáneamente a varios buses; cada una de estas instancias se denomina comúnmente puerto de lectura . [ 6 ]

Compuerta del multiplexor

En el control basado en multiplexores, se selecciona un registro para una operación de lectura enviando su dirección a un multiplexor. A continuación, el multiplexor enruta la palabra de salida del registro al bus, ya sea directamente, como se muestra a continuación, o a través de un búfer de palabras triestado en los casos en que el bus pueda ser controlado por otras fuentes de señal.

Compuerta de búfer de tres estados

En el control basado en búfer triestado, se selecciona un registro para una operación de lectura enviando su dirección a un decodificador binario, lo que provoca que el decodificador active su señal de salida correspondiente. Esta señal se envía a un búfer de palabras triestado, que responde enviando los datos de salida del registro al bus.

Operaciones de bits atómicos

En sistemas multitarea, a menudo es necesario establecer o borrar bits específicos de un registro, dejando otros sin modificar. Esto puede lograrse únicamente mediante software, utilizando una secuencia de lectura, modificación y escritura (RMW). Sin embargo, si el registro es accedido por múltiples procesos o núcleos, la integridad de cada RMW debe protegerse mediante mecanismos como barreras de memoria , instrucciones atómicas y semáforos. La protección requerida se complica aún más si el registro puede modificarse mediante transferencias de acceso directo a memoria (DMA).

Se pueden evitar los RMW y sus mecanismos de protección si el registro admite directamente operaciones atómicas. Los registros dotados de esta capacidad permiten inherentemente que se establezcan o borren bits específicos sin riesgo de interferencia por DMA u otros procesos. Esto se implementa normalmente añadiendo lógica a la entrada de cada flip-flop, como en el ejemplo siguiente:

En los circuitos anteriores, cualquier combinación arbitraria de bits puede modificarse atómicamente. Por ejemplo, en el caso de un registro de 16 bits, para establecer atómicamente los bits 8 y 10, un circuito externo activaría LD='1', MODE='1' y D[15:0]=0x0500.

Las entradas MODE pueden controlarse mediante bits de orden inferior de un bus de direcciones, asignando así cada una de las cuatro operaciones del registro a una dirección única. Alternativamente, MODE puede controlarse mediante bits del bus de datos que no se utilicen, lo que permite asignar el registro a una única dirección.

Registro de estado de interrupción

Algunos bits de registro no se activan ni se desactivan únicamente en función de una única fuente de datos. Un ejemplo de esto es el circuito que se muestra a continuación, que almacena el estado de una solicitud de interrupción. El flip-flop se activa cuando un dispositivo de hardware (HWI) o una interrupción de software (SWI) solicita un servicio de interrupción (REQ), y se desactiva cuando se confirma la solicitud (ACK). [ 12 ] La puerta AND impide que el flip-flop se desactive si llega una nueva solicitud mientras se está confirmando la anterior, lo que garantiza que no se pierdan nuevas solicitudes. Cuando tanto PEND como INTEN (habilitación de interrupción) están activos, se envía una solicitud de servicio (IRQ) al controlador de interrupciones . [ 12 ]

El registro es direccionable mediante SEL, que normalmente es controlado por un decodificador de direcciones que asigna el registro al espacio de direcciones de memoria o E/S del procesador. El procesador puede leer el registro para determinar el estado de la solicitud de interrupción. Cuando la solicitud ya no es necesaria, el procesador activa la señal ACK escribiendo 1 en el registro (escribir 0 no tiene efecto), lo que provoca un borrado atómico.

Computadoras

En informática, los usos típicos de los registros incluyen:

Periféricos

Los registros se utilizan en las interfaces entre el software y los periféricos . El software los escribe para enviar información al dispositivo y los lee para recibir información del dispositivo.

Para leer o escribir en un registro de una unidad periférica ( hardware de computadora fuera de la CPU), el procesador ejecuta una instrucción de carga o almacenamiento utilizando la dirección de E/S mapeada en memoria o en puerto del registro . Se accede a los registros por palabras, pero a veces solo se utilizan algunos bits de la palabra.

Desde la perspectiva de la CPU, un registro puede ser de lectura/escritura, de solo lectura o de solo escritura . Esta última opción generalmente no es la preferida, ya que puede dificultar la depuración e impedir las operaciones de lectura, modificación y escritura .

Los registros accesibles por software en los circuitos integrados estándar suelen estar documentados en las hojas de datos de sus componentes electrónicos asociados . Muchos de estos dispositivos también tienen registros internos inaccesibles para el software, que se utilizan para fines tales como máquinas de estados y segmentación de instrucciones .

Existen diversos estándares que pueden utilizarse para especificar y describir registros direccionables y de otro tipo mediante XML , como IP-XACT y el Estándar Común de Interfaz de Software para Microcontroladores (CMSIS).

Véase también

Referencias

  1. 1 2 3 4 Mano, Morris; Ciletti, Michael (2017). Diseño digital con una introducción a Verilog HDL, VHDL y SystemVerilog . Pearson. ISBN 978-0134549897.
  2. Maini, Anil (2007). Electrónica digital . Wiley. ISBN 978-0470032145.
  3. 1 2 3 4 5 6 7 8 9 Brown, Stephen; Vranesic, Zvonko (2009). Fundamentos de lógica digital con diseño VHDL . McGraw Hill. ISBN 978-0073529530.
  4. 1 2 3 4 5 Mano, M. Morris. Lógica digital y diseño de computadoras . Pearson. ISBN 978-0132145107.
  5. 1 2 Tanenbaum, Andrew; Austin, Todd (2013). Organización estructurada de computadoras . Pearson. ISBN 978-0132916523.
  6. 1 2 3 4 5 6 Patterson, David; Hennessy, John. Organización y diseño de computadoras: la interfaz hardware/software . Morgan Kaufmann. ISBN 978-0123747501.
  7. Roth, Charles; Kinney, Larry. Fundamentos del diseño lógico . Cengage. ISBN 978-1337620352.
  8. Brock, Les (1970). Diseño con MSI . Signetics .
  9. Rajaraman, V.; Radhakrishnan, T. (1 de junio de 2007). Organización y arquitectura de computadoras . PHI Learning Pvt. Ltd. pág. 38. ISBN  978-8120332003.
  10. Kamal, Raj. Microcontroladores: Arquitectura, programación, interconexión y diseño de sistemas . Pearson. ISBN 978-8131706978.
  11. Brown, Stephen; Vranesic, Zvonko. Fundamentos de lógica digital con diseño VHDL . McGraw Hill. ISBN 978-0-07-338054-4.
  12. 1 2 Stringham, Gary. Diseño de interfaz hardware/firmware: mejores prácticas para mejorar el desarrollo de sistemas embebidos . Newnes. ISBN 978-1856176057.