This commit is contained in:
Zane Kaminski 2021-02-17 19:29:24 -05:00
parent 9f0867fe56
commit db594211fa
38 changed files with 512571 additions and 153636 deletions

3429
Docs.sch

File diff suppressed because it is too large Load Diff

View File

@ -1 +1,50 @@
Recovery
GR8RAM/LibraryCard Slinky memory map
-----------------------------
1 FF FFFF | |
. .. .... | LibCrd Sect. Cache (8 MB) |
1 80 0000 | |
-----------------------------
1 7F FFFF | |
. .. .... | reserved (6 MB) |
1 20 0000 | |
-----------------------------
1 1F FFFF | |
. .. .... | LibCrd registers (1 MB) |
1 10 0000 | |
-----------------------------
1 0F FFFF | |
. .. .... | 256x IOSTRB area (512 kB) |
1 08 0000 | |
-----------------------------
1 07 FFFF | |
. .. .... | 256x IOSEL area (512 kB) |
1 00 0000 | |
-----------------------------
0 FF 0000 | |
. .. .... | RAMFactor Memory (16 MB) |
0 00 0000 | |
-----------------------------
Library Card register space
-----------------------------
1 7F FFFF | |
. .. .... | reserved (768 kB) |
1 74 0000 | |
-----------------------------
1 73 FFFF | |
. .. .... | Response B (64 kB) |
1 73 0000 | |
-----------------------------
1 72 FFFF | |
. .. .... | Command B (64 kB) |
1 72 0000 | |
-----------------------------
1 71 FFFF | |
. .. .... | Response A (64 kB) |
1 71 0000 | |
-----------------------------
1 70 FFFF | |
. .. .... | Command A (64 kB) |
1 70 0000 | |
-----------------------------

BIN
Documentation/Placement.pdf Normal file

Binary file not shown.

BIN
Documentation/Schematic.pdf Normal file

Binary file not shown.

View File

@ -246,28 +246,6 @@ X A 2 100 0 70 L 50 50 1 1 P
ENDDRAW
ENDDEF
#
# Device_D_Small_ALT
#
DEF Device_D_Small_ALT D 0 10 N N 1 F N
F0 "D" -50 80 50 H V L CNN
F1 "Device_D_Small_ALT" -150 -80 50 H V L CNN
F2 "" 0 0 50 V I C CNN
F3 "" 0 0 50 V I C CNN
$FPLIST
TO-???*
*_Diode_*
*SingleDiode*
D_*
$ENDFPLIST
DRAW
P 2 0 1 0 -30 -40 -30 40 N
P 2 0 1 0 -30 0 30 0 N
P 4 0 1 0 30 -40 -30 0 30 40 30 -40 F
X K 1 -100 0 70 R 50 50 1 1 P
X A 2 100 0 70 L 50 50 1 1 P
ENDDRAW
ENDDEF
#
# Device_D_Zener_Small_ALT
#
DEF Device_D_Zener_Small_ALT D 0 10 N N 1 F N
@ -384,42 +362,16 @@ X ~ 2 0 -100 30 U 50 50 1 1 P
ENDDRAW
ENDDEF
#
# GW_Logic_74125
# GW_Logic_741G125GW
#
DEF GW_Logic_74125 U 0 40 Y Y 1 F N
F0 "U" 0 450 50 H V C CNN
F1 "GW_Logic_74125" 0 -450 50 H V C CNN
F2 "stdpads:TSSOP-14_4.4x5mm_P0.65mm" 0 -500 50 H I C TNN
F3 "" 0 -50 60 H I C CNN
DRAW
S -200 400 200 -400 0 1 10 f
X 1~OE~ 1 -400 300 200 R 50 50 1 1 I
X 3~OE~ 10 400 -100 200 L 50 50 1 1 I
X 4Y 11 400 0 200 L 50 50 1 1 T
X 4A 12 400 100 200 L 50 50 1 1 I
X 4~OE~ 13 400 200 200 L 50 50 1 1 I
X Vcc 14 400 300 200 L 50 50 1 1 W
X 1A 2 -400 200 200 R 50 50 1 1 I
X 1Y 3 -400 100 200 R 50 50 1 1 T
X 2~OE~ 4 -400 0 200 R 50 50 1 1 I
X 2A 5 -400 -100 200 R 50 50 1 1 I
X 2Y 6 -400 -200 200 R 50 50 1 1 T
X GND 7 -400 -300 200 R 50 50 1 1 W
X 3Y 8 400 -300 200 L 50 50 1 1 T
X 3A 9 400 -200 200 L 50 50 1 1 I
ENDDRAW
ENDDEF
#
# GW_Logic_741G04GW
#
DEF GW_Logic_741G04GW U 0 40 Y Y 1 F N
DEF GW_Logic_741G125GW U 0 40 Y Y 1 F N
F0 "U" 0 250 50 H V C CNN
F1 "GW_Logic_741G04GW" 0 -250 50 H V C CNN
F1 "GW_Logic_741G125GW" 0 -250 50 H V C CNN
F2 "stdpads:SOT-353" 0 -300 50 H I C TNN
F3 "" 0 -200 60 H I C CNN
DRAW
S 200 -200 -200 200 0 1 10 f
X NC 1 -350 100 150 R 50 50 1 1 N
X ~OE~ 1 -400 100 200 R 50 50 1 1 I
X A 2 -400 0 200 R 50 50 1 1 I
X GND 3 -400 -100 200 R 50 50 1 1 W
X Y 4 400 -100 200 L 50 50 1 1 O
@ -477,10 +429,10 @@ ENDDEF
#
# GW_PLD_EPM240T100
#
DEF GW_PLD_EPM240T100 U 0 40 Y Y 1 L N
DEF GW_PLD_EPM240T100 U 0 40 Y Y 1 F N
F0 "U" 0 50 50 H V C CNN
F1 "GW_PLD_EPM240T100" 0 -50 50 H V C CNN
F2 "Package_QFP:LQFP-100_14x14mm_P0.5mm" 0 -100 20 H I C CNN
F2 "stdpads:TQFP-100_14x14mm_P0.5mm" 0 -100 20 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
*QFP*P0.5mm*
@ -605,66 +557,6 @@ X Vin 3 -450 100 200 R 50 50 1 1 W
ENDDRAW
ENDDEF
#
# GW_RAM_Flash-4Mx16-TSOP1-48
#
DEF GW_RAM_Flash-4Mx16-TSOP1-48 U 0 20 Y Y 1 F N
F0 "U" 0 1050 50 H V C CNN
F1 "GW_RAM_Flash-4Mx16-TSOP1-48" 0 0 50 V V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
DRAW
S -300 1000 300 -1700 0 1 10 f
X GND 27 -500 -1600 200 R 50 50 0 0 W
X VCC 37 -500 900 200 R 50 50 0 0 W
X A15 1 -500 -800 200 R 50 50 1 1 I
X A20 10 -500 -1300 200 R 50 50 1 1 I
X ~WE~ 11 500 -1500 200 L 50 50 1 1 I L
X ~RESET~ 12 500 -800 200 L 50 50 1 1 I L
X A21 13 -500 -1400 200 R 50 50 1 1 I
X ~WP~ 14 500 -1100 200 L 50 50 1 1 I L
X ~BY~ 15 500 -1200 200 L 50 50 1 1 I L
X A18 16 -500 -1100 200 R 50 50 1 1 I
X A17 17 -500 -1000 200 R 50 50 1 1 I
X A7 18 -500 0 200 R 50 50 1 1 I
X A6 19 -500 100 200 R 50 50 1 1 I
X A14 2 -500 -700 200 R 50 50 1 1 I
X A5 20 -500 200 200 R 50 50 1 1 I
X A4 21 -500 300 200 R 50 50 1 1 I
X A3 22 -500 400 200 R 50 50 1 1 I
X A2 23 -500 500 200 R 50 50 1 1 I
X A1 24 -500 600 200 R 50 50 1 1 I
X A0 25 -500 700 200 R 50 50 1 1 I
X ~CS~ 26 500 -1400 200 L 50 50 1 1 I L
X ~OE~ 28 500 -1600 200 L 50 50 1 1 I L
X D0 29 500 900 200 L 50 50 1 1 B
X A13 3 -500 -600 200 R 50 50 1 1 I
X D8 30 500 100 200 L 50 50 1 1 B
X D1 31 500 800 200 L 50 50 1 1 B
X D9 32 500 0 200 L 50 50 1 1 B
X D2 33 500 700 200 L 50 50 1 1 B
X D10 34 500 -100 200 L 50 50 1 1 B
X D3 35 500 600 200 L 50 50 1 1 B
X D11 36 500 -200 200 L 50 50 1 1 B
X D4 38 500 500 200 L 50 50 1 1 B
X D12 39 500 -300 200 L 50 50 1 1 B
X A12 4 -500 -500 200 R 50 50 1 1 I
X D5 40 500 400 200 L 50 50 1 1 B
X D13 41 500 -400 200 L 50 50 1 1 B
X D6 42 500 300 200 L 50 50 1 1 B
X D14 43 500 -500 200 L 50 50 1 1 B
X D7 44 500 200 200 L 50 50 1 1 B
X D15/A22 45 500 -600 200 L 50 50 1 1 B
X GND 46 -500 -1600 200 R 50 50 1 1 W
X ~BYTE~ 47 500 -900 200 L 50 50 1 1 I L
X A16 48 -500 -900 200 R 50 50 1 1 I
X A11 5 -500 -400 200 R 50 50 1 1 I
X A10 6 -500 -300 200 R 50 50 1 1 I
X A9 7 -500 -200 200 R 50 50 1 1 I
X A8 8 -500 -100 200 R 50 50 1 1 I
X A19 9 -500 -1200 200 R 50 50 1 1 I
ENDDRAW
ENDDEF
#
# GW_RAM_SDRAM-16Mx16-TSOP2-54
#
DEF GW_RAM_SDRAM-16Mx16-TSOP2-54 U 0 40 Y Y 1 F N
@ -730,6 +622,26 @@ X VDDQ 9 -500 900 200 R 50 50 1 1 W N
ENDDRAW
ENDDEF
#
# GW_RAM_SPIFlash-SO-8
#
DEF GW_RAM_SPIFlash-SO-8 U 0 40 Y Y 1 F N
F0 "U" 0 350 50 H V C CNN
F1 "GW_RAM_SPIFlash-SO-8" 0 -250 50 H V C CNN
F2 "stdpads:Hybrid_SPIFlash_SOIC-8_SOIC-16" 0 -300 50 H I C TNN
F3 "" 0 0 50 H I C TNN
DRAW
S -350 300 350 -200 0 1 10 f
X ~CS~ 1 -550 200 200 R 50 50 1 1 I
X DO/IO1 2 -550 100 200 R 50 50 1 1 B
X ~WP~/IO2 3 -550 0 200 R 50 50 1 1 B
X GND 4 -550 -100 200 R 50 50 1 1 W
X DI/IO0 5 550 -100 200 L 50 50 1 1 B
X CLK 6 550 0 200 L 50 50 1 1 I
X ~HLD~/IO3 7 550 100 200 L 50 50 1 1 B
X Vcc 8 550 200 200 L 50 50 1 1 W
ENDDRAW
ENDDEF
#
# Mechanical_Fiducial
#
DEF Mechanical_Fiducial FID 0 20 Y Y 1 F N
@ -745,6 +657,21 @@ C 0 0 50 0 1 20 f
ENDDRAW
ENDDEF
#
# Mechanical_MountingHole
#
DEF Mechanical_MountingHole H 0 40 Y Y 1 F N
F0 "H" 0 200 50 H V C CNN
F1 "Mechanical_MountingHole" 0 125 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
MountingHole*
$ENDFPLIST
DRAW
C 0 0 50 0 1 50 N
ENDDRAW
ENDDEF
#
# Mechanical_MountingHole_Pad
#
DEF Mechanical_MountingHole_Pad H 0 40 N N 1 F N

