/***
 * display_anode_driver.sv - Turns on a single anode of a single digit at a time,
 *                           rapidly rotating through all of them, generating
 *                           a solid-looking display even though only one digit
 *                           is on at a time.
 *
 * @author: Waylon Cude, Dilanthi Prentice
 * @date: 6-12-2025
 *
 * */

// NOTE: This expects to be driven with a 100khz clock but can be altered in
// the nexys_a7_top.sv file.
module display_anode_driver(
    input logic clk, 
    input logic reset, 
    output logic [7:0] AN, 
    output logic [2:0] mux_select);

// This is just a shift register that drives each anode individually
always_ff @(posedge clk) begin
    if (reset) begin
        AN <= '1 - 1;
        mux_select <= 0;
    end
    else begin
        AN <= {AN[6:0], AN[7]};
        // Letting this overflow will automatically reset it
        mux_select <= mux_select + 1;
    end
end
endmodule
