Practica6 Organización y Arquitectura de Computadoras

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 17

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO

FACULTAD DE INGENIERÍA

Laboratorio de Organización y Arquitectura


de Computadoras

6
Práctica #_____

____________________Secuenciador Básico _____________________

Martínez
Elaborada por:__ _____________ Rojas
___________ José Eduardo
Apellido paterno Apellido materno Nombre(s)

Grupo: 5

Semestre: 2022-2

Fecha de entrega: 22 Abril


__ de _______________ de 2022
Laboratorio
Conceptos de Organización
Básicos y Manejo deyequipo
Arquitectura
Laboratorio de computadoras
Dispositvos electronicos

Objetivo

Familiarizar al alumno en el conocimiento del secuenciador básico, el cual es una parte


fundamental del procesador.

Desarrollo

La figura 1 muestra el diagrama de bloques de un secuenciador básico. Como se puede


observar en el diagrama, la dirección del estado siguiente dada por el bus Y puede venir dedos
lugares posibles: 1 del registro µP C, 2 de la entrada D.
El registro de microprograma contiene la dirección del estado presente más uno, es decir,
la dirección que se encuentra a la salida del multiplexor es incrementada en una unidad y
cargada en este registro en el siguiente ciclo de reloj.
En la entrada D se introduce una dirección de salto. Esta dirección puede venir de tres lugares
diferentes: del campo de liga, del registro de transformación o del registro de interrupción.

2. La figura 2 muestra el diagrama de bloques de un secuenciador básico conectado a una


memoria.

Página 2 de 17
Laboratorio
Conceptos de Organización
Básicos y Manejo deyequipo
Arquitectura
Laboratorio de computadoras
Dispositvos electronicos

3. A continuación se presentan las instrucciones que este secuenciador puede ejecutar


00 Continúa (C)
En la instrucción continúa la dirección del estado siguiente la proporciona el registro µP C.

01 Salto condicional (SCO) En esta instrucción se revisa el valor de la línea cc, si es igual a
cero la dirección del estado siguiente la proporciona el registro µP C; si es igual a uno la
dirección del estado siguiente contenida en el registro seleccionado por P L ingresa a través
de la entrada D.

10 Salto de transformación (ST) La dirección del estado siguiente se obtiene del registro
seleccionado por la línea MAP. Este registro también esta conectado a la entrada D. Aquí
se introduce una nueva notación de carta ASM, un rombo con varias bifurcaciones. La
bifurcación que se elija dependerá del contenido del registro de Transformación.

Página 3 de 17
Laboratorio
Conceptos de Organización
Básicos y Manejo deyequipo
Arquitectura
Laboratorio de computadoras
Dispositvos electronicos

Salto condicional usando la dirección de las Interrupciones (SCI) En esta instrucción se


revisa el valor de cc, si es igual a cero la dirección del estado siguiente proviene del registro
µP C; si es igual a uno la dirección del estado siguiente, contenida en el registro
seleccionado por V ECT, ingresa a través de la entrada D.

4. En la figura 7 se presenta una carta ASM en donde se hace uso de todas las instrucciones
que un secuenciador básico puede ejecutar. En el estado EST4 y EST11 la dirección del estado
siguiente está determinada por el registro de transformación, seleccionado cuando el
secuenciador ejecuta la instrucción ST. En el estado EST7 y EST9 la dirección del estado
siguiente la proporciona el registro de interrupción.

Página 4 de 17
Laboratorio
Conceptos de Organización
Básicos y Manejo deyequipo
Arquitectura
Laboratorio de computadoras
Dispositvos electronicos
0000
000

0001

1 0
0111
0010

0011 1

0100 0
1000

0101 1001 1011

1 0 1
1010 1100 1101
0 1110
0110

S0,S1,S2,S3,S4,S5
Entradas:X,Y INT
X—00
Y—01
INT-10
AUX-11
Cont—00
SC—01
ST-10
SCI-11

Página 5 de 17
Laboratorio
Conceptos de Organización
Básicos y Manejo deyequipo
Arquitectura
Laboratorio de computadoras
Dispositvos electronicos

