fpga: ADC Select Feature

Allow the selection of which ADC channels are sampled when in
continuous read mode.

Change-Id: Ic7911efc9bfb006099f3a7e6608e5ab782f51ba2
Reviewed-on: https://pigweed-review.googlesource.com/c/gonk/+/190017
Reviewed-by: Umang Shah <umangshah@google.com>
Commit-Queue: Anthony DiGirolamo <tonymd@google.com>
diff --git a/fpga/gonk/csa_ctl_top.v b/fpga/gonk/csa_ctl_top.v
index 5d8609c..e0b5644 100644
--- a/fpga/gonk/csa_ctl_top.v
+++ b/fpga/gonk/csa_ctl_top.v
@@ -25,6 +25,7 @@
     input en_i,
     input mode_i,
     input [10:0] adc_sel_i,
+    input [10:0] poll_adc_en_i,
     input [5:0] rwaddr_i,
     input [15:0] wdata_i,
     output reg dn_o,
@@ -186,6 +187,7 @@
       .mode_i(mode_i),
       .rwaddr_i(rwaddr_r),
       .wdata_i(wdata_r),
+      //.poll_en_i(poll_adc_en_i[0]),
       .dn_o(dn_r1),
       .rdata_o(rdata_w1),
       .vbus_o(vbus_1),
@@ -207,6 +209,7 @@
       .mode_i(mode_i),
       .rwaddr_i(rwaddr_r),
       .wdata_i(wdata_r),
+      //.poll_en_i(poll_adc_en_i[1]),
       .dn_o(dn_r2),
       .rdata_o(rdata_w2),
       .vbus_o(vbus_2),
@@ -228,6 +231,7 @@
       .mode_i(mode_i),
       .rwaddr_i(rwaddr_r),
       .wdata_i(wdata_r),
+      //.poll_en_i(poll_adc_en_i[2]),
       .dn_o(dn_r3),
       .rdata_o(rdata_w3),
       .vbus_o(vbus_3),
@@ -249,6 +253,7 @@
       .mode_i(mode_i),
       .rwaddr_i(rwaddr_r),
       .wdata_i(wdata_r),
+      //.poll_en_i(poll_adc_en_i[3]),
       .dn_o(dn_r4),
       .rdata_o(rdata_w4),
       .vbus_o(vbus_4),
@@ -270,6 +275,7 @@
       .mode_i(mode_i),
       .rwaddr_i(rwaddr_r),
       .wdata_i(wdata_r),
+      //.poll_en_i(poll_adc_en_i[4]),
       .dn_o(dn_r5),
       .rdata_o(rdata_w5),
       .vbus_o(vbus_5),
@@ -292,6 +298,7 @@
       .mode_i(mode_i),
       .rwaddr_i(rwaddr_r),
       .wdata_i(wdata_r),
+      //.poll_en_i(poll_adc_en_i[5]),
       .dn_o(dn_r6),
       .rdata_o(rdata_w6),
       .vbus_o(vbus_6),
@@ -313,6 +320,7 @@
       .mode_i(mode_i),
       .rwaddr_i(rwaddr_r),
       .wdata_i(wdata_r),
+      //.poll_en_i(poll_adc_en_i[6]),
       .dn_o(dn_r7),
       .rdata_o(rdata_w7),
       .vbus_o(vbus_7),
@@ -334,6 +342,7 @@
       .mode_i(mode_i),
       .rwaddr_i(rwaddr_r),
       .wdata_i(wdata_r),
+      //.poll_en_i(poll_adc_en_i[7]),
       .dn_o(dn_r8),
       .rdata_o(rdata_w8),
       .vbus_o(vbus_8),
@@ -355,6 +364,7 @@
       .mode_i(mode_i),
       .rwaddr_i(rwaddr_r),
       .wdata_i(wdata_r),
+      //.poll_en_i(poll_adc_en_i[8]),
       .dn_o(dn_r9),
       .rdata_o(rdata_w9),
       .vbus_o(vbus_9),
