Sei sulla pagina 1di 13

Laboratorio 3 - Simulación base PDUA

Andrés Felipe Ahumada Arévalo - Andrés Enrique Bautista Pabón - Andrea Juliana Ruiz Gómez
Pontificia Universidad Javeriana
Organización de Computadores
3 de abril de 2019

Resumen

En nuestra vida cotidiana estamos rodeados de millones de procesadores que se encuentran en los
diversos dispositivos electrónicos que todos usamos en la actualidad como los computadores portátiles,
teléfonos celulares, entre otros; es nuestro papel como estudiantes de ingeniería (en base a todos los
conocimientos adquiridos en la carrera) saber de su existencia y poder identificar la gran importancia de
ellos en nuestra vida diaria, ya que sin los procesadores no habría un componente capaz de realizar las
operaciones y procesos lógicos necesarios para que todos los dispositivos electrónicos funcionen.

Por ello el objetivo de esta practica de laboratorio N3 es empezar a familiarizarnos con los proce-
sadores en general, y para ello nos dedicaremos a estudiar, interpretar y entender el procesador PDUA
desarrollado por la Universidad de los Andes; ya que es un procesador relativamente sencillo y óptimo
para que los estudiantes puedan entrar al mundo de los procesadores.

Al entender el procesador mencionado anteriormente, ya podemos identificar la gran importancia


que tienen los procesadores que usamos en nuestros dispositivos electrónicos, como lo son los procesa-
dores ryzen desarrollados por AMD y los Intel Core desarrollados por Intel que tenemos en nuestros
computadores personales, también podemos encontrar en nuestra vida cotidiana los procesadores Snap-
dragon desarrollados por Qualcomm, los Exynos desarrollados por samsung y los Kirin desarrollados por
HiSilicon, los cuales los podemos encontrar en nuestros teléfonos celulares.

1. Introducción
Se espera que para la finalización de la asignatura “Organización de computadores” los estudiantes deben
comprender completamente la arquitectura y organización del procesador PDUA, por ende, antes de empezar
las etapas de desarrollo, diseño e implementación del algoritmo de “Bubble Sort”, se tiene que conocer las
instrucciones precargadas y el programa base que tiene el procesador con el que se va a trabajar.

Ahora bien, en este informe se evidencia todo el procedimiento llevado a cabo por el grupo de trabajo
(Incluyendo códigos, simulaciones y pruebas realzadas) con el que se llegó al objetivo deseado, el cual era
la familiarización de los estudiantes con el procesador, es decir el dominio total de las funcionalidades del
procesador y de todos sus componentes.

1
2. Análisis y prueba de escritorio del pseudo-código
Inicialmente tenemos el programa base del procesador PDUA (extracto del código ROM.vhdl), el cual
seguidamente se procederá a simular para entender paso a paso las funciones del procesador y poder poste-
riormente interpretar de la mejor manera posible cualquier tipo de instrucción del mismo.
case dir is
when "00000" => data <= "01010000"; -- JMP MAIN
when "00001" => data <= "00000011"; -- MAIN
when "00010" => data <= "00001000"; -- RAI Vector de Interrupcion
when "00011" => data <= "00011000"; -- MOV ACC,CTE
when "00100" => data <= "00000001"; -- CTE (0x01)
when "00101" => data <= "00010000"; -- MOV A,ACC
when "00110" => data <= "00011000"; -- MOV ACC,CTE
when "00111" => data <= "11111100"; -- CTE (0xFC)
when "01000" => data <= "01001000"; -- OTRA: ADD ACC,A
when "01001" => data <= "01101000"; -- JC FIN
when "01010" => data <= "00001101"; -- FIN
when "01011" => data <= "01010000"; -- JMP OTRA
when "01100" => data <= "00001000"; -- OTRA
when "01101" => data <= "01010000"; -- FIN: JMP FIN
when "01110" => data <= "00001101"; -- FIN
when "01111" => data <= "00000000"; --
Para el análisis del código base se realizaron 6 simulaciones distintas, cada una con su respectiva prueba
de escritorio, las cuales se mostrarán a continuación. En cada una de dichas simulaciones se incluyeron
otros caos de parada, es decir, cambiaron los valores de las constantes ubicadas en las direcciones ”00100” y
”00111”,

2.1. Análisis del pseudo-código

OPCODE NEMONICO BYTES FLAGS


