Removed two extra registers to hold dout0,1
diff --git a/verilog/rtl/openram_testchip.v b/verilog/rtl/openram_testchip.v index acde30c..2018741 100644 --- a/verilog/rtl/openram_testchip.v +++ b/verilog/rtl/openram_testchip.v
@@ -15,9 +15,10 @@ input gpio_sram_clk, input reset, input la_in_load, - input gpio_scanning, + input gpio_in_scan, input la_sram_load, input gpio_sram_load, + input gpio_out_scan, input [111:0] la_bits, input gpio_bit, input in_select, @@ -58,13 +59,10 @@ reg [63:0] sram4_data; //reg [63:0] sram5_data; -// Hold final output data -// clocked by la/gpio clk -reg [63:0] read_data0; // Mux output -reg [63:0] read_data1; // Mux output - -reg [63:0] sram_data0; -reg [63:0] sram_data1; +// Mux output to connect final output data +// into sram_register +reg [63:0] read_data0; +reg [63:0] read_data1; // SRAM input connections reg [3:0] chip_select; @@ -91,15 +89,19 @@ if(reset) begin sram_register <= 112'd0; end - else if(gpio_scanning) begin + //GPIO scanning for input transfer + else if(gpio_in_scan) begin sram_register <= {sram_register[110:0], gpio_bit}; end else if(la_in_load) begin sram_register <= la_bits; end else if(gpio_sram_load || la_sram_load) begin - //Why is this necessary? - //sram_register = {sram_register[bits above DIN0], DOUT0, sram_register[bits between DIN0 and DIN1], DOUT1, sram_register[bits below din1} + sram_register <= {sram_register[bits above DIN0], DOUT0, sram_register[bits between DIN0 and DIN1], DOUT1, sram_register[bits below din1} + end + //GPIO scanning for output transfer + else if(gpio_out_scan) begin + sram_register <= sram_register >> 1; end end @@ -180,32 +182,11 @@ endcase end -always @(posedge clk) begin - if(reset) begin - sram_data0 <= 64'd0; - sram_data1 <= 64'd0; - end - // Shifting for serial transfer - else if(gpio_scanning) begin - sram_data0 <= sram_data0 >> 1; - sram_data1 <= sram_data1 >> 1; - end - // Reading in data from SRAM dout FF's - else begin - if(web0) begin - sram_data0 <= read_data0; - end - if(web1) begin - sram_data1 <= read_data1; - end - end -end - // Output transfer always @ (*) begin if(in_select) begin - gpio_data0 = sram_data0[0]; - gpio_data1 = sram_data1[0]; + gpio_data0 = sram_register[???]; + gpio_data1 = sram_register[???]; end else begin la_data0 = sram_data0;