Bird
Raised Fist0
VHDLprogramming~5 mins

Selected assignment (with-select) in VHDL - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: Selected assignment (with-select)
O(n)
Understanding Time Complexity

We want to understand how the time needed to run a selected assignment using the with-select statement changes as the input size grows.

Specifically, how does the number of choices affect the time it takes to decide and assign a value?

Scenario Under Consideration

Analyze the time complexity of the following VHDL selected assignment.

with sel select
  result <= a when "00",
            b when "01",
            c when "10",
            d when others;
    

This code assigns one of four signals to result based on the value of sel.

Identify Repeating Operations

Look for repeated checks or operations that happen as the input changes.

  • Primary operation: Comparing sel against each choice to select the right value.
  • How many times: Once per choice, so 4 comparisons in this example.
How Execution Grows With Input

As the number of choices increases, the number of comparisons grows too.

Input Size (number of choices)Approx. Operations (comparisons)
44
1010
100100

Pattern observation: The number of comparisons grows directly with the number of choices.

Final Time Complexity

Time Complexity: O(n)

This means the time to select the correct assignment grows linearly with the number of choices.

Common Mistake

[X] Wrong: "The selected assignment picks the right value instantly, no matter how many choices there are."

[OK] Correct: Each choice must be checked until a match is found, so more choices mean more checks and more time.

Interview Connect

Understanding how selection statements scale helps you write efficient hardware descriptions and shows you think about performance in real designs.

Self-Check

"What if the selected assignment used a binary search tree structure internally? How would the time complexity change?"

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

  1. Step 1: Understand the role of with-select

    The with-select statement chooses a value for a signal depending on another signal's value.
  2. Step 2: Compare with other options

    Loops, declarations, and data types are unrelated to with-select.
  3. Final Answer:

    To assign a value to a signal based on the value of another signal -> Option C
  4. 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

  1. Step 1: Check the syntax format

    The correct syntax uses commas between choices and when others => for default.
  2. Step 2: Identify the correct arrow symbol

    The assignment uses <= and the choices use => after when.
  3. Final Answer:

    with sel select out <= "00" when "00", "01" when "01", others => "11"; -> Option B
  4. 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

  1. Step 1: Match sel value with choices

    The value of sel is "10", which matches the third choice.
  2. Step 2: Determine assigned value

    When sel is "10", out is assigned "10".
  3. Final Answer:

    "10" -> Option A
  4. 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

  1. Step 1: Check completeness of choices

    The with-select must cover all possible values, including unexpected ones.
  2. Step 2: Identify missing default case

    There is no when others => clause to cover unmatched values.
  3. Final Answer:

    Missing when others => clause -> Option D
  4. 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

  1. Step 1: Match each sel value to correct out

    "00" maps to "11", "01" to "10", "10" to "01" as given.
  2. Step 2: Check the default others value

    For any other sel, out should be "00".
  3. 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.
  4. Final Answer:

    with sel select out <= "11" when "00", "10" when "01", "01" when "10", others => "00"; -> Option A
  5. 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 unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard