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;