blob: 53c41ac0068c33b3d2c631d6b1105b7568c181bc [file] [log] [blame]
`default_nettype none
`timescale 1ns/1ns
module fibonacci #(parameter WIDTH=32)
(
input wire clk,
input wire reset,
input wire on,
output wire [WIDTH-1:0] value
);
reg [WIDTH-1:0] current;
reg [WIDTH-1:0] previous;
wire msb;
always @(posedge clk) begin
if (reset) begin
current <= 1;
previous <= 0;
end else begin
if (msb) begin
current <= 1;
previous <= 0;
end else begin
if (on)
current <= current + previous;
previous <= current;
end
end
end
assign value = reset ? {WIDTH{1'b0}}: previous;
assign msb = current[WIDTH-1+0];
endmodule