@@ -376,6 +386,7 @@
       .mode_i(mode_i),
       .rwaddr_i(rwaddr_r),
       .wdata_i(wdata_r),
+      //.poll_en_i(poll_adc_en_i[9]),
       .dn_o(dn_r10),
       .rdata_o(rdata_w10),
       .vbus_o(vbus_10),
@@ -397,6 +408,7 @@
       .mode_i(mode_i),
       .rwaddr_i(rwaddr_r),
       .wdata_i(wdata_r),
+      //.poll_en_i(poll_adc_en_i[10]),
       .dn_o(dn_r11),
       .rdata_o(rdata_w11),
       .vbus_o(vbus_11),
@@ -553,27 +565,69 @@
 
   ///
 
-  reg poll_dn_latch_0_r, poll_dn_latch_1_r, poll_dn_latch_2_r, poll_dn_latch_3_r;
-  wire poll_dn_latch_0, poll_dn_latch_1, poll_dn_latch_2, poll_dn_latch_3, poll_dn_w;
+  reg poll_dn_latch_1_r, poll_dn_latch_2_r, poll_dn_latch_3_r;
+  reg poll_dn_latch_4_r, poll_dn_latch_5_r, poll_dn_latch_6_r, poll_dn_latch_7_r;
+  reg poll_dn_latch_8_r, poll_dn_latch_9_r, poll_dn_latch_10_r, poll_dn_latch_11_r;
 
-  assign poll_dn_latch_0 = (poll_dn_latch_r7 & poll_dn_latch_r9 & poll_dn_latch_r10);  // bank0
-  assign poll_dn_latch_1 = (poll_dn_latch_r5 & poll_dn_latch_r8 & poll_dn_latch_r1);
-  assign poll_dn_latch_2 = (poll_dn_latch_r4 & poll_dn_latch_r6 & poll_dn_latch_r3);
-  assign poll_dn_latch_3 = (poll_dn_latch_r2 & poll_dn_latch_r11);
-  assign poll_dn_w       = (poll_dn_latch_0_r & poll_dn_latch_1_r & poll_dn_latch_2_r & poll_dn_latch_3_r);
+  wire poll_dn_latch_0, poll_dn_latch_1, poll_dn_latch_2, poll_dn_latch_3, poll_dn_w;
+  wire poll_dn_latch_4, poll_dn_latch_5, poll_dn_latch_6, poll_dn_latch_7;
+  wire poll_dn_latch_8, poll_dn_latch_9, poll_dn_latch_10, poll_dn_sync0, poll_dn_sync1,poll_dn_sync2,poll_dn_sync3 ;
+
+  reg poll_dn_sync0_r, poll_dn_sync1_r, poll_dn_sync2_r, poll_dn_sync3_r;
+
+  assign poll_dn_latch_0  = (poll_dn_latch_r1 | (!poll_adc_en_i[0]));
+  assign poll_dn_latch_1  = (poll_dn_latch_r2 | (!poll_adc_en_i[1]));
+  assign poll_dn_latch_2  = (poll_dn_latch_r3 | (!poll_adc_en_i[2]));
+  assign poll_dn_latch_3  = (poll_dn_latch_r4 | (!poll_adc_en_i[3]));
+  assign poll_dn_latch_4  = (poll_dn_latch_r5 | (!poll_adc_en_i[4]));
+  assign poll_dn_latch_5  = (poll_dn_latch_r6 | (!poll_adc_en_i[5]));
+  assign poll_dn_latch_6  = (poll_dn_latch_r7 | (!poll_adc_en_i[6]));
+  assign poll_dn_latch_7  = (poll_dn_latch_r8 | (!poll_adc_en_i[7]));
+  assign poll_dn_latch_8  = (poll_dn_latch_r9 | (!poll_adc_en_i[8]));
+  assign poll_dn_latch_9  = (poll_dn_latch_r10 | (!poll_adc_en_i[9]));
+  assign poll_dn_latch_10 = (poll_dn_latch_r11 | (!poll_adc_en_i[10]));
+
+  assign poll_dn_sync0    = (poll_dn_latch_7_r & poll_dn_latch_9_r & poll_dn_latch_10_r);  // bank0
+  assign poll_dn_sync1    = (poll_dn_latch_5_r & poll_dn_latch_8_r & poll_dn_latch_1_r);
+  assign poll_dn_sync2    = (poll_dn_latch_4_r & poll_dn_latch_6_r & poll_dn_latch_3_r);
+  assign poll_dn_sync3    = (poll_dn_latch_2_r & poll_dn_latch_11_r);
+
+  assign poll_dn_w        = poll_dn_sync0 & poll_dn_sync1 & poll_dn_sync2 & poll_dn_sync3;
 
   always @(posedge mclk_i) begin
     if (rst_i_r) begin
       poll_dn_r <= 0;