edo pres Prueba VF INST LIGA Salida V Salida F


E3 E2 E1 E0 P2 P1 VF I1 I2 L3 L2 L1 L0 S0 S1 S2 S3 S4 S5 S0 S1 S2 S3 S4 S5
0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0
0 0 0 1 0 0 0 0 1 0 1 1 1 1 1 1 1 0 0 1 1 1 1 0 0
0 0 1 0 1 1 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 0 0 0 0
0 0 1 1 1 1 0 0 0 0 1 0 0 0 1 0 1 0 0 0 1 0 1 0 0
0 1 0 0 0 0 0 1 0 1 1 1 1 0 0 0 0 1 0 0 0 0 0 1 0
0 1 0 1 0 1 0 0 1 1 0 1 0 0 1 0 0 1 1 0 1 0 0 1 0
0 1 1 0 1 1 0 0 1 0 0 1 0 1 0 0 1 0 0 1 0 0 1 0 0
0 1 1 1 1 0 1 1 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0
1 0 0 0 1 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1
1 0 0 1 1 0 1 1 1 0 0 0 0 0 1 0 1 0 0 1 1 0 1 0 1
1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 1 1 1 0 1 0 1 1 1 1 0 0 1 0 0 0 0 0 1 0 0 0
1 1 0 0 1 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0
1 1 0 1 1 1 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 1
1 1 1 0 1 1 0 1 0 0 0 0 0 1 1 0 0 1 0 1 1 0 0 1 0

Con esos resultados se elaboró el siguiente esquema en Quartus

Figura 1: Circuito Completo Secuencial Básico

Página 6 de 17
Laboratorio
Conceptos de Organización
Básicos y Manejo deyequipo
Arquitectura
Laboratorio de computadoras
Dispositvos electronicos

Figura 2: Circuito del bloque Secuencial de la carta AMS

2. Una vez que haya obtenido el contenido de memoria, implemente el direccionamiento por
implícito utilizando el software de desarrollo Quartus y escriba el contenido de memoria
obtenido.

Códigos VHDL utilizados:

1. Memoria

Library ieee;
Use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;

Entity memory is

port(dir: in std_logic_vector(3 downto 0);


data : out std_logic_vector(20 downto 0));--Liga& salidas

end;

architecture behavioral of memory is


type mem is array(0 to 14) of std_logic_vector(20 downto 0);
signal internal_mem : mem;
begin
--2 BITS DE PRUEBA, 1 BIT VF, 2 BITS INTRUCCION, 4 DE LIGA Y 6 DE SALIDAS VF Y 6 SALIDAS VF FALSAS

Página 7 de 17
Laboratorio
Conceptos de Organización
Básicos y Manejo deyequipo
Arquitectura
Laboratorio de computadoras
Dispositvos electronicos
internal_mem(0) <= "11"&"0"&"00"&"0001"&"100000"&"100000";
internal_mem(1) <= "000010111111100111100";
internal_mem(2) <= "110000011110000110000";
internal_mem(3) <= "110000100010100010100";
internal_mem(4) <= "000101111000010000010";
internal_mem(5) <= "010011010010011010010";
internal_mem(6) <= "110010010100100100100";
internal_mem(7) <= "101110000000010100010";
internal_mem(8) <= "110010001000001000001";
internal_mem(9) <= "101110000010100110101";
internal_mem(10) <= "110010000000000000000";
internal_mem(11) <= "110101111001000001000";
internal_mem(12) <= "110100000001000001000";
internal_mem(13) <= "110100000000101000101";
internal_mem(14) <= "110100000110010110010";

process(dir)
begin
data <= internal_mem(conv_integer(unsigned(dir)));
end process;
end behavioral;

2. Divisor de datos
Library ieee;
Use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
Entity divisor_datos is

port(entrada: in std_logic_vector(20 downto 0);


Liga: out std_logic_vector(3 downto 0);
Instruccion: out std_logic_vector(1 downto 0);
Prueba: out std_logic_vector(1 downto 0);
vf: out std_logic;
SalidaV: out std_logic_vector(5 downto 0);
SalidaF: out std_logic_vector(5 downto 0));

end;

