/* Example 8: by karttu, Dec 12 2004. Show the successive Fibonacci numbers when the user presses the rightmost push button. */ module esim8bb(CLK,PB_IN,SEG_OUT,DIGIT_OUT); input CLK; input PB_IN; output [7:0] SEG_OUT; output [3:0] DIGIT_OUT; reg [15:0] f_even = 0; reg [15:0] f_odd = 1; reg odd_one = 0; wire PB_DEB; // State of the debounced push button. reg pb_deb_prev = 0; // is saved here also. debounced_button DBB(CLK,PB_IN,PB_DEB); shw16decbb DECDISPLAY(CLK,PB_DEB,(odd_one ? f_odd : f_even),SEG_OUT,DIGIT_OUT); always @(posedge CLK) begin if(PB_DEB && ~pb_deb_prev) // Only on @(posedge PB_DEB) begin // Do the thing. if(odd_one) f_even <= f_even + f_odd; else f_odd <= f_even + f_odd; odd_one <= ~odd_one; end pb_deb_prev <= PB_DEB; end endmodule