fix strange inverted address line bug, lots of other stuff
This commit is contained in:
parent
09e2480eac
commit
b37fc1b846
Binary file not shown.
@ -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
|
||||||
|
|||||||
@ -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)) {
|
||||||
|
|||||||
@ -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;
|
||||||
|
|||||||
@ -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();\
|
||||||
|
|||||||
37
src/main.c
37
src/main.c
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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;
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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;
|
||||||
|
|||||||
@ -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;
|
||||||
|
|||||||
@ -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;
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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>
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user