Autor Tema: Asignacion de valores a elementos de una matriz  (Leído 4779 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado pocher

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2569
Asignacion de valores a elementos de una matriz
« 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

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Asignacion de valores a elementos de una matriz
« Respuesta #1 en: 22 de Enero de 2009, 13:24:44 »
Según este tutorial...

http://www.seas.upenn.edu/~ese201/vhdl/vhdl_primer.html

... puedes usar algo así:

Código: [Seleccionar]
type VAR is array (0 to 7) of integer;
constant SETTING: VAR := (2,4,6,8,10,12,14,16);

Desconectado pocher

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2569
Re: Asignacion de valores a elementos de una matriz
« Respuesta #2 en: 22 de Enero de 2009, 15:16:59 »
Ole, ole... voy a probarlo y te cuento.

Desconectado pocher

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2569
Re: Asignacion de valores a elementos de una matriz
« Respuesta #3 en: 22 de Enero de 2009, 15:33:02 »
joer mig ¡eres una máquineta! funciona que te ...  :-/ :-/

No te vayas muy lejos, que este pueblo del VHDL no tiene mucha gente.

Gracias.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Asignacion de valores a elementos de una matriz
« Respuesta #4 en: 22 de Enero de 2009, 17:20:20 »
jejeje

pero no seas malo, dinos cómo lo escribiste  :D

Desconectado pocher

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2569
Re: Asignacion de valores a elementos de una matriz
« Respuesta #5 en: 22 de Enero de 2009, 17:50:46 »
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


 

anything