Hola, pues vereis, tengo que hacer una practica en VHDL cuyo enunciado es el siguiente:
"Utilizando VHDL crear un generador de frecuencia programable. Este sistema ha de contar con una entrada de frecuencia de referencia procedente del oscilador de 25.175MHz disponible en la placa UP2 y cuatro entradas de configuración que pueden provenir de los conmutadores de la placa UP2. El sistema ha de proporcionar como salida una señal de reloj cuya frecuencia ha de corresponder a N*1MHz donde N es el valor binario de la palabra de entrada presente en las cuatro entradas de configuración.Será necesario comprobar el funcionamiento del generador midiendo la frecuencia de salida en el osciloscopio."
Total, que yo felizmente he hecho lo siguiente:
--------------------------------------------------------
library ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_arith.ALL;
ENTITY genfrec is
PORT (
limite: in bit_vector(3 downto 0);
oscilador: in bit ;
salida: out bit
);
END genfrec;
ARCHITECTURE cambio OF genfrec IS
signal limitedec: integer;
BEGIN
with limite select
limitedec <= 10 when "0001",
10 when "0010",
10 when "0011",
10 when "0100",
10 when "0101",
10 when "0110",
10 when "0111",
10 when "1000",
10 when "1001",
10 when "1010",
10 when "1011",
10 when "1100",
10 when "1101",
10 when "1111",
10 when others;
proceso_cambio: PROCESS (limite, oscilador, salida)
variable contador: integer;
contador:=0;
BEGIN
salida <='1';
IF oscilador'event AND oscilador='1' THEN
contador := contador+1;
end if;
IF contador=limitedec THEN
contador := 0;
IF salida='1' THEN
salida <= '0';
else
salida <='1';
end if;
end if;
END PROCESS proceso_cambio;
END cambio;
--------------------------------------------------------
He puesto para todos los valores del switch que limitedec sea 10 para probar que realmente me reduce la frecuencia entre 10. Y una vez comprobara que funciona pues ya lo cambiaria y le iría poniendo valores, pero esq he exo la asignacion de pines correspondiente, me compila, pero no hay forma de que la simulacion me funcione, me da la salida en alta impedancia... que es lo que le falla al código!?
Creo que estoy emperrado en que eso deberia ir y hay algo muy obvio que no veo, a ver si algun entendido en VHDL lo ve pq ya me toy desesperando!
Mil gracias a quien se haya leido todo el tocho!
Edit: El código sale sin los espacios que deberia tener pq no me los borra solo al darle a enviar

en cuanto alguien escriba adjunto un txt con el codigo ordenado ya que ahora no me deja adjuntar archivos