made the clock select multiplexer compatible to take more than two input sources for future wishbone clock
diff --git a/verilog/dv/gpio_test/gpio_test_tb.v b/verilog/dv/gpio_test/gpio_test_tb.v index e94f754..d263a89 100644 --- a/verilog/dv/gpio_test/gpio_test_tb.v +++ b/verilog/dv/gpio_test/gpio_test_tb.v
@@ -53,6 +53,7 @@ assign mprj_io[15] = 1'b1; // reset assign mprj_io[16] = 1'b1; // in_select + assign mprj_io[23] = 1'b0; // in_select assign mprj_io[17] = gpio_clk; assign mprj_io[18] = gpio_in; assign mprj_io[19] = gpio_scan;
diff --git a/verilog/dv/la_test/la_test_tb.v b/verilog/dv/la_test/la_test_tb.v index 19402d9..f71d7c3 100644 --- a/verilog/dv/la_test/la_test_tb.v +++ b/verilog/dv/la_test/la_test_tb.v
@@ -58,7 +58,9 @@ wire gpio_out = mprj_io[22]; assign mprj_io[15] = 1'b1; // resetn - assign mprj_io[16] = 1'b0; // in_select + // assigning `b00 to pin 16 and 23 enables the clock from la + assign mprj_io[16] = 1'b0; // in_select[0] + assign mprj_io[23] = 1'b0; // in_select[1] assign mprj_io[17] = gpio_clk; assign mprj_io[18] = gpio_in; assign mprj_io[19] = gpio_scan;
diff --git a/verilog/rtl/user_project_wrapper.v b/verilog/rtl/user_project_wrapper.v index 58b9127..22a8315 100644 --- a/verilog/rtl/user_project_wrapper.v +++ b/verilog/rtl/user_project_wrapper.v
@@ -95,7 +95,7 @@ wire [`MAX_CHIPS-1:0] csb0; wire [`MAX_CHIPS-1:0] csb1; - wire in_select = io_in[16]; + wire [1:0] in_select = {io_in[23],io_in[16]}; wire gpio_resetn = io_in[15]; wire gpio_clk = io_in[17]; wire gpio_scan = io_in[19]; @@ -118,7 +118,12 @@ // Selecting clock pin reg clk; always @(*) begin - clk = in_select ? gpio_clk : la_clk; + case (in_select) + 2'b00 : clk = la_clk; + 2'b01 : clk = gpio_clk; + default : clk = 0; + endcase + //clk = in_select ? gpio_clk : la_clk; end // global csb is low with either GPIO or LA csb