Hej Thomas
Jeg er meget taknemlig for din mail :)
læs venligst mellem dine egne linjer!
> Dette er ikke blot meget system specifikt, men jeg vil påstå at
> realtids behandling af "sample-by-sample" på en PC med et tvunget
> tidsdelings operativsystem ikke kan give noget godt resultat. Jeg
> mener at interrupt latancy i eks. vis. Windows kan blive op til 20ms
> med en 500MHz CPU. Hvis du vil processerer et 48kHz samplet signal,
> vil der jo komme et interrupt hvert ca. 21us, altså 1000 gange så
> hurtigt som interruptets maksimale latancy. En 500MHz CPU ville nok
> kunne afvikle en maskin intruktion hvert 10ns (godt 2100 maskin cycles
> til at håndterer interrupt og data processering). Til sammenligning
> kan man tage en DSP (33MHz ADSP2181 fra ADI) som vil kunne afvikle
> instruktioner hvert 30ns, men den har jo heller ikke et operativsystem
> i Windows klassen at slås med
.
Godt, det var rart at vide. Kendte i forvejen ikke til "tiderne"
> Problemet ligger i den forsinkelse der er i Windows kernen fra et DMA
> interrupt indtræffer, til det rent faktisk bliver signaleret til
> user/kernel SW. Du skal nok have fat i en ULTRA hurtig maskine hvis
> det skal være sample-by-sample du vil implementerer. Brug dog en lille
> buffer på 100 samples (det du kalder blokprocessering) eller sådan
> noget i den stil. Det vil selvfølgelig give et delay på godt 2ms.
Ja, forsinkelsen(groupdelayet) er for så vidt ligegyldig.
> Der er skam en god grund til at man benytter DSP'ere. De fleste bruger
> overdimensionerede DSP'ere til at simulerer deres algoritmer med i
> dag. Da en DSP mange gange er MEGET hurtigere end en eks. vis en
> Pentium CPU. Husk at en DSP typisk er en meget dedikeret processor.
Det med overdimensionerede DSP'er ved jeg ikke helt. På arbejdet hvor jeg
programmerer diverse EZ-kit's fra AD er det hændt et par gange at jeg har
"manglet" clockcycles og det har sågar været med en samplingfrekvens på
16kHz.
> Køb dig dog et lille EZ-KIT fra ADI med enten en 21xx/21xxx eller
> BlackFin DSP på. Det koster vel omkring 2k hvis du da ikke kender en
> som vil af med et billigere. Her kan man med lidt snidle også få fat i
> en GCC compiler. Jeg har en GCC til eks. vis 21xx versionen (G21), har
> ikke kunnet få fat i en til mit SHARC board (G21K). Man skal bare lige
> huske at man nok kommer længst med assembler til disse typer CPU'er.
Har allerede en 21065L liggende foran mig som jeg ikke bruger(gider ikke
rode med boardet efter 8 timer på arbejdet) - det er for øvrigt til salg.:)
Findes der en GCC til 21xxx? det lyder meget spændende. Jeg er nu ret glad
for Visual DSP++ V2.0 som vi har på arbejdet, men som desværre er en
serverlicens så jeg kan ikke bruge det hjemme.
> Prøv iøvrigt at spørge i comp.dsp (engelsk), her sidder nogle heftige
> DSP hoveder (ADI/TI osv.) som sikkert vil kunne give dig nogle fif til
> hvordan du skal gribe det an, hvis du VIL lave realtids simulering på
> en PC.
Kender godt comp.dsp! Ja, der er nogle meget kvikke/begavede mennesker der.
For nu at vende tilbage til C++ kode spørgsmålet:
Hvis jeg nu ønsker løsningen med en buffer, har du koden så jeg kan komme
igang. Jeg har ikke programmeret i C++ i meget lang tid og ku' godt tænke
mig at mestre det hvilket i virkeligheden er årsagen til jeg er startet på
dette her projekt.?
Tak igen for din mail!
Thomas