architecture behavioral of divisor_datos is

begin
process(entrada)
begin

Liga <= entrada(15 downto 12);


Instruccion <= entrada(17 downto 16);
Prueba <= entrada(20 downto 19);
vf <= entrada(18);
SalidaF <= entrada(11 downto 6);
SalidaV <= entrada (5 downto 0);
end process;
end behavioral;

Página 8 de 17
Laboratorio
Conceptos de Organización
Básicos y Manejo deyequipo
Arquitectura
Laboratorio de computadoras
Dispositvos electronicos
3. Registro: Encargado de desahbilitar o habilitar las salidas para la Liga, además sirve
para el salto de transformación e interrupción
Library ieee;
Use ieee.std_logic_1164.all;

Entity registro is

port(RELOJ: in std_logic;
RESET: in std_logic;
ENA: in std_logic;
ENTRADA: in std_logic_vector(3 downto 0);
SALIDA: out std_logic_vector(3 downto 0));

end;

architecture behavioral of registro is


signal valor_interno: std_logic_vector(3 downto 0) := "0000";
constant alta_impedancia : std_logic_vector(3 downto 0) := "ZZZZ";
constant zero : std_logic_vector(3 downto 0) := "0000";
begin
process(RELOJ,RESET, ENTRADA)
begin
if RESET='0' then
valor_interno <=zero;
elsif rising_edge (RELOJ) then
valor_interno <= ENTRADA;
end if;
end process;
process (valor_interno,ENA)
begin
if ENA='1' then
SALIDA<= alta_impedancia;
else
SALIDA <= valor_interno;
end if;
end process;

end behavioral;

4. Registro2: Encargado de desahbilitar o habilitar las salidas para la instrucción

Library ieee;
Use ieee.std_logic_1164.all;

Entity registro_2 is

port(RELOJ: in std_logic;
RESET: in std_logic;
ENA: in std_logic;

Página 9 de 17
Laboratorio
Conceptos de Organización
Básicos y Manejo deyequipo
Arquitectura
Laboratorio de computadoras
Dispositvos electronicos
ENTRADA: in std_logic_vector(1 downto 0);
SALIDA: out std_logic_vector(1 downto 0));

end;

architecture behavioral of registro_2 is


signal valor_interno: std_logic_vector(1 downto 0) := "00";
constant alta_impedancia : std_logic_vector (1 downto 0):= "ZZ";
constant zero : std_logic_vector(1 downto 0) := "00";
begin
process(RELOJ,RESET, ENTRADA)
begin
if RESET='0' then
valor_interno <=zero;
elsif rising_edge (RELOJ) then
valor_interno <= ENTRADA;
end if;
end process;
process (valor_interno,ENA)
begin
if ENA='1' then
SALIDA<= alta_impedancia;
else
SALIDA <= valor_interno;
end if;
end process;

end behavioral;

5. Registro_1: Encargado de desahbilitar o habilitar las salidas para VF

Library ieee;
Use ieee.std_logic_1164.all;

Entity registro_1 is

port(RELOJ: in std_logic;
RESET: in std_logic;
ENA: in std_logic;
ENTRADA: in std_logic;
SALIDA: out std_logic);

end;

architecture behavioral of registro_1 is


signal valor_interno: std_logic := '0';
constant alta_impedancia : std_logic:='Z';
constant zero : std_logic := '0';
begin
process(RELOJ,RESET, ENTRADA)
begin
if RESET='0' then
valor_interno <=zero;
elsif rising_edge (RELOJ) then
Página 10 de 17
Laboratorio
Conceptos de Organización
Básicos y Manejo deyequipo
Arquitectura
Laboratorio de computadoras
Dispositvos electronicos
valor_interno <= ENTRADA;
end if;
end process;
process (valor_interno,ENA)
begin
if ENA='1' then
SALIDA<= alta_impedancia;
else
SALIDA <= valor_interno;
end if;
end process;

end behavioral;

6. Registro2: Encargado de desahbilitar o habilitar las salidas para las Salidas Falsas y
Salidas Verdaderas

Library ieee;
Use ieee.std_logic_1164.all;

Entity registro_6 is