00000000 JMP MAIN 2 no
00001xxx MAIN - no
00010xxx RAI Vector de Interrupción 1 no
00011xxx MOV ACC,CTE 2 no
00100xxx CTE (0x01) - no
00101xxx MOV A, ACC 1 no
00110xxx MOVE ACC, CTE 2 no
00111xxx CTE (0xFC) - no
01000xxx OTRA: ADD ACC,A 1 si
01001xxx JC FIN 2 no
01010xxx FIN - no
01011xxx JMP OTRA 2 no
01100xxx OTRA: ADD ACC,A - no
01101xxx FIN: JMP FIN 2 no
01110xxx FIN - no
01111xxx DISPONIBLE - no
10000xxx RET 1 no

Cuadro 1: Conjunto de instrucciones del procesador PDUA.

2
Para explicar el funcionamiento de del programa base se puede observar en el pseudo-código tanto el
opcode, como el nemónico perteneciente a cada operación, registro, posición de memoria u valor almacenado
en la pila. El numero de bytes que ocupa cada instrucción como también una ultima linea de "banderas"que
nos dice cuales instrucciones generan banderas y cuales no.

Con el fin de entender el funcionamiento del programa base se realizo el siguiente diagrama de flujo:

Figura 1: Diagrama de flujo del programa base

Podemos observar que el programa base verifica que no se hubiera realizado una interrupción, luego de esto,
trae los valores de las constantes desde memoria y guarda el primer valor en .A el segundo lo mantiene en
2

el acumulador, para después sumar estos dos valores de manera sucesiva hasta que el resultado de la suma
termine siendo un numero mayor a 8 bits caso en el cual se genera carry, lo que hace que el programa se
reinicie.

3
2.2. Prueba de escritorio del pseudo-código
En el Cuadro 2 podemos observar la prueba de escritorio de la primera simulación realizada, en la cual
en la dirección ”00100” el valor de cte = ”0x01” y en la dirección ”00111” el valor de cte = ”0xF C”. La
simulación se encuentra en la Figura 2 y en la Figura 3.

DIR A ACC PC Carry


00000 0 0 00000000 0
00001 0 0 00000001 0
00010 0 0 00000010 0
00011 0 1 00000011 0
00100 0 1 00000100 0
00101 1 1 00000101 0
00110 1 252 00000110 0
00111 1 252 00000111 0
01000 1 253 00001000 0
01001 1 253 00001001 0
01010 1 253 00001010 0
01011 1 253 00001011 0
01000 1 254 00001100 0
01001 1 254 00001101 0
01010 1 254 00001110 0
01011 1 254 00001111 0
01000 1 255 00010000 0
01001 1 255 00010001 0
01010 1 255 00010010 0
01011 1 255 00010011 0
01000 1 0 00010100 1
01001 1 0 00010101 1
01101 0 0 00010110 0
01110 0 0 00010111 0
01111 0 0 00011000 0
10000 0 0 00011001 0
10001 0 0 00011010 0
10010 0 0 00011011 0

Cuadro 2: Prueba de escritorio de la simulación 1.

En la primera prueba de escritorio se puede observar que los valores de A, ACC y carry se mantienen
en 0, en la dirección de memoria ”00011”, se puede observar que ACC toma el valor de 0 10 , el cual es el
valor de la constante en la dirección ”00100”, 2 direcciones de memoria adelante, en la dirección ”00101”,
A toma el valor de ACC, en la siguiente dirección (”00110”) ACC toma el valor de la constante ubicada
en la dirección ”00111”. En la dirección ”01000” a ACC se le suma el valor de esa misma señal y el valor
de A, comenzando con un valor de 252 y aumentando 1, este último proceso se repetirá hasta cuando haya
un carry, en este caso, cuando ACC sea mayor a 0xF F . Cuando el carry sea 0 10 , se dirige a la dirección
”01101”, ejecutando un par de instrucciones más, las cuales le dan el final al proceso de ejecución, haciendo
un reset en las señales empleadas previamente.

En el Cuadro 3 podemos observar la prueba de escritorio de la segunda simulación realizada, en la cual


en la dirección ”00100” el valor de cte = ”0x03” y en la dirección ”00111” el valor de cte = ”0xF B”. La
simulación se encuentra en la Figura 4.

