concurrent_signal_assignment_statement::= |
|||
conditional_signal_assignment ::=
target <= options conditional_waveforms ;
selected_signal_assignment ::=
with
expression
select
target <= options selected_waveforms ;
With a conditional signal assignment there is always an equivalent process statement; in general, this is valid for all concurrent assignments.
The equivalent process statement of a concurrent signal assignment statement including the keyword POSTPONED is a postponed process.
If the conditional signal assignment has the form
target <= options waveform_1
WHEN
condition_1
ELSE
waveform_2
WHEN
condition_2
ELSE
.
.
.
waveform_n-1
WHEN
condition_n-1
ELSE
waveform_n ;
the signal assignment in the corresponding process statement has the form
IF
condition_1
THEN
target <= wave_transform_1 ;
ELSIF
condition_2
THEN
target <= wave_transform_2 ;
.
.
.
ELSIF
condition_n-1
THEN
target <= wave_transform_n-1 ;
ELSE
target <= wave_transform_n ;
END IF
;
If the (conditional) waveform is a simple waveform the signal assignment in the corresponding process
The process statement of the wave_transform of a waveform of the form
waveform_element1, waveform_element1, ..., waveform_elementN
has the form
target <= [delay_mechanism] waveform_element1, waveform_element1, ..., waveform_elementN ;
The process statement of the wave_transform of a waveform of the form
unaffected
has the form
null
;
null is here a null statement, not a null transaction!
The waveforms` characteristics and the conditions contained in the signal assignment have to be formulated appropriately so that the IF-statement in the corresponding process statement is a permitted statement.
With a selecting signal assignment there is always an equivalent process statement. If the selecting signal assignment has the form
WITH
expression
SELECT
target <= options waveform_1
WHEN
choice_list_1 ,
waveform_2
WHEN
choice_list_2 ,
.
.
.
waveform_n-1
WHEN
choice_list_n-1 ,
waveform_n
WHEN
choice_list_n ;
the signal assignment in the corresponding process statement has the form
CASE
expression
IS
WHEN
choice_list_1 => target <= wave_transform_1 ;
WHEN
choice_list_2 => target <= wave_transform_2 ;
.
.
.
WHEN
choice_list_n-1 => target <= wave_transform_n-1 ;
WHEN
choice_list_n => target <= wave_transform_n ;
END CASE
;
For wave_transform look at the previous topic on conditional signal assignment.
The characteristics of the selected expression, of the waveforms and the criteria of selection contained in the signal assignment have to be formulated appropriately so that the CASE statement in the corresponding
process statement is a permitted statement.
If the option GUARDED is contained in the signal assignment it is a so-called controlled assignment. If the target is also controlled the statement part of the corresponding process statement looks as follows:
IF
guard
THEN
signal_transform
ELSE
disconnection_statements
END IF
;
If the target is not controlled the statement part of the corresponding process statement looks as follows:
IF
guard
THEN
signal_transform
END IF
;
It is also possible that neither signal assignment nor target is controlled. If this is the case the statement part of the corresponding process statement looks as follows:
It is not permitted to handle a signal assignment as being not controlled while handling the corresponding