port(RELOJ: in std_logic;
RESET: in std_logic;
ENA: in std_logic;
ENTRADA: in std_logic_vector(5 downto 0);
SALIDA: out std_logic_vector(5 downto 0));

end;

architecture behavioral of registro_6 is


signal valor_interno: std_logic_vector(5 downto 0) := "000000";
constant alta_impedancia : std_logic_vector (5 downto 0):= "ZZZZZZ";
constant zero : std_logic_vector(5 downto 0) := "000000";
begin
process(RELOJ,RESET, ENTRADA)
begin
if RESET='0' then
valor_interno <=zero;
elsif rising_edge (RELOJ) then
valor_interno <= ENTRADA;
end if;
end process;
process (valor_interno,ENA)
begin
if ENA='1' then
SALIDA<= alta_impedancia;
else
SALIDA <= valor_interno;
end if;
end process;

Página 11 de 17
Laboratorio
Conceptos de Organización
Básicos y Manejo deyequipo
Arquitectura
Laboratorio de computadoras
Dispositvos electronicos
end behavioral;
7. Mux2x4: Encargado de seleccionar entradas x,y, INT y aux
Library ieee;
Use ieee.std_logic_1164.all;

Entity mux2X4X is

port(Prueba: in std_logic_vector(1 downto 0);--entradas


E0: in std_logic;--X
E1: in std_logic;--Y
E2: in std_logic;--INT
E3: in std_logic;--Z
O : out std_logic);

end;

architecture behavioral of mux2X4X is


begin
process(Prueba,E0,E1,E2,E3)
begin
if(Prueba="00") then
O<=E0;
elsif Prueba = "01" then
O<=E1;
elsif Prueba = "10" then
O<=E2;
elsif Prueba = "11" then
O<=E3;
end if;

end process;
end behavioral;
8. Mux1X2X1: Encargado de seleccionar si es salida verdadera o falsa

Library ieee;
Use ieee.std_logic_1164.all;
Entity mux1X2X1 is

port(prueba: in std_logic;--prueba
E0: in std_logic_vector(5 downto 0);--liga false
E1: in std_logic_vector(5 downto 0);--liga true
O : out std_logic_vector(5 downto 0));
end;

architecture behavioral of mux1X2X1 is


begin
process(prueba,E0,E1)
begin
if prueba='0' then --INCREMENTA
O<=E0;
elsif prueba = '1' then --ESTADO SIGUIENTE
O<=E1;
end if;
end process;
end behavioral;

Página 12 de 17
Laboratorio
Conceptos de Organización
Básicos y Manejo deyequipo
Arquitectura
Laboratorio de computadoras
Dispositvos electronicos

Programas para el elemento secuencial


1. Register3
Library ieee;
Use ieee.std_logic_1164.all;

Entity register3x is

port(CLK: in std_logic;
RESET: in std_logic;
ENA: IN std_logic;
DATA_IN: in std_logic_vector(3 downto 0);--LIGA
DATA_OUT : out std_logic_vector(3 downto 0));--ESTADO PRESENTE
end register3x;

architecture behavioral of register3x is

signal internal_value: std_logic_vector(3 downto 0) := B"0000";


Begin
process(CLK,DATA_IN)
begin
if RESET='0' then
internal_value <= B"0000";
elsif rising_edge(CLK) then
internal_value <=DATA_IN;
end if;
end process;
process (internal_value)
begin
DATA_OUT <= internal_value;
end process;
end behavioral;

2. Mux_dirección
Library ieee;
Use ieee.std_logic_1164.all;

Entity mux_direccion is

port(prueba: in std_logic;--prueba
E0: in std_logic_vector(3 downto 0);--liga false
E1: in std_logic_vector(3 downto 0);--liga true
sali : out std_logic_vector(3 downto 0));
end;

Página 13 de 17
Laboratorio
Conceptos de Organización
Básicos y Manejo deyequipo
Arquitectura
Laboratorio de computadoras
Dispositvos electronicos
architecture behavioral of mux_direccion is
begin
process(prueba,E0,E1)
begin
if prueba='0' then --INCREMENTA
sali<=E0;
elsif prueba = '1' then --ESTADO SIGUIENTE
sali<=E1;
end if;
end process;
end behavioral;

