TODOPIC
Otros Microcontroladores / Dispositivos programables => Lógica Programable => Mensaje iniciado por: pocher en 22 de Enero de 2009, 04:25:44
-
Estoy poniendo cuernos a los PICs y aprendiendo VHDL, pero que no se entere nadie. :mrgreen:
Tengo una matriz definida asi:
type byte is array (0 to 2) of std_logic_vector(7 downto 0);
signal codigos: byte;
Hay alguna forma más corta de asignar valores a los elementos de la matriz que no sea a lo bruto, tal que así:
codigo(0)<=x"81";
codigo(1)<=x"42";
codigo(2)<=x"24";
Un saludete
-
Según este tutorial...
http://www.seas.upenn.edu/~ese201/vhdl/vhdl_primer.html
... puedes usar algo así:
type VAR is array (0 to 7) of integer;
constant SETTING: VAR := (2,4,6,8,10,12,14,16);
-
Ole, ole... voy a probarlo y te cuento.
-
joer mig ¡eres una máquineta! funciona que te ... :-/ :-/
No te vayas muy lejos, que este pueblo del VHDL no tiene mucha gente.
Gracias.
-
jejeje
pero no seas malo, dinos cómo lo escribiste :D
-
Este el programita probado y funcionando en PROTEUS:
---------------------------------------P15: JUEGOS LUCES -----------------------------------------
library ieee;
use ieee.std_logic_1164.all;
entity leds is port(
CK: in std_logic;
reset: in std_logic;
leds: out std_logic_vector (7 downto 0));
attribute LOC: string;
--attribute LOC of CK: signal is "P1"; --obligatorio CK en P1 (lo toma por omision)
attribute LOC of reset: signal is "P2";
attribute LOC of leds: signal is "P23:P22:P21:P20:P19:P18:P17:P16";
end leds;
architecture archi_leds of leds is
type byte is array (0 to 2) of std_logic_vector(7 downto 0);
--signal codigos: byte;
constant codigos: byte:=(x"81",x"42",x"24");
begin
process(reset,CK)
variable i: integer range 0 to 2;
begin
--codigos(0)<=x"81";
--codigos(1)<=x"42";
--codigos(2)<=x"24";
--codigos(3)<=x"18"; --ya no le cabe a la GAL22V10
if (reset='0') then --Reset asíncrono a nivel activo bajo
leds <= x"00";
i:=0;
elsif (CK'event and CK='1') then
leds <= codigos(i);
i:=i+1;
if (i>2) then
i:=0;
end if;
end if;
end process;
end archi_leds;
Si ves alguna cosa que se pueda mejorar, avisa.
Un saludo