fix strange inverted address line bug, lots of other stuff

This commit is contained in:
ikari 2009-12-19 10:16:55 +01:00
parent 09e2480eac
commit b37fc1b846
13 changed files with 125 additions and 84 deletions

Binary file not shown.

View File

@ -24,9 +24,9 @@ menu_init:
rts rts
menuloop: menuloop:
menuloop_s1
sep #$20 : .as sep #$20 : .as
rep #$10 : .xl rep #$10 : .xl
menuloop_s1
lda isr_done lda isr_done
lsr lsr
bcc menuloop_s1 bcc menuloop_s1

View File

@ -81,7 +81,7 @@ uint16_t scan_dir(char* path, char mkdb, uint32_t this_dir_tgt) {
} }
res = f_opendir(&dir, (unsigned char*)path); res = f_opendir(&dir, (unsigned char*)path);
if (res == FR_OK) { if (res == FR_OK) {
if(pass && parent_tgt) { if(pass && parent_tgt && mkdb) {
// write backlink to parent dir // write backlink to parent dir
// switch to next bank if record does not fit in current bank // switch to next bank if record does not fit in current bank
if((db_tgt&0xffff) > ((0x10000-(sizeof(next_subdir_tgt)+sizeof(len)+4))&0xffff)) { if((db_tgt&0xffff) > ((0x10000-(sizeof(next_subdir_tgt)+sizeof(len)+4))&0xffff)) {

View File

@ -141,6 +141,7 @@ void set_avr_bank(uint8_t val) {
uint8_t fpga_test() { uint8_t fpga_test() {
spi_fpga(); spi_fpga();
spiTransferByte(0xF0); // TEST spiTransferByte(0xF0); // TEST
spiTransferByte(0x00); // dummy
uint8_t result = spiTransferByte(0x00); uint8_t result = spiTransferByte(0x00);
spi_none(); spi_none();
return result; return result;

View File

@ -21,6 +21,8 @@ void set_avr_mapper(uint8_t val);
void set_avr_bank(uint8_t val); void set_avr_bank(uint8_t val);
#define FPGA_TEST_TOKEN (0xa5)
// some macros for bulk transfers (faster) // some macros for bulk transfers (faster)
#define FPGA_SEND_BYTE(data) do {SET_AVR_DATA(data); CCLK();} while (0) #define FPGA_SEND_BYTE(data) do {SET_AVR_DATA(data); CCLK();} while (0)
#define FPGA_SEND_BYTE_SERIAL(data) do {SET_AVR_DATA(data); CCLK();\ #define FPGA_SEND_BYTE_SERIAL(data) do {SET_AVR_DATA(data); CCLK();\

View File

@ -49,6 +49,32 @@
#include "avrcompat.h" #include "avrcompat.h"
#include "filetypes.h" #include "filetypes.h"
void writetest(void) {
// HERE BE LIONS, GET IN THE CAR
char teststring[58];
while(1) {
sram_writeblock((void*)"Testtext of DOOM!!1! 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ", SRAM_SCRATCHPAD+0x20, 58);
sram_readblock((void*)teststring, SRAM_SCRATCHPAD+0x20, 58);
teststring[57]=0;
dprintf("%s\n", teststring);
}
// END OF LIONS
}
void memtest(void) {
/* HERE BE DRAGONS */
uint32_t dbg_i;
for(dbg_i=0; dbg_i < 65536; dbg_i++) {
sram_writeshort((uint16_t)dbg_i&0xffff, dbg_i*2);
}
save_sram((uint8_t*)"/sd2snes/memtest", 0x20000, 0);
set_pwr_led(0);
while(1);
/* END OF DRAGONS */
}
/* Make sure the watchdog is disabled as soon as possible */ /* Make sure the watchdog is disabled as soon as possible */
/* Copy this code to your bootloader if you use one and your */ /* Copy this code to your bootloader if you use one and your */
/* MCU doesn't disable the WDT after reset! */ /* MCU doesn't disable the WDT after reset! */
@ -163,14 +189,13 @@ restart:
uint16_t mem_dir_id = sram_readshort(SRAM_DIRID); uint16_t mem_dir_id = sram_readshort(SRAM_DIRID);
uint32_t mem_magic = sram_readlong(SRAM_SCRATCHPAD); uint32_t mem_magic = sram_readlong(SRAM_SCRATCHPAD);
if((mem_magic != 0x12345678) || (mem_dir_id != saved_dir_id)) { if((mem_magic != 0x12345678) || (mem_dir_id != saved_dir_id)) {
uint16_t curr_dir_id = scan_dir(fs_path, 0, 0); // generate files footprint uint16_t curr_dir_id = scan_dir(fs_path, 0, 0); // generate files footprint
dprintf("curr dir id = %x\n", curr_dir_id); dprintf("curr dir id = %x\n", curr_dir_id);
if((get_db_id(&saved_dir_id) != FR_OK) // no database? if((get_db_id(&saved_dir_id) != FR_OK) // no database?
|| saved_dir_id != curr_dir_id) { // files changed? // XXX || saved_dir_id != curr_dir_id) { // files changed? // XXX
dprintf("saved dir id = %x\n", saved_dir_id); dprintf("saved dir id = %x\n", saved_dir_id);
_delay_ms(50);
dprintf("rebuilding database..."); dprintf("rebuilding database...");
_delay_ms(50); _delay_ms(50);
curr_dir_id = scan_dir(fs_path, 1, 0); // then rebuild database curr_dir_id = scan_dir(fs_path, 1, 0); // then rebuild database
@ -184,6 +209,7 @@ restart:
dprintf("done\n"); dprintf("done\n");
sram_hexdump(SRAM_DB_ADDR, 0x400); sram_hexdump(SRAM_DB_ADDR, 0x400);
} else { } else {
dprintf("saved dir id = %x\n", saved_dir_id);
dprintf("different card, consistent db, loading db...\n"); dprintf("different card, consistent db, loading db...\n");
load_sram((uint8_t*)"/sd2snes/sd2snes.db", SRAM_DB_ADDR); load_sram((uint8_t*)"/sd2snes/sd2snes.db", SRAM_DB_ADDR);
load_sram((uint8_t*)"/sd2snes/sd2snes.dir", SRAM_DIR_ADDR); load_sram((uint8_t*)"/sd2snes/sd2snes.dir", SRAM_DIR_ADDR);
@ -220,7 +246,6 @@ restart:
uint8_t cmd = 0; uint8_t cmd = 0;
while(!sram_reliable()); while(!sram_reliable());
while(!cmd) { while(!cmd) {
cmd=menu_main_loop(); cmd=menu_main_loop();
switch(cmd) { switch(cmd) {
@ -255,7 +280,8 @@ restart:
cmd=0; cmd=0;
uint8_t snes_reset_prev=0, snes_reset_now=0, snes_reset_state=0; uint8_t snes_reset_prev=0, snes_reset_now=0, snes_reset_state=0;
uint16_t reset_count=0; uint16_t reset_count=0;
while(fpga_test() == 0xa5) { while(fpga_test() == FPGA_TEST_TOKEN) {
dprintf("%02X\n", fpga_test());
snes_reset_now=get_snes_reset(); snes_reset_now=get_snes_reset();
if(snes_reset_now) { if(snes_reset_now) {
if(!snes_reset_prev) { if(!snes_reset_prev) {
@ -307,7 +333,6 @@ restart:
_delay_ms(150); _delay_ms(150);
} }
/* HERE BE LIONS */ /* HERE BE LIONS */
while(1) { while(1) {
set_avr_addr(0x600000); set_avr_addr(0x600000);
@ -335,6 +360,6 @@ while(1) {
} }
spi_none(); spi_none();
} }
while(1); while(1);
} }

View File

@ -286,6 +286,7 @@ uint8_t sram_reliable() {
if(val==0x12345678) { if(val==0x12345678) {
score++; score++;
} }
// dprintf("val=%08lX\n", val);
} }
if(score<SRAM_RELIABILITY_SCORE) { if(score<SRAM_RELIABILITY_SCORE) {
result = 0; result = 0;

View File

@ -36,8 +36,6 @@ module address(
input [23:0] ROM_MASK input [23:0] ROM_MASK
); );
reg [22:0] SRAM_ADDR_BUF;
reg [3:0] ROM_SEL_BUF;
reg [3:0] AVR_ROM_SEL_BUF; reg [3:0] AVR_ROM_SEL_BUF;
reg [3:0] CS_ARRAY[3:0]; reg [3:0] CS_ARRAY[3:0];
wire [1:0] SRAM_BANK; wire [1:0] SRAM_BANK;
@ -61,6 +59,16 @@ end
/* HiROM: SRAM @ Bank 0x30-0x3f, 0xb0-0xbf /* HiROM: SRAM @ Bank 0x30-0x3f, 0xb0-0xbf
Offset 6000-7fff */ Offset 6000-7fff */
assign IS_ROM = ( (MAPPER == 3'b000) ? ( (!SNES_ADDR[22]
& SNES_ADDR[15])
|(SNES_ADDR[22]))
: (MAPPER == 3'b001) ? ( (SNES_ADDR[15] & !SNES_ADDR[22])
|(SNES_ADDR[22]))
: (MAPPER == 3'b010) ? ((!SNES_ADDR[22] & SNES_ADDR[15])
|(SNES_ADDR[22]))
: 1'b0);
assign IS_SAVERAM = ((MAPPER == 3'b000 || MAPPER == 3'b010) ? (!SNES_ADDR[22] assign IS_SAVERAM = ((MAPPER == 3'b000 || MAPPER == 3'b010) ? (!SNES_ADDR[22]
& SNES_ADDR[21:20] & SNES_ADDR[21:20]
& &SNES_ADDR[14:13] & &SNES_ADDR[14:13]
@ -76,15 +84,6 @@ assign IS_SAVERAM = ((MAPPER == 3'b000 || MAPPER == 3'b010) ? (!SNES_ADDR[22]
& !SNES_CS) & !SNES_CS)
: 1'b0); : 1'b0);
assign IS_ROM = ( (MAPPER == 3'b000) ? ( (!SNES_ADDR[22]
& SNES_ADDR[15])
|(SNES_ADDR[22]))
: (MAPPER == 3'b001) ? ( (SNES_ADDR[15] & !SNES_ADDR[22])
|(SNES_ADDR[22]))
: (MAPPER == 3'b010) ? ((!SNES_ADDR[22] & SNES_ADDR[15])
|(SNES_ADDR[22]))
: 1'b0);
assign SRAM_ADDR_FULL = (MODE) ? AVR_ADDR assign SRAM_ADDR_FULL = (MODE) ? AVR_ADDR
: ((MAPPER == 3'b000) ? : ((MAPPER == 3'b000) ?
(IS_SAVERAM ? (SNES_ADDR[14:0] - 15'h6000) & SAVERAM_MASK (IS_SAVERAM ? (SNES_ADDR[14:0] - 15'h6000) & SAVERAM_MASK

View File

@ -66,10 +66,10 @@ always @(posedge clk) begin
case (cmd_data[7:4]) case (cmd_data[7:4])
4'h3: 4'h3:
MAPPER_BUF <= cmd_data[3:0]; MAPPER_BUF <= cmd_data[3:0];
4'h8: // 4'h8:
AVR_DATA_IN_BUF <= avr_data_in; // AVR_DATA_IN_BUF <= avr_data_in;
4'hF: // 4'hF:
AVR_DATA_IN_BUF <= 8'hA5; // TODO AVR_DATA_IN_BUF <= 8'hA5;
endcase endcase
end else if (param_ready) begin end else if (param_ready) begin
case (cmd_data[7:4]) case (cmd_data[7:4])
@ -102,16 +102,24 @@ always @(posedge clk) begin
32'h4: 32'h4:
SAVERAM_MASK[7:0] <= param_data; SAVERAM_MASK[7:0] <= param_data;
endcase endcase
4'h8: // 4'h8:
AVR_DATA_IN_BUF <= avr_data_in; // AVR_DATA_IN_BUF <= avr_data_in;
4'h9: 4'h9:
AVR_DATA_OUT_BUF <= param_data; AVR_DATA_OUT_BUF <= param_data;
endcase endcase
end end
if (avr_nextaddr & (cmd_data[7:5] == 3'h4) && (cmd_data[0]) && (spi_byte_cnt > (32'h0+2*cmd_data[4]))) if (avr_nextaddr & (cmd_data[7:5] == 3'h4) && (cmd_data[0]) && (spi_byte_cnt > (32'h1+cmd_data[4])))
ADDR_OUT_BUF <= ADDR_OUT_BUF + 1; ADDR_OUT_BUF <= ADDR_OUT_BUF + 1;
end end
always @(posedge clk) begin
if (spi_bit_cnt == 3'h7)
if (cmd_data[7:4] == 4'hF)
AVR_DATA_IN_BUF <= 8'hA5;
else
AVR_DATA_IN_BUF <= avr_data_in;
end
always @(posedge clk) begin always @(posedge clk) begin
if (spi_bit_cnt == 3'h0) if (spi_bit_cnt == 3'h0)
avr_nextaddr_buf <= {avr_nextaddr_buf[0], 1'b1}; avr_nextaddr_buf <= {avr_nextaddr_buf[0], 1'b1};
@ -120,15 +128,15 @@ always @(posedge clk) begin
end end
always @(posedge clk) begin always @(posedge clk) begin
if (spi_bit_cnt == 3'h1 & (cmd_data[7:4] == 4'h9) & (spi_byte_cnt > 32'h1)) if ((spi_bit_cnt == 3'h1) & (cmd_data[7:4] == 4'h9) & (spi_byte_cnt > 32'h1))
AVR_WRITE_BUF <= 1'b0; AVR_WRITE_BUF <= 1'b0;
else else
AVR_WRITE_BUF <= 1'b1; AVR_WRITE_BUF <= 1'b1;
if ((spi_bit_cnt == 3'h7) & (cmd_data[7:4] == 4'h8) & (spi_byte_cnt > 32'h0)) if ((spi_bit_cnt == 3'h6 || spi_bit_cnt == 3'h7) & (cmd_data[7:4] == 4'h8) & (spi_byte_cnt > 32'h0))
AVR_READ_BUF <= 1'b0; AVR_READ_BUF <= 1'b0;
else else
AVR_READ_BUF <= 1'b1; AVR_READ_BUF <= 1'b1;
end end
assign avr_nextaddr = avr_nextaddr_buf == 2'b01; assign avr_nextaddr = avr_nextaddr_buf == 2'b01;

View File

@ -46,7 +46,7 @@ wire [7:0] FROM_SRAM_BYTE;
assign SNES_DATA = SNES_READ ? 8'bZ : SNES_OUT_MEM; assign SNES_DATA = SNES_READ ? 8'bZ : SNES_OUT_MEM;
assign FROM_SRAM_BYTE = ((SRAM_ADDR0 ^ !AVR_ENA) ? SRAM_DATA[7:0] : SRAM_DATA[15:8]); assign FROM_SRAM_BYTE = (SRAM_ADDR0 ? SRAM_DATA[7:0] : SRAM_DATA[15:8]);
assign AVR_OUT_DATA = !AVR_ENA ? (FROM_SRAM_BYTE) assign AVR_OUT_DATA = !AVR_ENA ? (FROM_SRAM_BYTE)
: (AVR_OUT_MEM); : (AVR_OUT_MEM);
@ -58,6 +58,7 @@ assign SRAM_DATA[7:0] = SRAM_ADDR0 ? (!AVR_ENA ? (!AVR_WRITE ? AVR_IN_DATA : 8'b
assign SRAM_DATA[15:8] = SRAM_ADDR0 ? 8'bZ : (!AVR_ENA ? (!AVR_WRITE ? AVR_IN_DATA : 8'bZ) assign SRAM_DATA[15:8] = SRAM_ADDR0 ? 8'bZ : (!AVR_ENA ? (!AVR_WRITE ? AVR_IN_DATA : 8'bZ)
: (MODE ? (!AVR_WRITE ? AVR_IN_MEM : 8'bZ) : (MODE ? (!AVR_WRITE ? AVR_IN_MEM : 8'bZ)
: (!SNES_WRITE ? SNES_IN_MEM : 8'bZ))); : (!SNES_WRITE ? SNES_IN_MEM : 8'bZ)));
always @(posedge CLK) begin always @(posedge CLK) begin
if(SNES_DATA_TO_MEM) if(SNES_DATA_TO_MEM)
SNES_IN_MEM <= SNES_DATA; SNES_IN_MEM <= SNES_DATA;

View File

@ -26,8 +26,6 @@ NET "SNES_ADDR[7]" IOSTANDARD = LVCMOS33;
NET "SNES_ADDR[8]" IOSTANDARD = LVCMOS33; NET "SNES_ADDR[8]" IOSTANDARD = LVCMOS33;
NET "SNES_ADDR[9]" IOSTANDARD = LVCMOS33; NET "SNES_ADDR[9]" IOSTANDARD = LVCMOS33;
NET "SNES_CS" IOSTANDARD = LVCMOS33; NET "SNES_CS" IOSTANDARD = LVCMOS33;
NET "SNES_DATABUS_DIR" IOSTANDARD = LVCMOS33;
NET "SNES_DATABUS_OE" IOSTANDARD = LVCMOS33;
NET "SNES_DATA[0]" IOSTANDARD = LVCMOS33; NET "SNES_DATA[0]" IOSTANDARD = LVCMOS33;
NET "SNES_DATA[1]" IOSTANDARD = LVCMOS33; NET "SNES_DATA[1]" IOSTANDARD = LVCMOS33;
NET "SNES_DATA[2]" IOSTANDARD = LVCMOS33; NET "SNES_DATA[2]" IOSTANDARD = LVCMOS33;
@ -38,54 +36,14 @@ NET "SNES_DATA[6]" IOSTANDARD = LVCMOS33;
NET "SNES_DATA[7]" IOSTANDARD = LVCMOS33; NET "SNES_DATA[7]" IOSTANDARD = LVCMOS33;
NET "SNES_READ" IOSTANDARD = LVCMOS33; NET "SNES_READ" IOSTANDARD = LVCMOS33;
NET "SNES_WRITE" IOSTANDARD = LVCMOS33; NET "SNES_WRITE" IOSTANDARD = LVCMOS33;
NET "SRAM_ADDR[0]" IOSTANDARD = LVCMOS33;
NET "SRAM_ADDR[10]" IOSTANDARD = LVCMOS33;
NET "SRAM_ADDR[11]" IOSTANDARD = LVCMOS33;
NET "SRAM_ADDR[12]" IOSTANDARD = LVCMOS33;
NET "SRAM_ADDR[13]" IOSTANDARD = LVCMOS33;
NET "SRAM_ADDR[14]" IOSTANDARD = LVCMOS33;
NET "SRAM_ADDR[15]" IOSTANDARD = LVCMOS33;
NET "SRAM_ADDR[16]" IOSTANDARD = LVCMOS33;
NET "SRAM_ADDR[17]" IOSTANDARD = LVCMOS33;
NET "SRAM_ADDR[18]" IOSTANDARD = LVCMOS33;
NET "SRAM_ADDR[19]" IOSTANDARD = LVCMOS33;
NET "SRAM_ADDR[1]" IOSTANDARD = LVCMOS33;
NET "SRAM_ADDR[2]" IOSTANDARD = LVCMOS33;
NET "SRAM_ADDR[3]" IOSTANDARD = LVCMOS33;
NET "SRAM_ADDR[4]" IOSTANDARD = LVCMOS33;
NET "SRAM_ADDR[5]" IOSTANDARD = LVCMOS33;
NET "SRAM_ADDR[6]" IOSTANDARD = LVCMOS33;
NET "SRAM_ADDR[7]" IOSTANDARD = LVCMOS33;
NET "SRAM_ADDR[8]" IOSTANDARD = LVCMOS33;
NET "SRAM_ADDR[9]" IOSTANDARD = LVCMOS33;
NET "SRAM_DATA[0]" IOSTANDARD = LVCMOS33;
NET "SRAM_DATA[1]" IOSTANDARD = LVCMOS33;
NET "SRAM_DATA[2]" IOSTANDARD = LVCMOS33;
NET "SRAM_DATA[3]" IOSTANDARD = LVCMOS33;
NET "SRAM_DATA[4]" IOSTANDARD = LVCMOS33;
NET "SRAM_DATA[5]" IOSTANDARD = LVCMOS33;
NET "SRAM_DATA[6]" IOSTANDARD = LVCMOS33;
NET "SRAM_DATA[7]" IOSTANDARD = LVCMOS33;
NET "SRAM_OE" IOSTANDARD = LVCMOS33;
NET "SRAM_WE" IOSTANDARD = LVCMOS33;
NET "SNES_CPU_CLK" IOSTANDARD = LVCMOS33; NET "SNES_CPU_CLK" IOSTANDARD = LVCMOS33;
NET "SNES_IRQ" IOSTANDARD = LVCMOS33;
NET "SNES_REFRESH" IOSTANDARD = LVCMOS33; NET "SNES_REFRESH" IOSTANDARD = LVCMOS33;
NET "SPI_MISO" IOSTANDARD = LVCMOS33; NET "SPI_MISO" IOSTANDARD = LVCMOS33;
NET "SPI_MOSI" IOSTANDARD = LVCMOS33; NET "SPI_MOSI" IOSTANDARD = LVCMOS33;
NET "SPI_SCK" IOSTANDARD = LVCMOS33; NET "SPI_SCK" IOSTANDARD = LVCMOS33;
NET "SRAM_DATA[10]" IOSTANDARD = LVCMOS33;
NET "SRAM_DATA[11]" IOSTANDARD = LVCMOS33;
NET "SRAM_DATA[12]" IOSTANDARD = LVCMOS33;
NET "SRAM_DATA[13]" IOSTANDARD = LVCMOS33;
NET "SRAM_DATA[14]" IOSTANDARD = LVCMOS33;
NET "SRAM_DATA[15]" IOSTANDARD = LVCMOS33;
NET "SRAM_DATA[8]" IOSTANDARD = LVCMOS33;
NET "SRAM_DATA[9]" IOSTANDARD = LVCMOS33;
NET "AVR_ENA" LOC = P58; NET "AVR_ENA" LOC = P58;
NET "CLKIN" LOC = P55; NET "CLKIN" LOC = P125;
NET "IRQ_DIR" LOC = P40; NET "IRQ_DIR" LOC = P40;
NET "IRQ_DIR" IOSTANDARD = LVCMOS33;
NET "SNES_ADDR[0]" LOC = P7; NET "SNES_ADDR[0]" LOC = P7;
NET "SNES_ADDR[10]" LOC = P32; NET "SNES_ADDR[10]" LOC = P32;
NET "SNES_ADDR[11]" LOC = P35; NET "SNES_ADDR[11]" LOC = P35;
@ -126,13 +84,9 @@ NET "SRAM_ADDR[19]" LOC = P69;
NET "SRAM_ADDR[8]" LOC = P68; NET "SRAM_ADDR[8]" LOC = P68;
NET "SRAM_ADDR[9]" LOC = P63; NET "SRAM_ADDR[9]" LOC = P63;
NET "SRAM_CE2[0]" LOC = P77; NET "SRAM_CE2[0]" LOC = P77;
NET "SRAM_CE2[0]" IOSTANDARD = LVCMOS33;
NET "SRAM_CE2[1]" LOC = P76; NET "SRAM_CE2[1]" LOC = P76;
NET "SRAM_CE2[1]" IOSTANDARD = LVCMOS33;
NET "SRAM_CE2[2]" LOC = P74; NET "SRAM_CE2[2]" LOC = P74;
NET "SRAM_CE2[2]" IOSTANDARD = LVCMOS33;
NET "SRAM_CE2[3]" LOC = P73; NET "SRAM_CE2[3]" LOC = P73;
NET "SRAM_CE2[3]" IOSTANDARD = LVCMOS33;
NET "SRAM_WE" LOC = P70; NET "SRAM_WE" LOC = P70;
NET "SNES_DATABUS_DIR" LOC = P141; NET "SNES_DATABUS_DIR" LOC = P141;
NET "SNES_DATABUS_OE" LOC = P140; NET "SNES_DATABUS_OE" LOC = P140;
@ -144,7 +98,7 @@ NET "SNES_DATA[4]" LOC = P135;
NET "SNES_DATA[5]" LOC = P131; NET "SNES_DATA[5]" LOC = P131;
NET "SNES_DATA[6]" LOC = P129; NET "SNES_DATA[6]" LOC = P129;
NET "SNES_DATA[7]" LOC = P127; NET "SNES_DATA[7]" LOC = P127;
NET "SNES_IRQ" LOC = P125; NET "SNES_IRQ" LOC = P55;
NET "SPI_MISO" LOC = P123; NET "SPI_MISO" LOC = P123;
NET "SPI_MOSI" LOC = P122; NET "SPI_MOSI" LOC = P122;
NET "SPI_SCK" LOC = P124; NET "SPI_SCK" LOC = P124;
@ -160,9 +114,7 @@ NET "SRAM_ADDR[5]" LOC = P85;
NET "SRAM_ADDR[6]" LOC = P84; NET "SRAM_ADDR[6]" LOC = P84;
NET "SRAM_ADDR[7]" LOC = P83; NET "SRAM_ADDR[7]" LOC = P83;
NET "SRAM_BHE" LOC = P78; NET "SRAM_BHE" LOC = P78;
NET "SRAM_BHE" IOSTANDARD = LVCMOS33;
NET "SRAM_BLE" LOC = P79; NET "SRAM_BLE" LOC = P79;
NET "SRAM_BLE" IOSTANDARD = LVCMOS33;
NET "SRAM_DATA[0]" LOC = P95; NET "SRAM_DATA[0]" LOC = P95;
NET "SRAM_DATA[10]" LOC = P100; NET "SRAM_DATA[10]" LOC = P100;
NET "SRAM_DATA[11]" LOC = P103; NET "SRAM_DATA[11]" LOC = P103;
@ -182,8 +134,58 @@ NET "SRAM_DATA[9]" LOC = P98;
NET "SRAM_OE" LOC = P93; NET "SRAM_OE" LOC = P93;
NET "CLKIN" IOSTANDARD = LVCMOS33; NET "CLKIN" IOSTANDARD = LVCMOS33;
NET "CLKIN" PULLUP; //NET "CLKIN" PULLUP;
NET "SPI_SS" IOSTANDARD = LVCMOS33; NET "SPI_SS" IOSTANDARD = LVCMOS33;
NET "SPI_SS" PULLUP; NET "SPI_SS" PULLUP;
//NET "DCM_RST" LOC = P46; //NET "DCM_RST" LOC = P46;
//NET "DCM_RST" IOSTANDARD = LVCMOS33; //NET "DCM_RST" IOSTANDARD = LVCMOS33;
NET "IRQ_DIR" IOSTANDARD = LVCMOS33;
NET "SNES_DATABUS_DIR" IOSTANDARD = LVCMOS33;
NET "SNES_DATABUS_OE" IOSTANDARD = LVCMOS33;
NET "SNES_IRQ" IOSTANDARD = LVCMOS33;
NET "SRAM_ADDR[0]" IOSTANDARD = LVCMOS33;
NET "SRAM_ADDR[10]" IOSTANDARD = LVCMOS33;
NET "SRAM_ADDR[11]" IOSTANDARD = LVCMOS33;
NET "SRAM_ADDR[12]" IOSTANDARD = LVCMOS33;
NET "SRAM_ADDR[13]" IOSTANDARD = LVCMOS33;
NET "SRAM_ADDR[14]" IOSTANDARD = LVCMOS33;
NET "SRAM_ADDR[15]" IOSTANDARD = LVCMOS33;
NET "SRAM_ADDR[16]" IOSTANDARD = LVCMOS33;
NET "SRAM_ADDR[17]" IOSTANDARD = LVCMOS33;
NET "SRAM_ADDR[18]" IOSTANDARD = LVCMOS33;
NET "SRAM_ADDR[19]" IOSTANDARD = LVCMOS33;
NET "SRAM_ADDR[1]" IOSTANDARD = LVCMOS33;
NET "SRAM_ADDR[2]" IOSTANDARD = LVCMOS33;
NET "SRAM_ADDR[3]" IOSTANDARD = LVCMOS33;
NET "SRAM_ADDR[4]" IOSTANDARD = LVCMOS33;
NET "SRAM_ADDR[5]" IOSTANDARD = LVCMOS33;
NET "SRAM_ADDR[6]" IOSTANDARD = LVCMOS33;
NET "SRAM_ADDR[7]" IOSTANDARD = LVCMOS33;
NET "SRAM_ADDR[8]" IOSTANDARD = LVCMOS33;
NET "SRAM_ADDR[9]" IOSTANDARD = LVCMOS33;
NET "SRAM_BHE" IOSTANDARD = LVCMOS33;
NET "SRAM_BLE" IOSTANDARD = LVCMOS33;
NET "SRAM_CE2[0]" IOSTANDARD = LVCMOS33;
NET "SRAM_CE2[1]" IOSTANDARD = LVCMOS33;
NET "SRAM_CE2[2]" IOSTANDARD = LVCMOS33;
NET "SRAM_CE2[3]" IOSTANDARD = LVCMOS33;
NET "SRAM_DATA[0]" IOSTANDARD = LVCMOS33;
NET "SRAM_DATA[10]" IOSTANDARD = LVCMOS33;
NET "SRAM_DATA[11]" IOSTANDARD = LVCMOS33;
NET "SRAM_DATA[12]" IOSTANDARD = LVCMOS33;
NET "SRAM_DATA[13]" IOSTANDARD = LVCMOS33;
NET "SRAM_DATA[14]" IOSTANDARD = LVCMOS33;
NET "SRAM_DATA[15]" IOSTANDARD = LVCMOS33;
NET "SRAM_DATA[1]" IOSTANDARD = LVCMOS33;
NET "SRAM_DATA[2]" IOSTANDARD = LVCMOS33;
NET "SRAM_DATA[3]" IOSTANDARD = LVCMOS33;
NET "SRAM_DATA[4]" IOSTANDARD = LVCMOS33;
NET "SRAM_DATA[5]" IOSTANDARD = LVCMOS33;
NET "SRAM_DATA[6]" IOSTANDARD = LVCMOS33;
NET "SRAM_DATA[7]" IOSTANDARD = LVCMOS33;
NET "SRAM_DATA[8]" IOSTANDARD = LVCMOS33;
NET "SRAM_DATA[9]" IOSTANDARD = LVCMOS33;
NET "SRAM_OE" IOSTANDARD = LVCMOS33;
NET "SRAM_WE" IOSTANDARD = LVCMOS33;
TEMPERATURE = 60 C;
VOLTAGE = 1.25 V;

View File

@ -309,13 +309,15 @@ initial begin
SRAM_OE_ARRAY[2'b11] = 13'b0000000000000; SRAM_OE_ARRAY[2'b11] = 13'b0000000000000;
SNES_DATA_TO_MEM_ARRAY[1'b0] = 13'b0001000000000; // SNES write SNES_DATA_TO_MEM_ARRAY[1'b0] = 13'b0001000000000; // SNES write
/* 13'b0001000000000 */
SNES_DATA_TO_MEM_ARRAY[1'b1] = 13'b0000000000000; // SNES read SNES_DATA_TO_MEM_ARRAY[1'b1] = 13'b0000000000000; // SNES read
AVR_DATA_TO_MEM_ARRAY[1'b0] = 13'b0000000010000; // AVR write AVR_DATA_TO_MEM_ARRAY[1'b0] = 13'b0000000001000; // AVR write
AVR_DATA_TO_MEM_ARRAY[1'b1] = 13'b0000000000000; // AVR read AVR_DATA_TO_MEM_ARRAY[1'b1] = 13'b0000000000000; // AVR read
SRAM_DATA_TO_SNES_MEM_ARRAY[1'b0] = 13'b0000000000000; // SNES write SRAM_DATA_TO_SNES_MEM_ARRAY[1'b0] = 13'b0000000000000; // SNES write
SRAM_DATA_TO_SNES_MEM_ARRAY[1'b1] = 13'b0000100000000; // SNES read SRAM_DATA_TO_SNES_MEM_ARRAY[1'b1] = 13'b0000100000000; // SNES read
/* 13'b0000100000000; */
SRAM_DATA_TO_AVR_MEM_ARRAY[1'b0] = 13'b0000000000000; // AVR write SRAM_DATA_TO_AVR_MEM_ARRAY[1'b0] = 13'b0000000000000; // AVR write
SRAM_DATA_TO_AVR_MEM_ARRAY[1'b1] = 13'b0000000000001; // AVR read SRAM_DATA_TO_AVR_MEM_ARRAY[1'b1] = 13'b0000000000001; // AVR read
@ -328,7 +330,7 @@ end
// we have 24 internal cycles to work with. (CLKIN * 4) // we have 24 internal cycles to work with. (CLKIN * 4)
always @(posedge CLK2) begin always @(posedge CLK2) begin
CYCLE_RESET <= {CYCLE_RESET[0], SNES_cycle_start}; CYCLE_RESET <= {CYCLE_RESET[0], SNES_RW_start};
end end
always @(posedge CLK2) begin always @(posedge CLK2) begin

View File

@ -66,8 +66,8 @@
<association xil_pn:name="Implementation"/> <association xil_pn:name="Implementation"/>
</file> </file>
<file xil_pn:name="dcm_srl16.v" xil_pn:type="FILE_VERILOG"> <file xil_pn:name="dcm_srl16.v" xil_pn:type="FILE_VERILOG">
<association xil_pn:name="Implementation"/>
<association xil_pn:name="BehavioralSimulation"/> <association xil_pn:name="BehavioralSimulation"/>
<association xil_pn:name="Implementation"/>
</file> </file>
</files> </files>