4
DIR A ACC PC Carry
00000 0 0 00000000 0
00001 0 0 00000001 0
00010 0 0 00000010 0
00011 0 3 00000011 0
00100 0 3 00000100 0
00101 3 3 00000101 0
00110 3 251 00000110 0
00111 3 251 00000111 0
01000 3 254 00001000 0
01001 3 254 00001001 0
01010 3 254 00001010 0
01011 3 254 00001011 0
01000 3 1 00001100 1
01001 3 1 00001101 1
01101 0 0 00001110 0
01110 0 0 00001111 0
01111 0 0 00010000 0
10000 0 0 00010001 0
10001 0 0 00010010 0
10010 0 0 00010011 0

Cuadro 3: Prueba de escritorio de la simulación 2.

En la segunda prueba de escritorio se puede observar que los valores de A, ACC y carry se mantienen
en 0, en la dirección de memoria ”00011”, se puede observar que ACC toma el valor de 0 10 , el cual es el
valor de la constante en la dirección ”00100”, 2 direcciones de memoria adelante, en la dirección ”00101”,
A toma el valor de ACC, en la siguiente dirección (”00110”) ACC toma el valor de la constante ubicada
en la dirección ”00111”. En la dirección ”01000” a ACC se le suma el valor de esa misma señal y el valor
de A, comenzando con un valor de 251 y aumentando 3, este último proceso se repetirá hasta cuando haya
un carry, en este caso, cuando ACC sea mayor a 0xF F . Cuando el carry sea 0 10 , se dirige a la dirección
”01101”, ejecutando un par de instrucciones más, las cuales le dan el final al proceso de ejecución, haciendo
un reset en las señales empleadas previamente.

En el Cuadro 4 podemos observar la prueba de escritorio de la tercera simulación realizada, en la cual


en la dirección ”00100” el valor de cte = ”0x05” y en la dirección ”00111” el valor de cte = ”0xDB”. La
simulación se encuentra en la Figura 5.

En la tercera prueba de escritorio se puede observar que los valores de A, ACC y carry se mantienen
en 0, en la dirección de memoria ”00011”, se puede observar que ACC toma el valor de 0 10 , el cual es el
valor de la constante en la dirección ”00100”, 2 direcciones de memoria adelante, en la dirección ”00101”,
A toma el valor de ACC, en la siguiente dirección (”00110”) ACC toma el valor de la constante ubicada
en la dirección ”00111”. En la dirección ”01000” a ACC se le suma el valor de esa misma señal y el valor
de A, comenzando con un valor de 219 y aumentando 5, este último proceso se repetirá hasta cuando haya
un carry, en este caso, cuando ACC sea mayor a 0xF F . Cuando el carry sea 0 10 , se dirige a la dirección
”01101”, ejecutando un par de instrucciones más, las cuales le dan el final al proceso de ejecución, haciendo
un reset en las señales empleadas previamente.

5
DIR A ACC PC Carry
00000 0 0 00000000 0
00001 0 0 00000001 0
00010 0 0 00000010 0
00011 0 5 00000011 0
00100 0 5 00000100 0
00101 5 5 00000101 0
00110 5 219 00000110 0
00111 5 219 00000111 0
01000 5 224 00001000 0
01001 5 224 00001001 0
01010 5 224 00001010 0
01011 5 224 00001011 0
01000 5 229 00001100 0
01001 5 229 00001101 0
01010 5 229 00001110 0
01011 5 229 00001111 0
01000 5 234 00010000 0
01001 5 234 00010001 0
01010 5 234 00010010 0
01011 5 234 00010011 0
01000 5 239 00010100 0
01001 5 239 00010101 0
01010 5 239 00010110 0
01011 5 239 00010111 0
01000 5 244 00011000 0
01001 5 244 00011001 0
01010 5 244 00011010 0
01011 5 244 00011011 0
01000 5 249 00011100 0
01001 5 249 00011101 0
01010 5 249 00011110 0
01011 5 249 00011111 0
01000 5 254 00100000 0
01001 5 254 00100001 0
01010 5 254 00100010 0
01011 5 254 00100011 0
01000 5 3 00100100 1
01001 5 3 00100101 1
01101 0 0 00100110 0
01110 0 0 00100111 0
01111 0 0 00101000 0
10000 0 0 00101001 0
10001 0 0 00101010 0
10010 0 0 00101011 0

Cuadro 4: Prueba de escritorio de la simulación 3.

6
En el Cuadro 5 podemos observar la prueba de escritorio de la cuarta simulación realizada, en la cual
en la dirección ”00100” el valor de cte = ”0x0F ” y en la dirección ”00111” el valor de cte = ”0xF 0”. La
simulación se encuentra en la Figura 6.

DIR A ACC PC Carry


00000 0 0 00000000 0
00001 0 0 00000001 0
00010 0 0 00000010 0
00011 0 15 00000011 0
00100 0 15 00000100 0
00101 15 15 00000101 0
00110 15 240 00000110 0
00111 15 240 00000111 0
01000 15 255 00001000 0
01001 15 255 00001001 0
01010 15 255 00001010 0
01011 15 255 00001011 0
01000 15 14 00001100 1
01001 15 14 00001101 1
01101 0 0 00001110 0
01110 0 0 00001111 0
01111 0 0 00010000 0
10000 0 0 00010001 0
10001 0 0 00010010 0
10010 0 0 00010011 0

Cuadro 5: Prueba de escritorio de la simulación 4.

En la cuarta prueba de escritorio se puede observar que los valores de A, ACC y carry se mantienen
en 0, en la dirección de memoria ”00011”, se puede observar que ACC toma el valor de 0 10 , el cual es el
valor de la constante en la dirección ”00100”, 2 direcciones de memoria adelante, en la dirección ”00101”,
A toma el valor de ACC, en la siguiente dirección (”00110”) ACC toma el valor de la constante ubicada
en la dirección ”00111”. En la dirección ”01000” a ACC se le suma el valor de esa misma señal y el valor
de A, comenzando con un valor de 219 y aumentando 15, este último proceso se repetirá hasta cuando haya
un carry, en este caso, cuando ACC sea mayor a 0xF F . Cuando el carry sea 0 10 , se dirige a la dirección
”01101”, ejecutando un par de instrucciones más, las cuales le dan el final al proceso de ejecución, haciendo
un reset en las señales empleadas previamente.

En el Cuadro 6 podemos observar la prueba de escritorio de la quinta simulación realizada, en la cual


en la dirección ”00100” el valor de cte = ”0x03” y en la dirección ”00111” el valor de cte = ”0xF 3”. La
simulación se encuentra en la Figura 7.

En la quinta prueba de escritorio se puede observar que los valores de A, ACC y carry se mantienen
en 0, en la dirección de memoria ”00011”, se puede observar que ACC toma el valor de 0 10 , el cual es el
valor de la constante en la dirección ”00100”, 2 direcciones de memoria adelante, en la dirección ”00101”,
A toma el valor de ACC, en la siguiente dirección (”00110”) ACC toma el valor de la constante ubicada
en la dirección ”00111”. En la dirección ”01000” a ACC se le suma el valor de esa misma señal y el valor
de A, comenzando con un valor de 240 y aumentando 3, este último proceso se repetirá hasta cuando haya
un carry, en este caso, cuando ACC sea mayor a 0xF F . Cuando el carry sea 0 10 , se dirige a la dirección
”01101”, ejecutando un par de instrucciones más, las cuales le dan el final al proceso de ejecución, haciendo
un reset en las señales empleadas previamente.

7
DIR A ACC PC Carry
00000 0 0 00000000 0
00001 0 0 00000001 0
00010 0 0 00000010 0
00011 0 3 00000011 0
00100 0 3 00000100 0
00101 3 3 00000101 0
00110 3 243 00000110 0
00111 3 243 00000111 0
01000 3 246 00001000 0
01001 3 246 00001001 0
01010 3 246 00001010 0
01011 3 246 00001011 0
01000 3 249 00001100 0
01001 3 249 00001101 0
01010 3 249 00001110 0
01011 3 249 00001111 0
01000 3 252 00010000 0
01001 3 252 00010001 0
01010 3 252 00010010 0
01011 3 252 00010011 0
01000 3 255 00010100 0
01001 3 255 00010101 0
01010 3 255 00010110 0
01011 3 255 00010111 0
01000 3 2 00011000 1
01001 3 2 00011001 1
01101 0 0 00011010 0
01110 0 0 00011011 0
01111 0 0 00011100 0
10000 0 0 00011101 0
10001 0 0 00011110 0
10010 0 0 00011111 0

Cuadro 6: Prueba de escritorio de la simulación 5.

En el Cuadro 7 podemos observar la prueba de escritorio de la sexta simulación realizada, en la cual en la


dirección ”00100” el valor de cte = ”0x07” y en la dirección ”00111” el valor de cte = ”0xE3”. La simulación
se encuentra en la Figura 8.

