This set of VHDL Multiple Choice Questions & Answers (MCQs) on “Process Statement – 1”.
1. Process is a _______ statement.
a) Concurrent
b) Sequential
c) Delay
d) Both concurrent and sequential
Answer: a
Clarification: Process statement itself is a concurrent statement. Since, the architecture of an entity can contain only concurrent statements, so, process is a concurrent statement. Basically, Process itself is a concurrent statement which includes sequential statement. The statements enclosed in a process statement are executed sequentially.
2. If there is more than one process in a VHDL code, How they are executed?
a) One after the other
b) Concurrently
c) According to sensitivity list
d) Sequentially
Answer: b
Clarification: All the processes in a design execute concurrently or in a parallel manner. However, at a given time, only one statement is executed within the process. More than one processes can execute in a parallel manner, but the same is not true for statements within a process.
3. A process has a declaration part.
a) True
b) False
Answer: a
Clarification: A process can have a declaration part followed by statement part. A process can have its local variables, constants, types or subtypes declared in it which will be visible to the process only. The local process variables can’t be used outside the process.
4. Local variables in a process can be declared __________
a) Anywhere within the process
b) After a sequential statement
c) Before the BEGIN keyword
d) After the BEGIN keyword
Answer: c
Clarification: BGIN keyword specifies the start of sequential statements. The process declaration part is an optional part and the variables must be defined before the BEGIN keyword. No declaration is allowed after the keyword BEGIN.
5. Which of the following is correct syntax for process declaration?
a)
{Label :} PROCESS {process_declaration_part}; sensitivity_list; BEGIN sequential_statements; END PROCESS {Label};
b)
PROCESS {sensitivity_list} {process_declaration_part} BEGIN sequential_statements; END PROCESS {Label};
c)
{Label :} PROCESS {process_declaration_part} BEGIN sensitivity_list; sequential_statements; END PROCESS;
d)
{Label :} PROCESS {sensitivity_list} {process_declaration_part} BEGIN sequential_statements; END PROCESS {Label};
View Answer
Answer: d
Clarification: A process is declared by using an optional label followed by keyword process and the list of signals to which process is sensitive. After which, there is a declaration part for the process and a statements section. Both parts are separated by keyword BEGIN. THEN, the process is terminated by using keyword END followed by Process.
6. Sensitivity list of a process contains __________
a) Constants
b) Signals
c) Variables
d) Literals
Answer: b
Clarification: A process has its sensitivity list containing the names of signals to which the process is sensitive. It can contain any number of signals which will trigger the process of change of value of any of these signals. It may not contain constants or variables, only signals are valid.
7. Which of the following statement is used when there are no signals in the sensitive list?
a) WHEN
b) IF ELSE
c) WAIT
d) CASE
Answer: c
Clarification: A process can be sensitive to one or more signals. These signals are either specified in the sensitivity list of the process. If there is no sensitivity list, then the signals used in WAIT statements are the signals to which process is sensitive.
8. What is the effect of the sensitivity list on the process?
a) Process executes when any of the signal in sensitivity list changes
b) Process executes sequentially when sensitivity list is specified
c) If there is no sensitivity list, then the process will not execute
d) Helps in simulation
Answer: a
Clarification: The sensitivity list contains those signals which affect the execution of the process. Whenever one or more statements inside the sensitivity list changes, the execution starts. So, the process is executed again and again whenever any value change. It starts from BEGIN keyword and all statements are executed serially and then it waits for change in any value.
9. It is mandatory to use a label for any process.
a) True
b) False
Answer: b
Clarification: The use of label is optional. The purpose of using label is just to improve the readability of code. If it is used, then at the end of the process the same label should be written. For example, if label L1 is used to start the process then at the end, it must be- END PROCESS L1.
10. If no signal in the sensitivity list is changed, then how many times the process will be executed?
a) 3
b) 2
c) 1
d) 0
Answer: c
Clarification: The process is executed at least once, no matter if the signal changes or not. At the time when the simulation is initiated, the process is triggered. After this one time execution of process, it waits for change in state of signals in sensitivity list.
11. Which of the following statements can be seen as sequential equivalent to the selected concurrent assignment?
a) IF ELSE
b) WAIT
c) WHEN
d) CASE
Answer: d
Clarification: The selected assignment is a concurrent statement and therefore, can’t be used inside a process. CASE statement is a sequential statement which can be seen as an equivalent to the selected assignment which chooses one of the n different signals or variables.
12. A __________ can’t be declared inside a process.
a) Signal
b) Variable
c) Constants
d) Subprograms
Answer: a
Clarification: The process has a declaration part in which everything can be declared except a signal. The variables, constants, types, subprograms can be declared in the process and the scope for variables declared in the process is local to the process itself.