-      poll_dn_latch_0_r <= 0;
       poll_dn_latch_1_r <= 0;
       poll_dn_latch_2_r <= 0;
       poll_dn_latch_3_r <= 0;
+      poll_dn_latch_4_r <= 0;
+      poll_dn_latch_5_r <= 0;
+      poll_dn_latch_6_r <= 0;
+      poll_dn_latch_7_r <= 0;
+      poll_dn_latch_8_r <= 0;
+      poll_dn_latch_9_r <= 0;
+      poll_dn_latch_10_r <= 0;
+      poll_dn_latch_11_r <= 0;
+      poll_dn_sync0_r <= 0;
+      poll_dn_sync1_r <= 0;
+      poll_dn_sync2_r <= 0;
+      poll_dn_sync3_r <= 0;
     end else begin
-      poll_dn_latch_0_r <= poll_dn_latch_0;
-      poll_dn_latch_1_r <= poll_dn_latch_1;
-      poll_dn_latch_2_r <= poll_dn_latch_2;
-      poll_dn_latch_3_r <= poll_dn_latch_3;
+      poll_dn_latch_1_r <= poll_dn_latch_0;
+      poll_dn_latch_2_r <= poll_dn_latch_1;
+      poll_dn_latch_3_r <= poll_dn_latch_2;
+      poll_dn_latch_4_r <= poll_dn_latch_3;
+      poll_dn_latch_5_r <= poll_dn_latch_4;
+      poll_dn_latch_6_r <= poll_dn_latch_5;
+      poll_dn_latch_7_r <= poll_dn_latch_6;
+      poll_dn_latch_8_r <= poll_dn_latch_7;
+      poll_dn_latch_9_r <= poll_dn_latch_8;
+      poll_dn_latch_10_r <= poll_dn_latch_9;
+      poll_dn_latch_11_r <= poll_dn_latch_10;
+      poll_dn_sync0_r <= poll_dn_sync0;
+      poll_dn_sync1_r <= poll_dn_sync1;
+      poll_dn_sync2_r <= poll_dn_sync2;
+      poll_dn_sync3_r <= poll_dn_sync3;
       poll_dn_r <= poll_dn_w;
     end
   end
diff --git a/fpga/gonk/spi_s_core.v b/fpga/gonk/spi_s_core.v
index d8f1af0..35093e9 100644
--- a/fpga/gonk/spi_s_core.v
+++ b/fpga/gonk/spi_s_core.v
@@ -51,6 +51,7 @@
     output reg [5:0] rwaddr_o,
     output reg [15:0] wdata_o,
     output reg [10:0] adc_sel_o,
+    output [10:0] poll_adc_en_o,
     // sys
     input mclk_i,
     input rst_i,
@@ -66,6 +67,9 @@
   localparam IDLE = 1;
   localparam WT = 2;
   localparam DN = 4;
+  localparam S0 = 1;
+  localparam S1 = 2;
+  localparam S2 = 4;
 
   reg
       sclk_i_r0,
@@ -79,7 +83,8 @@
       mosi_i_r2,
       dat_out_dn_r,
       rst_i_r,
