FPGA och SD-RAM

Elektronikrelaterade (på komponentnivå) frågor och funderingar.
Samot
Inlägg: 311
Blev medlem: 15 november 2004, 18:32:13

FPGA och SD-RAM

Inlägg av Samot »

Hej!

Jag har en fpga som jag jag kodar i vhdl. Till det har jag ett sdram på 8 mb som jag vill använda till att spara undan data på och såklart även läsa ut det.

Vad jag förstått så måste minnet refreshas regelbundet. Vet någon om jag måste koda allt detta själv eller om det finns något smidigt att ladda ner som jag kan använda?
Håller på med ett kort från Altera och jobbar i Quartus.

Hoppas på hjälp!
Användarvisningsbild
bengt-re
EF Sponsor
Inlägg: 4829
Blev medlem: 4 april 2005, 16:18:59
Skype: bengt-re
Ort: Söder om söder
Kontakt:

Inlägg av bengt-re »

Ja sånna rutiner finns att köpa, eller ladda ner gratis kanske också om du letar lite. Vill du inte ha gråa hår så tror jag att det bra att slippa skriva det själv.....
Samot
Inlägg: 311
Blev medlem: 15 november 2004, 18:32:13

Inlägg av Samot »

Ja, det är det jag märkt.

Vill inte att nån ska tro att jag vill att ni letar åt mig och säger, detta ska du ladda ner. Jag har sökt runt utan framgång. Tänkte därför prova här ifall någon
vet 'på rak arm' vad det är jag letar efter och kan berätta lite om det.
Användarvisningsbild
Abra Hana
Inlägg: 94
Blev medlem: 12 maj 2005, 13:20:58

Inlägg av Abra Hana »

*
Skrevs av Samot

Kod: Markera allt

Vad jag förstått så måste minnet refreshas regelbundet. Vet någon om jag måste koda allt detta själv eller om det finns något smidigt att ladda ner som jag kan använda?

det är DDR ram teknologie som använder "memory refresh" för att
uppdatera data i minnet , dessutom refresh proceduren görs internt i
minnets hårdvara . du som ska använda detta minnet behöver inte oroa
dig över detta , du bara läser data från eller skriver data till minnet . data
försvinner när ström försvinner .

SDRAM använder inte refresh proceduren .

- Om du själv skulle vilja refresha data som finns i minnet :
- Allokera en extern buffer som räcker till hela eller delvis av data som
finns i minnet .
- Kopiera data från minnet till buffer .
- vänta den tid det krävs innan refresh bör exekveras .
- kopiera data från buffer till minnet .
- upprepa proceduren i en loop . din processor kommer inte att göra nåt
annat än att refresha data !!!! .

*
Användarvisningsbild
chille
Inlägg: 2469
Blev medlem: 25 juni 2003, 20:54:41
Ort: Stockholm
Kontakt:

Inlägg av chille »

Nja, det där stämmer väl inte. För när man programmerar FPGA och interface:ar mot SDRAM så måste man ha en speciell drivare. Vad jag har fått höra så måste man som sagt ha den drivaren för att fippla med minnet regelbundet för att det inte ska tappa data. Som sagt så finns såna att köpa. Men jag tror även det finns kod. Mycket möjligt att det finns att ladda hem hos några av de stora tillverkarna, typ Xilinx, Altera med flera. Dock lär det vara konstiga licenser bakom koden, så det är ju inget att rekomendera om du ska sälja produkten. Om jag inte minns helt fel så tror jag även jag har sätt någon som var hemmasnickrad. Kan söka runt lite senare idag och se ifall jag hittar det igen eller om jag bara hallucinerat fram det. 8)
Användarvisningsbild
arvidb
Inlägg: 4537
Blev medlem: 8 maj 2004, 12:56:24
Ort: Stockholm

Inlägg av arvidb »

Om du kan tänka dig DDR SDRAM så finns nåt slags kod här:
http://www.opencores.org/browse.cgi/by_category

Fast jag vet inte om den funkar på din Altera.

Arvid
Seven11
Inlägg: 547
Blev medlem: 13 maj 2004, 23:43:33

Inlägg av Seven11 »

DRAM behöver "refresh":as då det använder 1-transistorceller (en transistor med kondensator ungefär ) medans SRAM använder 6-transistorceller ("latch":ar) som inte behöver "refresh":as, SDRAM är sykroniserat DRAM vilket borde behöva "refresh" samma borde gälla för "Double DataRate" SDRAM...

DRAM är billigare (och du får ofta mycket mer minne) än SRAM men kräver extra jobb i hårdvaran.

problemet med dom flesta opencores projekt är ju att dom använder WishBone som localbus och därför tvingas man implementera det eller någon omvandlare...

Manticore projektet använder en SDRAM kontroller till sitt grafikkort (jag jobbar med ett liknande projekt) http://icculus.org/manticore/links.php vet dock inte vilket gränssnitt dom har från minnes kontrollanten.
Användarvisningsbild
oJsan
EF Sponsor
Inlägg: 1541
Blev medlem: 11 november 2005, 21:36:51
Ort: Umeå
Kontakt:

