Buenas no tengo ni la menor idea de desarrollar este proyecto, os lo expongo:

Se trata de diseñar un circuito de comunicación serie (estándar RS232) que permita el
envío de datos desde un terminal a la placa Nexys 2. Los datos enviados serán
representados en los displays 7 segmentos como números hexadecimales. Dado que la
Nexys 2 dispone de 4 displays 7 segmentos, podrán contemplarse 2 números de 8 bits
simultáneamente.
Se diseñará un circuito digital ‘full duplex’ que recibirá datos de 8 bits a través del puerto
serie de la tarjeta, los representará en los displays 7 segmentos y los devolverá
nuevamente al terminal en el mismo orden que se recibieron. Cada vez que se recibe un
nuevo dato, se provoca un desplazamiento de los datos que hay representados en los
displays. Una vez llenados los displays, si llega un nuevo dato a la tarjeta, el dato más
antiguo se transmite vía serie al terminal y se incorpora a los displays el nuevo dato
recibido.

1. La transmisión serie es de 8 bits, tiene 1 bit de comienzo y un bit de parada. La
transmisión se realiza sin bit de paridad.
2. El ‘top’ del diseño está especificado en VHDL y tiene los siguientes puertos:
port( rx : in std_logic; -- entrada de recepción
tx : out std_logic; -- salida de transmisión
clk : in std_logic; -- reloj del sistema
reset : in std_logic; -- reset
speed : in std_logic; -- selección velocidad
speedled : out std_logic; -- indicación led veloc.
display7s: out std_logic_vector(7 downto 0); -- bus de displays
displayselect: out std_logic_vector(3 downto 0)); -- selección displays

La entrada ‘speed’, que se implementará en el conmutador ‘SW0’ de la tarjeta, controla la
velocidad de transmisión. El led ‘LD0’ indicará la tasa de transmisión seleccionada. Cuando
‘speed’ esté a nivel alto, la velocidad de trasmisión será de 115200 baudios y el led se
encenderá. En el caso de que ‘speed’ esté a nivel bajo, la velocidad de trasmisión será de
57600 baudios y el led permanecerá apagado.

3. El bloque ‘Multiplexor de Displays’ está definido en un fichero independiente en VHDL y
debe estar declarado e instanciado en el ‘top’ del diseño. Sus puertos serán:
port ( dato0 : in std_logic_vector(3 downto 0);
dato1 : in std_logic_vector(3 downto 0);
dato2 : in std_logic_vector(3 downto 0);
dato3 : in std_logic_vector(3 downto 0);
display7s : out std_logic_vector(7 downto 0);
reset : in std_logic;
clk : in std_logic;
displayselect : out std_logic_vector(3 downto 0));
El display más a la derecha de la Nexys 2 corresponderá al ‘dato0’ y el más a la izquierda al
‘dato3’. El primer dato que entra ocupará los displays 1 y 0. Cuando se reciba el siguiente
dato, el primer dato que llegó se representará en los displays 3 y 2.
El refresco de los displays debe ser de al menos 150 Hz.

4. El diseño tendrá 2 máquinas de estado independientes. Ambas máquinas de estado serán
máquinas de Moore. La máquina que controla la recepción no podrá tener más de 7
estados. La máquina que controla la transmisión no podrá tener más de 6 estados. Las
señales de interconexión de las máquinas de estado quedarán definidas por cada equipo
de trabajo.

5. El sistema no puede tener ningún tipo de contención y puede funcionar incluso aunque la
llegada de datos sea continua y no espaciada.

6. El botón de reset, localizado en ‘BTN0’, pone a cero el registro de entrada, el registro de
salida y los registros de almacenamiento de los displays. Todas las máquinas de estado y
contadores también se resetearán y en los displays podrán verse cuatro ceros.

-----------------
Adjunto el pdf del proyecto por si preferis consultarlo desde ahi, muchas gracias y un abrazo