Consider the following VHDL process. What will be the value of signal_out after the process executes once?
signal signal_out : std_logic := '0'; begin process begin signal_out <= '1'; wait for 10 ns; end process;
Remember that signal assignments in VHDL take effect after the process suspends.
Signal assignments in VHDL do not update the signal immediately. The new value is scheduled and takes effect after the process suspends or after delta cycles. Here, signal_out will change to '1' upon process suspension (in the next delta cycle).
Given this VHDL process, what will be the final value of sig after the process runs?
signal sig : std_logic := '0'; begin process begin sig <= '1'; sig <= '0'; wait for 5 ns; end process;
Later signal assignments override earlier ones within the same process execution.
Within a single process execution, the last signal assignment determines the final value. Here, sig is assigned '1' then '0', so it will be '0' after the process suspends (after 5 ns).
What error will this VHDL code produce?
signal a : std_logic := '0'; begin process begin a = '1'; wait for 10 ns; end process;
Check the correct operator for signal assignment in VHDL.
In VHDL, signals are assigned using the '<=' operator, not '=' which is used for variables or comparisons.
Which statement best describes when a signal assignment takes effect in VHDL?
Think about how VHDL schedules signal updates.
Signal assignments in VHDL are scheduled and take effect after the process suspends and all delta cycles are processed, not immediately.
Given two concurrent processes assigning to the same signal sig, what is the final value of sig after 20 ns?
signal sig : std_logic := '0'; process_1: process begin wait for 10 ns; sig <= '1'; wait; end process; process_2: process begin wait for 15 ns; sig <= '0'; wait; end process;
Consider the order of signal assignments, their timing, and std_logic resolution with multiple drivers.
At 10 ns, process_1 assigns '1' (second driver undriven, equivalent to 'Z'; resolved to '1'). At 15 ns, process_2 assigns '0' (drivers now '1' and '0'; std_logic resolves to 'X'). After 20 ns, remains 'X'.