Binary file not shown.

BIN
GR8RAM.4205A-gerberlite.zip Normal file

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
update=Tuesday, September 29, 2020 at 09:10:17 PM
update=Wednesday, January 06, 2021 at 01:09:33 AM
version=1
last_client=kicad
[general]
@ -12,16 +12,6 @@ NetIExt=net
version=1
LibDir=
[eeschema/libraries]
[schematic_editor]
version=1
PageLayoutDescrFile=
PlotDirectoryName=
SubpartIdSeparator=0
SubpartFirstId=65
NetFmtName=Pcbnew
SpiceAjustPassiveValues=0
LabSize=50
ERC_TestSimilarLabels=1
[pcbnew]
version=1
PageLayoutDescrFile=
@ -267,3 +257,13 @@ uViaDrill=0.1
dPairWidth=0.2
dPairGap=0.25
dPairViaGap=0.25
[schematic_editor]
version=1
PageLayoutDescrFile=
PlotDirectoryName=
SubpartIdSeparator=0
SubpartFirstId=65
NetFmtName=Pcbnew
SpiceAjustPassiveValues=0
LabSize=50
ERC_TestSimilarLabels=1

5485
GR8RAM.sch

File diff suppressed because it is too large Load Diff

View File

@ -1,599 +1,374 @@
module GR8RAM(C25M, PHI1, nIOSEL, nDEVSEL, nIOSTRB,
RA, RB6, nRWE, nROE, nAOE, Adir, nRCS,
RD, nDOE, Ddir,
SBA, SA, nSCS, nRAS, nCAS, nSWE, DQML, DQMH, SCKE, SD,
nRST, nPreBOD,
module GR8RAM(C25M, PHI0, nPBOD, nBOD, nRES,
nIOSEL, nDEVSEL, nIOSTRB,
RA, nWEin, nWEout, Adir,
RD, Ddir,
DMAin, DMAout, INTin, INTout,
nIRQout, nINHout, nDMAout, nNMIout);
nDMA, nRDY, nNMI, nIRQ, nINH, nRESout
SBA, SA, nRCS, nRAS, nCAS, nSWE, DQML, DQMH, RCKE, SD,
nFCS, FCK, MISO, MOSI);
/* Clock inputs */
input C25M, PHI1;
wire PHI0 = ~PHI1;
/* Reset inputs */
input nRST, nPreBOD;
reg nRSTr0;
/* Clock signals */
input C25M, PHI0;
reg PHI0r1, PHI0r2, PHI0r3;
always @(negedge C25M) begin PHI0r1 <= PHI0; end
always @(posedge C25M) begin
nRSTr0 <= nRST;
PHI0r2 <= PHI0r1; PHI0r3 <= PHI0r2;
end
/* Select inputs */
/* Reset/brown-out detect inputs */
input nRES, nPBOD, nBOD;
reg PBODr1, PBODr2, BODr1, BODr2, RESr1, RESr2;
always @(negedge C25M) begin
PBODr1 <= ~nPBOD; BODr1 <= ~nBOD; RESr1 <= ~nRES;
end
always @(posedge C25M) begin
PBODr2 <= PBODr1; BODr2 <= BODr1; RESr2 <= RESr1;
end
/* Apple IO area select signals */
input nIOSEL, nDEVSEL, nIOSTRB;
/* Synchronized select inputs */
reg nDEVSELr0, nDEVSELr1;
reg nIOSELr0;
reg nIOSTRBr0;
always @(posedge C25M) begin
nDEVSELr0 <= nDEVSEL;
nDEVSELr1 <= nDEVSELr0;
nIOSELr0 <= nIOSEL;
nIOSTRBr0 <= nIOSTRB;
end
/* DEVSEL-based state counter */
wire [9:0] DEVSELe = {DEVSELer[9:1], nDEVSELr1 && ~nDEVSELr0 && nRSTr0}
reg [9:1] DEVSELer;
always @(posedge C25M) begin
DEVSELer[9:1] <= DEVSELe[8:0];
end
reg DEVSELr1, DEVSELr2;
always @(negedge C25M) begin DEVSELr1 <= ~nDEVSEL; end
always @(posedge C25M) begin DEVSELr2 <= DEVSELr1; end
/* Flash Control */
output nRCS = ~((~nIOSEL || (~nIOSTRB && IOROMEN)) && CSDBEN && nRST);
output nROE = ~nRWE;
/* 6502/Flash Data Bus */
inout RD = RDOE ? Rdout : 8'bZ;
wire RDOE = ~nDEVSEL && nRST;
wire RDout =
AddrLSelA ? Addr[7:0] :
AddrMSelA ? Addr[15:8] :
AddrHSelA ? Addr[23:16] :
DataSelA ? Addr==0 ? Data0[7:0] : Data[7:0] :
8'h57;
output nDOE = ~((~nDEVSEL || ~nIOSEL || (~nIOSTRB && IOROMEN)) && CSDBEN && nRST);
output Ddir = ~nRWE;
/* Data bus / ROM chip select delay */
reg CSDBEN = 0;
always @(posedge C25M, negedge nRST) begin
if (~nRST) CSDBEN <= 1'b0;
else CSDBEN <= ~nDEVSELr0 || ~nIOSELr0 || ~nIOSTRBr0;
end
/* IOROMEN control */
wire IOROMEN = IOROMEN0 ^ IOROMEN1;
reg IOROMEN0 = 0;
reg IOROMEN1 = 0;
always @(negedge nIOSEL, negedge nRST) begin
if (~nRST) IOROMEN0 <= 1'b0; // On reset, set both to 0; 0 ^ 0 == 0
else IOROMEN0 <= ~IOROMEN1; // Enable; X ^ ~X == 1
end
always @(negedge nIOSTRB, negedge nRST) begin
if (~nRST) IOROMEN1 <= 1'b0; // On reset, set both to 0; 0 ^ 0 == 0
else if (RA[10:0] == 11'h7FF) IOROMEN1 <= IOROMEN0; // Disable; X^X==0
end
/* 6502/Flash Address Bus */
input [15:0] RA;
input nRWE;
output nAOE = 0;
output Adir = 1;
reg [3:0] RAr;
reg nRWEr;
always @(posedge nDEVSEL) begin
// Latch RA and nRWE at end of DEVSEL access
RAr[3:0] <= RA[3:0];
nRWEr <= nRWE;
end
/* Register Select Signals */
wire AddrLSelA = RA[3:0] == 4'h0;
wire AddrMSelA = RA[3:0] == 4'h1;
wire AddrHSelA = RA[3:0] == 4'h2;
wire DataSelA = RA[3:0] == 4'h3;
wire DMAAddrLSelA = RA[3:0] == 4'h4;
wire DMAAddrHSelA = RA[3:0] == 4'h5;
wire DMALenLSelA = RA[3:0] == 4'h6;
wire DMALenHSelA = RA[3:0] == 4'h7;
wire MagicSelA = RA[3:0] == 4'h8;
wire CfgSelA = RA[3:0] == 4'h9;
wire RAMMaskSelA = RA[3:0] == 4'hB;
wire BankHSelA = RA[3:0] == 4'hE;
wire BankLSelA = RA[3:0] == 4'hF;
/* SDRAM Address / Flash Bank Bus */
output [1:0] SBA = SAmux ? SBAreg[1:0] :
~nIOSTRB ? {
BankC8[4], // SBA0, Bank4
BankC8[2] // SBA1, Bank2
} : { // IOSEL
1'b1, // SBA0, Bank4
1'b1 // SBA1, Bank2
};
output [12:0] SA = SAmux ? SAreg[12:0] :
~nIOSTRB ? {
SAreg[0], // SA0
BankC8[11], // SA1, Bank11
BankC8[8], // SA2, Bank8
SAreg[3], // SA3
SAreg[4], // SA4
BankC8[7], // SA5, Bank7
SAreg[6], // SA6
BankC8[10], // SA7, Bank10
BankC8[9], // SA8, Bank9
BankC8[1], // SA9, Bank1
BankC8[0], // SA10, Bank0
BankC8[3], // SA11, Bank3
BankC8[5] ^ BankCX[5] // SA12, Bank5
} : { // IOSEL
SAreg[0], // SA0
1'b0, // SA1, Bank11
1'b0, // SA2, Bank8
SAreg[3], // SA3
SAreg[4], // SA4
1'b1, // SA5, Bank7
SAreg[6], // SA6
1'b0, // SA7, Bank10
1'b0, // SA8, Bank9
1'b1, // SA9, Bank1
1'b1, // SA10, Bank0
1'b1, // SA11, Bank3
BankCX[5] // SA12, Bank5
};
output RB6 = ~nIOSTRB ? BankC8[6] ^ BankCX[6] : BankCX[6];
reg SAmux = 1'b0;
reg [1:0] SBAreg;
reg [12:0] SAreg;
/* SDRAM Data Bus */
inout [7:0] SD = SDOE ? WRD : 8'bZ;
reg SDOE = 0;
reg [7:0] WRD = 0;
always @(posedge nDEVSEL) begin
WRD[7:0] <= RD[7:0];
if (nRSTr0 && DataSelA && ~nRWE && Addr==0) Data0[7:0] <= RD[7:0];
end
/* SDRAM Control Bus */
output reg nSCS = 1;
output reg nRAS = 1;
output reg nCAS = 1;
output reg nSWE = 1;
output reg DQML = 1;
output reg DQMH = 1;
output reg SCKE = 1;
/* INT/DMA in/out */
input DMAin;
input INTin;
/* DMA/IRQ daisy chain */
input DMAin, INTin;
output DMAout = DMAin;
output INTout = INTin;
/* IRQ, NMI, DMA, INH outputs (open-drain is external) */
output nIRQ = 1;
output nNMI = 1;
/* Apple open-drain outputs */
output nDMA = 1;
output nRDY = 1;
output nNMI = 1;
output nIRQ = 1;
output nINH = 1;
output nRESout = 0;
/* Refresh/Init Counter */
reg [19:0] Tick;
/* Apple address bus */
input [15:0] RA;
input nWEin;
output RAdir = 1;
output nWEout = 1;
reg [15:0] RAr1; reg nWEr1;
reg [15:0] RAr2; reg nWEr2;
reg [15:0] RAcur; reg nWEcur;
always @(negedge C25M) begin RAr1 <= RA; nWEr1 <= nWE; end
always @(posedge C25M) begin RAr2 <= RAr1; nWEr2 <= nWEr1; end
always @(posedge C25M) begin
Tick <= Tick+1;
if (S==0 && ~PHI0r2) begin
RAcur <= RAr2;
nWEcur <= nWER2;
end
end
reg InitDone = 0;
/* Apple select signals */
wire ROMSpecSEL = RAcur[15:12]==4'hC && RAcur[11:8]!=4'h0;
wire ROMSpecRD = ROMSpecSEL && nWE;
wire RAMSpecSEL = RAcur[15:12]==4'hC && RAcur[11:8]==4'h0 && RAcur[7] && RAcur[7:4]!=4'h8 && RAcur[3:0]==4'h3;
wire RAMSpecRD = RAMSpecSEL && nWE;
wire RAMSpecWR = RAMSpecSEL && ~nWE;
wire SpecRD = ROMSpecRD || RAMSpecRD;
reg RAMRD = 0, RAMWR = 0;
always @(posedge C25M) begin
if (Tick[19:0]==20'hFFFFF) InitDone <= 1'b1;
if (S==5) begin
RAMRD <= RAMSpecRD && DEVSELr2;
RAMWR <= RAMSpecWR && DEVSELr2;
end else if (S==0) begin
RAMRD <= 0;
RAMWR <= 0;
end
end
/* Apple data bus */
inout [7:0] RD = RDdir ? 8'bZ : RDout[7:0];
reg RDdir = 1;
reg [7:0] RDout;
/* SDRAM data bus */
inout [7:0] SD = SDOE ? RD[7:0] : 8'bZ;
reg SDOE = 0;
/* SDRAM address/command */
output reg [1:0] SBA;
output reg [12:0] SA;
output reg RCKE = 1;
output reg nRCS = 1;
output reg nRAS = 1;
output reg nCAS = 1;
output reg nSWE = 1;
output reg DQMH = 1;
output reg DQML = 1;
/* SPI flash */
output reg nFCS = 1;
output reg FCK = 0;
output reg MOSI = MOSIOE ? MOSIout : 1'bZ;
reg MOSIOE = 0;
reg MOSIout;
input MISO;
/* State counters */
reg [24:0] FS = 0;
always @(posedge C25M) begin FS <= FS+1; end
reg [2:0] S = 0;
always @(posedge C25M) begin
if (S==0 && PHI0r2 && ~PHI0r3 && ~RESr2 && ~BODr2) S <= 1;
else if (S==0) S <= 0;
else S <= S+1;
end
reg RefWake = 0;
/* Refresh state */
reg RefReady = 0;
reg RefDone = 0;
always @(posedge C25M) begin RefReady <= S==0; end
always @(posedge C25M) begin
if (FS[6:0]==7'h00) RefDone <= 0;
else (S==0 && RefReady && RCKE && ~(PHI0r2 && ~PHI0r3)) RefDone <= 1;
end
/* User-Accessible Registers */
reg [23:0] Addr = 0;
reg [7:0] Data = 0;
reg [7:0] Data0 = 0;
reg [11:0] BankC8 = 0; // Bits 9:8 are XORed with BankCX
reg [6:5] BankCX = 0; // Bank CX is init value
reg ExtBankEN = 0;
/* Slinky registers */
reg [24:0] Addr;
wire AddrHSpecSEL = RAcur[3:0]==4'h2;
wire AddrMSpecSEL = RAcur[3:0]==4'h1;
wire AddrLSpecSEL = RAcur[3:0]==4'h0;
always @(posedge C25M) begin
if (S==7 && DEVSELr2) begin
if (AddrHSpecSEL || AddrMSpecSEL || AddrLSpecSEL) begin
Addr[24] <= 1'b0;
end
/* Set/Increment Address Register */
always @(posedge C25M, negedge nRST) begin
if (~nRST) begin
Addr <= 0;
end else begin
if (DEVSELe[0] && ~nRWEr) begin // Write address register
if (RAr[3:0]==4'h0) begin // AddrL
Addr[7:0] <= WRD[7:0];
if (Addr[7] & ~WRD[7]) Addr[23:8] <= Addr[23:8]+1;
end else if (RAr[3:0]==4'h1) begin // AddrM
Addr[15:8] <= WRD[7:0];
if (Addr[15] & ~WRD[7]) Addr[23:16] <= Addr[23:16]+1;
end else if (RAr[3:0]==4'h2) begin // AddrH
Addr[23:16] <= WRD[7:0];
end
end else if (DEVSELe[2] && RAr[3:0]==4'h3) begin // R/W data
Addr[23:0] <= Addr[23:0]+1;
if (AddrHSpecSEL) begin
Addr[23:16] <= RD[7:0];
end else if (RAMRD || RAMWR ||
(AddrMSpecSEL && Addr[15] && ~RD[7]) ||
(AddrLSpecSEL && Addr[7] && ~RD[7] && Addr[15:8]==8'hFF)) begin
Addr[23:16] <= Addr[23:16]+1;
end
if (AddrMSpecSEL) begin
Addr[15:8] <= RD[7:0];
end else if (RAMRD || RAMWR ||
(AddrLSpecSEL && Addr[7] && ~RD[7])) begin
Addr[15:8] <= Addr[15:8]+1;
end
if (AddrLSpecSEL) begin
Addr[7:0] <= RD[7:0];
end else if (RAMRD || RAMWR) begin
Addr[7:0] <= Addr[7:0]+1;
end
end
end
/* Set bank */
always @(posedge nDEVSEL, negedge nRST) begin
if (~nRST) begin
BankC8 <= 0;
end else begin
if (~nRWE) begin
if (RAr[3:0]==4'hE && ExtBankEN) begin
BankC8[11:10] <= WRD[3:2];
BankC8[9:8] <= WRD[1:0] ^ BankCX[9:8];
end else if (RAr[3:0]==4'hF) begin
BankC8[7] <= WRD[7] & ExtBankEN;
BankC8[6:0] <= WRD[6:0];
end
end
end
end
/* Latch read data */
always @(posedge C25M) begin
if (DEVSELe[9]) Data[7:0] <= SDD[7:0];
end
/* SDRAM Control */
always @(posedge C25M) begin
if (~InitDone) begin
if (Tick[19:8]==12'hFFF) begin
if (Tick[3:0]==4'h8) begin
if (Tick[7:4]==4'h0) begin
// PC all
SCKE <= 1'b1;
nSCS <= 1'b0;
nRAS <= 1'b0;
nCAS <= 1'b1;
nSWE <= 1'b0;
DQML <= 1'b1;
DQMH <= 1'b1;
SAreg[10] <= 1'b1; // "all"
end else if (Tick[7:4]==4'h7) begin
// Load mode register
SCKE <= 1'b1;
nSCS <= 1'b0;
nRAS <= 1'b0;
nCAS <= 1'b0;
nSWE <= 1'b0;
DQML <= 1'b1;
DQMH <= 1'b1;
SAreg[11] <= 1'b0; // Reserved in mode register
end else begin
// AREF
SCKE <= 1'b1;
nSCS <= 1'b0;
nRAS <= 1'b0;
nCAS <= 1'b0;
nSWE <= 1'b1;
DQML <= 1'b1;
DQMH <= 1'b1;
end
end else begin
// NOP
SCKE <= 1'b1;
nSCS <= 1'b1;
nRAS <= 1'b1;
nCAS <= 1'b1;
nSWE <= 1'b1;
DQML <= 1'b1;
DQMH <= 1'b1;
end
end else begin
// NOP ckdis
SCKE <= 1'b0;
nSCS <= 1'b1;
if (S==0) begin
if ((PHI0r2 && ~PHI0r3 && ~RESr2 && ~BODr2 && SpecRD) ||
(~RefReady && ~RefDone)) begin
// NOP cken
RCKE <= 1'b1;
nRCS <= 1'b1;
nRAS <= 1'b1;
nCAS <= 1'b1;
nSWE <= 1'b1;
DQML <= 1'b1;
DQMH <= 1'b1;
end
// Mode register contents
SBAreg[1:0] <= 2'b00; // Reserved
SAreg[11] <= 1'b0; // Reserved
SAreg[9] <= 1'b1; // "1" for single write mode
SAreg[8] <= 1'b0; // Reserved
SAreg[7] <= 1'b0; // "0" for not test mode
SAreg[6:4] <= 3'b010; // "2" for CAS latency 2
SAreg[3] <= 1'b0; // "0" for sequential burst (not used)
SAreg[2:0] <= 3'b000; // "0" for burst length 1 (no burst)
SAmux <= 1'b1;
RefDone <= 1'b0;
RefWake <= 1'b0;
end else if (DEVSELe[0] && RAr[3:0]==4'h3) begin
// NOP
SCKE <= ~nRWEr;
nSCS <= 1'b1;
nRAS <= 1'b1;
nCAS <= 1'b1;
nSWE <= 1'b1;
DQML <= 1'b1;
DQMH <= 1'b1;
SAmux <= 1'b1;
RefWake <= 1'b0;
end else if (DEVSELe[1] && RAr[3:0]==4'h3) begin
// ACT
SCKE <= ~nRWEr;
nSCS <= nRWEr;
nRAS <= 1'b0;
nCAS <= 1'b1;
nSWE <= 1'b1;
DQML <= 1'b1;
DQMH <= 1'b1;
// Row address
SBAreg[1:0] <= Addr[23:22];
SAreg[12] <= 1'b0;
SAreg[11:0] <= Addr[21:10];
SAmux <= 1'b1;
RefWake <= 1'b0;
end else if (DEVSELe[2] && RAr[3:0]==4'h3) begin
// WR/NOP
SCKE <= ~nRWEr;
nSCS <= nRWEr;
nRAS <= 1'b1;
nCAS <= 1'b0;
nSWE <= 1'b0;
DQML <= Addr[0];
DQMH <= ~Addr[0];
// Column address
SBAreg[1:0] <= Addr[23:22];
SAreg[12:11] <= 2'b00;
SAreg[9] <= 1'b0;
SAreg[8:0] <= Addr[9:1];
// Auto-precharge only if row will increment
SAreg[10] <= Addr[9:0]==10'h3FF;
SAmux <= 1'b1;
RefWake <= 1'b0;
end else if (DEVSELe[3] && RAr[3:0]==4'h3) begin
// NOP
SCKE <= ~nRWEr;
nSCS <= nRWEr;
nRAS <= 1'b1;
nCAS <= 1'b1;
nSWE <= 1'b1;
DQML <= 1'b1;
DQMH <= 1'b1;
SAmux <= 1'b0;
RefWake <= 1'b0;
end else if (DEVSELe[4] && RAr[3:0]==4'h3) begin
// NOP (auto-precharge from previous write)
SCKE <= 1'b1;
nSCS <= 1'b1;
nRAS <= 1'b1;
nCAS <= 1'b1;
nSWE <= 1'b1;
DQML <= 1'b1;
DQMH <= 1'b1;
SAmux <= 1'b0;
RefWake <= 1'b0;
end else if (DEVSELe[5] && RAr[3:0]==4'h3) begin
// ACT only if WR AP just occurred / NOP
SCKE <= 1'b1;
nSCS <= ~nRWEr && ~SAreg[10];
nRAS <= 1'b0;
nCAS <= 1'b1;
nSWE <= 1'b1;
DQML <= 1'b1;
DQMH <= 1'b1;
// Row address
SBAreg[1:0] <= Addr[23:22];
SAreg[12] <= 1'b0;
SAreg[11:0] <= Addr[21:10];
SAmux <= 1'b1;
RefWake <= 1'b0;
end else if (DEVSELe[6] && RAr[3:0]==4'h3) begin
// RD
SCKE <= 1'b1;
nSCS <= 1'b0;
nRAS <= 1'b1;
nCAS <= 1'b0;
nSWE <= 1'b1;
DQML <= Addr[0];
DQMH <= ~Addr[0];
// Column address
SBAreg[1:0] <= Addr[23:22];
SAreg[12:11] <= 2'b00;
SAreg[10] <= 1'b1; // auto-precharge
SAreg[9] <= 1'b0;
SAreg[8:0] <= Addr[9:1];
SAmux <= 1'b1;
RefWake <= 1'b0;
end else if (DEVSELe[7] && RAr[3:0]==4'h3) begin
// NOP
SCKE <= 1'b1;
nSCS <= 1'b1;
nRAS <= 1'b1;
nCAS <= 1'b1;
nSWE <= 1'b1;
DQML <= 1'b1;
DQMH <= 1'b1;
SAmux <= 1'b0;
RefWake <= 1'b0;
end else begin
if (Tick[5] && ~RefDone) begin
if (~RefWake) begin
// NOP
SCKE <= 1'b1;
nSCS <= 1'b1;
nRAS <= 1'b1;
nCAS <= 1'b1;
nSWE <= 1'b1;
DQML <= 1'b1;
DQMH <= 1'b1;
RefWake <= 1'b1;
end else begin
// AREF
SCKE <= 1'b1;
nSCS <= 1'b0;
nRAS <= 1'b0;
nCAS <= 1'b0;
nSWE <= 1'b1;
DQML <= 1'b1;
DQMH <= 1'b1;
RefWake <= 1'b0;
RefDone <= 1'b1;
end
DQML <= 1'b1;
end else if (RefReady && ~RefDone && RCKE &&
~(PHI0r2 && ~PHI0r3)) begin
// AREF
RCKE <= 1'b1;
nRCS <= 1'b0;
nRAS <= 1'b0;
nCAS <= 1'b0;
nSWE <= 1'b1;
DQMH <= 1'b1;
DQML <= 1'b1;
end else begin
// NOP ckdis
SCKE <= 1'b0;
nSCS <= 1'b1;
RCKE <= 1'b0;
nRCS <= 1'b1;
nRAS <= 1'b1;
nCAS <= 1'b1;
nSWE <= 1'b1;
DQML <= 1'b1;
DQMH <= 1'b1;
DQML <= 1'b1;
end
end else if (S==4'h1) begin
if (SpecRD) begin
// ACT
RCKE <= 1'b1;
nRCS <= 1'b0;
nRAS <= 1'b0;
nCAS <= 1'b1;
nSWE <= 1'b1;
DQMH <= 1'b1;
DQML <= 1'b1;
RefWake <= 1'b0;
if (Tick[5]) RefDone <= 1'b0;
if (RAMSpecRD) begin
RBA[1] <= Addr[24];
RBA[0] <= Addr[23];
RA[12:0] <= Addr[22:10];
end else begin
RBA[1] <= 1'b1;
RBA[0] <= 1'b0;
RA[12:10] <= 3'b000;
RA[9:2] <= Bank[7:0];
RA[1:0] <= RAcur[11:10];
end
end else begin
// NOP ckdis
RCKE <= 1'b0;
nRCS <= 1'b1;
nRAS <= 1'b1;
nCAS <= 1'b1;
nSWE <= 1'b1;
DQMH <= 1'b1;
DQML <= 1'b1;
end
end else if (S==4'h2) begin
if (SpecRD) begin
// RD auto-PC
RCKE <= 1'b1;
nRCS <= 1'b0;
nRAS <= 1'b1;
nCAS <= 1'b0;
nSWE <= 1'b1;
SAmux <= 1'b0;
end
end
/* UFM Interface */
reg ARCLK = 0; // UFM address register clock
// UFM address register data input tied to 0
reg ARShift = 0; // 1 to Shift UFM address in, 0 to increment
reg DRCLK = 0; // UFM data register clock
reg DRDIn = 0; // UFM data register input
reg DRShift = 0; // 1 to shift UFM out, 0 to load from current address
reg UFMErase = 0; // Rising edge starts erase. UFM+RTP must not be busy
reg UFMProgram = 0; // Rising edge starts program. UFM+RTP must not be busy
wire UFMBusy; // 1 if UFM is doing user operation. Asynchronous
wire RTPBusy; // 1 if real-time programming in progress. Asynchronous
wire DRDOut; // UFM data output
// UFM oscillator always enabled
wire UFMOsc; // UFM oscillator output (3.3-5.5 MHz)
UFM UFM_inst ( // UFM IP block (for Altera MAX II and MAX V)
.arclk (ARCLK),
.ardin (1'b0),
.arshft (ARShift),
.drclk (DRCLK),
.drdin (DRDIn),
.drshft (DRShift),
.erase (UFMErase),
.oscena (1'b1),
.program (UFMProgram),
.busy (UFMBusy),
.drdout (DRDOut),
.osc (UFMOsc),
.rtpbusy (RTPBusy));
reg UFMBr = 0; // UFMBusy registered to sync with C14M
reg RTPBr = 0; // RTPBusy registered to sync with C14M
reg [15:0] Cfg;
reg CfgLoaded = 0;
// Do nothing when Tick15:14==2'h0
// Get ready when Tick15:14==2'h1
// Zero AR
// Load Cfg when Tick15:14==2'h2
// Tick13:6 (256) - first half of UFM looked at
// Tick5:2 (16) - 16 bits loaded from UFM
// 0: set CfgLoaded if DRDout==1, otherwise shift DRDout into Cfg
// 1-14: continue shifting DRDout into Cfg[15:0]
// 15: shift last DRDout bit into Cfg[15:0] and increment AR
// Tick1:0 (4) - 1 bit shifted
// Do nothing when Tick15:14==2'h3
// Set CfgLoaded too
always @(posedge C25M) begin
if (~CfgLoaded) begin
if (Tick[15:14]==2'h0) begin
// Do nothing
ARShift <= 1;
ARCLK <= 0;
DRCLK <= 0;
end else if (Tick[15:14]==2'h1) begin
// Shift zeros into AR during first half
if (~Tick[13]) begin
ARShift <= 1;
ARCLK <= Tick[1];
end else begin
ARShift <= 0;
ARCLK <= 0;
A[12:11] <= 1'b0; // don't care
A[10] <= 1'b1; // auto-precharge
A[9] <= 1'b0; // don't care
if (RAMSpecRD) begin
RBA[1] <= Addr[24];
RBA[0] <= Addr[23];
RA[8:0] <= Addr[9:1];
DQMH <= ~Addr[0];
DQML <= Addr[0];
end else /* ROMSpecRD */ begin
RBA[1] <= 1'b1;
RBA[0] <= 1'b0;
RA[8:0] <= RAcur[9:1];
DQMH <= ~RAcur[0];
DQML <= RAcur[0];
end
// Load default config
Cfg[15:0] <= 16'hFFFF;
// Load indirect into DR at end
if (Tick[13:0]==14'h3FFC ||
Tick[13:0]==14'h3FFD ||
Tick[13:0]==14'h3FFE ||
Tick[13:0]==14'h3FFF || ) begin
DRCLK <= 1;
end else DRCLK <= 0;
end else if (Tick[15:14]==2'h2) begin
// Load 16 bits into Cfg register
if (Tick[5:2]==4'h0 && Tick[1:0]==0 && DRDout) begin
CfgLoaded <= 1;
end else if (Tick[1:0]==0) begin
Cfg[15:0] <= {Cfg[14:1], DRDout};
end
// Increment AR
if (Tick[5:2]==4'hE) begin
ARCLK <= 1;
end else begin
ARCLK <= 0;
end
// Load indirect into DR
if (Tick[5:2]==4'hF) begin
DRCLK <= 1;
end else begin
DRCLK <= 0;
end
ARShift <= 1'b0; // Only incrementing AR now
end else if (Tick[15:14]==2'h3) begin
// Do nothing
ARShift <= 1;
ARCLK <= 0;
DRCLK <= 0;
CfgLoaded <= 1; // in case setting at address 0xFF
end else begin
// NOP ckdis
RCKE <= 1'b0;
nRCS <= 1'b1;
nRAS <= 1'b1;
nCAS <= 1'b1;
nSWE <= 1'b1;
DQMH <= 1'b1;
DQML <= 1'b1;
end
end else if (S==4'h3) begin
if (SpecRD) begin
// NOP cken
RCKE <= 1'b1;
nRCS <= 1'b1;
nRAS <= 1'b1;
nCAS <= 1'b1;
nSWE <= 1'b1;
DQMH <= 1'b1;
DQML <= 1'b1;
end else begin
// NOP ckdis
RCKE <= 1'b0;
nRCS <= 1'b1;
nRAS <= 1'b1;
nCAS <= 1'b1;
nSWE <= 1'b1;
DQMH <= 1'b1;
DQML <= 1'b1;
end
end else if (S==4'h4) begin
if (RAMSpecWR) begin
// NOP cken
RCKE <= 1'b1;
nRCS <= 1'b1;
nRAS <= 1'b1;
nCAS <= 1'b1;
nSWE <= 1'b1;
DQMH <= 1'b1;
DQML <= 1'b1;
end else begin
// NOP ckdis
RCKE <= 1'b0;
nRCS <= 1'b1;
nRAS <= 1'b1;
nCAS <= 1'b1;
nSWE <= 1'b1;
DQMH <= 1'b1;
DQML <= 1'b1;
end
end else if (S==4'h5) begin
if (RAMSpecWR && DEVSELr2) begin
// ACT
RCKE <= 1'b1;
nRCS <= 1'b0;
nRAS <= 1'b0;
nCAS <= 1'b1;
nSWE <= 1'b1;
DQMH <= 1'b1;
DQML <= 1'b1;
DRShift <= 0; // Only reading DR during init, not writing UFM
DRDIn <= 0;
end else if (DEVSELe[0] && RAr[3:0]==4'h8) begin
end else begin
// Do nothing
ARShift <= 1;
ARCLK <= 0;
DRCLK <= 0;
DRShift <= 0;
DRDIn <= 0;
BA[1] <= Addr[24];
BA[0] <= Addr[23];
A[12:0] <= Addr[22:10];
end else begin
// NOP ckdis
RCKE <= 1'b0;
nRCS <= 1'b1;
nRAS <= 1'b1;
nCAS <= 1'b1;
nSWE <= 1'b1;
DQMH <= 1'b1;
DQML <= 1'b1;
end
end else if (s==4'h6) begin
if (RAMWR) begin
// WR auto-PC
RCKE <= 1'b1;
nRCS <= 1'b0;
nRAS <= 1'b1;
nCAS <= 1'b0;
nSWE <= 1'b0;
BA[1] <= Addr[24];
BA[0] <= Addr[23];
A[12:11] <= 1'b0; // don't care
A[10] <= 1'b1; // auto-precharge
A[9:0] <= Addr[9:0];
DQMH <= ~Addr[10];
DQML <= Addr[10];
end else begin
// NOP ckdis
RCKE <= 1'b0;
nRCS <= 1'b1;
nRAS <= 1'b1;
nCAS <= 1'b1;
nSWE <= 1'b1;
DQMH <= 1'b1;
DQML <= 1'b1;
end
end else if (S==4'h7) begin
if (RAMSpecWR) begin
// NOP cken
RCKE <= 1'b1;
nRCS <= 1'b1;
nRAS <= 1'b1;
nCAS <= 1'b1;
nSWE <= 1'b1;
DQMH <= 1'b1;
DQML <= 1'b1;
end else begin
// NOP ckdis
RCKE <= 1'b0;
nRCS <= 1'b1;
nRAS <= 1'b1;
nCAS <= 1'b1;
nSWE <= 1'b1;
DQMH <= 1'b1;
DQML <= 1'b1;
end
end
end
always @(posedge nDEVSEL, negedge nRST) begin
if (~nRST)
end
endmodule

View File

@ -1,37 +1,38 @@
Reference, Quantity, Value, Footprint, Datasheet, LCSC Part
C38 C40 C39 C41 ,4,"10n","stdpads:C_0603","~","C57112"
C8 C10 C11 C1 C7 C2 C3 C4 C36 C37 C5 C6 ,12,"10u","stdpads:C_0805","~","C15850"
C9 C12 C13 C14 C15 C16 C17 C19 C20 C21 C22 C23 C18 C24 C25 C27 C28 C29 C30 C31 C26 C32 C33 C34 C35 ,25,"2u2","stdpads:C_0603","~","C23630"
D1 ,1,"M7","stdpads:D_SMA","~","C95872"
C38 C40 C41 ,3,"22n","stdpads:C_0603","~","C21122"
C39 ,1,"1n","stdpads:C_0603","~","C1588"
C8 C10 C11 C1 C7 C36 C37 C5 C6 C2 C3 C4 ,12,"10u","stdpads:C_0805","~","C15850"
C9 C31 C30 C44 C43 C42 C35 C34 C33 C32 C26 C28 C27 C25 C24 C18 C23 C22 C21 C20 C19 C16 C15 C14 C13 C12 C29 ,27,"2u2","stdpads:C_0603","~","C23630"
D2 ,1,"SMBJ5.0A","stdpads:D_SMB","~","C110528"
D3 ,1,"SS14","stdpads:D_SMA","~","C2480"
F1 ,1,"nSMD035-16V","stdpads:BelFuse_1206","~","C70072"
FB1 ,1,"GZ2012D601TF","stdpads:Murata_BLM21","~","C1017"
FID1 FID2 FID3 FID4 FID5 ,5,"Fiducial","stdpads:Fiducial","~"
D3 D1 ,2,"SS34","stdpads:D_SMA","~","C8678"
F1 ,1,"nSMD050-16V","stdpads:BelFuse_1206","~","C70075"
FB1 ,1,"GZ2012D101TF","stdpads:Murata_BLM21","~","C1015"
FID5 FID4 FID3 FID2 FID1 ,5,"Fiducial","stdpads:Fiducial","~"
H1 ,1," ","stdpads:PasteHole_1.1mm_PTH","~"
H5 H4 H3 H2 H6 ,5," ","stdpads:PasteHole_1.152mm_NPTH","~"
H6 H2 H3 H4 H5 ,5," ","stdpads:PasteHole_1.152mm_NPTH","~"
J1 ,1,"AppleIIBus","stdpads:AppleIIBus_Edge","~"
J2 ,1,"JTAG","Connector:Tag-Connect_TC2050-IDC-FP_2x05_P1.27mm_Vertical","~"
J2 J5 ,2,"JTAG","Connector:Tag-Connect_TC2050-IDC-FP_2x05_P1.27mm_Vertical","~"
J3 ,1,"DC in","stdpads:BOOMELE_DC-005_DC_5.5-2.0MM","~"
J4 ,1,"JTAG","Connector_IDC:IDC-Header_2x05_P2.54mm_Vertical","~"
Q1 ,1,"AO3401A","stdpads:SOT-23","http://www.aosmd.com/pdfs/datasheet/AO3401A.pdf","C15127"
R1 R2 ,2,"DNP","stdpads:R_0805","~"
R10 R16 R2 R15 R4 ,5,"2k2","stdpads:R_0603","~","C4190"
R11 ,1,"330","stdpads:R_0603","~","C23138"
R12 ,1,"1k","stdpads:R_0805","~","C17513"
R13 ,1,"100","stdpads:R_0805","~","C17408"
R18 ,1,"22k","stdpads:R_0603","~","C31850"
R3 ,1,"3k0","stdpads:R_0603","~","C4211"
R4 R16 ,2,"2k2","stdpads:R_0603","~","C4190"
R7 R6 R11 R10 R17 R14 R15 ,7,"1k","stdpads:R_0603","~","C21190"
R8 R5 ,2,"1M","stdpads:R_0603","~","C22935"
R9 ,1,"3k6","stdpads:R_0603","~","C22980"
R13 ,1,"DNP","stdpads:R_0805","~"
R18 R28 R29 ,3,"22k","stdpads:R_0603","~","C31850"
R20 R21 R23 R24 R25 R26 R1 R22 R27 R31 ,10,"33","stdpads:R_0603","~","C23140"
R3 ,1,"2k7","stdpads:R_0603","~","C13167"
R6 R14 R19 R17 ,4,"1k","stdpads:R_0603","~","C21190"
R7 ,1,"820","stdpads:R_0603","~","C23253"
R8 R5 R30 ,3,"1M","stdpads:R_0603","~","C22935"
R9 ,1,"1k2","stdpads:R_0603","~","C22765"
RN2 RN3 RN1 ,3,"4x33","stdpads:R4_0402","~","C25501"
RN4 ,1,"4x10k","stdpads:R4_0402","~","C25725"
RN4 RN5 ,2,"4x10k","stdpads:R4_0402","~","C25725"
U1 ,1,"EPM240T100C5N","stdpads:TQFP-100_14x14mm_P0.5mm","https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/hb/max2/max2_mii5v1.pdf","C10041"
U13 ,1,"25M","stdpads:Crystal_SMD_3225-4Pin_3.2x2.5mm","","C32526"
U14 U12 ,2,"74AHCT125","stdpads:TSSOP-14_4.4x5mm_P0.65mm","","C148198"
U16 ,1,"74LVC1G04GW","stdpads:SOT-353","","C10237"
U13 ,1,"25M","stdpads:Crystal_SMD_3225-4Pin_3.2x2.5mm","","C669088"
U16 U11 U12 U15 U17 U18 U19 U20 U14 U22 ,10,"74LVC1G125GW","stdpads:SOT-353","","C12519"
U2 ,1,"W9825","stdpads:TSOP-II-54_22.2x10.16mm_P0.8mm","","C62246"
U3 ,1,"MX29LV640EB","stdpads:TSOP-I-48_18.4x12mm_P0.5mm","http://ww1.microchip.com/downloads/en/DeviceDoc/25022B.pdf","C34469"
U5 U6 U9 U4 ,4,"74AHC245","stdpads:TSSOP-20_4.4x6.5mm_P0.65mm","","C5516"
U7 U10 ,2,"LM393","stdpads:SOIC-8_3.9mm","http://www.ti.com/lit/ds/symlink/lm393-n.pdf","C7955"
U8 ,1,"AP2125","stdpads:SOT-23","","C150715"
U3 ,1,"W25Q128JVSIQ","stdpads:SOIC-8_5.3mm","","C97521"
U5 U6 U9 U4 ,4,"74AHC245PW","stdpads:TSSOP-20_4.4x6.5mm_P0.65mm","","C5516"
U7 U10 ,2,"LM393D","stdpads:SOIC-8_3.9mm","http://www.ti.com/lit/ds/symlink/lm393-n.pdf","C7955"
U8 ,1,"XC6206P332MR","stdpads:SOT-23","","C5446"
Can't render this file because it has a wrong number of fields in line 10.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,28 +1,35 @@
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,(5.1.5-0-10_14)*
G04 #@! TF.CreationDate,2020-10-17T17:20:31-04:00*
G04 #@! TF.ProjectId,GR8RAM,47523852-414d-42e6-9b69-6361645f7063,rev?*
G04 #@! TF.CreationDate,2021-02-17T19:07:14-05:00*
G04 #@! TF.ProjectId,GR8RAM,47523852-414d-42e6-9b69-6361645f7063,0.9*
G04 #@! TF.SameCoordinates,Original*
G04 #@! TF.FileFunction,Legend,Bot*
G04 #@! TF.FilePolarity,Positive*
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW (5.1.5-0-10_14)) date 2020-10-17 17:20:31*
G04 Created by KiCad (PCBNEW (5.1.5-0-10_14)) date 2021-02-17 19:07:14*
%MOMM*%
%LPD*%
G04 APERTURE LIST*
%ADD10C,0.100000*%
%ADD11R,1.952400X4.552400*%
%ADD12O,1.952400X4.552400*%
%ADD13O,4.552400X1.952400*%
%ADD14R,1.879600X1.879600*%
%ADD15O,1.879600X1.879600*%
%ADD16C,1.143000*%
%ADD10C,0.120000*%
%ADD11C,0.100000*%
%ADD12R,1.879600X1.879600*%
%ADD13O,1.879600X1.879600*%
%ADD14R,1.952400X4.552400*%
%ADD15O,1.952400X4.552400*%
%ADD16O,4.552400X1.952400*%
%ADD17C,2.527300*%
%ADD18C,2.152400*%
%ADD19C,1.448000*%
%ADD18C,0.939800*%
%ADD19C,1.143000*%
%ADD20C,2.152400*%
%ADD21C,1.448000*%
G04 APERTURE END LIST*
%LPC*%
D10*
X61341000Y-117983000D02*
X60706000Y-117983000D01*
X60706000Y-117983000D02*
X60706000Y-118618000D01*
%LPC*%
D11*
G36*
X139700000Y-139446000D02*
G01*
@ -33,15 +40,9 @@ X73660000Y-132080000D01*
X139700000Y-132080000D01*
X139700000Y-139446000D01*
G37*
D11*
X102800000Y-86500000D03*
D12*
X108800000Y-86500000D03*
D13*
X105300000Y-81700000D03*
D14*
X64135000Y-108204000D03*
D15*
D13*
X61595000Y-108204000D03*
X64135000Y-105664000D03*
X61595000Y-105664000D03*
@ -51,7 +52,32 @@ X64135000Y-100584000D03*
X61595000Y-100584000D03*
X64135000Y-98044000D03*
X61595000Y-98044000D03*
D14*
X102800000Y-86500000D03*
D15*
X108800000Y-86500000D03*
D16*
X105300000Y-81700000D03*
D17*
X65786000Y-121793000D03*
X65786000Y-116713000D03*
X60071000Y-116713000D03*
X60071000Y-121793000D03*
D18*
X61341000Y-119888000D03*
X62611000Y-119888000D03*
X63881000Y-119888000D03*
X65151000Y-119888000D03*
X66421000Y-119888000D03*
X66421000Y-118618000D03*
X65151000Y-118618000D03*
X63881000Y-118618000D03*
X62611000Y-118618000D03*
X61341000Y-118618000D03*
D19*
X60071000Y-119253000D03*
X67691000Y-118237000D03*
X67691000Y-120269000D03*
X67691000Y-118237000D03*
X67691000Y-120269000D03*
X60071000Y-119253000D03*
@ -60,7 +86,7 @@ X60071000Y-116713000D03*
X60071000Y-121793000D03*
X65786000Y-121793000D03*
X65786000Y-116713000D03*
D10*
D11*
G36*
X130000179Y-131537818D02*
G01*
@ -1861,11 +1887,11 @@ X136740900Y-131535800D01*
X137579100Y-131535800D01*
X137620179Y-131537818D01*
G37*
D18*
D20*
X140462000Y-129540000D03*
D19*
X48133000Y-98679000D03*
X58293000Y-85979000D03*
D21*
X48133000Y-96139000D03*
X57023000Y-84709000D03*
X143002000Y-127000000D03*
X48133000Y-127000000D03*
X140462000Y-82423000D03*

View File

@ -1,35 +1,35 @@
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,(5.1.5-0-10_14)*
G04 #@! TF.CreationDate,2020-10-17T17:20:31-04:00*
G04 #@! TF.ProjectId,GR8RAM,47523852-414d-42e6-9b69-6361645f7063,rev?*
G04 #@! TF.CreationDate,2021-02-17T19:07:14-05:00*
G04 #@! TF.ProjectId,GR8RAM,47523852-414d-42e6-9b69-6361645f7063,0.9*
G04 #@! TF.SameCoordinates,Original*
G04 #@! TF.FileFunction,Profile,NP*
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW (5.1.5-0-10_14)) date 2020-10-17 17:20:31*
G04 Created by KiCad (PCBNEW (5.1.5-0-10_14)) date 2021-02-17 19:07:14*
%MOMM*%
%LPD*%
G04 APERTURE LIST*
%ADD10C,0.150000*%
G04 APERTURE END LIST*
D10*
X57785000Y-80391000D02*
X46101001Y-92074999D01*
X57785000Y-80391000D02*
G75*
G02X59309000Y-79883000I1524000J-2032000D01*
G01*
X46101001Y-92074999D02*