3. Incrementador
Library ieee;
Use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;

Entity incrementador is

port(entrada: in std_logic_vector(3 downto 0);


salida: out std_logic_vector(3 downto 0));--ESTADO PRESENTE
end incrementador;

architecture behavioral of incrementador is

Begin
process(entrada)
begin
salida <= entrada+1;
end process;
end behavioral;

4. Lógica interna
Library ieee;
Use ieee.std_logic_1164.all;

Entity logica_interna is

port(instruccion: in std_logic_vector(1 downto 0);--prueba


nCC: in std_logic;--liga false
selector: out std_logic;--liga true
nPL : out std_logic;
nMAP : out std_logic;
nVect : out std_logic);

Página 14 de 17
Laboratorio
Conceptos de Organización
Básicos y Manejo deyequipo
Arquitectura
Laboratorio de computadoras
Dispositvos electronicos
end;

architecture behavioral of logica_interna is


begin
process(instruccion, nCC)
begin
if instruccion = "00" then --INCREMENTA
selector <= '0';
nPL <= '1';
nMAP <= '1';
nVECT <= '1';
elsif instruccion = "01" then --INCREMENTA
if nCC='0' then selector <='1';
else selector <='0'; end if;
nPL <= '0';
nMAP <= '1';
nVECT <= '1';
elsif instruccion = "10" then --INCREMENTA
selector <= '1';
nPL <= '1';
nMAP <= '0';
nVECT <= '1';
elsif instruccion = "11" then --INCREMENTA
if nCC='0' then selector <='1';
else selector <='0'; end if;
nPL <= '1';
nMAP <= '1';
nVECT <= '0';

end if;
end process;
end behavioral;

Display 7 segmentos

Tabla convertidor 7 segmentos para el número 1 o 0 de cada estado, y asignación de pines


Página 15 de 17
Laboratorio
Conceptos de Organización
Básicos y Manejo deyequipo
Arquitectura
Laboratorio de computadoras
Dispositvos electronicos

B7 B0 B1 B2 B3 B4 B5 B6 hexadecimal Número
1 1 0 0 1 1 1 1 81 0
1 0 0 1 0 0 1 0 CF 1

Simulaciones

Para comprobar el funcionamiento se utilizó University Program VWFconsirando todos los casos de
las carta ASM.

Casos probados
Del estado 0000 con cualquier valor pasa al estado 0001
Del estado 0001 con X=1 pasa estado 0010
Del estado 0010 con cualquier valor pasa al estado 0011
Del estado 0011 con cualquier valor pasa al estado 0100
Página 16 de 17
Laboratorio
Conceptos de Organización
Básicos y Manejo deyequipo
Arquitectura
Laboratorio de computadoras
Dispositvos electronicos
Del estado 0100 con el salto de tranformacion en 0101 pasa al estado 0101
Del estado 0101 con Y=1 pasa 0110
Del estado 0110 con cualquier valor 0010
Del estado 0010 con cualquier valor pasa al estado 0011
Del estado 0011 con cualquier valor pasa al estado 0100
Del estado 0100 con el salto de tranformacion en 1001 pasa al estado 1001
Del estado 1001 con Interrupcion=1 pasa al estado 1001 hasta que desactive la interrupción

Conclusiones

Se cumplió el objetivo de entender le funcionamiento del secuenciador básico, sabemos que es una
parte fundamental del procesador, aunque la estructura es más compleja que las demás que hemos
visto, se puede ver su implementación y ventajas que tiene usarle en este caso comparado con
prácticas anteriores vamos a tener interrupciones y saltos de transformación que nos permiten elegir
más de una opción o lanzar una interrupción en algún momento de la carta ASM. Fue de fundamental
importancia entender la estructura para programar y hacer funcionar nuestro diagrama de bloques, en
fin pienso que es una práctica muy completa y de mucha ayuda, pero considero que le faltan mejores
al secuenciador pero al ser básico es un muy buen acercamiento para entender los procesadores.

Página 17 de 17

También podría gustarte