From 784b47d7edfa6abf7cceeee96f5f6028eb48ea1c Mon Sep 17 00:00:00 2001 From: ikari Date: Tue, 1 Sep 2009 13:43:25 +0200 Subject: [PATCH] update --- pcb/cart/sd2snes1.brd | Bin 23520 -> 152669 bytes pcb/cart/sd2snes1.sch | Bin 153426 -> 357931 bytes src/Makefile | 2 +- src/config | 4 +- src/fpga.c | 49 +++++--- src/fpga.h | 5 + src/led.c | 5 + src/led.h | 1 + src/main.c | 26 ++-- src/memory.c | 36 ++++-- src/sdcard.c | 2 + src/snes.c | 11 +- src/spi.c | 2 +- verilog/sd2snes/address.v | 59 ++++----- verilog/sd2snes/data.v | 31 +++-- verilog/sd2snes/dcm.v | 10 +- verilog/sd2snes/main.ucf | 236 +++++++++++++++++------------------ verilog/sd2snes/main.v | 208 ++++++++++++++++++++---------- verilog/sd2snes/sd2snes.xise | 38 ++++-- verilog/sd2snes/tf_main.v | 102 ++++++++++----- 20 files changed, 507 insertions(+), 320 deletions(-) diff --git a/pcb/cart/sd2snes1.brd b/pcb/cart/sd2snes1.brd index f61956fc6333ffb1cd6ee04523c8da9df29db804..9097d72abb7e7608a9689574787d4c44da45de65 100644 GIT binary patch literal 152669 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 literal 23520 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 EUue@Y761SM diff --git a/pcb/cart/sd2snes1.sch b/pcb/cart/sd2snes1.sch index 46b106235ec1d4401e5e7736b4d4f2a6f49629f9..84bd27772793ad797de4af9b45bf92f45b75477d 100644 GIT binary patch literal 357931 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 I509Py13J$b_W%F@ delta 9405 zcma)C30M?Yw!XKjnp6>yc0rKMRxzT|+JFigmv%`&LzF~fNHmI3BPOWC6%xlH#$fA* z%DhU_=ny5DjKQ7Q%0DP&zm}B?)+e&pMsmhjhBHZ5DxUYd=14< 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 bhu^LLAGEj6d|R50OfS28hW+<^TLS$bHr*A> diff --git a/src/Makefile b/src/Makefile index 3371ab8..aa7604d 100644 --- a/src/Makefile +++ b/src/Makefile @@ -100,7 +100,7 @@ FORMAT = ihex TARGET = $(OBJDIR)/sd2snes # List C source files here. (C dependencies are automatically generated.) -SRC = main.c ff.c utils.c timer.c led.c diskio.c sdcard.c spi.c crc7.c snes.c fpga.c memory.c crc16.c fileops.c +SRC = main.c ff.c utils.c timer.c led.c diskio.c sdcard.c spi.c crc7.c snes.c fpga.c memory.c crc16.c fileops.c fpga_spi.c ifeq ($(CONFIG_UART_DEBUG),y) SRC += uart.c diff --git a/src/config b/src/config index 1227775..a098d1f 100644 --- a/src/config +++ b/src/config @@ -25,9 +25,9 @@ # This file is included in the main sd2iec Makefile and also parsed # into autoconf.h. -CONFIG_MCU=atmega644p +CONFIG_MCU=atmega644 CONFIG_LINKER_RELAX=n -CONFIG_MCU_FREQ=14318180 +CONFIG_MCU_FREQ=13500000 CONFIG_BOOTLOADER=y CONFIG_BOOT_DEVID=0x4e534453 CONFIG_UART_DEBUG=y diff --git a/src/fpga.c b/src/fpga.c index 32c3cd1..5be7c27 100644 --- a/src/fpga.c +++ b/src/fpga.c @@ -6,7 +6,8 @@ FPGA pin mapping ================ - + PSM: + ==== FPGA AVR dir ------------------------ PROG_B PD3 OUT @@ -14,6 +15,7 @@ CS_B PD7 OUT INIT_B PB2 IN RDWR_B PB3 OUT + D7 PC0 OUT D6 PC1 OUT D5 PC2 OUT @@ -23,6 +25,12 @@ D1 PC6 OUT D0 PC7 OUT + SSM: + ==== + PROG_B PD3 OUT + CCLK PD4 OUT + INIT_B PD7 IN + DIN PC7 OUT */ #include @@ -33,6 +41,9 @@ #include "diskio.h" #include "ff.h" #include "fileops.h" +#include "fpga_spi.h" +#include "spi.h" +#include "avrcompat.h" DWORD get_fattime(void) { return 0L; @@ -71,12 +82,12 @@ void set_cclk(uint8_t val) { void fpga_init() { DDRB |= _BV(PB3); // PB3 is output - DDRB &= ~_BV(PB2); // PB2 is input - DDRC = 0xff; // for FPGA config, all PORTC pins are outputs + DDRD &= ~_BV(PD7); // PD7 is input - DDRD |= _BV(PD3) | _BV(PD4) | _BV(PD7); // PD3, PD4, PD7 are outputs + DDRC = _BV(PC7); // for FPGA config, PC7 is output + DDRD |= _BV(PD3) | _BV(PD4); // PD3, PD4 are outputs set_cclk(0); // initial clk=0 } @@ -87,23 +98,26 @@ int fpga_get_done(void) { void fpga_postinit() { DDRA |= _BV(PA0) | _BV(PA1) | _BV(PA2) | _BV(PA4) | _BV(PA5) | _BV(PA6); // MAPPER+NEXTADDR output DDRB |= _BV(PB2) | _BV(PB1) | _BV(PB0); // turn PB2 into output, enable AVR_BANK + DDRD |= _BV(PD7); // turn PD7 into output } void fpga_pgm(char* filename) { set_prog_b(0); uart_putc('P'); set_prog_b(1); - loop_until_bit_is_set(PINB, PB2); + loop_until_bit_is_set(PIND, PD7); uart_putc('p'); - FIL in; - FRESULT res; +// FIL in; +// FRESULT res; UINT bytes_read; // open configware file - res=f_open(&in, filename, FA_READ); - if(res) { +// res=f_open(&in, filename, FA_READ); + file_open(filename, FA_READ); + if(file_res) { uart_putc('?'); + uart_putc(0x30+file_res); return; } // file open successful @@ -111,14 +125,16 @@ void fpga_pgm(char* filename) { set_rdwr_b(0); for (;;) { - res = f_read(&in, file_buf, sizeof(file_buf), &bytes_read); - if (res || bytes_read == 0) break; // error or eof +// res = f_read(&in, file_buf, sizeof(file_buf), &bytes_read); + bytes_read = file_read(); + if (file_res || bytes_read == 0) break; // error or eof for(int i=0; i 0x20) +// && (file_buf[j] < ('z'+1)) ? file_buf[j]:'.'); +// _delay_ms(2); + } + spiTransferByte(0x00); // dummy tx for increment+write pulse + _delay_us(10); + FPGA_SS_HIGH(); } file_close(); return (uint32_t)filesize; diff --git a/src/sdcard.c b/src/sdcard.c index a27aff0..d5814c1 100644 --- a/src/sdcard.c +++ b/src/sdcard.c @@ -536,6 +536,7 @@ DRESULT sd_read(BYTE drv, BYTE *buffer, DWORD sector, BYTE count) { res = sendCommand(drv, READ_SINGLE_BLOCK, (sector+sec) << 9, 0); if (res != 0) { + uart_putc('?'); SPI_SS_HIGH(drv); disk_state = DISK_ERROR; return RES_ERROR; @@ -543,6 +544,7 @@ DRESULT sd_read(BYTE drv, BYTE *buffer, DWORD sector, BYTE count) { // Wait for data token if (!sdResponse(0xFE)) { + uart_putc('-'); SPI_SS_HIGH(drv); disk_state = DISK_ERROR; return RES_ERROR; diff --git a/src/snes.c b/src/snes.c index 46f5907..f817c92 100644 --- a/src/snes.c +++ b/src/snes.c @@ -17,7 +17,8 @@ uint32_t sram_crc, sram_crc_old; uint32_t sram_size = 8192; // sane default void snes_init() { - DDRD |= _BV(PD5); // PD5 = OUTPUT + DDRD |= _BV(PD5); // PD5 = RESET_DIR + DDRD |= _BV(PD6); // PD6 = RESET snes_reset(1); } @@ -28,9 +29,13 @@ void snes_init() { */ void snes_reset(int state) { if(state) { - PORTD &= ~ _BV(PD5); + DDRD |= _BV(PD6); // /RESET pin -> out + PORTD &= ~_BV(PD6); // /RESET = 0 + PORTD |= _BV(PD5); // RESET_DIR = 1; } else { - PORTD |= _BV(PD5); + PORTD &= ~_BV(PD5); // RESET_DIR = 0; + DDRD &= ~_BV(PD6); // /RESET pin -> in + PORTD |= _BV(PD6); // /RESET = 1 } } diff --git a/src/spi.c b/src/spi.c index c01dc14..8cc6119 100644 --- a/src/spi.c +++ b/src/spi.c @@ -67,7 +67,7 @@ void spiInit(void) // leading edge rising, sample on leading edge, clock = f/4 SPCR = 0b01010000; - // Enable SPI double speed mode -> clock = f/8 + // Enable SPI double speed mode -> clock = f/2 SPSR = _BV(SPI2X); // clear status diff --git a/verilog/sd2snes/address.v b/verilog/sd2snes/address.v index 3f6fb9d..1094979 100644 --- a/verilog/sd2snes/address.v +++ b/verilog/sd2snes/address.v @@ -23,35 +23,34 @@ module address( input [2:0] MAPPER, // AVR detected mapper input [23:0] SNES_ADDR, // requested address from SNES input SNES_CS, // "CART" pin from SNES (active low) - output [20:0] SRAM_ADDR, // Address to request from SRAM + output [19:0] SRAM_ADDR, // Address to request from SRAM output [3:0] ROM_SEL, // which SRAM unit to access (active low) - input AVR_ADDR_RESET, // reset AVR sequence (active low) - input AVR_NEXTADDR, // next byte request from AVR input AVR_ENA, // enable AVR master mode (active low) - input AVR_ADDR_EN, // enable address counter (active low) - input [1:0] AVR_BANK, // which bank does the AVR want input MODE, // AVR(1) or SNES(0) ("bus phase") output IS_SAVERAM, // address/CS mapped as SRAM? output IS_ROM, // address mapped as ROM? - input AVR_NEXTADDR_CURR, - input AVR_NEXTADDR_PREV + input [23:0] AVR_ADDR, // allow address to be set externally + input ADDR_WRITE, + output SRAM_BHE, + output SRAM_BLE, + output SRAM_ADDR0 ); reg [22:0] SRAM_ADDR_BUF; reg [3:0] ROM_SEL_BUF; reg [3:0] AVR_ROM_SEL_BUF; -reg [20:0] AVR_ADDR; reg [3:0] CS_ARRAY[3:0]; +reg [1:0] AVR_BANK; wire [3:0] CURRENT_ROM_SEL; wire [22:0] SRAM_ADDR_FULL; initial begin - AVR_ADDR = 21'b0; - CS_ARRAY[0] = 4'b1110; - CS_ARRAY[1] = 4'b1101; - CS_ARRAY[2] = 4'b1011; - CS_ARRAY[3] = 4'b0111; + CS_ARRAY[0] = 4'b0001; + CS_ARRAY[1] = 4'b0010; + CS_ARRAY[2] = 4'b0100; + CS_ARRAY[3] = 4'b1000; + AVR_BANK = 2'b0; end /* currently supported mappers: @@ -70,14 +69,16 @@ assign IS_SAVERAM = ((MAPPER == 3'b000) ? (!SNES_ADDR[22] /* LoROM: SRAM @ Bank 0x70-0x7f, 0xf0-0xff Offset 0000-7fff */ :(MAPPER == 3'b001) ? (&SNES_ADDR[22:20] + & (SNES_ADDR[19:16] < 4'b1110) & !SNES_ADDR[15] & !SNES_CS) : 1'b0); -assign IS_ROM = ((MAPPER == 3'b000) ? ( (!SNES_ADDR[22] +assign IS_ROM = ( (MAPPER == 3'b000) ? ( (!SNES_ADDR[22] & SNES_ADDR[15]) |(SNES_ADDR[22])) - :(MAPPER == 3'b001) ? ( (SNES_ADDR[15]) ) + : (MAPPER == 3'b001) ? ( (SNES_ADDR[15] & !SNES_ADDR[22]) + |(SNES_ADDR[22]) ) : 1'b0); assign SRAM_ADDR_FULL = (MODE) ? AVR_ADDR @@ -90,29 +91,13 @@ assign SRAM_ADDR_FULL = (MODE) ? AVR_ADDR : 21'b0); assign SRAM_BANK = SRAM_ADDR_FULL[22:21]; -assign SRAM_ADDR = SRAM_ADDR_FULL[20:0]; +assign SRAM_ADDR = SRAM_ADDR_FULL[20:1]; -assign ROM_SEL = (MODE) ? CS_ARRAY[AVR_BANK] : IS_SAVERAM ? 4'b0111 : 4'b1110; // CS_ARRAY[SRAM_BANK]; -//assign ROM_SEL = 4'b1110; +// XXX assign ROM_SEL = (MODE) ? CS_ARRAY[AVR_BANK] : IS_SAVERAM ? 4'b1000 : CS_ARRAY[SRAM_BANK]; +assign ROM_SEL = 4'b0001; -always @(posedge CLK) begin - if(AVR_NEXTADDR_CURR) begin - if(!AVR_NEXTADDR_PREV) begin - if(!AVR_ADDR_RESET) - AVR_ADDR <= 21'b0; - else if (!AVR_ADDR_EN) - AVR_ADDR <= AVR_ADDR + 1; - end - end -end +assign SRAM_BHE = !AVR_ENA ? SRAM_ADDR_FULL[0] : 1'b0; +assign SRAM_BLE = !AVR_ENA ? !SRAM_ADDR_FULL[0] : 1'b0; +assign SRAM_ADDR0 = SRAM_ADDR_FULL[0]; - -/* -always @(posedge AVR_NEXTADDR) begin - if (!AVR_ADDR_RESET) - AVR_ADDR <= 21'b0; - else if (!AVR_ADDR_EN) - AVR_ADDR <= AVR_ADDR + 1; -end -*/ endmodule diff --git a/verilog/sd2snes/data.v b/verilog/sd2snes/data.v index 01d7ee8..f01b6bf 100644 --- a/verilog/sd2snes/data.v +++ b/verilog/sd2snes/data.v @@ -25,16 +25,16 @@ module data( input AVR_READ, input AVR_WRITE, inout [7:0] SNES_DATA, - inout [7:0] SRAM_DATA, - inout [7:0] AVR_DATA, + inout [15:0] SRAM_DATA, + input [7:0] AVR_IN_DATA, + output [7:0] AVR_OUT_DATA, input MODE, input SNES_DATA_TO_MEM, input AVR_DATA_TO_MEM, input SRAM_DATA_TO_SNES_MEM, input SRAM_DATA_TO_AVR_MEM, input AVR_ENA, - input AVR_NEXTADDR_PREV, - input AVR_NEXTADDR_CURR + input SRAM_ADDR0 ); reg [7:0] SNES_IN_MEM; @@ -42,24 +42,31 @@ reg [7:0] SNES_OUT_MEM; reg [7:0] AVR_IN_MEM; reg [7:0] AVR_OUT_MEM; +wire [7:0] FROM_SRAM_BYTE; +wire [7:0] TO_SRAM_BYTE; + assign SNES_DATA = SNES_READ ? 8'bZ : SNES_OUT_MEM; -assign AVR_DATA = !AVR_ENA ? (!AVR_READ ? SRAM_DATA : 8'bZ) - : (AVR_READ ? 8'bZ : AVR_OUT_MEM); +assign FROM_SRAM_BYTE = (SRAM_ADDR0 ? SRAM_DATA[7:0] : SRAM_DATA[15:8]); +assign TO_SRAM_BYTE = !AVR_ENA ? (!AVR_WRITE ? AVR_IN_DATA : 8'bZ) // /**/ : 8'bZ; + : MODE ? (!AVR_WRITE ? AVR_IN_MEM : 8'bZ) + : (!SNES_WRITE ? SNES_IN_MEM : 8'bZ); + +assign AVR_OUT_DATA = !AVR_ENA ? (FROM_SRAM_BYTE) + : (AVR_OUT_MEM); -assign SRAM_DATA = !AVR_ENA ? (!AVR_WRITE ? AVR_DATA : 8'bZ)// /**/ : 8'bZ; - : MODE ? (!AVR_WRITE ? AVR_IN_MEM : 8'bZ) - : (!SNES_WRITE ? SNES_IN_MEM : 8'bZ); +// XXX assign SRAM_DATA = (SRAM_BHE ? {8'bZ, TO_SRAM_BYTE} : {TO_SRAM_BYTE, 8'bZ}); +assign SRAM_DATA = !AVR_ENA ? ((SRAM_ADDR0 ? {8'bZ, TO_SRAM_BYTE} : {TO_SRAM_BYTE, 8'bZ})) : 16'bZ; always @(posedge CLK) begin if(SNES_DATA_TO_MEM) SNES_IN_MEM <= SNES_DATA; if(AVR_DATA_TO_MEM) - AVR_IN_MEM <= AVR_DATA; + AVR_IN_MEM <= AVR_IN_DATA; if(SRAM_DATA_TO_SNES_MEM) - SNES_OUT_MEM <= SRAM_DATA; + SNES_OUT_MEM <= FROM_SRAM_BYTE; if(SRAM_DATA_TO_AVR_MEM) - AVR_OUT_MEM <= SRAM_DATA; + AVR_OUT_MEM <= FROM_SRAM_BYTE; end diff --git a/verilog/sd2snes/dcm.v b/verilog/sd2snes/dcm.v index 9b8552a..df75da1 100644 --- a/verilog/sd2snes/dcm.v +++ b/verilog/sd2snes/dcm.v @@ -21,7 +21,9 @@ module my_dcm ( input CLKIN, input CLKFB, - output CLK2X + output CLK2X, + output CLKFX, + output CLK0 ); // DCM: Digital Clock Manager Circuit @@ -33,11 +35,11 @@ module my_dcm ( .CLKDV_DIVIDE(2.0), // Divide by: 1.5,2.0,2.5,3.0,3.5,4.0,4.5,5.0,5.5,6.0,6.5 // 7.0,7.5,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0 or 16.0 .CLKFX_DIVIDE(1), // Can be any integer from 1 to 32 - .CLKFX_MULTIPLY(16), // Can be any integer from 2 to 32 + .CLKFX_MULTIPLY(4), // Can be any integer from 2 to 32 .CLKIN_DIVIDE_BY_2("FALSE"), // TRUE/FALSE to enable CLKIN divide by two feature - .CLKIN_PERIOD(0.0), // Specify period of input clock + .CLKIN_PERIOD(46000.0), // Specify period of input clock .CLKOUT_PHASE_SHIFT("NONE"), // Specify phase shift of NONE, FIXED or VARIABLE - .CLK_FEEDBACK("2X"), // Specify clock feedback of NONE, 1X or 2X + .CLK_FEEDBACK("1X"), // Specify clock feedback of NONE, 1X or 2X .DESKEW_ADJUST("SYSTEM_SYNCHRONOUS"), // SOURCE_SYNCHRONOUS, SYSTEM_SYNCHRONOUS or // an integer from 0 to 15 .DFS_FREQUENCY_MODE("LOW"), // HIGH or LOW frequency mode for frequency synthesis diff --git a/verilog/sd2snes/main.ucf b/verilog/sd2snes/main.ucf index 778c00b..3524e84 100644 --- a/verilog/sd2snes/main.ucf +++ b/verilog/sd2snes/main.ucf @@ -1,126 +1,8 @@ -# INST "AVR_NEXTADDR_BUFGP" LOC = BUFGMUX7; -# INST "CLK_BUFGP" LOC = BUFGMUX0; -NET "AVR_BANK[0]" LOC = P56; -NET "AVR_BANK[1]" LOC = P57; -NET "AVR_ENA" LOC = P40; -NET "AVR_READ" LOC = P41; -NET "MAPPER[0]" LOC = P68; -NET "MAPPER[1]" LOC = P69; -NET "MAPPER[2]" LOC = P70; -NET "ROM_SEL[0]" LOC = P124; -NET "ROM_SEL[1]" LOC = P125; -NET "ROM_SEL[2]" LOC = P122; -NET "ROM_SEL[3]" LOC = P123; -NET "SNES_ADDR[0]" LOC = P1; -NET "SNES_ADDR[10]" LOC = P13; -NET "SNES_ADDR[11]" LOC = P14; -NET "SNES_ADDR[12]" LOC = P15; -NET "SNES_ADDR[13]" LOC = P17; -NET "SNES_ADDR[14]" LOC = P18; -NET "SNES_ADDR[15]" LOC = P20; -NET "SNES_ADDR[16]" LOC = P21; -NET "SNES_ADDR[17]" LOC = P23; -NET "SNES_ADDR[18]" LOC = P24; -NET "SNES_ADDR[19]" LOC = P25; -NET "SNES_ADDR[1]" LOC = P2; -NET "SNES_ADDR[20]" LOC = P26; -NET "SNES_ADDR[21]" LOC = P27; -NET "SNES_ADDR[22]" LOC = P28; -NET "SNES_ADDR[23]" LOC = P30; -NET "SNES_ADDR[2]" LOC = P4; -NET "SNES_ADDR[3]" LOC = P5; -NET "SNES_ADDR[4]" LOC = P6; -NET "SNES_ADDR[5]" LOC = P7; -NET "SNES_ADDR[6]" LOC = P8; -NET "SNES_ADDR[7]" LOC = P10; -NET "SNES_ADDR[8]" LOC = P11; -NET "SNES_ADDR[9]" LOC = P12; -NET "SRAM_ADDR[0]" LOC = P92; -NET "SRAM_ADDR[10]" LOC = P104; -NET "SRAM_ADDR[11]" LOC = P105; -NET "SRAM_ADDR[12]" LOC = P107; -NET "SRAM_ADDR[13]" LOC = P108; -NET "SRAM_ADDR[14]" LOC = P73; -NET "SRAM_ADDR[15]" LOC = P74; -NET "SRAM_ADDR[16]" LOC = P76; -NET "SRAM_ADDR[17]" LOC = P77; -NET "SRAM_ADDR[18]" LOC = P78; -NET "SRAM_ADDR[19]" LOC = P79; -NET "SRAM_ADDR[1]" LOC = P93; -NET "SRAM_ADDR[20]" LOC = P80; -NET "SRAM_ADDR[2]" LOC = P95; -NET "SRAM_ADDR[3]" LOC = P96; -NET "SRAM_ADDR[4]" LOC = P97; -NET "SRAM_ADDR[5]" LOC = P98; -NET "SRAM_ADDR[6]" LOC = P99; -NET "SRAM_ADDR[7]" LOC = P100; -NET "SRAM_ADDR[8]" LOC = P102; -NET "SRAM_ADDR[9]" LOC = P103; -NET "SRAM_DATA[0]" LOC = P82; -NET "SRAM_DATA[1]" LOC = P83; -NET "SRAM_DATA[2]" LOC = P84; -NET "SRAM_DATA[3]" LOC = P85; -NET "SRAM_DATA[4]" LOC = P86; -NET "SRAM_DATA[5]" LOC = P87; -NET "SRAM_DATA[6]" LOC = P89; -NET "SRAM_DATA[7]" LOC = P90; -NET "SRAM_OE" LOC = P118; -NET "SRAM_WE" LOC = P119; -NET "AVR_ADDR_RESET" LOC = P44; -NET "CLKIN" LOC = P55; -NET "AVR_NEXTADDR" LOC = P128; -NET "SNES_READ" LOC = P31; -NET "SNES_WRITE" LOC = P32; -NET "AVR_WRITE" LOC = P58; -NET "SNES_CS" LOC = P52; -NET "AVR_ADDR_EN" LOC = P53; NET "CLK" TNM_NET = CLK; -NET "AVR_DATA[0]" LOC = P46; -NET "AVR_DATA[1]" LOC = P47; -NET "AVR_DATA[2]" LOC = P50; -NET "AVR_DATA[3]" LOC = P51; -NET "AVR_DATA[4]" LOC = P59; -NET "AVR_DATA[5]" LOC = P60; -NET "AVR_DATA[6]" LOC = P63; -NET "AVR_DATA[7]" LOC = P65; -NET "SNES_DATA[0]" LOC = P129; -NET "SNES_DATA[1]" LOC = P130; -NET "SNES_DATA[2]" LOC = P131; -NET "SNES_DATA[3]" LOC = P132; -NET "SNES_DATA[4]" LOC = P135; -NET "SNES_DATA[5]" LOC = P137; -NET "SNES_DATA[6]" LOC = P140; -NET "SNES_DATA[7]" LOC = P141; -NET "SNES_DATABUS_DIR" LOC = P35; -NET "SNES_DATABUS_OE" LOC = P33; -NET "MODE" LOC = P112; NET "CLKIN" TNM_NET = CLKIN; TIMESPEC TS_CLKIN = PERIOD "CLKIN" 30 MHz HIGH 50 %; -NET "AVR_ADDR_EN" IOSTANDARD = LVCMOS33; -NET "AVR_ADDR_RESET" IOSTANDARD = LVCMOS33; -NET "AVR_BANK[0]" IOSTANDARD = LVCMOS33; -NET "AVR_BANK[1]" IOSTANDARD = LVCMOS33; -NET "AVR_DATA[0]" IOSTANDARD = LVCMOS33; -NET "AVR_DATA[1]" IOSTANDARD = LVCMOS33; -NET "AVR_DATA[2]" IOSTANDARD = LVCMOS33; -NET "AVR_DATA[3]" IOSTANDARD = LVCMOS33; -NET "AVR_DATA[4]" IOSTANDARD = LVCMOS33; -NET "AVR_DATA[5]" IOSTANDARD = LVCMOS33; -NET "AVR_DATA[6]" IOSTANDARD = LVCMOS33; -NET "AVR_DATA[7]" IOSTANDARD = LVCMOS33; NET "AVR_ENA" IOSTANDARD = LVCMOS33; -NET "AVR_NEXTADDR" IOSTANDARD = LVCMOS33; -NET "AVR_READ" IOSTANDARD = LVCMOS33; -NET "AVR_WRITE" IOSTANDARD = LVCMOS33; -NET "CLKIN" IOSTANDARD = LVCMOS33; -NET "MAPPER[0]" IOSTANDARD = LVCMOS33; -NET "MAPPER[1]" IOSTANDARD = LVCMOS33; -NET "MAPPER[2]" IOSTANDARD = LVCMOS33; NET "MODE" IOSTANDARD = LVCMOS33; -NET "ROM_SEL[0]" IOSTANDARD = LVCMOS33; -NET "ROM_SEL[1]" IOSTANDARD = LVCMOS33; -NET "ROM_SEL[2]" IOSTANDARD = LVCMOS33; -NET "ROM_SEL[3]" IOSTANDARD = LVCMOS33; NET "SNES_ADDR[0]" IOSTANDARD = LVCMOS33; NET "SNES_ADDR[10]" IOSTANDARD = LVCMOS33; NET "SNES_ADDR[11]" IOSTANDARD = LVCMOS33; @@ -170,7 +52,6 @@ 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[20]" IOSTANDARD = LVCMOS33; NET "SRAM_ADDR[2]" IOSTANDARD = LVCMOS33; NET "SRAM_ADDR[3]" IOSTANDARD = LVCMOS33; NET "SRAM_ADDR[4]" IOSTANDARD = LVCMOS33; @@ -189,3 +70,120 @@ 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_IRQ" IOSTANDARD = LVCMOS33; +NET "SNES_REFRESH" IOSTANDARD = LVCMOS33; +NET "SPI_LSB" IOSTANDARD = LVCMOS33; +NET "SPI_MISO" IOSTANDARD = LVCMOS33; +NET "SPI_MOSI" IOSTANDARD = LVCMOS33; +NET "SPI_SCK" IOSTANDARD = LVCMOS33; +NET "SPI_SS" 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 "CLKIN" LOC = P55; +NET "IRQ_DIR" LOC = P40; +NET "IRQ_DIR" IOSTANDARD = LVCMOS33; +NET "SNES_ADDR[0]" LOC = P7; +NET "SNES_ADDR[10]" LOC = P32; +NET "SNES_ADDR[11]" LOC = P35; +NET "SNES_ADDR[12]" LOC = P33; +NET "SNES_ADDR[13]" LOC = P31; +NET "SNES_ADDR[14]" LOC = P28; +NET "SNES_ADDR[15]" LOC = P26; +NET "SNES_ADDR[16]" LOC = P24; +NET "SNES_ADDR[17]" LOC = P21; +NET "SNES_ADDR[18]" LOC = P18; +NET "SNES_ADDR[19]" LOC = P15; +NET "SNES_ADDR[1]" LOC = P10; +NET "SNES_ADDR[20]" LOC = P13; +NET "SNES_ADDR[21]" LOC = P11; +NET "SNES_ADDR[22]" LOC = P8; +NET "SNES_ADDR[23]" LOC = P6; +NET "SNES_ADDR[2]" LOC = P12; +NET "SNES_ADDR[3]" LOC = P14; +NET "SNES_ADDR[4]" LOC = P17; +NET "SNES_ADDR[5]" LOC = P20; +NET "SNES_ADDR[6]" LOC = P23; +NET "SNES_ADDR[7]" LOC = P25; +NET "SNES_ADDR[8]" LOC = P27; +NET "SNES_ADDR[9]" LOC = P30; +NET "SNES_CPU_CLK" LOC = P1; +NET "SNES_CS" LOC = P5; +NET "SNES_READ" LOC = P2; +NET "SNES_REFRESH" LOC = P36; +NET "SNES_WRITE" LOC = P4; +NET "SPI_SS" LOC = P65; +NET "SRAM_ADDR[10]" LOC = P60; +NET "SRAM_ADDR[11]" LOC = P59; +NET "SRAM_ADDR[12]" LOC = P57; +NET "SRAM_ADDR[13]" LOC = P56; +NET "SRAM_ADDR[14]" LOC = P53; +NET "SRAM_ADDR[15]" LOC = P52; +NET "SRAM_ADDR[19]" LOC = P69; +NET "SRAM_ADDR[8]" LOC = P68; +NET "SRAM_ADDR[9]" LOC = P63; +NET "SRAM_CE2[0]" LOC = P77; +NET "SRAM_CE2[0]" IOSTANDARD = LVCMOS33; +NET "SRAM_CE2[1]" LOC = P76; +NET "SRAM_CE2[1]" IOSTANDARD = LVCMOS33; +NET "SRAM_CE2[2]" LOC = P74; +NET "SRAM_CE2[2]" IOSTANDARD = LVCMOS33; +NET "SRAM_CE2[3]" LOC = P73; +NET "SRAM_CE2[3]" IOSTANDARD = LVCMOS33; +NET "SRAM_WE" LOC = P70; +NET "SNES_DATABUS_DIR" LOC = P141; +NET "SNES_DATABUS_OE" LOC = P140; +NET "SNES_DATA[0]" LOC = P137; +NET "SNES_DATA[1]" LOC = P132; +NET "SNES_DATA[2]" LOC = P130; +NET "SNES_DATA[3]" LOC = P128; +NET "SNES_DATA[4]" LOC = P135; +NET "SNES_DATA[5]" LOC = P131; +NET "SNES_DATA[6]" LOC = P129; +NET "SNES_DATA[7]" LOC = P127; +NET "SNES_IRQ" LOC = P125; +NET "SPI_MISO" LOC = P123; +NET "SPI_MOSI" LOC = P122; +NET "SPI_SCK" LOC = P124; +NET "SRAM_ADDR[0]" LOC = P92; +NET "SRAM_ADDR[16]" LOC = P119; +NET "SRAM_ADDR[17]" LOC = P82; +NET "SRAM_ADDR[18]" LOC = P80; +NET "SRAM_ADDR[1]" LOC = P90; +NET "SRAM_ADDR[2]" LOC = P89; +NET "SRAM_ADDR[3]" LOC = P87; +NET "SRAM_ADDR[4]" LOC = P86; +NET "SRAM_ADDR[5]" LOC = P85; +NET "SRAM_ADDR[6]" LOC = P84; +NET "SRAM_ADDR[7]" LOC = P83; +NET "SRAM_BHE" LOC = P78; +NET "SRAM_BHE" IOSTANDARD = LVCMOS33; +NET "SRAM_BLE" LOC = P79; +NET "SRAM_BLE" IOSTANDARD = LVCMOS33; +NET "SRAM_DATA[0]" LOC = P95; +NET "SRAM_DATA[10]" LOC = P100; +NET "SRAM_DATA[11]" LOC = P103; +NET "SRAM_DATA[12]" LOC = P105; +NET "SRAM_DATA[13]" LOC = P108; +NET "SRAM_DATA[14]" LOC = P113; +NET "SRAM_DATA[15]" LOC = P118; +NET "SRAM_DATA[1]" LOC = P97; +NET "SRAM_DATA[2]" LOC = P99; +NET "SRAM_DATA[3]" LOC = P102; +NET "SRAM_DATA[4]" LOC = P104; +NET "SRAM_DATA[5]" LOC = P107; +NET "SRAM_DATA[6]" LOC = P112; +NET "SRAM_DATA[7]" LOC = P116; +NET "SRAM_DATA[8]" LOC = P96; +NET "SRAM_DATA[9]" LOC = P98; +NET "SRAM_OE" LOC = P93; +NET "CLKIN" IOSTANDARD = LVCMOS33; +NET "CLKIN" SLEW = FAST; +NET "CLKIN" PULLUP; diff --git a/verilog/sd2snes/main.v b/verilog/sd2snes/main.v index 1fc770b..6615848 100644 --- a/verilog/sd2snes/main.v +++ b/verilog/sd2snes/main.v @@ -19,73 +19,150 @@ // ////////////////////////////////////////////////////////////////////////////////// module main( + /* input clock */ input CLKIN, - input [2:0] MAPPER, + + /* SNES signals */ input [23:0] SNES_ADDR, input SNES_READ, input SNES_WRITE, input SNES_CS, inout [7:0] SNES_DATA, - inout [7:0] SRAM_DATA, - inout [7:0] AVR_DATA, - output [20:0] SRAM_ADDR, - output [3:0] ROM_SEL, - output SRAM_OE, - output SRAM_WE, + input SNES_CPU_CLK, + input SNES_REFRESH, + inout SNES_IRQ, output SNES_DATABUS_OE, output SNES_DATABUS_DIR, - input AVR_ADDR_RESET, - input AVR_ADDR_EN, - input AVR_READ, - input AVR_WRITE, - input AVR_NEXTADDR, + output IRQ_DIR, + + /* SRAM signals */ + inout [15:0] SRAM_DATA, + output [19:0] SRAM_ADDR, + output [3:0] SRAM_CE2, + output SRAM_OE, + output SRAM_WE, + output SRAM_BHE, + output SRAM_BLE, + + /* AVR signals */ + input SPI_MOSI, + output SPI_MISO, + input SPI_SS, + input SPI_SCK, input AVR_ENA, - input [1:0] AVR_BANK, - output MODE + + /* debug */ + output MODE, + output SPI_LSB ); +wire [7:0] spi_cmd_data; +wire [7:0] spi_param_data; +wire [7:0] spi_input_data; +wire [31:0] spi_byte_cnt; +wire [2:0] spi_bit_cnt; +wire [23:0] AVR_ADDR; +wire [7:0] avr_data_in; +wire [7:0] avr_data_out; +wire [7:0] AVR_IN_DATA; +wire [7:0] AVR_OUT_DATA; +wire [3:0] MAPPER; + +spi snes_spi(.clk(CLK), + .MOSI(SPI_MOSI), + .MISO(SPI_MISO), + .SSEL(SPI_SS), + .SCK(SPI_SCK), + .LED(SPI_LSB), + .cmd_ready(spi_cmd_ready), + .param_ready(spi_param_ready), + .cmd_data(spi_cmd_data), + .param_data(spi_param_data), + .endmessage(spi_endmessage), + .input_data(spi_input_data), + .byte_cnt(spi_byte_cnt), + .bit_cnt(spi_bit_cnt) +); + +avr_cmd snes_avr_cmd( + .clk(CLK), + .cmd_ready(spi_cmd_ready), + .param_ready(spi_param_ready), + .cmd_data(spi_cmd_data), + .param_data(spi_param_data), + .avr_mapper(MAPPER), + .avr_sram_size(SRAM_SIZE), + .avr_read(AVR_READ), + .avr_write(AVR_WRITE), + .avr_data_in(AVR_OUT_DATA), + .avr_data_out(AVR_IN_DATA), + .spi_byte_cnt(spi_byte_cnt), + .spi_bit_cnt(spi_bit_cnt), + .addr_out(AVR_ADDR) +); my_dcm snes_dcm(.CLKIN(CLKIN), .CLK2X(CLK), - .CLKFB(CLKFB) + .CLKFB(CLKFB), + .CLKFX(CLK2), + .CLK0(CLK0) ); - -assign CLKFB = CLK; - + +/*my_dcm snes_dcm2(.CLKIN(CLK), + .CLK2X(CLK2), + .CLKFB(CLKFB2), + .CLKFX(CLKFX2) + );*/ +assign CLKFB = CLK0; +//assign CLKFB2 = CLK2; + +wire SNES_RW; +reg SNES_READs; +reg SNES_WRITEs; +reg SNES_CSs; + +assign SNES_RW = (SNES_READs & SNES_WRITEs); + +always @(posedge CLK2) begin + SNES_READs <= SNES_READ; + SNES_WRITEs <= SNES_WRITE; + SNES_CSs <= SNES_CS; +end +reg ADDR_WRITE; + + address snes_addr( .CLK(CLK), .MAPPER(MAPPER), .SNES_ADDR(SNES_ADDR), // requested address from SNES - .SNES_CS(SNES_CS), // "CART" pin from SNES (active low) + .SNES_CS(SNES_CSs), // "CART" pin from SNES (active low) .SRAM_ADDR(SRAM_ADDR), // Address to request from SRAM (active low) - .ROM_SEL(ROM_SEL), // which SRAM unit to access - .AVR_ADDR_RESET(AVR_ADDR_RESET), // reset AVR sequence (active low) - .AVR_NEXTADDR(AVR_NEXTADDR), // next byte request from AVR + .ROM_SEL(SRAM_CE2), // which SRAM unit to access .AVR_ENA(AVR_ENA), // enable AVR mode (active low) - .AVR_ADDR_EN(AVR_ADDR_EN), // enable AVR address counter (active low) - .AVR_BANK(AVR_BANK), // which bank does the AVR want .MODE(MODE), // AVR(1) or SNES(0) ("bus phase") .IS_SAVERAM(IS_SAVERAM), .IS_ROM(IS_ROM), - .AVR_NEXTADDR_PREV(AVR_NEXTADDR_PREV), - .AVR_NEXTADDR_CURR(AVR_NEXTADDR_CURR) + .AVR_ADDR(AVR_ADDR), + .SRAM_BHE(SRAM_BHE), + .SRAM_BLE(SRAM_BLE), + .SRAM_ADDR0(SRAM_ADDR0) ); data snes_data(.CLK(CLK), - .SNES_READ(SNES_READ), - .SNES_WRITE(SNES_WRITE), + .SNES_READ(SNES_READs), + .SNES_WRITE(SNES_WRITEs), .AVR_READ(AVR_READ), .AVR_WRITE(AVR_WRITE), .SNES_DATA(SNES_DATA), .SRAM_DATA(SRAM_DATA), - .AVR_DATA(AVR_DATA), .MODE(MODE), .SNES_DATA_TO_MEM(SNES_DATA_TO_MEM), .AVR_DATA_TO_MEM(AVR_DATA_TO_MEM), .SRAM_DATA_TO_SNES_MEM(SRAM_DATA_TO_SNES_MEM), .SRAM_DATA_TO_AVR_MEM(SRAM_DATA_TO_AVR_MEM), .AVR_ENA(AVR_ENA), - .AVR_NEXTADDR_PREV(AVR_NEXTADDR_PREV), - .AVR_NEXTADDR_CURR(AVR_NEXTADDR_CURR) + .AVR_IN_DATA(AVR_IN_DATA), + .AVR_OUT_DATA(AVR_OUT_DATA), + .SRAM_ADDR0(SRAM_ADDR0) ); parameter MODE_SNES = 1'b0; @@ -121,19 +198,19 @@ reg SNES_READ_CYCLE; reg SNES_WRITE_CYCLE; reg AVR_READ_CYCLE; reg AVR_WRITE_CYCLE; +reg AVR_SPI_WRITEONCE; +reg AVR_SPI_READONCE; +reg AVR_SPI_WRITE; +reg AVR_SPI_READ; +reg AVR_SPI_ADDR_INCREMENT; +reg [7:0] AVR_DATA_IN; +reg [3:0] MAPPER_BUF; reg SNES_DATABUS_OE_BUF; reg SNES_DATABUS_DIR_BUF; -reg AVR_NEXTADDR_PREV_BUF; -reg AVR_NEXTADDR_CURR_BUF; - -wire SNES_RW; - assign MODE = !AVR_ENA ? MODE_AVR : MODE_ARRAY[STATEIDX]; -assign SNES_RW = (SNES_READ & SNES_WRITE); - initial begin CYCLE_RESET = 0; CYCLE_RESET_ACK = 0; @@ -147,16 +224,16 @@ initial begin AVR_READ_CYCLE = 1'b1; AVR_WRITE_CYCLE = 1'b1; - MODE_ARRAY = 8'b00011111; + MODE_ARRAY = 8'b00001111; - SRAM_WE_ARRAY[2'b00] = 8'b10010011; - SRAM_WE_ARRAY[2'b01] = 8'b10011111; - SRAM_WE_ARRAY[2'b10] = 8'b11110011; + SRAM_WE_ARRAY[2'b00] = 8'b10001000; + SRAM_WE_ARRAY[2'b01] = 8'b10001111; + SRAM_WE_ARRAY[2'b10] = 8'b11111000; SRAM_WE_ARRAY[2'b11] = 8'b11111111; SRAM_OE_ARRAY[2'b00] = 8'b11111111; - SRAM_OE_ARRAY[2'b01] = 8'b11100000; - SRAM_OE_ARRAY[2'b10] = 8'b00011111; + SRAM_OE_ARRAY[2'b01] = 8'b11110000; + SRAM_OE_ARRAY[2'b10] = 8'b00001111; SRAM_OE_ARRAY[2'b11] = 8'b00000000; SNES_DATA_TO_MEM_ARRAY[1'b0] = 8'b10000000; @@ -169,10 +246,7 @@ initial begin SRAM_DATA_TO_SNES_MEM_ARRAY[1'b1] = 8'b00100000; SRAM_DATA_TO_AVR_MEM_ARRAY[1'b0] = 8'b00000000; - SRAM_DATA_TO_AVR_MEM_ARRAY[1'b1] = 8'b00000010; - - AVR_NEXTADDR_PREV_BUF = 0; - AVR_NEXTADDR_CURR_BUF = 0; + SRAM_DATA_TO_AVR_MEM_ARRAY[1'b1] = 8'b00000001; end // falling edge of SNES /RD or /WR marks the beginning of a new cycle @@ -180,8 +254,8 @@ end // CPU cycle can be 6, 8 or 12 CLK cycles so we must satisfy // the minimum of 6 cycles to get everything done. -always @(posedge CLK) begin - if (!SNES_RW) begin +always @(posedge CLK2) begin + if (!SNES_RW /* || !AVR_ENA */) begin if (!CYCLE_RESET_ACK) CYCLE_RESET <= 1; else @@ -210,7 +284,7 @@ always @(posedge CLK) begin STATE_6: STATE <= STATE_7; STATE_7: begin - if (SNES_RW) // check for end of SNES cycle to avoid looping + if (SNES_RW /* || !AVR_ENA */) // check for end of SNES cycle to avoid looping CYCLE_RESET_ACK <= 0; // ready for new cycle STATE <= STATE_7; end @@ -220,12 +294,13 @@ always @(posedge CLK) begin end end -always @(posedge CLK) begin +always @(posedge CLK2) begin + case (STATE) STATE_7: begin - SNES_READ_CYCLE <= SNES_READ; - SNES_WRITE_CYCLE <= SNES_WRITE; + SNES_READ_CYCLE <= SNES_READs; + SNES_WRITE_CYCLE <= SNES_WRITEs; AVR_READ_CYCLE <= AVR_READ; AVR_WRITE_CYCLE <= AVR_WRITE; STATEIDX <= 7; @@ -262,8 +337,8 @@ end // When in AVR mode, enable SRAM_WE according to AVR programming // else enable SRAM_WE according to state&cycle -assign SRAM_WE = !AVR_ENA ? AVR_WRITE - : ((!IS_SAVERAM & !MODE) | SRAM_WE_ARRAY[{SNES_WRITE_CYCLE, AVR_WRITE_CYCLE}][STATEIDX]); +//assign SRAM_WE = !AVR_ENA ? AVR_WRITE +// : ((!IS_SAVERAM & !MODE) | SRAM_WE_ARRAY[{SNES_WRITE_CYCLE, AVR_WRITE_CYCLE}][STATEIDX]); // When in AVR mode, enable SRAM_OE whenever not writing // else enable SRAM_OE according to state&cycle @@ -271,24 +346,16 @@ assign SRAM_OE = !AVR_ENA ? AVR_READ : SRAM_OE_ARRAY[{SNES_WRITE_CYCLE, AVR_WRITE_CYCLE}][STATEIDX]; // dumb version -//assign SRAM_OE = !AVR_ENA ? AVR_READ : SNES_READ; -//assign SRAM_WE = !AVR_ENA ? AVR_WRITE : 1'b1; +//assign SRAM_OE = !AVR_ENA ? AVR_READ : SNES_READs; +assign SRAM_WE = !AVR_ENA ? AVR_WRITE : 1'b1; always @(posedge CLK) begin - SNES_DATABUS_OE_BUF <= SNES_CS | (SNES_READ & SNES_WRITE); + SNES_DATABUS_OE_BUF <= SNES_CSs | (SNES_READs & SNES_WRITEs); end -always @(posedge CLK) begin - AVR_NEXTADDR_PREV_BUF <= AVR_NEXTADDR_CURR_BUF; - AVR_NEXTADDR_CURR_BUF <= AVR_NEXTADDR; -end - -assign AVR_NEXTADDR_PREV = AVR_NEXTADDR_PREV_BUF; -assign AVR_NEXTADDR_CURR = AVR_NEXTADDR_CURR_BUF; - //assign SNES_DATABUS_OE = (!IS_SAVERAM & SNES_CS) | (SNES_READ & SNES_WRITE); -assign SNES_DATABUS_OE = (IS_ROM & SNES_CS) | (!IS_ROM & !IS_SAVERAM) | (SNES_READ & SNES_WRITE); -assign SNES_DATABUS_DIR = !SNES_WRITE ? 1'b0 : 1'b1; +assign SNES_DATABUS_OE = (IS_ROM & SNES_CSs) | (!IS_ROM & !IS_SAVERAM) | (SNES_READs & SNES_WRITEs); +assign SNES_DATABUS_DIR = !SNES_WRITEs ? 1'b0 : 1'b1; assign SNES_DATA_TO_MEM = SNES_DATA_TO_MEM_ARRAY[SNES_WRITE_CYCLE][STATEIDX]; assign AVR_DATA_TO_MEM = AVR_DATA_TO_MEM_ARRAY[AVR_WRITE_CYCLE][STATEIDX]; @@ -296,4 +363,7 @@ assign AVR_DATA_TO_MEM = AVR_DATA_TO_MEM_ARRAY[AVR_WRITE_CYCLE][STATEIDX]; assign SRAM_DATA_TO_SNES_MEM = SRAM_DATA_TO_SNES_MEM_ARRAY[SNES_WRITE_CYCLE][STATEIDX]; assign SRAM_DATA_TO_AVR_MEM = SRAM_DATA_TO_AVR_MEM_ARRAY[AVR_WRITE_CYCLE][STATEIDX]; +assign IRQ_DIR = 1'b0; +assign SNES_IRQ = 1'bZ; + endmodule diff --git a/verilog/sd2snes/sd2snes.xise b/verilog/sd2snes/sd2snes.xise index 368506e..6816022 100644 --- a/verilog/sd2snes/sd2snes.xise +++ b/verilog/sd2snes/sd2snes.xise @@ -30,19 +30,41 @@ - + + + + + + + + + - + + + + + + + + + + + + + + + @@ -50,17 +72,17 @@ - + - + - - + + @@ -69,7 +91,9 @@ - + + + diff --git a/verilog/sd2snes/tf_main.v b/verilog/sd2snes/tf_main.v index ad7076a..14cc2fa 100644 --- a/verilog/sd2snes/tf_main.v +++ b/verilog/sd2snes/tf_main.v @@ -31,13 +31,7 @@ module tf_main; reg SNES_READ; reg SNES_WRITE; reg SNES_CS; - reg AVR_ADDR_RESET; - reg AVR_WRITE; - reg AVR_READ; - reg AVR_NEXTADDR; reg AVR_ENA; - reg [1:0] AVR_BANK; - reg AVR_ADDR_EN; // Outputs wire [20:0] SRAM_ADDR; @@ -56,6 +50,79 @@ module tf_main; reg [7:0] SRAM_DATA_BUF; reg [7:0] SNES_DATA_BUF; + SCK = 0; + MOSI = 0; + SSEL = 1; + input_data = 0; + + // Wait 100 ns for global reset to finish + #100; + + // Add stimulus here + SSEL = 0; + MOSI=1; + #100 SCK=1; + #100 SCK=0; + MOSI=0; + #100 SCK=1; + #100 SCK=0; + MOSI=0; + #100 SCK=1; + #100 SCK=0; + MOSI=1; + #100 SCK=1; + #100 SCK=0; + MOSI=0; + #100 SCK=1; + #100 SCK=0; + #100 SCK=1; + #100 SCK=0; + #100 SCK=1; + #100 SCK=0; + #100 SCK=1; + #100 SCK=0; + #200; + #100 SCK=1; + #100 SCK=0; + #100 SCK=1; + #100 SCK=0; + #100 SCK=1; + #100 SCK=0; + #100 SCK=1; + #100 SCK=0; + #100 SCK=1; + #100 SCK=0; + #100 SCK=1; + #100 SCK=0; + #100 SCK=1; + #100 SCK=0; + #100 SCK=1; + #100 SCK=0; + #200; + #100 SCK=1; + #100 SCK=0; + #100 SCK=1; + #100 SCK=0; + #100 SCK=1; + #100 SCK=0; + #100 SCK=1; + #100 SCK=0; + #100 SCK=1; + #100 SCK=0; + #100 SCK=1; + #100 SCK=0; + #100 SCK=1; + #100 SCK=0; + #100 SCK=1; + #100 SCK=0; + #100 SSEL=1; + + + end + always begin + #19 clk = ~clk; + end + // Instantiate the Unit Under Test (UUT) main uut ( .CLKIN(CLK), @@ -66,18 +133,11 @@ module tf_main; .SNES_CS(SNES_CS), .SNES_DATA(SNES_DATA), .SRAM_DATA(SRAM_DATA), - .AVR_DATA(AVR_DATA), .SRAM_ADDR(SRAM_ADDR), .ROM_SEL(ROM_SEL), .SRAM_OE(SRAM_OE), .SRAM_WE(SRAM_WE), - .AVR_ADDR_RESET(AVR_ADDR_RESET), - .AVR_WRITE(AVR_WRITE), - .AVR_NEXTADDR(AVR_NEXTADDR), .AVR_ENA(AVR_ENA), - .AVR_BANK(AVR_BANK), - .AVR_READ(AVR_READ), - .AVR_ADDR_EN(AVR_ADDR_EN), .SNES_DATABUS_OE(SNES_DATABUS_OE), .SNES_DATABUS_DIR(SNES_DATABUS_DIR), .MODE(MODE) @@ -92,24 +152,10 @@ module tf_main; SNES_READ = 1; SNES_WRITE = 1; SNES_CS = 0; - AVR_ADDR_RESET = 1; - AVR_WRITE = 1; - AVR_READ = 0; - AVR_NEXTADDR = 0; AVR_ENA = 1; - AVR_BANK = 0; - AVR_ADDR_EN = 0; SRAM_DATA_BUF = 8'hff; // Wait for global reset to finish #276; - #276 AVR_NEXTADDR <= ~AVR_NEXTADDR; - #276 AVR_NEXTADDR <= ~AVR_NEXTADDR; - #276 AVR_NEXTADDR <= ~AVR_NEXTADDR; - #276 AVR_NEXTADDR <= ~AVR_NEXTADDR; - #276 AVR_NEXTADDR <= ~AVR_NEXTADDR; - #276 AVR_NEXTADDR <= ~AVR_NEXTADDR; - #276 AVR_NEXTADDR <= ~AVR_NEXTADDR; - #276 AVR_NEXTADDR <= ~AVR_NEXTADDR; SNES_ADDR <= 24'h123456; SNES_READ <= 0; #176; @@ -119,7 +165,6 @@ module tf_main; #176; SNES_WRITE <= 1; #100; - AVR_WRITE <= 0; SNES_READ <= 0; #276; // AVR_READ <= 1; @@ -129,7 +174,6 @@ module tf_main; always #23 CLK <= ~CLK; // always begin -// #234 AVR_NEXTADDR <= ~AVR_NEXTADDR; // end endmodule