44 lines
830 B
Verilog
44 lines
830 B
Verilog
/////////////////////////////
|
|
// Author - Imants Pulkstenis
|
|
// Date - 24.03.2020
|
|
// Project name - Lab work No2 - Counter
|
|
// Module name - clock divider module for counter
|
|
//
|
|
// Detailed module description:
|
|
//
|
|
// This module devide FPGA input clock
|
|
// by DIVIDER. Result is 50% duty cicle
|
|
// pulses.
|
|
//
|
|
//
|
|
// Revision:
|
|
// A - initial design
|
|
// B -
|
|
//
|
|
//
|
|
/////////////////////////////
|
|
|
|
|
|
module clock_divider #(
|
|
parameter DIVIDER =2,
|
|
parameter WIDTH =2
|
|
) (
|
|
input clk,
|
|
output clk_out);
|
|
|
|
reg state=1'b0, next_state=1'b1;
|
|
reg [WIDTH-1:0] counter = DIVIDER-1 ;
|
|
|
|
always@(posedge clk)begin
|
|
state <= next_state;
|
|
if ( counter == 0) begin
|
|
next_state <= ~next_state;
|
|
counter <= DIVIDER-1;
|
|
end
|
|
else if (counter >= 0 )
|
|
counter <= counter - 1;
|
|
end
|
|
|
|
assign clk_out = state;
|
|
|
|
endmodule |