OpenCores
URL https://opencores.org/ocsvn/freq_div/freq_div/trunk

Subversion Repositories freq_div

[/] [freq_div/] [trunk/] [rtl/] [even.v] - Rev 4

Compare with Previous | Blame | View Log

 
`include "defines.v"
 
module even(clk, out, N, reset, not_zero, enable);
 
	input clk;				// fast input clock
	output out;				// slower divided clock
	input [`SIZE-1:0] N;	// divide by factor 'N'
	input reset;			// asynchronous reset
	input not_zero;			// if !not_zero divide by 1
	input enable;			// enable the even divider
 
	reg [`SIZE-1:0] counter;
	reg out_counter;
	wire [`SIZE-1:0] div_2;
 
 
	// if N=0 just output the clock, otherwise, divide it.
	assign out = (clk & !not_zero) | (out_counter & not_zero);
	assign div_2 = {1'b0, N[`SIZE-1:1]};
 
	// simple flip-flop even divider
	always @(posedge reset or posedge clk)
	begin
		if(reset)						// asynch. reset
		begin
			counter <= 1;
			out_counter <= 1;
		end
		else if(enable)					// only use switching power if enabled
		begin
			if(counter == 1)			// divide after counter has reached bottom
			begin						// of interval 'N' which will be value '1'
				counter <= div_2;
				out_counter <= ~out_counter;
			end
			else
			begin						// decrement the counter and wait
				counter <= counter-1;	// to start next trasition.
			end
		end
	end
 
endmodule //even
 

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.