![]() |
|
|
|||||||
![]() |
VHDL - How to define a constant of an array of records? |
|
|
Thread Tools | Search this Thread |
|
|
#1 |
|
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; mamu |
|
|
|
|
#2 |
|
Posts: n/a
|
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 |
|
|
|
#3 |
|
Posts: n/a
|
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; Tricky |
|
|
|
#4 |
|
Posts: n/a
|
Thanks! It is working fine now. I haven't tested the function option
yet, but it shouldn't be a problem. mamu |
|
![]() |
| Thread Tools | Search this Thread |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| VHDL and EDK: Custom IP core containing an array as a port using EDK | allsey_1987 | Hardware | 0 | 10-27-2009 02:26 PM |
| constants as of array of integers, for loops | octavsly | Hardware | 0 | 04-25-2009 11:53 AM |
| Array Programme | rits | Software | 2 | 03-04-2009 05:18 PM |
| DVD Verdict reviews: THE CONSTANT GARDENER, TRANSPORTER 2, and more! | DVD Verdict | DVD Video | 0 | 01-10-2006 09:21 AM |