What is the main function of a decoder in digital circuits?
A decoder takes a binary input and activates exactly one output line corresponding to that input, converting coded inputs into a one-hot output.
Click to reveal answer
beginner
What does an encoder do in digital logic?
An encoder takes multiple input lines and converts the active input into a binary code on the output lines, essentially the reverse of a decoder.
Click to reveal answer
intermediate
In VHDL, which statement is commonly used to implement a decoder?
The 'with-select' or 'case' statement is commonly used to implement a decoder by selecting output lines based on input values.
Click to reveal answer
intermediate
How do you represent a 3-to-8 decoder in VHDL?
A 3-to-8 decoder has 3 input bits and 8 output lines. The output line corresponding to the binary value of the input is set to '1', others to '0'. This can be coded using a 'with-select' or 'case' statement.
Click to reveal answer
advanced
What is a priority encoder and how does it differ from a simple encoder?
A priority encoder outputs the binary code of the highest priority active input when multiple inputs are active, unlike a simple encoder which assumes only one input is active.
Click to reveal answer
What output does a 2-to-4 decoder produce when input is "10" (binary)?
AAll outputs are low
BOutput line 1 is high, others low
COutput line 3 is high, others low
DOutput line 2 is high, others low
✗ Incorrect
For input '10' (binary 2), the decoder activates output line 2 only.
Which VHDL construct is best for implementing an encoder?
AFor loop
BProcess with if-elsif statements
CWait statement
DGenerate statement
✗ Incorrect
A process block with if-elsif statements is commonly used to check inputs and assign the encoded output.
What is the output of a priority encoder if inputs 3 and 5 are both active?
ABinary code of input 5
BBinary code of input 3
CAll outputs high
DNo output
✗ Incorrect
The priority encoder outputs the code of the highest priority active input, here input 5.
How many outputs does a 4-to-16 decoder have?
A4
B8
C16
D32
✗ Incorrect
A 4-to-16 decoder has 16 output lines, one for each possible 4-bit input combination.
Which statement best describes an encoder?
AConverts one-hot input to binary output
BConverts binary input to one-hot output
CAmplifies input signals
DStores data temporarily
✗ Incorrect
An encoder converts one-hot input signals into a binary code output.
Explain how a 3-to-8 decoder works and how you would implement it in VHDL.
Think about how each input combination activates a unique output.
You got /4 concepts.
Describe the difference between a simple encoder and a priority encoder.
Consider what happens when more than one input is active.
You got /3 concepts.
Practice
(1/5)
1.
What is the main function of a decoder in VHDL?
easy
A. It converts a binary input code into one active output line.
B. It compresses multiple output lines into a smaller input code.
C. It stores data temporarily in registers.
D. It performs arithmetic operations on input signals.
Solution
Step 1: Understand the role of a decoder
A decoder takes a small binary input and activates exactly one output line corresponding to that input.
Step 2: Compare with other options
Options A, B, and C describe other components or functions, not a decoder's main role.
Final Answer:
It converts a binary input code into one active output line. -> Option A
Quick Check:
Decoder = binary input to one active output [OK]
Hint: Decoder activates one output from input code [OK]
Common Mistakes:
Confusing decoder with encoder
Thinking decoder stores data
Assuming decoder performs arithmetic
2.
Which of the following is the correct VHDL syntax to declare a 2-to-4 decoder output signal named Y as a 4-bit std_logic_vector?
easy
A. signal Y : std_logic_vector(3 downto 1);
B. signal Y : std_logic_vector(0 downto 3);
C. signal Y : std_logic_vector(3 downto 0);
D. signal Y : std_logic_vector(4 to 1);
Solution
Step 1: Understand std_logic_vector indexing
In VHDL, vectors are often declared with 'downto' for descending indices, so 3 downto 0 means 4 bits indexed 3,2,1,0.
Step 2: Check options for correct 4-bit declaration
signal Y : std_logic_vector(3 downto 0); uses '3 downto 0' which is standard and correct. The other options are incorrect: B '0 downto 3' (invalid direction), C '3 downto 1' (3 bits), D '4 to 1' (invalid direction).
Final Answer:
signal Y : std_logic_vector(3 downto 0); -> Option C
Quick Check:
4-bit vector usually declared as 3 downto 0 [OK]
Hint: Use 'downto' for descending bit order in vectors [OK]
Common Mistakes:
Using incorrect index ranges
Confusing 'to' and 'downto' keywords
Declaring wrong vector size
3.
Given the following VHDL code for a 2-to-4 decoder, what is the output Y when input A = "10"?
process(A)
begin
case A is
when "00" => Y <= "0001";
when "01" => Y <= "0010";
when "10" => Y <= "0100";
when "11" => Y <= "1000";
when others => Y <= "0000";
end case;
end process;
medium
A. "0100"
B. "0010"
C. "0001"
D. "1000"
Solution
Step 1: Match input A with case branches
The input A is "10", so the case statement matches the third when clause: when "10" => Y <= "0100".
Step 2: Confirm output value
The output Y is assigned "0100" for input "10".
Final Answer:
"0100" -> Option A
Quick Check:
Input "10" activates third output "0100" [OK]
Hint: Match input bits exactly in case statement [OK]
Common Mistakes:
Mixing up binary input values
Choosing output for wrong input
Ignoring 'when others' clause
4.
Identify the error in this VHDL code snippet for a 4-to-2 encoder:
process(I)
begin
if I = "0001" then Y <= "00";
elsif I = "0010" then Y <= "01";
elsif I = "0100" then Y <= "10";
elsif I = "1000" then Y <= "11";
else Y <= "00";
end if;
end process;
medium
A. Input I should be declared as std_logic_vector(3 downto 0).
B. The code does not handle multiple active inputs correctly.
C. The process sensitivity list should include Y.
D. The output Y should be declared as std_logic_vector(3 downto 0).
Solution
Step 1: Analyze input and output declarations
Input I is likely a 4-bit vector representing active lines; output Y is 2 bits encoding which input is active.
Step 2: Check logic for multiple active inputs
The code assumes only one input bit is active at a time. It does not handle cases where multiple bits in I are '1', which is invalid for an encoder.
Step 3: Review other options
Input I should be declared as std_logic_vector(3 downto 0). is likely true but not an error in this snippet. The process sensitivity list should include Y. is incorrect; Y should not be in sensitivity list. The output Y should be declared as std_logic_vector(3 downto 0). is wrong because Y is 2 bits, not 4.
Final Answer:
The code does not handle multiple active inputs correctly. -> Option B
Quick Check:
Encoder needs single active input line [OK]
Hint: Encoder requires only one active input line [OK]
Common Mistakes:
Ignoring multiple active inputs
Incorrect sensitivity list
Wrong output size declaration
5.
You need to design a 3-to-8 decoder in VHDL that activates one output line based on a 3-bit input A. Which of the following code snippets correctly implements this decoder?
process(A)
begin
Y <= (others => '0');
case A is
when "000" => Y(0) <= '1';
when "001" => Y(1) <= '1';
when "010" => Y(2) <= '1';
when "011" => Y(3) <= '1';
when "100" => Y(4) <= '1';
when "101" => Y(5) <= '1';
when "110" => Y(6) <= '1';
when "111" => Y(7) <= '1';
when others => Y <= (others => '0');
end case;
end process;
hard
A. The case statement syntax is invalid in VHDL.
B. The code incorrectly sets multiple outputs high simultaneously.
C. The code misses resetting outputs before setting one high.
D. This code correctly sets one output bit high and resets others to zero.
Solution
Step 1: Check output initialization
The line 'Y <= (others => '0');' sets all outputs to zero before activating one output line.
Step 2: Verify case statement logic
Each case sets exactly one bit of Y to '1' based on input A, which is correct for a decoder.
Step 3: Confirm syntax correctness
The case statement and assignments follow proper VHDL syntax.
Final Answer:
This code correctly sets one output bit high and resets others to zero. -> Option D
Quick Check:
Initialize outputs then activate one line [OK]
Hint: Reset outputs before setting one active bit [OK]
Common Mistakes:
Not resetting outputs before setting one
Setting multiple outputs high
Incorrect case statement syntax
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.