diff --git a/src/config.h b/src/config.h
index df06479..29f8e53 100644
--- a/src/config.h
+++ b/src/config.h
@@ -62,10 +62,8 @@
# error Unknown chip!
# endif
# define SD_CHANGE_VECT INT0_vect
-# define SDCARD_WP (0)
-# define SDCARD_WP_SETUP() do { DDRB &= ~ _BV(PB1); PORTB |= _BV(PB1); } while(0)
-// # define SDCARD_WP (PINB & _BV(PB1))
-// # define SDCARD_WP_SETUP() do { DDRB &= ~ _BV(PB1); PORTB |= _BV(PB1); } while(0)
+# define SDCARD_WP (PINA & _BV(PA0))
+# define SDCARD_WP_SETUP() do { DDRA &= ~ _BV(PA0); PORTA |= _BV(PA0); } while(0)
# define SD_CHANGE_ICR MCUCR
# define SD_SUPPLY_VOLTAGE (1L<<21)
# define DEVICE_SELECT (8+!(PINA & _BV(PA2))+2*!(PINA & _BV(PA3)))
diff --git a/verilog/sd2snes/dcm.v b/verilog/sd2snes/dcm.v
index 7fbd89e..1df56ef 100644
--- a/verilog/sd2snes/dcm.v
+++ b/verilog/sd2snes/dcm.v
@@ -21,12 +21,9 @@
module my_dcm (
input CLKIN,
output CLKFX,
- output CLK2X,
output LOCKED,
- input CLKFB,
input RST,
- output[7:0] STATUS,
- output CLK0
+ output[7:0] STATUS
);
// DCM: Digital Clock Manager Circuit
@@ -40,16 +37,16 @@ module my_dcm (
.CLKFX_DIVIDE(1), // Can be any integer from 1 to 32
.CLKFX_MULTIPLY(7), // Can be any integer from 2 to 32
.CLKIN_DIVIDE_BY_2("FALSE"), // TRUE/FALSE to enable CLKIN divide by two feature
- .CLKIN_PERIOD(47.000), // Specify period of input clock
+ .CLKIN_PERIOD(81.380), // Specify period of input clock
.CLKOUT_PHASE_SHIFT("NONE"), // Specify phase shift of NONE, FIXED or VARIABLE
- .CLK_FEEDBACK("1X"), // Specify clock feedback of NONE, 1X or 2X
+ .CLK_FEEDBACK("NONE"), // 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
.DLL_FREQUENCY_MODE("LOW"), // HIGH or LOW frequency mode for DLL
.DUTY_CYCLE_CORRECTION("TRUE"), // Duty cycle correction, TRUE or FALSE
.FACTORY_JF(16'hFFFF), // FACTORY JF values
-// .LOC("X0Y0"),
+// .LOC("DCM_X0Y0"),
.PHASE_SHIFT(0), // Amount of fixed phase shift from -255 to 255
.STARTUP_WAIT("TRUE") // Delay configuration DONE until DCM LOCK, TRUE/FALSE
) DCM_inst (
diff --git a/verilog/sd2snes/main.ucf b/verilog/sd2snes/main.ucf
index f87e27a..5c032a8 100644
--- a/verilog/sd2snes/main.ucf
+++ b/verilog/sd2snes/main.ucf
@@ -180,55 +180,7 @@ NET "SRAM_DATA[7]" LOC = P116;
NET "SRAM_DATA[8]" LOC = P96;
NET "SRAM_DATA[9]" LOC = P98;
NET "SRAM_OE" LOC = P93;
-TIMESPEC TS_test = FROM FFS TO FFS 10 ns;
-NET "SNES_ADDR<0>" MAXDELAY = 10 ns;
-NET "SNES_ADDR<0>" MAXSKEW = 5 ns;
-NET "SNES_ADDR<1>" MAXDELAY = 10 ns;
-NET "SNES_ADDR<1>" MAXSKEW = 5 ns;
-NET "SNES_ADDR<2>" MAXDELAY = 10 ns;
-NET "SNES_ADDR<2>" MAXSKEW = 5 ns;
-NET "SNES_ADDR<3>" MAXDELAY = 10 ns;
-NET "SNES_ADDR<3>" MAXSKEW = 5 ns;
-NET "SNES_ADDR<4>" MAXDELAY = 10 ns;
-NET "SNES_ADDR<4>" MAXSKEW = 5 ns;
-NET "SNES_ADDR<5>" MAXDELAY = 10 ns;
-NET "SNES_ADDR<5>" MAXSKEW = 5 ns;
-NET "SNES_ADDR<6>" MAXDELAY = 10 ns;
-NET "SNES_ADDR<6>" MAXSKEW = 5 ns;
-NET "SNES_ADDR<7>" MAXDELAY = 10 ns;
-NET "SNES_ADDR<7>" MAXSKEW = 5 ns;
-NET "SNES_ADDR<8>" MAXDELAY = 10 ns;
-NET "SNES_ADDR<8>" MAXSKEW = 5 ns;
-NET "SNES_ADDR<9>" MAXDELAY = 10 ns;
-NET "SNES_ADDR<9>" MAXSKEW = 5 ns;
-NET "SNES_ADDR<10>" MAXDELAY = 10 ns;
-NET "SNES_ADDR<10>" MAXSKEW = 5 ns;
-NET "SNES_ADDR<11>" MAXDELAY = 10 ns;
-NET "SNES_ADDR<11>" MAXSKEW = 5 ns;
-NET "SNES_ADDR<12>" MAXDELAY = 10 ns;
-NET "SNES_ADDR<12>" MAXSKEW = 5 ns;
-NET "SNES_ADDR<13>" MAXDELAY = 10 ns;
-NET "SNES_ADDR<13>" MAXSKEW = 5 ns;
-NET "SNES_ADDR<14>" MAXDELAY = 10 ns;
-NET "SNES_ADDR<14>" MAXSKEW = 5 ns;
-NET "SNES_ADDR<15>" MAXDELAY = 10 ns;
-NET "SNES_ADDR<15>" MAXSKEW = 5 ns;
-NET "SNES_ADDR<16>" MAXDELAY = 10 ns;
-NET "SNES_ADDR<16>" MAXSKEW = 5 ns;
-NET "SNES_ADDR<17>" MAXDELAY = 10 ns;
-NET "SNES_ADDR<17>" MAXSKEW = 5 ns;
-NET "SNES_ADDR<18>" MAXDELAY = 10 ns;
-NET "SNES_ADDR<18>" MAXSKEW = 5 ns;
-NET "SNES_ADDR<19>" MAXDELAY = 10 ns;
-NET "SNES_ADDR<19>" MAXSKEW = 5 ns;
-NET "SNES_ADDR<20>" MAXDELAY = 10 ns;
-NET "SNES_ADDR<20>" MAXSKEW = 5 ns;
-NET "SNES_ADDR<21>" MAXDELAY = 10 ns;
-NET "SNES_ADDR<21>" MAXSKEW = 5 ns;
-NET "SNES_ADDR<22>" MAXDELAY = 10 ns;
-NET "SNES_ADDR<22>" MAXSKEW = 5 ns;
-NET "SNES_ADDR<23>" MAXDELAY = 10 ns;
-NET "SNES_ADDR<23>" MAXSKEW = 5 ns;
+
NET "CLKIN" IOSTANDARD = LVCMOS33;
NET "CLKIN" PULLUP;
NET "SPI_SS" IOSTANDARD = LVCMOS33;
diff --git a/verilog/sd2snes/main.v b/verilog/sd2snes/main.v
index 699132f..3138e0b 100644
--- a/verilog/sd2snes/main.v
+++ b/verilog/sd2snes/main.v
@@ -116,17 +116,16 @@ my_dcm snes_dcm(.CLKIN(CLKIN),
.CLKFX(CLK2),
.LOCKED(DCM_LOCKED),
.RST(DCM_RST),
- .STATUS(DCM_STATUS),
- .CLKFB(CLKFB),
- .CLK0(CLK0)
+ .STATUS(DCM_STATUS)
);
+
+assign DCM_RST=0;
+/*
dcm_srl16 snes_dcm_resetter(.CLK(CLKIN),
.Q(DCM_RST)
);
-
-assign CLKFB = CLK0;
-
+*/
//wire DCM_FX_STOPPED = DCM_STATUS[2];
//always @(posedge CLKIN) begin
// if(DCM_FX_STOPPED)
diff --git a/verilog/sd2snes/sd2snes.xise b/verilog/sd2snes/sd2snes.xise
index ec3d7c8..86f2ad4 100644
--- a/verilog/sd2snes/sd2snes.xise
+++ b/verilog/sd2snes/sd2snes.xise
@@ -89,16 +89,18 @@
-
+
+
+
-
+
@@ -110,6 +112,7 @@
+