Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   VHDL (http://www.velocityreviews.com/forums/f18-vhdl.html)
-   -   How to define a constant of an array of records? (http://www.velocityreviews.com/forums/t644261-how-to-define-a-constant-of-an-array-of-records.html)

mamu 11-13-2008 08:09 AM

How to define a constant of an array of records?
 
I want to make a lookup table where each entry in the table is record
type. I can define the types but I can't figure out a way to set the
(init) values in the declaration of a constant of that type I just
defined.

package altera_profile_pkg is

type profile_record_type is record
C_NUMBER_OF_SAMPLES : natural range 1 to 15000;
end record profile_record_type;

type lookup_table_type is array (natural range <>) of
profile_record_type;

constant profiles_table : lookup_table_type(0 to 15) := <what goes
here?>

end package altera_profile_pkg;

Tricky 11-13-2008 09:34 AM

Re: How to define a constant of an array of records?
 
On 13 Nov, 08:09, mamu <magnem...@yahoo.no> wrote:
> I want to make a lookup table where each entry in the table is record
> type. I can define the types but I can't figure out a way to set the
> (init) values in the declaration of a constant of that type I just
> defined.
>
> package altera_profile_pkg is
>
> type profile_record_type is record
> * * C_NUMBER_OF_SAMPLES * *: natural range 1 to 15000;
> end record profile_record_type;
>
> type lookup_table_type is array (natural range <>) of
> profile_record_type;
>
> constant profiles_table : lookup_table_type(0 to 15) := <what goes
> here?>
>
> end package altera_profile_pkg;



if you had more than 1 element in the record,
eg:

type profile_record_type is record
C_NUMBER_OF_SAMPLES : natural range 1 to 15000;
A : integer;
end record profile_record_type;

you can use positional association:

constant profiles_table : lookup_table_type(0 to 15) :=
( (1, 1), --element 0
(2, 2), --element 1
(3, 3), --element 2
etc.....
);

but as you've only got 1 element, you have to use named association
(which is a good idea for readability anyway:

constant profiles_table : lookup_table_type(0 to 15) :=
( (C_NUMBER_OF_SAMPLES => 1), --element 0,
(C_NUMBER_OF_SAMPLES => 2), --element 1,
(C_NUMBER_OF_SAMPLES => 3), --element 2,
etc....
);

Inner barckets are important to specify that it is a contained
element.



Tricky 11-13-2008 09:40 AM

Re: How to define a constant of an array of records?
 
Forgot to add: you can also call a function that returns
"lookup_table_type"

function create_lookup_table return lookup_table_type is
variable return_array : lookup_table_type(0 to 15);
begin
for i in return_array'range loop
return_array(i) := (C_NUMBER_OF_SAMPLES => i);
end loop;

return return_array;
end function;

constant profiles_table : lookup_table_type(0 to 15) :=
create_lookup_table;

mamu 11-13-2008 10:18 AM

Re: How to define a constant of an array of records?
 
Thanks! It is working fine now. I haven't tested the function option
yet, but it shouldn't be a problem.


All times are GMT. The time now is 10:43 PM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.