Inlägg av oJsan »

Abra Hana, har du verkligen belägg för vad du skriver, jag tror nämligen inte på det du säger. SDRAM kräver visst refresh och OM det finns någon hårdvara som sköter om det så finns den _inte_ i själva minnet utan i den busskontroller man använder!
Och algoritmen för att göra manuell refresh.. var det ett skämt månne?
Samot
Inlägg: 311
Blev medlem: 15 november 2004, 18:32:13

Inlägg av Samot »

Tack för tips å ideér.

Jag är utlämnad till att änvända ett sdram 8 mb. Vad jag förstått så måste det refreshas.

Abra Hana. Tack för svar, men jag fundarar på en sak. Om du tror att det inte behöver refreshas, varför skulle jag då skriva en rutin för att refresha det? :)

Jag har ett utvecklingskort från Altera där allt sitter förmonterat å klart. Då kan man tycka att man borde kunna hitta det på deras hemsida. Men så är inte fallet. Jag ska ha ett möte med min handledare i morgon så vi får se vad han säger. Jag gör alltså ett examensarbete, det borde jag kanske inlett med för att räta ut lite frågetecken, sorry !
Användarvisningsbild
Abra Hana
Inlägg: 94
Blev medlem: 12 maj 2005, 13:20:58

Inlägg av Abra Hana »

*
Ojsam : det var första april skämtet ?????? : Jag förväxlar SRAM med SDRAM . Seven11 har pointerat detta .

Jag utgick ifrån att att även SRAM , SDRAMM , DDR är som andra hård varor ( med många in- och utpinnar) som säljs på markander har ett inbyggt kontroll som reducerar antal pinnar och där med minskar antal kontroll commands .

( ???? Här pratar jag inte om refresh eller RAM minnet ????). men som exampel kan man jämföra detta med SD , MMC och så vidare som har högst om jag minns rätt bara 9 eller 11 pinnar , och med dessa pinnar kan man manupulera upp till ett 1GByte internt data minnet .

samot Vill du posta SDRAMS:datablad ?
Jag kör själv ochså quartus6 ! .

http://www.freemodelfoundry.com/fmf_mod ... 60832c.vhd
Samot
Inlägg: 311
Blev medlem: 15 november 2004, 18:32:13

Inlägg av Samot »

Seven11
Inlägg: 547
Blev medlem: 13 maj 2004, 23:43:33

Inlägg av Seven11 »

SD kort använder en egen standard som fins i tre upplagor tror jag (1.0, 1.1 och 2.0) vilket kan fås efter ett NDA kontrakt (som skyddar SD standarden från att implementeras i open source miljö). CF använder ATA/ATAPI bussen...

Iom med att jag inte läst SD standarden så kan jag inte säga hur den funkar med ATA/ATAPI är inte i närheten av RAM minnes standarden från JEDEC (används av RAM minnen).

RAM minnena skulle kunna ha väldigt många fler pinnar... du slipper ju skapa alla CS signaler till dom latch:ar eller kondensatorer som håller datan :D
I CF / SD fallet är det så att där skickas datan och addressering över en och samma ledningsgrupp medans standard 168-pins RAM har 64 dataledningar och 32 addressledningar. Resten av ledningar går bort till kontroll och spänningsmatning ungefär.

Kolla Manticore:s SDRAM kontroller http://svn.icculus.org/manticore/trunk/ ... iew=markup den verkar vara väl skriven...

vilken hastighet hade du tänkt dig på minnet förresten? Maticore kör med 66 MHz detta verkar lagomt med tanka på att det kn vara svårt att få ett stort projekt att gå väldigt mycket snabbare.
Användarvisningsbild
Abra Hana
Inlägg: 94
Blev medlem: 12 maj 2005, 13:20:58

Inlägg av Abra Hana »

*
SDRAM:s schemat i databladet , sidan 2 visar att det redan finns det två inbygda refresh kontroller .

- REFRESH CONTROLLER
och
- Self REFRESH CONTROLLER

Detta betyder att du inte behöver skriva en komplex algoritm eller köpa en extern buskontroll som vissa har hävdat här tidigare.
Det enda du gör för att refresha data i minnet är att skicka ett tydligt bestämt kommandot under en viss tids period .

- Self refresh och auto refresh förklaras i databladet sidan 5 .
- Self refresh och auto refresh kommand finns i tabell , sidan 6 .

*
Användarvisningsbild
vfr
EF Sponsor
Inlägg: 3515
Blev medlem: 31 mars 2005, 17:55:45
Ort: Kungsbacka

Inlägg av vfr »

Principen är fortfarande att det behövs refresh och den är inte så självgående att användaren kan strunta i det.

Däremot är det riktigt att processen har blivit enklare och enklare för varje generation DRAM. På dom tidiga minnena var man tvungen att adressera och läsa ut varje rad eller kolumn i minnet manuellt vid refresh. Idag finns räknare och annat för detta inbyggt i minnena så det är mycket enklare. Men proceduren måste fortfarande göras, eller ges tid att göras.
Skriv svar