Lösning för att skicka ut en sekvens på ~1000 tal i följd?

Planering och tankar kring eventuella framtida projekt.
nboy
Inlägg: 6
Blev medlem: 8 februari 2008, 11:26:09
Ort: Borås

Lösning för att skicka ut en sekvens på ~1000 tal i följd?

Inlägg av nboy »

Hej
Jag har ett fall där jag skall skicka ut ett antal olika tal i följd (1000st) och där efter börja om från början. Jag har gjort detta med en atmel uprocessor och det funkade bra. Problemet är att det går för långsamt.

Det jag skulle vilja göra är att bygga en krets som håller tabellen i ett minne och som jag triggar på en ingång när det är dags att presentera nästa tal. En tanke jag haft är att designa detta med en FPGA. Min fundering är om det redan finns en krets för denna funktion färdigt?

Ideer mottages tacksamt.

//nboy
Senast redigerad av blueint 29 oktober 2013, 19:06:40, redigerad totalt 1 gång.
Anledning: var: Räknare
Användarvisningsbild
adent
Inlägg: 4125
Blev medlem: 27 november 2008, 22:56:23
Ort: Utanför Jönköping
Kontakt:

Re: Räknare

Inlägg av adent »

Hej och välkommen till forumet!

Läs gärna igenom det du skriver innan du postar och låtsas att du inte är insatt i det du pratar om :)

"Jag har ett fall där jag skall skicka ut ett antal olika tal i följd (1000st) och där efter börja om från början." - En smula (snarare väldigt mycket) obegripligt utan sammahang! Ta gärna med lite bakgrundsinformation också så man vet vad det handlar om, ibland kanske en helt annan lösning kan vara rätt väg att gå.

MVH: Mikael
Användarvisningsbild
Walle
Moderator
Inlägg: 7660
Blev medlem: 14 december 2004, 10:32:18
Ort: Stockholm

Re: Räknare

Inlägg av Walle »

Hej och välkomen till EF! :)

Förrutom det som adent skriver så saknas det lite vesäntlig information. Talen som du ska "skicka ut", vad är det för typ av tal och hur/på vad ska de "skickas ut"? D.v.s. är det 8-bitarstal som ska ut på en serielina, är det 32-bitarstal som ska ut paralellt, ska de kanske ut som BCD? Det finns väldigt många olika sätt att "skicka ut" tal på, samt att talen kan vara av ett antal olika typer.
Hur ofta/med vilken frekvens, ska talen "skickas ut"?
nboy
Inlägg: 6
Blev medlem: 8 februari 2008, 11:26:09
Ort: Borås

Re: Räknare

Inlägg av nboy »

Hej
Ja, det gick kanske lite fort.

Jag skall i slutändan skicka ut en sågtandsformad signal. Denna signal är en kalibrerad styrspänning till en fasskiftarkrets.
Frekvensen på sågtandssignalen vill jag styra med en vanlig signalgenerator(Fyrkant).
fråga.jpg
Eftersom det kommer finnas ett stort antal olika sågtandsformer och jag måste kunna byt närsomhelst så tänker jag mig att dessa kurvformer ligger i ett minne som tabeller.

En tabell består av 1000 tal och varje tal är 12 bitar.
kurva.jpg
Varje positiv flank från insignalen stegar kretsen som efterfrågas till nästa tal i tabellen. När tabellen har nått tabellvärde 1000 så återgår den till noll.
Alltså om jag skickar in en signal fyrkantssignal på 1kHz så ger det mig en sågtand på 1Hz.

Maximal frekvens på utsignalen skall var minimum 4kHz

Är det lite klarare nu vad jag efterfrågar?

Mvh nboy
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
LHelge
Inlägg: 1772
Blev medlem: 2 september 2007, 18:25:31
Ort: Östergötland
Kontakt:

Re: Räknare

Inlägg av LHelge »

Det hade nog gått alldeles utmärkt med en FPGA eller en lite kraftigare microkontroller, t ex Cortex-M3 eller liknande.

Maximala klockfrekvens som du ska läsa/skicka är med andra ord 4 MHz?
nboy
Inlägg: 6
Blev medlem: 8 februari 2008, 11:26:09
Ort: Borås

Re: Räknare

Inlägg av nboy »

Hej
Jo det är helt korrekt. Det känns som en FPGA är som gjord för detta. Tyvärr har jag lite begränsade kunskaper vad gäller FPGA.
Det stämmer att 12 bit parallell bussen uppdaterats med maximalt 4MHz.
Det känns oxå lite överdrivet att ta till en FPGA för en så pass enkel operation, min huvud fråga är om det inte finns någon krets som kan detta redan eller nästan med lite modifikation. :roll:

mvh nboy
limpan4all
Inlägg: 8228
Blev medlem: 15 april 2006, 18:57:29
Ort: Typ Nyköping

Re: Räknare

Inlägg av limpan4all »

