Minneskretsar (flash)
Minneskretsar (flash)
För 11 år sedan konstruerade jag en digital signalgenerator som består av ett eprom på 256k x 16 bitar och det har parallell adressering och datautgång. På kretskortet sitter det helt enkelt en räknare som räknar upp adressen (18 bitar) och de 16 databitarna går till en D/A-omvandlare. Minnet räcker till 1 sekunds uppspelning med acceptabel upplösning.
Nu vill kunden ha en ny version och med tanke på minnesutvecklingen bör vi kunna använda 1000 gånger så stora minnen.....Vilket skulle kunna ge längre uppspelningstid och upplösning.
Dock är väl flash att föredra denna gång, och jag har aldrig arbetat med flashminnen. Hur fungerar de?
Jag tar för givet att adresseringen alltid är seriell, men förekommer det att databussen är parallell?
Ur programmeringssynpunkt kanske det är enklare att använda t.ex. Compact Flash, eller är andra fysiska kapslingar att föredra?
Jag vore tacksam om någon kunde styra mig i rätt riktning så kan jag grotta ner mig i datablad sedan.
Jag är nybörjare på PIC-programmering, men ett program som räknar upp adresser och skickar ut dem seriellt borde jag klara av att göra.
Nu vill kunden ha en ny version och med tanke på minnesutvecklingen bör vi kunna använda 1000 gånger så stora minnen.....Vilket skulle kunna ge längre uppspelningstid och upplösning.
Dock är väl flash att föredra denna gång, och jag har aldrig arbetat med flashminnen. Hur fungerar de?
Jag tar för givet att adresseringen alltid är seriell, men förekommer det att databussen är parallell?
Ur programmeringssynpunkt kanske det är enklare att använda t.ex. Compact Flash, eller är andra fysiska kapslingar att föredra?
Jag vore tacksam om någon kunde styra mig i rätt riktning så kan jag grotta ner mig i datablad sedan.
Jag är nybörjare på PIC-programmering, men ett program som räknar upp adresser och skickar ut dem seriellt borde jag klara av att göra.
Re: Minneskretsar (flash)
Det var kanske inte något svar på mina frågor, men du menar alltså att det inte funkar att läsa ut data direkt till en D/A?
Re: Minneskretsar (flash)
Vilka krav har du på ljudet ?
Utan det välspecificerat så går det inte att säga någonting.
Utan det välspecificerat så går det inte att säga någonting.
Re: Minneskretsar (flash)
Flashminnen finns både som seriella och parallella kretsar.
Du kan ju gå in på ELFAS sida till exempel https://www.elfa.se/elfa3~se_sv/elfa/init.do?toc=19991
Där hittar du ett urval med parallella och seriella FLASH-Minnen.
Beträffande minneskort så är det en helt annan sak.
Ett CF-Kort kan man hantera på tre olika sätt.
1: Rent IDE interface, 100% IDE kompatibelt (funkar alltså på exakt samma sätt som en IDE hårddisk)
2: PC Card Memory Mode
3: PC Card IO Mode
De olika moderna är rätt lika varandra med mindre differenser.
Alla övriga typer av minneskort är seriella på ett eller annat sätt.
Du kan ju gå in på ELFAS sida till exempel https://www.elfa.se/elfa3~se_sv/elfa/init.do?toc=19991
Där hittar du ett urval med parallella och seriella FLASH-Minnen.
Beträffande minneskort så är det en helt annan sak.
Ett CF-Kort kan man hantera på tre olika sätt.
1: Rent IDE interface, 100% IDE kompatibelt (funkar alltså på exakt samma sätt som en IDE hårddisk)
2: PC Card Memory Mode
3: PC Card IO Mode
De olika moderna är rätt lika varandra med mindre differenser.
Alla övriga typer av minneskort är seriella på ett eller annat sätt.
Re: Minneskretsar (flash)
Beror på vilken högsta gränsfrekvens du vill ha, Flashminnen kan vara långsamma, speciellt seriella minnen är väldigt långsamma.mikebike skrev:Det var kanske inte något svar på mina frågor, men du menar alltså att det inte funkar att läsa ut data direkt till en D/A?
Dock är läshastigheten betydligt högre än skrivhastigheten.
Re: Minneskretsar (flash)
Om man tänker på parallella flashminnen kan man läsa dom på precis samma sätt som de gamla EPROM-kretsar. Man kan även programmera dom vid att skriva ett par specifika mönster till ett par specifika adresser och sedan skriva de data som ska in i minnet, word efter word.
De kan vara hyggligt snabba men är sällan sådär sjukt snabba så först måste du specificera vad du behöver, sedan kan man räkna ut vad som behövs och vad som uppfyller kraven.
De kan vara hyggligt snabba men är sällan sådär sjukt snabba så först måste du specificera vad du behöver, sedan kan man räkna ut vad som behövs och vad som uppfyller kraven.
Re: Minneskretsar (flash)
Den befintliga konstruktionen har en läshastighet på 250 kHz, och det vore ju trevligt att dubbla den i samband med omkonstruktionen. Det borde väl inte vara några problem...
De största flashkretsar jag hittat i ELFA-katalogen är på 2M x 16, vilket "bara" är 8 gånger större än de vi har nu. Dessutom handlar det om ytmonterade kretsar...
CF och liknande är ju betydligt större och enklare att hantera/byta, men verkar mycket knepigare att adressera.
Jag hittade en pin-spec. på CF, men jag fattade inte hur de adresseras, om det ens är möjligt med en ren hårdvarulösning?
De största flashkretsar jag hittat i ELFA-katalogen är på 2M x 16, vilket "bara" är 8 gånger större än de vi har nu. Dessutom handlar det om ytmonterade kretsar...
CF och liknande är ju betydligt större och enklare att hantera/byta, men verkar mycket knepigare att adressera.
Jag hittade en pin-spec. på CF, men jag fattade inte hur de adresseras, om det ens är möjligt med en ren hårdvarulösning?
Re: Minneskretsar (flash)
NAND flash är stora och hyffsat enkla att använda och borde lätt kunna användas med någon mikrokontroller.
De har ett 8/16 bitar seriellt interface, dvs man skriver kommandon och läser/skriver seriellt:
tex: <cmd><adress><data0><data1>...<dataN>
De har ett 8/16 bitar seriellt interface, dvs man skriver kommandon och läser/skriver seriellt:
tex: <cmd><adress><data0><data1>...<dataN>
Re: Minneskretsar (flash)
Det är möjligt att du kan köra med seriella SPI minnen, dock får man studera hur snabba de är.
I2C faller nog bort, då maximal klocka är 1 MHZ.
CF minnen kan du problemfritt köra i de hastigheter, dock är de lite mer komplicerade att läsa.
Fördelen är att de per default är 16 bitar och stöder DMA.
Dock för att kunna dra full nytta av det och få upp hastigheten så behöver du en 32-bitars UP, till exempel en PIC32.
Dock, alla processorer du bör använda är ytmonterade, samma gäller en korthållare för CF.
För att förstå hur de fungerar, behöver du lära dig IDE-Gränssnittet.
Hastigheten följer samma formel som CD-spelare, dvs 1x=150kB/s och 20x=2MB/s
Snabbaste BURST-rate är fn 167MB/s dvs UDMA7
De övriga accessmoderna för ett CF-kort motsvarar ett PCI-kort, dvs när PC_Card varianterna används, är kortet ett PCI-kort, så med en enkel adapter kan man faktiskt stoppa i kortet på en ledig PCI-plats.
Och som nämnts, med en enkel adapter kan man sätta det på IDE-anslutningen, och det fungerar som en hårddisk.
I2C faller nog bort, då maximal klocka är 1 MHZ.
CF minnen kan du problemfritt köra i de hastigheter, dock är de lite mer komplicerade att läsa.
Fördelen är att de per default är 16 bitar och stöder DMA.
Dock för att kunna dra full nytta av det och få upp hastigheten så behöver du en 32-bitars UP, till exempel en PIC32.
Dock, alla processorer du bör använda är ytmonterade, samma gäller en korthållare för CF.
För att förstå hur de fungerar, behöver du lära dig IDE-Gränssnittet.
Hastigheten följer samma formel som CD-spelare, dvs 1x=150kB/s och 20x=2MB/s
Snabbaste BURST-rate är fn 167MB/s dvs UDMA7
De övriga accessmoderna för ett CF-kort motsvarar ett PCI-kort, dvs när PC_Card varianterna används, är kortet ett PCI-kort, så med en enkel adapter kan man faktiskt stoppa i kortet på en ledig PCI-plats.
Och som nämnts, med en enkel adapter kan man sätta det på IDE-anslutningen, och det fungerar som en hårddisk.
Re: Minneskretsar (flash)
Att vi pratar ytmonterat är ett fakta med "stora" minneskretsar! Och om det är ett problem att den "bara" är 8gg så stora som de gamla kan man enkelt expandera till valfritt storlek medelst bankning. I essens betyder det att man kan välja mellan 2 minneskretsar med en extra adressbit, mellan 4 minneskretsar med 2 extra adressbit osv.
Så det kan väl vara dags att beskriva VAD som ska uppnås, det är inte ens säkert att flash är rätta grejen...
Tänk scenariot att det ska vara möjligt att enkelt ändra kurvform, t.ex. vid att man har ett antal olika "inspelningar" som ska spelas upp, då är flash inte nödvändigtvis det bästa som finns. En rejäl minnesbank med RAM och t.ex. ett SD-kort med 4GB på kan man komma mycket långt med då.
Kanske det är dags att revidera och förtydliga behovet, definiera kraven och börja om på en nu kula, efter ett antal års användandet lär det vara känd vad enheten ska klara och vad som är önskvärd.
Därefter väljer man teknik - som kommer att betyda ytmonterat då...
Så det kan väl vara dags att beskriva VAD som ska uppnås, det är inte ens säkert att flash är rätta grejen...
Tänk scenariot att det ska vara möjligt att enkelt ändra kurvform, t.ex. vid att man har ett antal olika "inspelningar" som ska spelas upp, då är flash inte nödvändigtvis det bästa som finns. En rejäl minnesbank med RAM och t.ex. ett SD-kort med 4GB på kan man komma mycket långt med då.
Kanske det är dags att revidera och förtydliga behovet, definiera kraven och börja om på en nu kula, efter ett antal års användandet lär det vara känd vad enheten ska klara och vad som är önskvärd.
Därefter väljer man teknik - som kommer att betyda ytmonterat då...
Re: Minneskretsar (flash)
Det är inte till mycket hjälp här, det är inte en tillsats till en PC jag vill bygga utan en liten burk som spelar upp ljudfiler. Ungefär som en MP3-spelare, fast okomprimerat.TomasL skrev: De övriga accessmoderna för ett CF-kort motsvarar ett PCI-kort, dvs när PC_Card varianterna används, är kortet ett PCI-kort, så med en enkel adapter kan man faktiskt stoppa i kortet på en ledig PCI-plats.
Och som nämnts, med en enkel adapter kan man sätta det på IDE-anslutningen, och det fungerar som en hårddisk.
Senast redigerad av mikebike 28 mars 2011, 09:35:57, redigerad totalt 1 gång.
Re: Minneskretsar (flash)
Det är väl inga problem att göra ett IDE-interface och tillhörande kod till en mikrokontroller, vi gör det själva ihop med en PIC32, gissar att även 18F kan fungera, då det går att köra IDE-interfacet i 8-bitars mode också.
Vad jag ville får fram i mitt förra inlägg är hur interfacet till ett CF-kort fungerar, inte att man behöver en PC, vilket man naturligtvis inte gör.
Vad jag ville får fram i mitt förra inlägg är hur interfacet till ett CF-kort fungerar, inte att man behöver en PC, vilket man naturligtvis inte gör.
Re: Minneskretsar (flash)
Så SD är inte flash?Icecap skrev:Tänk scenariot att det ska vara möjligt att enkelt ändra kurvform, t.ex. vid att man har ett antal olika "inspelningar" som ska spelas upp, då är flash inte nödvändigtvis det bästa som finns. En rejäl minnesbank med RAM och t.ex. ett SD-kort med 4GB på kan man komma mycket långt med då...
Nej, flash är absolut inget självändamål, jag fortsätter gärna använda eprom, men de har inte blivit större sedan 2000, så det känns inte som någon framkomlig väg.Icecap skrev:Så det kan väl vara dags att beskriva VAD som ska uppnås, det är inte ens säkert att flash är rätta grejen......
Jag tycker jag har varit ganska tydlig med vad vi vill ha, men jag gör ett nytt försök.
Dagens utrustning består av 4 eprom på vardera 256k x 16 och 250 kHz uppspelningshastighet, vilket ger en dryg sekunds uppspelningstid innan det börjar om. Man kan säga att utsignalen är i stereo, eftersom två signaler spelas upp parallellt. Dessutom kan man välja mellan två (par) signaler.
Epromen sitter i vanliga DIL-socklar, vilket innebär två fördelar: Dels kan programmering/tillverkning av dessa ske på en annan plats och av en annan person/firma än själva kretskortet, dels kan man skicka ut nya prom till kunderna med nya kurvformer (det har dock aldrig hänt).
En lösning med ett gäng ytmonterade flash som programmeras via ICP känns inte speciellt attraktiv.
Den gamla konstruktionen fungerar bra (tillförlitlig), men några komponenter är svåra att få tag på, t.ex. tidbasen och DAC:en, och en omkonstruktion är snart nödvändig.
I samband med detta vore det önskvärt att även förbättra prestanda, främst uppspelningstiden eftersom en sekund är i minsta laget för att få plats med hela signalen.
8 ggr så stor datamängd skulle kunna vara en tillräcklig förbättring om det inte innebär alltför stor arbetsinsats, d.v.s. minnen som fungerar på samma sätt som de gamla men med fler adressbitar.
Det är inga problem, huvudsaken är att det går hyfsat lätt att byta minnet.TomasL skrev:Dock, alla processorer du bör använda är ytmonterade, samma gäller en korthållare för CF.
Det känns däremot som ett problem, det är ett stort tekniksprång jämfört med den gamla hårdvarubaserade lösningen.TomasL skrev: Det är väl inga problem att göra ett IDE-interface och tillhörande kod till en mikrokontroller, vi gör det själva ihop med en PIC32, gissar att även 18F kan fungera, då det går att köra IDE-interfacet i 8-bitars mode också.
Hade detta varit en nykonstruktion med en förväntad marknad på hundratals enheter hade man kanske varit beredd på en utvecklingskostnad på 100 kSEK, men vi har redan sålt över 100 enheter av den gamla modellen och kunderna lär inte slänga de gamla och byta till en ny version eftersom den gamla fungerar (tillräckligt) bra.
Finns det klassiska hålmonterade eprom som är större än våra gamla?