Bird
Raised Fist0
VHDLprogramming~10 mins

Selected assignment (with-select) in VHDL - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to assign output based on input using with-select.

VHDL
with input select
  output <= '1' when '1',
            '0' when [1],
            'Z' when others;
Drag options to blanks, or click blank then click option'
A'1'
B'Z'
C'0'
D'X'
Attempts:
3 left
💡 Hint
Common Mistakes
Using '1' instead of '0' for the when clause.
Forgetting the quotes around the value.
2fill in blank
medium

Complete the code to select the correct output value for input '2'.

VHDL
with input select
  output <= "00" when '0',
            "01" when '1',
            [1] when '2',
            "11" when others;
Drag options to blanks, or click blank then click option'
A"00"
B"11"
C"01"
D"10"
Attempts:
3 left
💡 Hint
Common Mistakes
Using output "11" for input '2' which is reserved for others.
Forgetting to use double quotes for output values.
3fill in blank
hard

Fix the error in the with-select statement to assign output correctly.

VHDL
with input select
  output <= '0' when '0',
            '1' when '1',
            'Z' when others
            [1]
Drag options to blanks, or click blank then click option'
A;
B,
C.
D:
Attempts:
3 left
💡 Hint
Common Mistakes
Using a comma instead of a semicolon at the end.
Omitting the punctuation entirely.
4fill in blank
hard

Fill both blanks to complete the with-select statement for a 2-bit output.

VHDL
with sel select
  out <= [1] when '0',
         [2] when '1',
         "11" when others;
Drag options to blanks, or click blank then click option'
A"00"
B"01"
C"10"
D"11"
Attempts:
3 left
💡 Hint
Common Mistakes
Mixing up output values for '0' and '1'.
Using single quotes instead of double quotes for output.
5fill in blank
hard

Fill all three blanks to complete the with-select statement for a 3-bit output.

VHDL
with address select
  data_out <= [1] when "000",
              [2] when "001",
              [3] when others;
Drag options to blanks, or click blank then click option'
A"101"
B"110"
C"111"
D"100"
Attempts:
3 left
💡 Hint
Common Mistakes
Confusing the order of output values.
Using single quotes instead of double quotes for vectors.

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