En la sexta prueba de escritorio se puede observar que los valores de A, ACC y carry se mantienen en 0,
en la dirección de memoria ”00011”, se puede observar que ACC toma el valor de 0 10 , el cual es el valor de
la constante en la dirección ”00100”, 2 direcciones de memoria adelante, en la dirección ”00101”, A toma el
valor de ACC, en la siguiente dirección (”00110”) ACC toma el valor de la constante ubicada en la dirección
”00111”. En la dirección ”01000” a ACC se le suma el valor de esa misma señal y el valor de A, comenzando
con un valor de 227 y aumentando 7, este último proceso se repetirá hasta cuando haya un carry, en este
caso, cuando ACC sea mayor a 0xF F . Cuando el carry sea 0 10 , se dirige a la dirección ”01101”, ejecutando
un par de instrucciones más, las cuales le dan el final al proceso de ejecución, haciendo un reset en las señales
empleadas previamente.

8
DIR A ACC PC Carry
00000 0 0 00000000 0
00001 0 0 00000001 0
00010 0 0 00000010 0
00011 0 7 00000011 0
00100 0 7 00000100 0
00101 7 7 00000101 0
00110 7 227 00000110 0
00111 7 227 00000111 0
01000 7 234 00001000 0
01001 7 234 00001001 0
01010 7 234 00001010 0
01011 7 234 00001011 0
01000 7 241 00001100 0
01001 7 241 00001101 0
01010 7 241 00001110 0
01011 7 241 00001111 0
01000 7 248 00010000 0
01001 7 248 00010001 0
01010 7 248 00010010 0
01011 7 248 00010011 0
01000 7 255 00010100 0
01001 7 255 00010101 0
01010 7 255 00010110 0
01011 7 255 00010111 0
01000 7 6 00011000 1
01001 7 6 00011001 1
01101 0 0 00011010 0
01110 0 0 00011011 0
01111 0 0 00011100 0
10000 0 0 00011101 0
10001 0 0 00011110 0
10010 0 0 00011111 0

Cuadro 7: Prueba de escritorio de la simulación 6.

3. Simulaciones y análisis
En la Figura 2 y Figura 3 podemos observar la simulación obtenida en el programa ModelSim en la
primera simulación realizada, en la cual en la dirección ”00100” el valor de cte = ”0x01” y en la dirección
”00111” el valor de cte = ”0xF C”. En la Figura 2 podemos observar los primeros 3020ns de simulación,
tiempo en el cual no se obtiene respuesta alguna y los únicos cambios apreciables son en la señal clk, cuyo
periodo es de 20ns y en la señal rst_n. En los próximos 3020ns ya se puede apreciar la ejecución del programa,
y en base a la prueba de escritorio, la cual se encuentra en el Cuadro 2, se puede afirmar que la ejecución
del programa se realiza correctamente.

9
Figura 2: Simulación 1-1.

Figura 3: Simulación 1-2.

En la Figura 4 podemos observar la simulación obtenida en el programa ModelSim en la segunda simula-


ción realizada, en la cual en la dirección ”00100” el valor de cte = ”0x03” y en la dirección ”00111” el valor
de cte = ”0xF B”. En este informe se decidió no poner la imagen correspondiente a los primeros 3020ns de
simulación, tiempo en el cual no se obtiene respuesta alguna y los únicos cambios apreciables son en la señal
clk, cuyo periodo es de 20ns y en la señal rst_n, puesto que estos resultados son los mismos obtenidos en
la Figura 2. En los próximos 3020ns ya se puede apreciar la ejecución del programa, y en base a la prueba
de escritorio, la cual se encuentra en el Cuadro 3, se puede afirmar que la ejecución del programa se realiza
correctamente.

Figura 4: Simulación 2.

En la Figura 5 podemos observar la simulación obtenida en el programa ModelSim en la tercera simulación


realizada, en la cual en la dirección ”00100” el valor de cte = ”0x05” y en la dirección ”00111” el valor de
cte = ”0xDB”. En este informe se decidió no poner la imagen correspondiente a los primeros 3020ns de
simulación, tiempo en el cual no se obtiene respuesta alguna y los únicos cambios apreciables son en la señal
clk, cuyo periodo es de 20ns y en la señal rst_n, puesto que estos resultados son los mismos obtenidos en
la Figura 2. En los próximos 3020ns ya se puede apreciar la ejecución del programa, y en base a la prueba
de escritorio, la cual se encuentra en el Cuadro 4, se puede afirmar que la ejecución del programa se realiza
correctamente.

