Design Questions
Question Bank of Digital Design and RTL Interview Questions
- Design a sequence detector to detect the following sequence -
0, 1, 1, 1, 0, 0 - Design a module to generate a pulse once every 32 clock cycles.
Extra credit for a design optimized for Xilinx FPGA architecture. (Link to Answer) - Design a divide-by-2 module to divide the input clock. (Link to Answer)
- Design a divide-by-3 module to divide the input clock. (Link to Answer)
- Design a divide-by-3 module to divide the input clock. The generated output signal must have a 50% duty cycle. (Link to Answer)
- Design a Binary to Gray Code converter. (Link to Answer)
- Design a module to detect Odd Parity.
The module receives a single bit serial input. The output of the module shall be asserted when the number of1
s received is an odd number. (Link to Answer) - Design a skid buffer to handle Ready-Valid handshaking.
Extra credit for Xilinx FPGA Architecture design alternatives. - Design a 4-bit Full Adder, based on a 1-bit Full Adder module provided to you. The design must be completely pipelined at the boundaries of the 1-bit Full Adder module.
- Design a 4-bit x 4-bit multiplier using a memory.
- Design an 8-bit Parallel-to-Serial Converter.
The module receives 8-bits of data per clock cycle, with 16 dead cycles between consecutive data words. The module has a single-bit serial output. - Design a module that has the capability to receive a single bit serial input (
dat
), qualified with avld
signal. The module should detect the stream marker sequence - 1, 1, 1, 0, 0, 0 - and output the 4 bits that preceded the stream marker. For example, if the sequence is -
0, 0, 1, 0, 1, 1, 1, 0, 0, 0, a, b, c, d . . ., the output of the module should be the 4-bits - a, b, c, d. - Design a data distributor module that can receive a single 8-bit data word per clock cycle, qualified with a
vld
signal. The distributor module should have 4 outputs, each 8-bits wide. The module distributes the first data word it receives to Output Index 0, the next one to Output Index 1 and so on, in a circular fashion. - Design a 4-bit Gray Code counter.
- Design a counter module that gets initialized to 1 (decimal) on reset. The counter should count up and skip every multiple of 3. Every output value should remain on the output bus for a single clock cycle.
- Design a module that will generate the following sequence of decimal numbers - 3, 11, 29, 47, 55, 62. The sequence generator should then roll over and keep generating the same sequence.
- Design an UP-DOWN Counter that counts from 4 to 14, based on a select input,
up_down
. (Link to Answer) - AXI-Streaming interfaces have a
TLAST
signal to indicate the end of a packet. Design a module to take an incoming AXI-Streaming interface and add Start-of-Packet (SOP
) and End-of-Packet (EOP
) markers to the interface.