Vous êtes sur la page 1sur 4

Informe Previo del 2 Laboratorio de Sistemas

Digitales II EE-636M
Kenny Cucho Meza, Luis De la Cruz Painado
Facultad de Ingeniera Ele ctrica y Electro nica
Universidad Nacional de Ingeniera
Lima, Peru
E-mails: {kenny.cucho.m, luis11.dlcp}@gmail.com

AbstractEste presente informe previo muestra un avance en la solucin del segundo laboratorio del curso de Sistemas
Digitales II - EE-636, el cual relata la problemtica de una pila FIFO de estructura especial, resuelta en VHDL .

I. PLANTEAMIENTO DEL PROBLEMA


El problema dado pide implementar una pila del tipo FIFO pero algo diferente a una pila FIFO normal, ya que esta debe insertar
los datos a los registros dependiendo que tan llenos se encuentran estos, osea los datos se ingresarn a la posicin inmediata al de
los ltimos elementos que posee el registro . Esta pila consta de 2 partes: datapath donde se encuentra la pila propiamente dicha
con los registros y el controlador donde se encuentran los comandos que controlan al datapath. Como parte de un informe previo
se desarrollar una parte del problema, el cual es el datapath y un avance del controlador, detallndose a continuacin el
funcionamiento y las partes que estos incluyen.
A. Datapath
El datapath posee una pila de 4 registros de 32 bits cada una, y posee 2 funciones principales: push, mediante el cual se inserta
una nueva instruccin a la pila y pop, que sirve para extraer una instruccin de la pila. Aparte de esto posee otras entradas y
salidas detalladas en el siguiente cuadro:

TABLE I. SEALES DEL BLOQUE DATAPATH

B. Controlador
El controlador posee entradas y salidas que permitirn controlar el datapath como son: el ingreso de datos en funcin de que tan
llena este la pila, la salida de instrucciones de la pila, y otros que se muestran en la tabla siguiente:

TABLE II. SEALES DEL BLOQUE CONTROLADOR


II. DESCRIPCION GENERAL DE LA SOLUCION

A. Seccion del Datapath


El datapath, consiste en que la informacin primero que ingresa, ser la primera que sale, con la capacidad de detectar si est vaco
o lleno, con la cantidad de 4 registros, este circuito es sncrono.
Para este desarrollo primero se tom la prioridad de los reset, el cual tenemos dos que son el asncrono y el sncrono, luego de esta
prioridad, se lee identificando las seales de entrada pop, o push los cuales el controlador nos lo enva, al ver las dificultades que
sera definir cada registro individual se opta por definir una matriz auxiliar de 4 valores con extensin cada una de 32bits, siendo el
manejo de esta mucho ms sencillo.
En el momento para definir las posiciones de entrada y salida se opt por utilizar dos seales auxiliares los cuales nombramos wr
para la seal de escritura, y re como seal auxiliar de lectura, los cuales nos indicarn posicin de en donde se deben guardar la
informacin de entrada, y cual es la informacin ms antigua el cual debe salir con una seal de excitacin pop.
Una vez diferenciada la posicin y entrada y salida, leemos si la posicin de wr y re, coinciden luego de un incremento de data o
salida, esto para ver y tener la nocin de si nuestro FIFO se encuentra vaco (empty) o lleno (full), tomando estos dos estados como
salidas individuales que servirn de retroalimentacin para nuestro sistema del controlador, el cual explicaremos ms adelante.

B. Seccion del Controlador

El controlador del FIFO, es puramente secuencial, el cual se basa en leer la informacin del datapath como retroalimentacin y leer
las seales de entrada globales, como tambin tener prioridad en el reset.

Para esta solucin se opta por leer estados y realizar las operaciones lgicas, como no se necesita una seal de reloj, este circuito es
combinacional puro, el cual lo ms conveniente es que trabaje todo en paraleo siendo una tabla de salida para ciertas descripciones
de entrada.

III. RESULTADOS EXPERIMENTALES

A. Seccion del Datapath


Aqui observamos que la funcin de pop y push, funcionan correctamente, se utiliz dos seales auxiliares re, wr quienes nos
indican donde y cual registro leer a continuacin.

Fig. 1. Diagrama de tiempos en VHDL dela seccion Datapath


IV. OBSERVACIONES Y CONCLUSIONES

Para el datapath, en la simulacin se not un error en la aparicin de la primera seal en alto del full_fifo, el cual deber
corregirse en el transcurso.
Se oberv que es para hacer este tipo de datapath, se necesitan signal insternos el cual nos facilitan en tener menos cdigo
en el entorno.

V. ANEXOS
Cdigo en VHDL para la parte del Datapath:

--Codigo de un datapath para el desarrollo del problema, planteado en el laboratorio 2


library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;

entity fifo is
generic (
width : positive := 32;
ancho : integer := 4); -- cantidad de registros manejados en el fifo
port ( -- definimos los puertos
instruction : in std_logic_vector(width-1 downto 0);
out_fifo : out std_logic_vector(width-1 downto 0);
clock : in std_logic;
push_fifo : in std_logic;
pop_fifo : in std_logic;
resetn : in std_logic;
reset_fifo : in std_logic;
empty_fifo : out std_logic;
full_fifo : out std_logic);
end fifo;

architecture datapath of fifo is


type pila is array(ancho-1 downto 0) of std_logic_vector(31 downto 0);
signal regist : pila :=(others => (others => '0'));
signal wr, re : std_logic_vector( 7 downto 0) :="00000000";
begin
process(clock)
begin
if (resetn = '0') then
regist <= (others => (others => '0'));
elsif(clock'event and clock='1') then
if(reset_fifo='1') then
regist <= (others => (others => '0'));

elsif(push_fifo = '1' and pop_fifo = '1') then


--out_fifo <= regist(0);
regist(conv_integer(wr)) <= instruction;
elsif(push_fifo = '1') then
regist(conv_integer(wr)) <= instruction;
empty_fifo <='0';
if wr = "00000011" then
wr <= "00000000";
else
wr <= wr + '1';
end if;
if wr = re then
full_fifo <='1';
else
full_fifo <='0';
end if;

elsif(pop_fifo = '1') then


out_fifo <= regist(conv_integer(re));
full_fifo <='0';
if re = "00000011" then
re <= "00000000";
else
re <= re + '1';
end if;
if re = wr then
empty_fifo <='1';
end if;

end if;
end if;
end process;

--process()
--begin
-- if()
--end process;

end datapath;

Vous aimerez peut-être aussi