-      wr_dn_valid_r;
+      wr_dn_valid_r,
+      poll_adc_sel_valid_r;
   reg
       spi_rdy_r,
       dat_out_dn_latch,
@@ -90,21 +95,28 @@
       wdata_rdy_r,
       dat_out_ctr_clr_r,
       poll_ctr_en_r,
-      poll_ctr_en_r1;
-  reg [2:0] spi_s_state;
+      poll_ctr_en_r1,
+      addr_rdy_r1,
+      poll_adc_sel_en_r;
+  reg [2:0] spi_s_state, poll_adc_state, dat_out_dn_latch_ctr;
+  reg [3:0] adc_count, poll_dat_next_ctr_index_r;  // Number of ADCs enabled for continous polling.
+  reg [4:0] i;
   reg [5:0] rwaddr_latch_r, poll_dat_ctr_r;
   reg [6:0] dat_in_ctr_r, data_count_max_r, dat_out_ctr;
+  reg [10:0] poll_adc_sel_r;
   reg [15:0] rwaddr_r, wdata_r, wdata_latch_r, poll_dat_bits_ctr_r;
   reg [23:0] poll_dat_r;
   reg [39:0] dat_in_r, dat_out_r, dat_in_r1;
 
   wire pos_edge, neg_edge, poll_ctr_en_w;
 
+  reg [4:0] poll_dat_next_ctr_r[11:0];  // Holds the index of valid ADCs for continous polling.
+
   assign pos_edge      = (sclk_i_r1 & !sclk_i_r2);
   assign neg_edge      = (!sclk_i_r1 & sclk_i_r2);
   assign poll_ctr_en_w = dat_out_ctr_clr_r & dat_out_ctr_clr;
   assign data_valid_o  = (dat_out_en_r | wr_dn_valid_r);
-
+  assign poll_adc_en_o = poll_adc_sel_r;
 
   always @(posedge mclk_i) begin
     rst_i_r <= rst_i;
@@ -115,7 +127,6 @@
       {sclk_i_r0, sclk_i_r1, sclk_i_r2} <= 0;
       {cs_i_r0, cs_i_r1, cs_i_r2} <= 3'b111;
       {mosi_i_r0, mosi_i_r1, mosi_i_r2} <= 0;
-
     end else begin
       {sclk_i_r2, sclk_i_r1, sclk_i_r0} <= {sclk_i_r1, sclk_i_r0, sclk_i};
       {cs_i_r0, cs_i_r1, cs_i_r2} <= {cs_i, cs_i_r0, cs_i_r1};
@@ -149,9 +160,11 @@
 
   always @(posedge mclk_i) begin
     if (rst_i_r) begin
-      addr_rdy_r <= 0;
+      addr_rdy_r  <= 0;
+      addr_rdy_r1 <= 0;  // Added to sync en_o with r_w_en_o
     end else begin
-      if (dat_in_ctr_r == 24)  // changed from 16.
+      addr_rdy_r1 <= addr_rdy_r;
+      if (dat_in_ctr_r == 24)  // Changed from 16.
         addr_rdy_r <= 1;
       else addr_rdy_r <= 0;
     end
@@ -198,7 +211,7 @@
   always @(posedge mclk_i) begin
     if (rst_i_r) en_o <= 0;
     else begin
-      en_o <= (|adc_sel_o) & (wdata_rdy_r | (r_w_en_o & addr_rdy_r));
+      en_o <= ((!poll_adc_sel_en_r) & ((|adc_sel_o) & (wdata_rdy_r | (r_w_en_o & addr_rdy_r1)))); // Bit18 disables spi_s_state
     end
   end
 
@@ -252,12 +265,13 @@
     end
   end
 
