Du könntest ein Package anlegen, das die Recorddefinition enthält, dann
kannst du den others-Trick machen. Obe dein gesamtes Design dann aber
noch lesbar ist, das mußt du selber entscheiden...
1 | library ieee;
|
2 | use ieee.std_logic_1164.all;
|
3 |
|
4 | package diag_comp is
|
5 | type diag_typ is record
|
6 | gap : std_logic;
|
7 | preamble : std_logic;
|
8 | data : std_logic;
|
9 | fcs : std_logic;
|
10 | end record;
|
11 | end package;
|
12 |
|
13 |
|
14 | library IEEE;
|
15 | use IEEE.STD_LOGIC_1164.ALL;
|
16 | use IEEE.NUMERIC_STD.ALL;
|
17 | use work.diag_comp.all;
|
18 |
|
19 | entity RecordInit is
|
20 | Port (clk : in STD_LOGIC;
|
21 | data : out STD_LOGIC);
|
22 | end RecordInit;
|
23 |
|
24 | architecture Behavioral of RecordInit is
|
25 | signal sdiag: diag_typ := (others=>'0'); -- oder
|
26 | signal sdiag: diag_typ := ('0','0','0','0'); -- alternativ
|
27 | begin
|
28 | data <= sdiag.data;
|
29 | end Behavioral;
|
Und spätestens, wenn z.B. sowas drinsteht:
1 | library ieee;
|
2 | use ieee.std_logic_1164.all;
|
3 |
|
4 | package diag_comp is
|
5 | type diag_typ is record
|
6 | gap : std_logic;
|
7 | preamble : std_logic;
|
8 | data : std_logic_vector(3 downto 0);
|
9 | fcs : std_logic;
|
10 | end record;
|
11 | end package;
|
Dann gilt wieder die Handschlagregel:
1 | signal sdiag: diag_typ := (data=>(others=>'0'), others=>'0');
|
2 | -- oder
|
3 | signal sdiag: diag_typ := ('0','0',(others=>'0'),'0');
|