Vilken microcontroller som helst som har stöd för DMA klarar din uppgift enkelt.
Nu kommer de svåra frågorna.
Hur mycket sampel-jitter tål du?
Vad har du för insvängningstid på D/A omvandlaren och hur filtrerar du efter D/A omvandlaren?
Användarvisningsbild
hcb
Moderator
Inlägg: 5792
Blev medlem: 23 februari 2007, 21:44:50
Skype: hcbecker
Ort: Lystrup / Uppsala
Kontakt:

Re: Räknare

Inlägg av hcb »

Vad är det som kräver den höga upplösningen?
nboy
Inlägg: 6
Blev medlem: 8 februari 2008, 11:26:09
Ort: Borås

Re: Räknare

Inlägg av nboy »

Vad är det som kräver den höga upplösningen?
chefen :D

Jag har inte designat D/A omvandlaren än. Tidigare använde en processor med inbyggd D/A och det höll inte vare sig gitter eller insvängningstid.

Mvh nboy
sm5tfx
Inlägg: 114
Blev medlem: 20 juli 2011, 14:28:41
Ort: Gnällbältet

Re: Räknare

Inlägg av sm5tfx »

En 10-bitars-räknare och ett (E)PROM eller flash-minne med lämpligt innehåll måste väl vara det absolut enklaste, så länge man inte ska ändra kurvformen alltför ofta (man kan ju ha ganska många tabeller att välja på i normalstora minneskapslar).
Användarvisningsbild
Icecap
Inlägg: 26227
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Lösning för att skicka ut en sekvens på ~1000 tal i följ

Inlägg av Icecap »

Det finns dual-port RAM som kan användas om man vill.
gkar
Inlägg: 1460
Blev medlem: 31 oktober 2011, 15:28:29
Ort: Linköping

Re: Lösning för att skicka ut en sekvens på ~1000 tal i följ

Inlägg av gkar »

Ta en ARM7 eller dylikt i passande smak och kör denna kod, utrollad 1000 gånger.
Anpassa klockan efter vad du vill ha eller lägg in noppar.

r1 datatabell, r2 pekande på utporten.

ldr r0,[r1],#4
str r0,[r2]
ldr r0,[r1],#4
str r0,[r2]
ldr r0,[r1],#4
str r0,[r2]
ldr r0,[r1],#4
str r0,[r2]
Etc 1000 gånger.

Rätta mig om jag har fel, men LDR tar 3 och STR tar 2 på ARM7, så totalt 5 cykler / dataord.
Snabbare än så kan man inte göra det utan DMA eller att introducera jitter i dataströmmen.
RoPa
Inlägg: 630
Blev medlem: 13 januari 2006, 10:32:06

Re: Lösning för att skicka ut en sekvens på ~1000 tal i följ

Inlägg av RoPa »

Googla på wavetable.

Som sm5tfx skriver, ett minne (på 12 bitar och 1K "word" per sågtandsprofil, så det blir troligen två a' 8 bit där fyra inte används), en 10 bitars räknare (1024 "tal") på adresslinje A0 - A9 och en 12 bits D/A, adress A10 och uppåt används för att välja vågform.
Allt finns som färdiga kretsar och du behöver inte fundera på jitter mm.

Om du inte har behov av att ladda in nya vågformer behövs inte ens en CPU/MCU för att ladda minnet, då kan du ha valfri typ av "ROM" minne.

Det du inte nämner är om du behöver filtrera bort kvantifieringbruset men kanske är 1000 ggr sampling och 10 bitar tillräckligt för att komma under/över brus och frekvens respons i det styrda systemet? (dvs. det styrda systemet har en respons som har inbyggd "filter karaktär").

Lycka till!
nboy
Inlägg: 6
Blev medlem: 8 februari 2008, 11:26:09
Ort: Borås

Re: Lösning för att skicka ut en sekvens på ~1000 tal i följ

Inlägg av nboy »

Super tack för alla svar. Det är precis de svar jag söker. :D
Som sm5tfx skriver, ett minne (på 12 bitar och 1K "word" per sågtandsprofil, så det blir troligen två a' 8 bit där fyra inte används), en 10 bitars räknare (1024 "tal") på adresslinje A0 - A9 och en 12 bits D/A, adress A10 och uppåt används för att välja vågform.
Kan du utveckla detta lite till? Jag har inte jobbat med nån räknare förut. Har du något förslag på krets och minne?

Mvh nboy
nboy
Inlägg: 6
Blev medlem: 8 februari 2008, 11:26:09
Ort: Borås

Re: Lösning för att skicka ut en sekvens på ~1000 tal i följ

Inlägg av nboy »

Hej
Tack för era tips. Jag nästa skäms över att jag inte kom på denna lösning själv. Jag kommer att bygga med counter till minne till DAC. Tusen tack EF. :tumupp:

Mvh nboy
Skriv svar