A selected assignment in VHDL is a way to assign values to a signal based on the value of another signal, using the with-select statement. It is like a switch-case for signals.
Click to reveal answer
beginner
Write the syntax structure of a selected assignment using with-select.
The syntax is:
with <expression> select <target_signal> <assignment_operator> <value_1> when <choice_1>, <value_2> when <choice_2>, ... <default_value> when others;
Click to reveal answer
beginner
What happens if none of the choices in a selected assignment match the expression value?
The value assigned is the one specified by the when others clause, which acts as a default case to cover all unmatched values.
Click to reveal answer
intermediate
Can a selected assignment be used for signals of any type?
No, the expression used in with-select must be of a discrete type like enumeration, integer, or std_logic, and the choices must cover all possible values or use when others.
Click to reveal answer
beginner
Example: What is the output of this code?
with sel select out_sig <= '1' when '1', '0' when others;
If sel = '0'?
The output out_sig will be '0' because sel is '0' and the when others clause covers all values except '1'.
Click to reveal answer
What keyword is used in VHDL for selected assignment?
Aif-else
Bcase-when
Cwith-select
Dloop
✗ Incorrect
The with-select statement is used for selected assignments in VHDL.
In a selected assignment, what does when others mean?
AIt is the default case for unmatched values
BIt repeats the last value
CIt causes an error
DIt assigns a null value
✗ Incorrect
when others covers all values not explicitly listed, acting as a default.
Which of these is NOT valid in a selected assignment expression?
AInteger
BReal number
CEnumeration
Dstd_logic_vector
✗ Incorrect
Real numbers are not discrete types and cannot be used in selected assignments.
What happens if you omit when others and not all values are covered?
ASignal keeps previous value
BDefault value assigned
CSimulation runs but output is undefined
DCompilation error
✗ Incorrect
VHDL requires all possible values to be covered; otherwise, it causes a compilation error.
Which signal type is commonly used with selected assignment?
AAll of the above
BBoolean
Cstd_logic
DInteger
✗ Incorrect
Selected assignment works with any discrete type like integer, boolean, or std_logic.
Explain how a selected assignment with with-select works in VHDL.
Think of it like choosing an output based on a signal's value.
You got /4 concepts.
Describe the importance of the when others clause in selected assignments.
What happens if the expression value is not listed explicitly?
You got /3 concepts.
Practice
(1/5)
1. What is the main purpose of a with-select statement in VHDL?
easy
A. To create a loop that repeats a set of statements
B. To declare a new signal in the architecture
C. To assign a value to a signal based on the value of another signal
D. To define a new data type
Solution
Step 1: Understand the role of with-select
The with-select statement chooses a value for a signal depending on another signal's value.
Step 2: Compare with other options
Loops, declarations, and data types are unrelated to with-select.
Final Answer:
To assign a value to a signal based on the value of another signal -> Option C
Quick Check:
Selected assignment = conditional signal assignment [OK]
Hint: Remember: with-select picks signal values based on another signal [OK]
Common Mistakes:
Confusing with loops or process statements
Thinking it declares signals
Mixing with data type definitions
2. Which of the following is the correct syntax for a with-select assignment in VHDL?
easy
A. with sel select out = "00" when "00", "01" when "01", others => "11";
B. with sel select out <= "00" when "00", "01" when "01", others => "11";
C. with sel select out <= "00" when => "00", "01" when => "01", others => "11";
D. with sel select out <= "00" when "00" "01" when "01", others => "11";
Solution
Step 1: Check the syntax format
The correct syntax uses commas between choices and when others => for default.
Step 2: Identify the correct arrow symbol
The assignment uses <= and the choices use => after when.
Final Answer:
with sel select out <= "00" when "00", "01" when "01", others => "11"; -> Option B
Quick Check:
Correct syntax uses commas and 'others =>' [OK]
Hint: Look for commas between choices and 'others =>' for default [OK]
Common Mistakes:
Using wrong arrow symbols
Missing commas between choices
Omitting 'others =>' clause
3. Given the following VHDL code:
with sel select
out <= "00" when "00",
"01" when "01",
"10" when "10",
others => "11";
sel = "10";
What will be the value of out?
medium
A. "10"
B. "01"
C. "00"
D. "11"
Solution
Step 1: Match sel value with choices
The value of sel is "10", which matches the third choice.
Step 2: Determine assigned value
When sel is "10", out is assigned "10".
Final Answer:
"10" -> Option A
Quick Check:
sel = "10" means out = "10" [OK]
Hint: Match sel value exactly to get out value [OK]
Common Mistakes:
Choosing default 'others' instead of exact match
Confusing when clauses
Ignoring quotes around values
4. Identify the error in this with-select statement:
with sel select
out <= "00" when "00",
"01" when "01",
"10" when "10";
medium
A. Missing semicolon at the end
B. Incorrect use of commas between choices
C. Wrong assignment operator used
D. Missing when others => clause
Solution
Step 1: Check completeness of choices
The with-select must cover all possible values, including unexpected ones.
Step 2: Identify missing default case
There is no when others => clause to cover unmatched values.
Final Answer:
Missing when others => clause -> Option D
Quick Check:
Always include 'when others =>' in with-select [OK]
Hint: Always add 'when others =>' to cover all cases [OK]
Common Mistakes:
Forgetting the default 'others' clause
Thinking semicolon is missing
Misusing commas or arrows
5. You want to assign a 2-bit output signal out based on a 2-bit input sel using with-select. The mapping is: - "00" -> "11" - "01" -> "10" - "10" -> "01" For any other value, out should be "00".
Which of the following with-select statements correctly implements this?
hard
A. with sel select
out <= "11" when "00",
"10" when "01",
"01" when "10",
others => "00";
B. with sel select
out <= "00" when "00",
"01" when "01",
"10" when "10",
others => "11";
C. with sel select
out <= "11" when "00",
"10" when "01",
"01" when "10";
D. with sel select
out <= "11" when "00",
"10" when "01",
"01" when "10",
others => "11";
Solution
Step 1: Match each sel value to correct out
"00" maps to "11", "01" to "10", "10" to "01" as given.
Step 2: Check the default others value
For any other sel, out should be "00".
Step 3: Verify options
with sel select
out <= "11" when "00",
"10" when "01",
"01" when "10",
others => "00"; matches all mappings and default correctly.
Final Answer:
with sel select
out <= "11" when "00",
"10" when "01",
"01" when "10",
others => "00"; -> Option A
Quick Check:
Correct mapping + others = "00" [OK]
Hint: Check each mapping and default carefully in with-select [OK]
Common Mistakes:
Missing 'others' clause
Swapping output values
Assigning wrong default value
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.