-  always @(posedge mclk_i) begin  // Test only logic to verify total number of clock cycles. NC
-    if (rst_i_r | poll_dat_bits_ctr_r == 528) poll_dat_bits_ctr_r <= 0;
-    else begin
-      if (mode_i & neg_edge) poll_dat_bits_ctr_r <= poll_dat_bits_ctr_r + 1;
-    end
-  end
+  // Test only logic to verify total number of clock cycles. NC
+  // always @(posedge mclk_i) begin
+  //   if (rst_i_r | poll_dat_bits_ctr_r == 528) poll_dat_bits_ctr_r <= 0;
+  //   else begin
+  //     if (mode_i & neg_edge) poll_dat_bits_ctr_r <= poll_dat_bits_ctr_r + 1;
+  //   end
+  // end
 
   always @(posedge mclk_i) begin
     if (rst_i_r | dat_out_ctr_clr) dat_out_ctr <= 0;
@@ -308,39 +322,10 @@
   end
 
   always @(posedge mclk_i) begin
-    dat_out_ctr_clr   <= (dat_out_ctr == data_count_max_r);
-    dat_out_ctr_clr_r <= dat_out_ctr_clr;
-    poll_dat_ctr_clr  <= (poll_dat_ctr_r == 22);
-  end
-
-  always @(posedge mclk_i) begin
-    if (rst_i_r) dat_out_dn_r <= 0;
-    else dat_out_dn_r <= (((!mode_i) & dat_out_ctr_clr) | (mode_i & poll_dat_ctr_clr));
-  end
-
-  reg [2:0] dat_out_dn_latch_ctr;  // Added to clear latch to fix continous read.
-
-  always @(posedge mclk_i) begin
-    if (rst_i_r) dat_out_dn_latch_ctr <= 0;
-    dat_out_dn_latch_ctr <= (dat_out_dn_latch) ? dat_out_dn_latch_ctr + 1 : 0;
-  end
-
-  always @(posedge mclk_i) begin
-    if (rst_i_r | neg_edge | dat_out_dn_latch_ctr == 7) dat_out_dn_latch <= 0;
-    else if (dat_out_dn_r) dat_out_dn_latch <= 1;
-  end
-
-  always @(posedge mclk_i) begin
-    if (rst_i_r | poll_dat_ctr_clr) poll_dat_ctr_r <= 0;
-    else begin
-      if (poll_ctr_en_w & mode_i) poll_dat_ctr_r <= poll_dat_ctr_r + 1;
-    end
-  end
-
-  always @(posedge mclk_i) begin
     if (rst_i_r) dn_clr_o <= 0;
     else begin
-      dn_clr_o <= ((!mode_i & dn_i) | (mode_i & dat_out_dn_latch));//Changed from  poll_dn_i -(Added multi-cycle path) for clear pulse.
+      // Changed from poll_dn_i -(Added multi-cycle path) for clear pulse.
+      dn_clr_o <= ((!mode_i & dn_i) | (mode_i & dat_out_dn_latch));
     end
   end
 
@@ -360,4 +345,96 @@
     end
   end
 
