Переглянути джерело

sdram: fix state machine problem

Go from st_ready to st_rd_wr_act, not st_rd_wr.
H. Peter Anvin 3 роки тому
батько
коміт
2034158a65

BIN
fpga/output_files/max80.jbc


BIN
fpga/output_files/max80.jic


BIN
fpga/output_files/max80.pof


BIN
fpga/output_files/max80.sof


+ 2 - 5
fpga/sdram.sv

@@ -477,15 +477,12 @@ module sdram
 	  dram_a        <= 13'b0;
 	  dram_ba       <= bank_addr;
 	  dram_dqm      <= 2'b00;
-	  dram_d        <= 16'haaaa;
+	  dram_d        <= { 8'hAA, 3'b000, dram_cmd };
 	  dram_cmd      <= cmd_nop;
 
-
 	  dram_d_en     <= 1'b1; // Don't float except during read
 
 	  dram_q        <= sr_dq;
-	  if (~dram_d_en)
-	    dram_d      <= 16'hxxxx; // Allow losing contents when out disabled
 	  p1.rstrb      <= 2'b00;
 	  wacc2         <= 1'b0;
 
@@ -561,7 +558,7 @@ module sdram
 		      p1.wrack     <= |p1.wstrb;
 		      wdata_q      <= p1.wd;
 		      be_q         <= p1.wstrb;
-		      state        <= st_rd_wr;
+		      state        <= st_rd_wr_act;
 		      p1.start     <= 1'b1;
 		   end // if (p1.req)
 		 else if (wrq2[0])

Різницю між файлами не показано, бо вона завелика
+ 2356 - 2356
rv32/boot.mif


+ 1 - 0
rv32/system.c

@@ -90,6 +90,7 @@ void init(void)
 	for (int i = 0; i < 8; i++) {
 	    uint32_t v = (i*0x11111111) + 0x44332211;
 	    test_dram[i] = v;
+	    (void)test_dram[i];	/* Force immediate readback */
 	    con_printf("%08x ", v);
 	}
 	con_putc('\n');

Деякі файли не було показано, через те що забагато файлів було змінено