desktop

Problema con loop en vhdl

buenas tardes, sucede que he introducido dentro de una sentencia process un loop.
La teoria dice que este loop deberia activarse siempre y cuando la lista de sensibilidad del process se haga valida.
y solamente cuando aquello pase, el loop deberia trabajar.

alguien me puede decir donde esta mi error? por favor!!!

Código:
library IEEE;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;

entity contador is port(
	clk, rst, rec, sav: in bit;
	cout: out std_logic_vector(7 downto 0);  --vector del contador
	dout: out std_logic_vector(7 downto 0)  --vector de datos de salida
	);
end contador;

architecture arch of contador is
	signal cnt: std_logic_vector(7 downto 0):= (others =>'0'); --pone la cuenta en cero
	signal f :integer range 0 to 7:= 0;
	signal i :integer range 0 to 7:= 0;
	signal j :integer range 0 to 7:= 0;
	TYPE matriz IS array(integer range 0 to 7) of std_logic_vector(7 downto 0);
	signal tabla: matriz;
	
begin
		grabar: process(clk, sav)
		begin
			if clk'event and clk='0' and sav='1' then
				tabla(7)<="00000001";
				tabla(6)<="00000011";
				tabla(5)<="00000111";
				tabla(4)<="11111111";
				tabla(3)<="00011111";
				tabla(2)<="00111111";
				tabla(1)<="01111111";
				tabla(0)<="00001111";
			end if;
		end process;

                --aqui esta mi problema!!
                --este loop deberia activarse siempre y cuando clk hagan alguna transicion y rst=1
                --y el resultado es que se activa DESDE EL PRINCIPIO DE LA SIMULACION
		cuenta: process(rst, clk)
		begin
			if clk'event and clk='0' and rst='1' then
				FOR f IN 0 TO 7 LOOP
					dout<=tabla(f) after 100 ns;
					--wait rst for 100ns;
				end loop;
			end if;
		end process;
end arch;
 
Mas alla del codigo, podrias explicar lo que queres hacer? Porque un loop asi como lo escribiste... no va a hacer algo util. En todo caso podrias probar al reves, poniendo el loop afuera de la sentencia de clk'event. Igual... tampoco me gusta como queda. Por eso te pido que digas que es lo que quieres hacer.
 
Atrás
Arriba