10
Figura 5: Simulación 3.

En la Figura 6 podemos observar la simulación obtenida en el programa ModelSim en la cuarta simulación


realizada, en la cual en la dirección ”00100” el valor de cte = ”0x0F ” y en la dirección ”00111” el valor
de cte = ”0xF 0”. En este informe se decidió no poner la imagen correspondiente a los primeros 3020ns de
simulación, tiempo en el cual no se obtiene respuesta alguna y los únicos cambios apreciables son en la señal
clk, cuyo periodo es de 20ns y en la señal rst_n, puesto que estos resultados son los mismos obtenidos en
la Figura 2. En los próximos 3020ns ya se puede apreciar la ejecución del programa, y en base a la prueba
de escritorio, la cual se encuentra en el Cuadro 5, se puede afirmar que la ejecución del programa se realiza
correctamente.

Figura 6: Simulación 4.

En la Figura 7 podemos observar la simulación obtenida en el programa ModelSim en la quinta simulación


realizada, en la cual en la dirección ”00100” el valor de cte = ”0x03” y en la dirección ”00111” el valor de
cte = ”0xF 3”. En este informe se decidió no poner la imagen correspondiente a los primeros 3020ns de
simulación, tiempo en el cual no se obtiene respuesta alguna y los únicos cambios apreciables son en la señal
clk, cuyo periodo es de 20ns y en la señal rst_n, puesto que estos resultados son los mismos obtenidos en
la Figura 2. En los próximos 3020ns ya se puede apreciar la ejecución del programa, y en base a la prueba
de escritorio, la cual se encuentra en el Cuadro 6, se puede afirmar que la ejecución del programa se realiza
correctamente.

Figura 7: Simulación 5.

11
En la Figura 8 podemos observar la simulación obtenida en el programa ModelSim en la sexta simulación
realizada, en la cual en la dirección ”00100” el valor de cte = ”0x07” y en la dirección ”00111” el valor
de cte = ”0xE3”. En este informe se decidió no poner la imagen correspondiente a los primeros 3020ns de
simulación, tiempo en el cual no se obtiene respuesta alguna y los únicos cambios apreciables son en la señal
clk, cuyo periodo es de 20ns y en la señal rst_n, puesto que estos resultados son los mismos obtenidos en
la Figura 2. En los próximos 3020ns ya se puede apreciar la ejecución del programa, y en base a la prueba
de escritorio, la cual se encuentra en el Cuadro 7, se puede afirmar que la ejecución del programa se realiza
correctamente.

Figura 8: Simulación 6.

4. Conclusiones
El PDUA corresponde a un procesador muy bueno para presentarnos a nosotros los estudiantes el
concepto de procesador en general, ya que gracias a lo bien que esta desarrollado y a su sencillez
podemos comprender su arquitectura y organización de una forma muy rápida.
Se observa una gran velocidad del procesador al ejecutar el conjunto de instrucciones, ya que de la
forma en que esta implementado para realizar la operación, solo requiere tener un acceso a memoria.

Con las simulaciones realizadas se puede concluir que el procesador PDUA ejecuta correctamente las
instrucciones almacenadas en la ROM y su funcionalidad no se ve afectada al momento de agregar
casos de parada.
Para poder visualizar la simulación correctamente, se debe poner el doble del tiempo o más establecido
en el TestBench.

12
Anexos
Código Simulaciones (TestBench)

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity TestBench is
-- Port ( );
end TestBench;

architecture Behavioral of TestBench is


--
component sistema
Port ( clk : in std_logic;
rst_n : in std_logic;
int : in std_logic );
end component;

--inputs
signal clk : std_logic := ’0’;
signal rst_n : std_logic := ’0’;
signal int : std_logic := ’0’;
constant clk_period : time := 20 ns;
BEGIN

uut: sistema port map (


clk => clk,
rst_n => rst_n,
int => int);

clk_process :process
begin
clk <= ’0’;
wait for clk_period/2; --for 10 ns signal is ’0’.
clk <= ’1’;
wait for clk_period/2; --for next 10 ns signal is ’1’.
end process;
-- Stimulus process
stim_proc: process
begin
rst_n <=’0’;
wait for 10 ns;
rst_n <=’1’;
wait for 3 us;
rst_n <=’0’;
wait for 10 ns;
end process;
END;

13

Potrebbero piacerti anche