You are tasked to design a reset synchronizer. The reset is provided in the core clock domain which is a 100MHz clock domain. You need to create a reset for IP in another part of the design that is working at 1MHz.
A timing diagram is provided to give you an idea. It is scaled back to a ratio of 6 to fit it in the diagram.Monday, May 6, 2019
Sunday, March 3, 2019
Monday, February 4, 2019
Interview Question 32: Inverse the linked list
Consider the following pre-existing linked list(s) in a 32K deep memory.
Design a module that takes in a head pointer (starting address) of a linked list and inverses it. Once done, it asserts a done signal with the new head pointer, which was earlier the tail pointer.
Tuesday, January 29, 2019
Interview Question 31: Create a Verilog module to drive a PWM signal to the motor.
Create a module to drive a motor with a PWM output. You are provided an N-bit bus to indicate duty cycle. This fairly open-ended question. You can add more ports to time the circuit etc.
Follow-up questions: How will you treat the feedback signal from the motor?
Hint: You are expected to ask about frequency ratios and perform synchronization etc.
Thursday, December 27, 2018
Interview Question 30: Find the smallest two numbers from the input stream
You need to design a module that samples an 8-bit number when valid_in is asserted. You need to find out the two smallest numbers and present them at the output.
Followup questions during answering:
- Is "0" a default smallest number?
- No. This will end up adding output valid for the output ports.
Saturday, October 27, 2018
Interview Question 29: Find the function of the module
module Guess (
input [3:0] data,
output [2:0] guess,
);
logic a,b,c,d;
assign {a,b,c,d} = data[3:0];
assign guess[0] = ^data;
assign guess[1] = ((a ^ b) & (c | d)) |
((a ^ c) & (b | d)) |
((a ^ d) & (b | c)) |
((b ^ c) & (a | d)) |
((b ^ d) & (a | c)) |
((c ^ d) & (a | b)) ;
assign guess[2] = &data;
endmodule







