Bucle para dos valores binarios en VHDL

0

Estoy tratando de escribir un bucle para dos valores binarios que se repiten periódicamente en un período de tiempo específico que se ejecute indefinidamente o hasta que se cumpla una determinada condición.

Esto es lo que he escrito (a continuación), pero el error indica que debería estar usando la declaración de "esperar" con "hasta", pero cuando lo uso dice que la expresión booleana se usa incorrectamente.

Esto me lleva a creer que estoy usando el bucle mal o haciendo otra cosa mal que no puedo entender.

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

entity moove is 
    port (clk : in std_logic;
        rst : in std_logic;
        count : out unsigned (7 downto 0));
end entity;

architecture moving of moove is
    constant period : time := 19.5 ms;
    constant cycles : integer := 120000; 
begin
    forwrd: process (clk)
    begin
        if rising_edge(clk) then 
            if rst = '1' then
                count <= "00000000";
            elsif rst = '0' then
                for i in 1 to cycles loop
                    count <= "01100100";
                    wait for period;
                    count <= "10010110";
                    wait for period;
                end loop;
            end if;
        end if;
    end process;
end architecture;
    
pregunta Serge

1 respuesta

1

Aquí está la versión de trabajo. Estoy usando el reloj de 100kHz.

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


entity moove is 
port (clk : in std_logic;
        rst : in std_logic;
        count : out unsigned (7 downto 0));
end entity;

architecture moving of moove is
    signal Cnt: std_logic_vector(11 downto 0);
begin
forwrd: process (clk)
    begin
    if Rst = '1' then 
        Cnt <= (others => '0');
            elsif (rising_edge(Clk))then
            Cnt <= Cnt +1;  
            if (Cnt = "011111010000") then--20ms(2000 clock cycles)
            count <= "10010110";--1.5ms
            elsif (Cnt = "111110100001") then
            Cnt <= "000000000000";
            count <= "01100100";--1ms

end if;
end if;
end process;
end architecture;
    
respondido por el Serge

Lea otras preguntas en las etiquetas