====== Concurrent Statements ====== ===== Simultaneous IF and CASE Statement ===== if {condition} use {simultaneous statement}; [elsif {condition} use {simultaneous statement};] . . . [else {simultaneous statement};] end use; * appropriation like in VHDL * useful for piecewise defined signals if vin < v- use vout == max; elsif vin < v0 use vout == faktor_A * vin; elsif vin < v+ use vout == 0.0; else vout == faktor_B * vin; end use; {{:vhdl-ams:new_data_types:ams_vinvout.svg?nolink&300|Example voltage curve}} case {expression} use when {choices} use {simultaneous statement}; [when {choices} use {simultaneous statement};] . . . end case; === Notes === If and case are used for the same appropriation like in VHDL. But at simultaneous statements the syntax differences a little. ===== Concurrent Break Statement ===== break [break_list] [on {sensitivity_clause}] [when {condition}]; sensitivity_clause => digital signals, the analog part reacts on if signal = '0' use v == 0.0; else v == vmax; end use; break on signal; * a concurrent break statement pauses a process * handling like the sequential break * new: sensitivity_clause -> digital event releases a break -> start analog calculations all simultaneous statements are concurrent; exception: simultaneous procedural statement === Notes === The concurrent break breaks a process. When a digital signal occurs a reaction at the analog part, the process is stopped, the analog changes get handled and then the process goes on. The syntax is: break [break_list] [sensitivity_clause] [ when {condition}]; sensitivity_clause := on {digital signals, that occur a reaction at the analog part} For the break_list and the condition see at the sequential break.