Quiero crear un controlador PWM de Led y creo que es fácil, pero una línea en mi código genera más advertencias que todos mis pequeños proyectos anteriores. Aquí está el código:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;
entity pwmLed is
generic( N : integer := 4
);
port( pwm : in std_logic_vector(N-1 downto 0);
clk : in std_logic;
leds : out std_logic_vector(7 downto 0)
);
end pwmLed;
architecture Behavioral of pwmLed is
constant CLOCK_CYCLES : integer := 1000;
signal counter : integer ;
begin
process(clk)
begin
if counter > CLOCK_CYCLES then
counter <= 0;
elsif (clk'event and clk = '1') then
counter <= counter + 1;
end if;
end process;
leds <= "11111111" when counter < (to_integer(unsigned(pwm))/(2**N) * CLOCK_CYCLES) else "00000000";
end Behavioral;
La línea problemática es:
leds <= "11111111" when counter < (to_integer(unsigned(pwm))/(2**N) * CLOCK_CYCLES) else "00000000";
Todas las advertencias:
ADVERTENCIA: HDLCompiler: 92 - "E: \ Xilinx \ Projects \ PWM_LED \ pwmLed.vhd" Línea 48: el contador debe estar en la lista de sensibilidad del proceso
ADVERTENCIA: Xst: 647 - La entrada nunca se usa. Este puerto se conservará y se dejará desconectado si pertenece a un bloque de nivel superior o pertenece a un subbloque y se conserva la jerarquía de este subbloque.
ADVERTENCIA: Xst: 3002: este diseño contiene uno o más registros / cierres que están directamente Incompatible con la arquitectura Spartan6. Las dos causas principales de esto es ya sea un registro o pestillo descrito con un conjunto asíncrono y reinicio asíncrono, o un registro o cierre descrito con un asíncrono establecer o restablecer que sin embargo tiene un valor de inicialización del contrario polaridad (es decir, reinicio asíncrono con un valor de inicialización de 1).
ADVERTENCIA: Xst: 1426 - El valor init del FF / Latch counter_31_LD dificulta la limpieza constante en el bloque pwmLed. Debería obtener mejores resultados estableciendo este inicio en 0.
ADVERTENCIA: Par: 288 - La señal pwm < 0 > _IBUF no tiene carga. PAR no intentará enrutar esta señal.
ADVERTENCIA: Par: 288 - La señal pwm < 1 > _IBUF no tiene carga. PAR no intentará enrutar esta señal.
ADVERTENCIA: Par: 288 - La señal pwm < 2 > _IBUF no tiene carga. PAR no intentará enrutar esta señal.
ADVERTENCIA: Par: 288 - La señal pwm < 3 > _IBUF no tiene carga. PAR no intentará enrutar esta señal.
ADVERTENCIA: Par: 283 - Hay 4 señales sin carga en este diseño. Este diseño hará que Bitgen emita advertencias de DRC.
ADVERTENCIA: PhysDesignRules: 372 - Reloj cerrado. Red de reloj counter [31] _GND_4_o_LessThan_1_o se obtiene mediante un pin combinatorio. Esto es No es una buena práctica de diseño. Utilice el pin CE para controlar la carga de datos en el flip-flop.
Los entiendo pero no tengo idea de por qué ocurren. Utilizo pwm explícitamente, por eso la advertencia de que esta entrada nunca se usa.