Los buses de datos, de direcciones y de control
Un bus, es un canal de comunicación que las computadoras usan para comunicar sus
componentes entre si, por ejemplo para comunicar el procesador con los periféricos,
memoria o dispositivos de almacenamiento. Está integrado a la tarjeta madre, en una tarjeta
madre muy posiblemente se encuentre diferentes tipos de buses.
-Los buses de datos: Este es un bus bidireccional, pues los datos pueden fluir hacia ó desde
la CPU. Los m terminales de la CPU, de D0 - Dm-1 , pueden ser entradas ó salidas, según
la operación que se esté realizando ( lectura ó escritura ) . En todos los casos, las palabras
de datos transmitidas tiene m bits de longitud debido a que la CPU maneja palabras de
datos de m bits; del número de bits del bus de datos, depende la clasificación del
microprocesador.
-Los buses de control: Este conjunto de señales se usa para sincronizar las actividades y
transacciones con los periféricos del sistema. Algunas de estas señales, como R / W , son
señales que la CPU envía para indicar qué tipo de operación se espera en ese momento. Los
periféricos también pueden remitir señales de control a la CPU, como son INT, RESET,
BUS RQ.
-Los buses de direcciones: Este es un bus unidireccional debido a que la información fluye
es una sola dirección, de la CPU a la memoria ó a los elementos de entrada y salida. La
CPU sola puede colocar niveles lógicos en las n líneas de dirección, con la cual se genera
2n posibles direcciones diferentes. Cada una de estas direcciones corresponde a una
localidad de la memoria ó dispositivo de E / S.
Bus de control vs bus de datos vs bus de direcciones
Mientras que el bus de direcciones lleva la información acerca de con qué
dispositivo la CPU se está comunicando, el bus de datos lleva los datos que en
realidad se están procesando, en tanto el bus de control lleva los comandos desde
la CPU y regresa señales de estado desde el dispositivo.
En otras palabras, el bus de control es el que administra el uso y acceso a la línea
de datos y de direcciones. Estas líneas son compartidas por todos los
componentes, por lo tanto debe haber mecanismos que las controlen para evitar
colisiones de información. Por lo tanto las señales de control transmiten tanto
órdenes como información de temporización entre los módulos.
D) Explica para que sirven los circuitos digitales; open colector y compuertas de 3
estados
Las compuertas de colector abierto, son un tipo de compuertas lógicas cuya salida
esta externalizada, es decir abierta o sin resistencia en el colector del transistor de
salida. Al utilizar este tipo de circuito integrado, se deja la posibilidad de utilizar el
valor de resistencia apropiado según sus necesidades.
Las salidas en colector abierto son útiles para:
Fijar los valores altos y bajos de tensión según las necesidades. Ademas esto
permite para el acoplamiento entre compuertas lógicas con niveles altos distintos.
Garantizar la corriente de salida necesaria para conectar varias compuertas
lógicas, a la salida de esta.
Conexión de varias compuertas con salida en colector abierto a un mismo bus de
datos. Al compartir la resistencia externa en el colector se crea una compuerta
“wired” es decir que la función lógica entre las compuertas conectadas, se da en el
cable.
Las compuertas de colector abierto pueden operar sin la resistencia externa
cuando se conecta a las entradas de otras compuertas, aunque esto no se
recomienda debido a la baja inmunidad al ruido encontrada. Sin una resistencia
externa, la salida de la compuerta será un circuito abierto cuando la salida este en
estado bajo.
Las compuertas de colector abierto se emplean básicamente en tres
aplicaciones principales:
-impulsar una lámpara o relevador.
-realizar lógica alambrada
– para la construcción de un sistema de bus común.
Una salida de colector abierto puede impulsar una lámpara colocada en su salida
a través de una resistencia licitadora.
Lógica alambrada.
Si las salidas de varias compuertas de colector abierto TTL se ligan con una
sola resistencia externa, se realiza una lógica AND alambrada.
Bus común.
Las compuertas de colector abierto pueden ligarse para formar un bus común. En
cualquier momento, todas las salidas de compuerta ligadas al bus, excepto una,
deben mantenerse en su estado alto. La compuerta seleccionada puede estar ya
sea en el estado alto o bajo, dependiendo de si se desea transmitir un 1 ó un 0 en
el bus.
Compuertas de 3 estados
Compuerta lógica de tres estados. Las compuertas de tres estados presentan tres
estados de salidas diferentes: un estado de bajo nivel (0), un estado de alto nivel
(1), un estado de alta impedancia o estado flotante (Z).
En este estado, la salida se comporta como si aun no estuviera conectada al
circuito, excepto por una pequeña corriente de fuga que puede fluir hacia adentro
o hacia afuera de la terminal de salida. Una salida puede tener uno de tres
estados: 0 lógico, 1 lógico y de alta impedancia.
Una salida con tres estados posibles se conoce como salida de tres estados o en
ocasiones salida tri-estado. Los dispositivos de tres estados tienen una entrada
extra, la cual se denomina generalmente «Habilitación» o «Enable» para
establecer las salidas del dispositivo en el estado de alta impedancia.
Un bus de tres estados los cuales son muy comunes en equipos computacionales
o control, se producen al conectar entre si varias salidas de triple estado.
Los dispositivos con salidas de tres estados se diseñan normalmente de modo que
el retardo la habilitación (de HI-Z a bajo o alto) sea un poco mas largo que el
retardo de deshabilitación (bajo o alto hacia HI-Z). Esto es debido a que si un
circuito de control activa la entrada de habilitación de salida del primer dispositivo,
esto garantiza que el segundo dispositivo entrara al estado de alta impedancia,
antes que el primero coloque un nivel Alto o Bajo en el bus.
Define que es un multiplexor y explica brevemente su implementación en vhdl
Cuando implementamos una arquitectura de hardware digital, a menudo
necesitamos seleccionar una entrada a nuestra lógica entre varias entradas
diferentes. Esta lógica de selección se llama multiplexor digital o MUX.
Como se ve claramente en la Figura 1, un MUX se puede visualizar como un
conmutador virtual n-way cuya salida se puede conectar a una de las diferentes
fuentes de entrada. En el lado izquierdo de la Figura 1, puede ver la
representación típica de MUX. El número cerca de los puertos de entrada indica el
valor del selector utilizado para enrutar la entrada seleccionada al puerto de salida.
Implementación VHDL de un MUX digital
El MUX digital es uno de los componentes básicos de un diseño digital. Usando el
VHDL tenemos básicamente dos formas diferentes de describir un MUX digital:
Descripción concurrente
Descripción secuencial
Ambas descripciones son totalmente equivalentes e implementan la misma lógica
de hardware. Puede usar concurrente o secuencial dependiendo de su estilo de
codificación.
Aquí a continuación se representa un mux de 4 vías usando una representación
secuencial
1. library IEEE;
2. use IEEE.std_logic_1164.all;
3.
4. entity mux4 is
5. port(
6. a1 : in std_logic_vector(2 downto 0);
7. a2 : in std_logic_vector(2 downto 0);
8. a3 : in std_logic_vector(2 downto 0);
9. a4 : in std_logic_vector(2 downto 0);
10. sel : in std_logic_vector(1 downto 0);
11. b : out std_logic_vector(2 downto 0));
12. end mux4;
13.
14. architecture rtl of mux4 is
15. -- declarative part: empty
16. begin
17.
18. p_mux : process(a1,a2,a3,a4,sel)
19. begin
20. case sel is
21. when "00" => b <= a1 ;
22. when "01" => b <= a2 ;
23. when "10" => b <= a3 ;
24. when others => b <= a4 ;
25. end case;
26. end process p_mux;
27.
28. end rtl;
29. Si el número de la entrada MUX es una potencia de dos, podemos
aprovechar la sintaxis VHDL, implementando el MUX en una descripción
VHDL muy compacta.
30.
31. Para aprovechar la potencia de dos números de entrada, utilizamos la
estructura de matriz VHDL.
32.
33. En el siguiente código VHDL, definimos un tipo de usuario que es una
matriz de una señal que usa el mismo tipo VHDL de la entrada MUX.
34.
35. La señal del selector se utilizará como índice de la matriz.
36.
37. El código VHDL es muy compacto y eficiente como podemos ver a
continuación.
38. library ieee ;
39. use ieee.std_logic_1164.all;
40. use ieee.numeric_std.all;
41.
42.
43. entity mux4 is
44. port(
45. d0 : in std_logic_vector(1 downto 0);
46. d1 : in std_logic_vector(1 downto 0);
47. d2 : in std_logic_vector(1 downto 0);
48. d3 : in std_logic_vector(1 downto 0);
49. s : in std_logic_vector(1 downto 0);
50. m : out std_logic_vector(1 downto 0));
51. end mux4;
52.
53. architecture rtl of mux4 is
54. type t_array_mux is array (0 to 3) of std_logic_vector(1 downto 0);
55. signal array_mux : t_array_mux;
56.
57. begin
58.
59. array_mux(0) <= d0;
60. array_mux(1) <= d1;
61. array_mux(2) <= d2;
62. array_mux(3) <= d3;
63.
64. m <= array_mux(to_integer(unsigned(s)));
65.
66. end rtl;
67. Implementación en vhdl y simulación