signal_declaration ::= |
|||
identifier_list ::= identifier { , identifier }
subtype_indication ::=
[
resolution_function_
name ] type_mark [ constraint ]
signal_kind ::=
register
|
bus
expression ::=
relation {
and
relation }
| relation {
or
relation }
| relation {
xor
relation }
| relation [
nand
relation ]
| relation [
nor
relation ]
The signals declared with REGISTER or BUS are 'guarded signals'.
'Guarded signals' have to be 'resolved signals'.
Guarded signal assignments have the following meaning for 'guarded signals':
IF
guard_expression
THEN
sig_name <= sig_waveform ;
ELSE
sig_name <=
NULL
;
END IF
;
The assignment of NULL to the signal sig_name means that the driver of this signal assignment
This has the following consequences for the 'resolved signal':
If not all drivers were switched off the resulting signal is only determined by the drivers which were not switched off.
If all drivers were switched off the last available signal value is kept in case of the signal declaration REGISTER .
If all drivers were switched off the default value stated in the `resolution function` is used in case of the signal declaration BUS .
The signal driver is switched off immediately, i.e. without delay, after the g uard_expression has taken on the value false except if an explicit delay time was planned to be given to the signal by the disconnection-statement after it was declared a controlled signal. An extensive example on this can be found in the chapter Disconnection specification.