`timescale 1ns/1ps module Core_LED (input clk, input rst, input reg [3:0] data_A, input reg [3:0] data_B, input mathSelect, input displaySelect, output reg [7:0] anode, output reg [7:0] _7LED, output reg [2:0] mathMode, output reg [2:0] displayMode); wire validButtonMath; wire validButtonDisp; reg [7:0] data; reg [1:0] toggle_Math; //no safe guards needed reg [1:0] toggle_Display; //know that this value must be always resetting at 3 //Button for math deBounce math(.clk(clk), .n_reset(rst), .button_in(mathSelect), .DB_out(validButtonMath)); //Button for display deBounce display(.clk(clk), .n_reset(rst), .button_in(displaySelect), .DB_out(validButtonDisp)); //Always waiting for display to change always_ff@(posedge clk or negedge rst) begin if(rst) begin toggle_Math <= 0; toggle_Display <= 0; end else if(validButtonMath & mathSelect) begin toggle_Math <= toggle_Math+1; end else if(validButtonDisp & displaySelect) begin if(toggle_Display == 2'b10) toggle_Display <= 0; else toggle_Display <= toggle_Display+1; end end maths_LED mathFunc(.toggle_Math(toggle_Math), .data_A(data_A), .data_B(data_B), .dataOut(data), .statusLED(mathMode)); displayNUM myDisplay(.clk(clk), .rst(rst), .data(data), .toggle_Display(toggle_Display), .anode(anode), ._7LED(_7LED), .modeLED(displayMode)); endmodule