Ik ben een fpga bordje aan het ontwikkelen, het gaat om een een cyclone II chip met 2x32mb sdram. Dit moet allemaal op een 2 laags pcb komen. Bij mijn eerste poging wilde ik de aantal via's zo min mogelijk houden (vanwege zelf prototype maken en geen zin om te boren etc
). Maar dit idee heb ik laten vallen. Nu heb ik een layout die volgens mij niet werkt.
De lengte van de draden zijn niet in dezelfde orde van grote
.
Nu wil ik jullie om hulp vragen, of jullie een betere layout kunnen bedenken. Misschien hebben jullie al wat ervaring met SDRAM, met name met het layouten ervan.
Hier heb je het schema van de fpga en 2xsdram chips. Het zijn eagle files.
http://elektron.ewi.tudelft.nl/~wmchim07/co/sdram.sch
Wat je veel ziet is dat de SRAM op de onderkant recht onder de FPGA zit. Dan de ene kant aan BANK1 en de andere aan BANK3. Zo heb je geen draden die kruisen, blijven de draden heel kort en heb je voor elk signaal maar 1 via nodig.
Maar heb er verder zelf geen ervaring mee 
Ik zou zowieso voor een 4 laags print gaan. De buitenste lagen voor de sporen, 1 laag voor aarde en 1 laag voor voedingsvlakken. Zorg er ook voor dat de signalen tussen de FPGA en het geheugen boven een ononderbroken vlak zitten. Aan de kant van het aardvlak is dat eenvoudig, bij de voedinsvlakken is dat wat lastiger.
Bij europrint.be is een 4 lagen print nog heel betaalbaar.
Bij een DDR ontwerp wat ik eerder heb gemaakt heb ik de data aansluitingen zo dicht mogelijk tegen de fpga aan gelegd en de pinning zodanig gekozen dat er geen via's nodig zijn. Bij DDR en volgens mij ook SDRAM kan het geheugen slechts een beperkt aantal commando's verwerken. Bij mijn DDR ontwerp heb ik daarom de controlelijnen (adres, cas, ras, etc, behalve CS) op de helft van de klokfrequentie van het geheugen laten lopen. Dat maakt de timing en daarmee de routing van die signalen een heel stuk minder kritisch.
Op 29 april 2007 19:21:46 schreef xantus:
Wat je veel ziet is dat de SRAM op de onderkant recht onder de FPGA zit. Dan de ene kant aan BANK1 en de andere aan BANK3. Zo heb je geen draden die kruisen, blijven de draden heel kort en heb je voor elk signaal maar 1 via nodig.Maar heb er verder zelf geen ervaring mee
Dit werkt toch alleen met 1 SDRAM chip? als je 2 stuks hebt, dan moet je alsnog veel via's trekken.
free_electron
Silicon Member
Professioneel ElectronenTemmer - siliconvalleygarage.com - De voltooid verleden tijd van 'halfgeleider' is 'zand' ... US 8,032,693 / US 7,714,746 / US 7,355,303 / US 7,098,557 / US 6,762,632 / EP 1804159 - Real programmers write Hex into ROM
zorg dat je strobe langer is dan de langste addressline. zo ben je zeker dat je addresslijnen allemaal op 'niveau' gekomen zijn tegen dat het address geladen word.
als je dan ook nog je datalijnen ongeveer evenlang probeert te maken. ben je er helemaal.
maar over welke snelheden hebben we het hier ?
Op 30 april 2007 21:40:38 schreef miniK0bo:
[...]Dit werkt toch alleen met 1 SDRAM chip? als je 2 stuks hebt, dan moet je alsnog veel via's trekken.
Heb ze ook met 2 chips (en zelfs 4) zo gezien. Allemaal naast elkaar. In TSOP behuizing en de pinnen op overstaande banks aangesloten. Je zit alleen me dat je net zoveel via's als pinnen nodig hebt.
rew
four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
@fe, De bedoeling is natuurlijk om 133MHz of 166MHz te gaan halen.
@xantus, ik heb even in Eagle zitten spelen, maar het is dus niet mogelijk om 2 van die chipjes waarvan de meeste pennen 1 op 1 op mekaar angesloten moeten worden aan te sluiten.
Dus: Voor de meeste pennen geldt: IC1p1 -- IC2p1 --- FPGApxx IC1p2 -- IC2p2 - FPGApxx enzovoort. Als je design rules zo zijn dat je tussen de pennen door mag, dan is het ineens makkelijk.
Als je de twee chips naast mekaar legt, en de "bus" op de onderzijde doet, dan is er niet genoeg plek om de vias te maken.
Als je de chips naast mekaar legt, en dan 1 van de chips naar de onderkant "vouwt", kan je 1 setje verbindingen lekker kort maken, maar je krijgt de andere set heelemaal niet voor mekaar.
Als je de chips schuin onder mekaar zet (dus rechterkant van 1 chip in het verlengde van linkerkant van de andere) dan kan je diagonaal de boel doorverbinden, behalve dan dat er tussen de linker en de rechterkant van de chip niet genoeg ruimte is om die bus van zo'n 28 signalen helemaal naar buiten te voeren....
Hmmmmm. Met een relatief klein aantal signalen "buitenom" (en dus afwijkende signaal lengte) lijkt dat laatste plan mischien toch kans van slagen te hebben.... Zie eagle board file: http://prive.bitwizard.nl/sdram.brd
Even rekenen leert dat je met 10mil draden en 10mil ruimtes in de 400mil ruimte tussen de pootjes ongeveer 20 draden kwijt kunt. Dan moeten er dus nog 8 buitenom. Ik stel voor om dingen als voeding geheel aan de andere kant te bedraden. Dus die tellen niet mee. Dan hoeven er maar een stuk of 5 buitenom.
ALs je met 8mil draadjes en 8mil tussenruimte gaat werken kunnen er zels ongeveer 25 draden "binnendoor". Volgens mij ben je er dan al..... Vervolgens hoeft de boel alleen nog maar aan de FPGA aangesloten te worden.
[Bericht gewijzigd door rew op ]
Ik zie nu dat ik in mijn opening post wat vergeten ben. Dit is mijn huidige layout:
http://elektron.ewi.tudelft.nl/~wmchim07/co/sdram.gif
Ik wil het echt op 2-layers houden, zodat je het thuis ook kan maken zegmaar ...
@xantus
Dit lukt volgens mij niet op 2 layers... Maar misschien is het wel een idee om gewoon 1 chip te gebuiken dan ...
@free
Ik heb de cas# ras# we# even gehighlight. Het zijn vrij korte lijnen 
http://elektron.ewi.tudelft.nl/~wmchim07/co/sdram_strobe.gif
Op 2 layers ga je denk ik niet > 100 MHz halen. Je kan aan eagle vragen wat de max freq over een bepaalde wire is. Dit is dan een heel ruime schatting. Als je de langzaamste wire neemt, en daar 50% van heb je een realistische waarde. Voor 2 layers met zulke routing kom je denk ik < 50MHz uit.
Bij U$2 kunnen alle wires aan de linker kan ook van rechts komen (onder U$2). Dan heb je niet zo'n kronkel nodig en zijn de wires naar beide chips ongeveer evenlang. Bij de enelaatste pin van U$2, die wire is bijna 2x zo lang is de wire naar die pin op U$3. Dat haalt heel je snelheid onderuit. Bij pin 28 (?) moet je ook geen rechte hoek gebruiken.
free_electron
Silicon Member
Professioneel ElectronenTemmer - siliconvalleygarage.com - De voltooid verleden tijd van 'halfgeleider' is 'zand' ... US 8,032,693 / US 7,714,746 / US 7,355,303 / US 7,098,557 / US 6,762,632 / EP 1804159 - Real programmers write Hex into ROM
koop een ram in reverse pinout ?
dan kan je ze 'stacken' ene op de top layer en de andere op de bottom layer.
maar de layout die je nu hebt zal problematisch worden voor 133 tot 166 mhz.
rams naast elkaar en 'ritsen' ( tussen de pads door )
zelf maken is niet realistisch. en maak er maar gelijk een 4 layer van ...
Op 1 mei 2007 16:51:14 schreef free_electron:
rams naast elkaar en 'ritsen' ( tussen de pads door )
Dan worden het wel heel dunnen spoortjes, als je 6 mil neemt is het nog te dik.
(6 mil is toch zo'n beetje het dunste dat je tegen redelijk prijs, enkel stuks, kunt laten maken?)
De strobe lijnen langer maken heeft weinig nut. SDRAM is synchroon. Je moet ervoor zorgen dat de controle, adres en data aanwezig zijn als de flank van de klok voorbij komt.
Bij Jedec kun je waarschijnlijk meer informatie over het routen van geheugen vinden bij de speficicaties van SDRAM modules. Je kunt er zowieso specificaties downloaden die aangeven waaraan een SDRAM chip minimaal moet voldoen. Dat geeft wat meer houvast om een geheugenaansturing te ontwerpen die ook met andere merken SDRAM chips overweg kan.
free_electron
Silicon Member
Professioneel ElectronenTemmer - siliconvalleygarage.com - De voltooid verleden tijd van 'halfgeleider' is 'zand' ... US 8,032,693 / US 7,714,746 / US 7,355,303 / US 7,098,557 / US 6,762,632 / EP 1804159 - Real programmers write Hex into ROM
awel ? dat zeg ik toch ?
als de klok je langste is ( natuurlijk niet zolang dat de boel 3650 graden geschift is )
dan zijn al de andere al stabiel tegen dat de flank komt.
( natuurlijk niet zolang dat de boel 3650 graden geschift is )
Hoezo niet? Dit zie je toch heel vaak om te zorgen dat bepaalde wires langer zijn of alle wires evenlang. voorbeeld
Wat nou als ik de 2e ram chip letterlijk boven op de eerste chip plaats? Een soort van piggy back.
net zoals deze gast:
http://www.cobbleware.com/gp32/gp32ram.html
Zijn er nog dingen waar ik rekening mee moet houden?
Ik heb nu 1 ram chip geroute, met als langste (adres)draad van 38.65mm en ik heb de /WE verlengd door middel van kronkelingen naar 41.90mm.
http://elektron.ewi.tudelft.nl/~wmchim07/co/sdram_1chip.gif
de TP is wordt de chip select van de 2e ram chip
free_electron
Silicon Member
Professioneel ElectronenTemmer - siliconvalleygarage.com - De voltooid verleden tijd van 'halfgeleider' is 'zand' ... US 8,032,693 / US 7,714,746 / US 7,355,303 / US 7,098,557 / US 6,762,632 / EP 1804159 - Real programmers write Hex into ROM
als je het attack punt van die 3 draden onder links wat eerder legt ben je van die stomme via's vanaf ook.
en als je de pin assignemtn van de fpga wat shift kan je van die bovenste via tros ook nog vanaf !
vias zijn nefast voor signal integrite ( zeker op de manier waarop jij een bord aant maken bent )
@free_electron zoiets?:
http://elektron.ewi.tudelft.nl/~wmchim07/co/sdram_1chip_update1.gif
Ik weet dat die 2 via's niet nodig zijn, maar afgezien daar van, had je dit als idee?
lol dit begint op deze topic te lijken:
http://www.circuitsonline.net/forum/view/48079/1
Moeten aan die kant van de FPGA trouwens ook niet nog een paar voedingslijnen komen met bijbehorende ontkoppelcondensatoren komen?
Yup, maar die route je dan onder de chip met VIA naar beneden.
Dat wordt 4layer voor hoge frequenties, anders hoef je ook niet zo problematisch te gaan routen.
Met 2layer rond de 100Mhz is de kans groot dat de I/O buffers in de FPGA je de groeten zeggen.
Kan me nog wel herrineren dat ik een paar jaar geleden de datasheet van de intel 486 aan het bestuderen was.
Bij een bus frequentie van 33Mhz hadden ze het al over een ground onder de signaal track.
kan je even uitleggen hoe je met een 4layer design hogere frequenticie kan halen? het enige wat ik kan bedenken is dat je beter kan routen bij data/adres signalen. Zo dat de lijnen ongeveer even lang zijn, en korter dan bij 2 layers.
Volgens mij eerder hier genoemt in het topic, dat je een GND plane onder de tracks hebt (1e innerlayer) die crosstalk tegengaat.
en met GND en VCCio plane kan je een schone voeding aan de I/O buffers leveren met de ontkoppel caps.
Bij hogere frequenties worden je printsporen transmissielijnen. Net zoiets als een coaxkabel. En net als bij een coaxkabel heeft een transmissielijn op een print een 'mantel' nodig: een kopervlak (mag voeding zijn, maar liever aarde). Iedere onderbreking in dat vlak is een verandering van de impedantie met als gevolg reflecties.
De impedantie van een printspoor is een functie van de breedte, de afstand tot het kopervlak en de permeabiliteit van het printmateriaal. Wisselingen in spoorbreedtes zijn dus ook impedantiewisselingen.
Op 14 mei 2007 00:02:38 schreef Nico.c:
: een kopervlak (mag voeding zijn, maar liever aarde).
Dus... je kunt het 2 layer houden als je maar zorgt dat onder de lijnen die een hog frequentie voeren een ground vlak zit?