Diferență între revizuiri ale paginii „The Debounce circuit”

De la WikiLabs
Jump to navigationJump to search
(Pagină nouă: In sequential circuits, any input variable that is not dependent of the system clock, is an asynchronuos input. The majority of these async inputs are coming from the mechanical de...)
 
 
Linia 1: Linia 1:
In sequential circuits, any input variable that is not dependent of the system clock, is an asynchronuos input. The majority of these async inputs are coming from the mechanical devices like the 4 push-buttons on the devboard. Besides being async, these signals are not perfectly rectangular, because the mechanical elements inside the buttons need a small time to get stable. For this short time, the generated signal contains multiple spikes, what may prevent correct functioning of other conntected circuits (it is behaving as a high-frequency signal). We will solve this problem, by ignoring the problematic period of time (a few milliseconds). The Debounce circuit below, receives on the input, a signal similar to '''in''' from the below figured, and generated a perfect rectangular output signal ('''out''' in the below picture).
+
In sequential circuits, any input variable that is not dependent of the system clock, is an asynchronuos input. The majority of these async inputs are coming from the mechanical devices like the 4 push-buttons on the devboard. Besides being async, these signals are not perfectly rectangular, because the mechanical elements inside the buttons need a small time to get stable. For this short time, the generated signal contains multiple spikes, what may prevent correct functioning of other conntected circuits (it is behaving as a high-frequency signal). We will solve this problem, by ignoring the problematic period of time (a few milliseconds). The Debounce circuit below, receives on the input, a signal similar to '''in''' from the below figure, and generates a perfect rectangular output signal ('''out''' in the below picture).
  
 
[[Fișier:debounce1.png|Async input and debounced output]]
 
[[Fișier:debounce1.png|Async input and debounced output]]

Versiunea curentă din 10 mai 2018 06:47

In sequential circuits, any input variable that is not dependent of the system clock, is an asynchronuos input. The majority of these async inputs are coming from the mechanical devices like the 4 push-buttons on the devboard. Besides being async, these signals are not perfectly rectangular, because the mechanical elements inside the buttons need a small time to get stable. For this short time, the generated signal contains multiple spikes, what may prevent correct functioning of other conntected circuits (it is behaving as a high-frequency signal). We will solve this problem, by ignoring the problematic period of time (a few milliseconds). The Debounce circuit below, receives on the input, a signal similar to in from the below figure, and generates a perfect rectangular output signal (out in the below picture).

Async input and debounced output

Implementation of a debounce circuit

module Debounce(
	output out,
	input clock,
	input in
);

parameter limit = 20'd650000;

reg [19:0] counter;
reg hit;

assign out = (counter == limit);

always@(posedge clock) begin
        if(!in) begin
		counter <= 0;
		hit <= 0;        
        end else if(counter == limit) begin
		hit <= 1;
		counter <= counter + 1;
	end else if(in & !hit) begin
		counter <= counter + 1;
	end
end

endmodule