+  always @(posedge mclk_i) begin
+    dat_out_ctr_clr   <= (dat_out_ctr == data_count_max_r);
+    dat_out_ctr_clr_r <= dat_out_ctr_clr;
+    poll_dat_ctr_clr  <= (poll_dat_ctr_r >= 22);
+  end
+
+  always @(posedge mclk_i) begin
+    if (rst_i_r) dat_out_dn_r <= 0;
+    else dat_out_dn_r <= (((!mode_i) & dat_out_ctr_clr) | (mode_i & poll_dat_ctr_clr));
+  end
+
+  always @(posedge mclk_i) begin
+    if (rst_i_r) dat_out_dn_latch_ctr <= 0;
+    dat_out_dn_latch_ctr <= (dat_out_dn_latch) ? dat_out_dn_latch_ctr + 1 : 0;
+  end
+
+  always @(posedge mclk_i) begin
+    if (rst_i_r | neg_edge | dat_out_dn_latch_ctr == 7) dat_out_dn_latch <= 0;
+    else if (dat_out_dn_r) dat_out_dn_latch <= 1;
+  end
+
+  // Logic for ADC selection for polling
+
+  always @(posedge mclk_i) begin
+    case (poll_adc_state)
+      S0: begin
+        poll_adc_state <= poll_adc_sel_valid_r ? S1 : S0;
+        adc_count <= 0;
+        i <= 0;
+      end
+      S1: begin
+        if (i < 12) begin
+          poll_dat_next_ctr_r[i] <= 11;  // 5x11 queue
+          i <= i + 1;
+        end else begin
+          poll_adc_state <= S2;
+          i <= 0;
+        end
+      end
+      S2: begin
+        if (i < 11) begin
+          if (poll_adc_sel_r[i]) begin
+            adc_count <= adc_count + 1;
+            poll_dat_next_ctr_r[adc_count] <= i;
+          end
+          i <= i + 1;
+        end else poll_adc_state <= (poll_adc_sel_valid_r) ? S2 : S0;
+      end
+      default: poll_adc_state <= S0;
+    endcase
+  end
+
+  always @(posedge mclk_i) begin
+    if (rst_i_r)  // TBD: Clear after completion of packet
+      poll_adc_sel_en_r <= 0;
+    else begin
+      if (addr_rdy_r) poll_adc_sel_en_r <= dat_in_r1[18];
+    end
+  end
+
+  always @(posedge mclk_i) begin
+    if (addr_rdy_r1 & poll_adc_sel_en_r) begin
+      poll_adc_sel_valid_r <= 1;
+      poll_adc_sel_r <= adc_sel_o;  // Clear only with a write.
+    end else begin
+      poll_adc_sel_valid_r <= 0;
+    end
+  end
+
+  initial poll_adc_sel_r = 11'h07FF;
+  initial begin  // POR Reset Value
+    for (i = 0; i < 12; i = i + 1) begin
+      poll_dat_next_ctr_r[i] = i;
+    end
+  end
+
+  always @(posedge mclk_i) begin
+    if (rst_i_r | poll_dat_ctr_clr) begin
+      poll_dat_ctr_r <= {poll_dat_next_ctr_r[0], 1'b0};
+      poll_dat_next_ctr_index_r <= 0;
+    end else begin
+      if (poll_ctr_en_w & mode_i) begin
+        if (!poll_dat_ctr_r[0]) begin
+          poll_dat_ctr_r <= poll_dat_ctr_r + 1;
+          poll_dat_next_ctr_index_r <= poll_dat_next_ctr_index_r + 1;
+        end else begin
+          poll_dat_ctr_r <= {poll_dat_next_ctr_r[poll_dat_next_ctr_index_r], 1'b0};
+        end
+      end
+    end
+  end
+
 endmodule
diff --git a/fpga/gonk/top.pcf b/fpga/gonk/top.pcf
index 586c938..890c9e6 100644
--- a/fpga/gonk/top.pcf
+++ b/fpga/gonk/top.pcf
@@ -13,6 +13,7 @@
 # the License.
 
 ###IOSet List 63
+set_io test_o 39
 set_io led 56
 set_io ice_prog_spi_io0 67
 set_io ice_prog_spi_io1 68
diff --git a/fpga/gonk/top.v b/fpga/gonk/top.v
index 7e222ed..17c9834 100644
--- a/fpga/gonk/top.v
+++ b/fpga/gonk/top.v
@@ -17,6 +17,7 @@
 //
 //////////////////////////////////////////////////////////////////////////////////
 module top (
+    output test_o,
     input  clk_i,
     input  rst_i,
     input  op_mode_i,
@@ -100,8 +101,8 @@
 );
 
   wire rst_i_sync, poll_dn_w, mclk, en_w, r_w_en_w, mode_i_sync, trf_dn_w, dn_clr;
-  wire [ 5:0] rwaddr_w;
-  wire [10:0] adc_select_w;
+  wire [5:0] rwaddr_w;
+  wire [10:0] adc_select_w, poll_adc_en_w;
   wire [11:0] poll_dn_bus_w;
   wire [15:0] wdata_w;
   wire [23:0] vbus_1,vshunt_1,vbus_2,vshunt_2 ,vbus_3 ,vshunt_3 ,vbus_4 ,vshunt_4 ,vbus_5 ,vshunt_5 ,vbus_6 ,vshunt_6 ;
@@ -110,18 +111,18 @@
 
   // Assign ice_prog_spi_io0 = 1'bz; assigned as input. same as output hi-z.
   // Assign ice_prog_spi_io1 = 1'bz;
-
+  assign test_o = sl_sclk_i_0;
   pll pll_inst (
       .clock_in (clk_i),
       .clock_out(mclk)
   );
 
-  assign led = count[25];
   reg [25:0] count;
   initial count = 0;
   always @(posedge mclk) begin
     count <= count + 1;
   end
+  assign led = count[25];
 
   spi_s_core spi_s_core_inst (
       .sclk_i(sl_sclk_i_0),
@@ -134,6 +135,7 @@
       .en_o(en_w),
       .rwaddr_o(rwaddr_w),
       .adc_sel_o(adc_select_w),
+      .poll_adc_en_o(poll_adc_en_w),
       .wdata_o(wdata_w),
       .r_w_en_o(r_w_en_w),
       .data_valid_o(data_valid_o),
@@ -142,31 +144,6 @@
       .poll_dn_i(poll_dn_w),
       .dn_i(trf_dn_w),
       .dn_clr_o(dn_clr),
-
-      // DEBUG: hard coded vbus and vshunt values
-      // .vbus_1(1),
-      // .vshunt_1(2),
-      // .vbus_2(3),
-      // .vshunt_2(4),
-      // .vbus_3(5),
-      // .vshunt_3(6),
-      // .vbus_4(7),
-      // .vshunt_4(8),
-      // .vbus_5(9),
-      // .vshunt_5(10),
-      // .vbus_6(11),
-      // .vshunt_6(12),
-      // .vbus_7(13),
-      // .vshunt_7(14),
-      // .vbus_8(15),
-      // .vshunt_8(16),
-      // .vbus_9(17),
-      // .vshunt_9(19),
-      // .vbus_10(20),
-      // .vshunt_10(21),
-      // .vbus_11(22),
-      // .vshunt_11(23)
-
       .vbus_1(vbus_1),
       .vshunt_1(vshunt_1),
       .vbus_2(vbus_2),
@@ -191,6 +168,30 @@
       .vshunt_11(vshunt_11)
   );
 
+  // DEBUG: hard coded vbus and vshunt values
+  // .vbus_1(24'h5AAAAA),
+  // .vshunt_1(24'h5AAAAA),
+  // .vbus_2(24'h5AAAAA),
+  // .vshunt_2(24'h5AAAAA),
+  // .vbus_3(24'h5AAAAA),
+  // .vshunt_3(24'h5AAAAA),
+  // .vbus_4(24'h5AAAAA),
+  // .vshunt_4(24'h5AAAAA),
+  // .vbus_5(24'h5AAAAA),
+  // .vshunt_5(24'h5AAAAA),
+  // .vbus_6(24'h5AAAAA),
+  // .vshunt_6(24'h5AAAAA),
+  // .vbus_7(24'h5AAAAA),
+  // .vshunt_7(24'h5AAAAA),
+  // .vbus_8(24'h5AAAAA),
+  // .vshunt_8(24'h5AAAAA),
+  // .vbus_9(24'h5AAAAA),
+  // .vshunt_9(24'h5AAAAA),
+  // .vbus_10(24'h5AAAAA),
+  // .vshunt_10(24'h5AAAAA),
+  // .vbus_11(24'h5AAAAA),
+  // .vshunt_11(24'h5AAAAA)
+
 
   rst_sync rst_sync_inst (
       .clk_i (mclk),
@@ -214,6 +215,7 @@
       .mode_i(mode_i_sync),
       .rwaddr_i(rwaddr_w),
       .adc_sel_i(adc_select_w),
+      .poll_adc_en_i(poll_adc_en_w),  //Enable/Disable ADCs for polling.
       .wdata_i(wdata_w),
       .dn_o(trf_dn_w),
       .rdata_o(rdata_w),