Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
PRACTICA 3
“PILAS”
Por software
Por software y hardware
La ventaja de esta implementación es que podemos tener una pila de gran tamaño debido
a que generalmente los recursos de la memoria principal son grandes.
Un diseño en hardware permite obtener un llamado o subrutinas con una mayor velocidad y
desempeño que por la implementación por software. En esta implementación cada una de
las posiciones de la pila es un contador de programa del modo que queremos una pila de n
niveles necesitamos n contadores. Esto puede ser muy costoso en términos de recursos. Sin
embargo, la ejecución se realiza en tan solo un ciclo de reloj.
(dibujo)
DAT-IN: Bus de 8 bits, aquí se pone la dirección a donde tiene que soltar el procesador
cuando se llama a una función o condiciones (brne, brlo, etc)
DAT-OUT: Bus de 8 bits, es por donde sale la dirección del contador al programar apuntado
por registro de pila hacia la memoria del programa, para poder leer la instrucción a ejecutar.
DWN: Señal que permite cambiar de contador de programa a un nivel inferior, se ejecuta de
forma síncrona.
WPC: Esta señal indica cuando queremos cargar una dirección a través del bus de datos DAT
IN en el registro contador actual. Esta señal se ejecuta de manera síncrona.
Si mandamos a llamar a una subrutina la unidad de control del procesador debe de poner
las siguientes señales
WPC=1 Con ello se incrementa el sp en 1, para que se selecciona el pc1, además se carga
la dirección colocada en DATIN
Cuando se termina una subrutina la unidad de control debe colocar las siguientes señales
Dwr=1
PROCEDIMIENTO
Bit 7 6 5 4 3 2 1 0
El puntero de Pila apunta al área de pila de la SRAM de datos donde se localizan la pila de
interrupción y de subrutina. Este espacio de la pila en la SRAM de datos debe ser definido por
el programa antes de que se ejecute cualquier llamada a subrutina o se habiliten
interrupciones. El puntero de pila debe estar a set para apuntar por encima del valor
asignado. El puntero de pila es decrementado en 1 cuando los datos se introducen en la pila
con la instrucción PUSH y es decrementado en 2 cuando una dirección se introduce en la
pila con llamadas a subrutinas e interrupciones. El puntero de pila es incrementado en 1
cuando el dato se saca de la pila con la instrucción POP y es incrementado en 2 cuando una
dirección se saca de la pila con retorno de subrutina RET o retorno de interrupción RETI.
CONCLUSIONES
Tanto a nivel software como hardware el termino de pila y su funcionamiento juega un papel
muy importante en la vida diaria (tecnológicamente hablando), al crear en leguaje VHDL el
funcionamiento de una pila a nivel hardware, ha quedado claro cómo es que funciona al
hacer llamados a subrutinas. En muy interesante saber que es costoso, pero la ejecución es
muy rápida ya que se hace en un solo ciclo de reloj.
Podemos decir que esta práctica fue de mucho provecho ya que se pudo ver el
comportamiento de la rutina de tiempo, la cual era la que al ser llamada podía hacer mover
nuestro código a la velocidad propuesta, también podemos recalcar que se intentó utiliza
un subprograma, pero este al ser visto en hardware no hacia uno de los casos del programa,
ya que el código para ese subprograma era demasiado extenso para poderse ejecutar y se
vio la gran diferencia al utilizar la rutina.