Propeller leker DSP... nä, men artificiellt nätverk! *klar

Berätta om dina pågående projekt.
Användarvisningsbild
oJsan
EF Sponsor
Inlägg: 1541
Blev medlem: 11 november 2005, 21:36:51
Ort: Umeå
Kontakt:

Inlägg av oJsan »

Pullup på reset tänkte jag på när jag såg schemat.... inte bra om den är flytande (såvida den inte har någon intern pullup?)
En annan sak... varför mata AD-omvandlarna med var sin SCLK? är det inte bättre att köra dom synkront på samma klocka? (fast jag vet å andra sidan inte hur propellern är uppbyggd internt)
Användarvisningsbild
DuckHead
Inlägg: 146
Blev medlem: 12 februari 2005, 23:48:39
Ort: Malmö (org: Gbg)
Kontakt:

Inlägg av DuckHead »

Jag tänkte inte använda EEPROM, men nu när du säger det BEEP så kanske det är bäst (om man ska köra ett demo i skolan kommer det naturligtvis inte fungera att ladda ner :? ). Hittar dock inget 24LC256 i Sverige, däremot har ELFA detta: 73-971-10. Tror ni det fungerar?

BEEP, hade du någon pullup på RESn, på ditt breadboard?

Angående klockorna så tänkte jag att eftersom jag kanske vill köra en kog per A/D, så får respektive kog generera sin egen klocka. Det det var bra observerat oJsan! Ska fundera på det...
Användarvisningsbild
BEEP
EF Sponsor
Inlägg: 1593
Blev medlem: 21 januari 2006, 16:57:56
Ort: Mölndal

Inlägg av BEEP »

24LC256 PDF --> 73-933-58 PDF eller 73-971-69 PDF

Nej jag har ingen pullup, har kopplat precis som på din ritning
Senast redigerad av BEEP 26 oktober 2006, 22:11:55, redigerad totalt 1 gång.
Användarvisningsbild
DuckHead
Inlägg: 146
Blev medlem: 12 februari 2005, 23:48:39
Ort: Malmö (org: Gbg)
Kontakt:

Inlägg av DuckHead »

Toppen, tack BEEP!
Användarvisningsbild
Andax
Inlägg: 4379
Blev medlem: 4 juli 2005, 23:27:38
Ort: Jönköping

Inlägg av Andax »

DuckHead, två saker:

Du får 0.7V dropp över dioden som du satt på utgången av spänningsinverteraren. Jag skulle nog skippat dioden.

Håller med oJsan att det vore bättre att köra SCLK till båda ADC samtidigt.
Skulle faktiskt även dragit ihop och kört med en gemensam CS.
Du får loss 2 pinnar till annat, men sedan tror jag det blir enklare programmering om du sköter all AD omvandling via en KOG, då kan du få ett fint synktront flöde och du vet att båda kanalerna är i synk.

Tycker förövrigt att det är ett coolt projekt! 8)
Användarvisningsbild
BEEP
EF Sponsor
Inlägg: 1593
Blev medlem: 21 januari 2006, 16:57:56
Ort: Mölndal

Inlägg av BEEP »

Jag tror att Hydra bara har RC filter för ljudet.

hss_song4.mp3

(HSS) The Musical Propeller. (Hydra Sound System)


Edit:
Parallax demoboard (RC filter).
Parallax Forums > Public Forums > Propeller chip > SINGING MONK SQUAD

Ladda ner och ändra filändelsen till mp3.
PropellerMonks.mp3.txt
Seven.mp3.txt
Senast redigerad av BEEP 28 oktober 2006, 12:28:46, redigerad totalt 1 gång.
Användarvisningsbild
Andax
Inlägg: 4379
Blev medlem: 4 juli 2005, 23:27:38
Ort: Jönköping

Inlägg av Andax »

En Propeller fråga. Vad kör den med för instruktionstid?
Har den flera interna register per processorkärna?

Funderade bara på hur lång tid det tar att toggla SCLK, skifta in en bit från kanal 1 till ett register, skifta in en bit från kanal 2 till ett annat register, toggla SCLK, loopa detta 12 ggr i maskinkod?

Det tar väl något liknande att skifta ut till DAC, fast jag tror där körde man 14 eller 16 bitar (trots att det är en 12 bitars DAC).

44100 Hz * 2 kanaler * 16 bitar => 1.4 Mbit/s

Kan som sagt för lite om Propeller för att veta hur snabb den är. Men jag har ju hört att man kan generera video med den. Så det borde inte vara några problem. Eller?
Användarvisningsbild
BEEP
EF Sponsor
Inlägg: 1593
Blev medlem: 21 januari 2006, 16:57:56
Ort: Mölndal

Inlägg av BEEP »

"En Propeller fråga. Vad kör den med för instruktionstid?"

En Cog (totalt 8 st) snurrar i 80 MHz och dom flesta instruktioner tar 4 klockcykler så då skulle instruktionstiden bli 1/80000000*4 = 0.00000005 s.

Det här är första gången som jag räknar på tiden för en instruktion på en mikroprocessor så jag hoppas att jag har räknat rätt?


"Har den flera interna register per processorkärna?"

Each cog has its own RAM, called Cog RAM, which contains 512 registers of 32 bits each.
The Cog RAM is all general purpose RAM except for the last 16 registers, which are special
purpose registers, as described in Table 1-3.

Propeller Manual v1.01 (4.74MB)
Användarvisningsbild
Andax
Inlägg: 4379
Blev medlem: 4 juli 2005, 23:27:38
Ort: Jönköping

Inlägg av Andax »

Då borde det väl hinnas med... ...tror jag! :)

DuckHead, du får rapportera mera... Jag är så nyfiken!
Användarvisningsbild
DuckHead
Inlägg: 146
Blev medlem: 12 februari 2005, 23:48:39
Ort: Malmö (org: Gbg)
Kontakt:

Inlägg av DuckHead »

Som BEEP säger, nog har propellern kraft alltid. Att den kan generera en videosignal är dock inte ett bra mått på hur snabb den är, då det i detta fall rör sig om en speciell hårdvarumodul som genererar signalen. Men 80MHz per kog är väl helt okej. En flaskhals kan dock vara om man vill accessa minne i hub ramet (delat minne). Kogen som vill ha access kan då få vänta i upp till 22 cykler.

BEEP, var läser du att de flesta instruktioner tar 4 cykler? Menar du SPIN instruktioner? Jag skulle vilja veta hur lång tid bla "*" SPIN instruktionen tar. Hittar ingenting om instruktionstid i manualen. Tycker de borde skilt på manual för Propeller och för IDE. Lätt för mig att sitta och säga... =D

I övrigt så har jag nu lagt till ett EEPROM, ändrat ett par missar i schemat (matar nu A/D med 5V för att matcha filterutgången) och kliat mig i huvudet och funderat på vad jag har gett mig in på. =D Nä då, det ska nog gå bra...

Funderar fortfarande på att lägga de två A/D på samma klocka och chipselect. Mina funderingar om varför de inte skulle göra det är om jag skulle implementera två helt oberoende filter. Då hade det kanske varit bra om respektive filter fick sköta respektive A/D. Jag är inte helt klar på den punkten ännu, men det lutar väl åt att de kommer ligga på samma bussar.

Andax, den där dioden satte jag där, då jag blivit tipsade om det. Jag är dock inte säker på varför den ska vara där. Står inget om den i databladet vad jag kan se. På infobilden hos ELFA finns den med som optional. Kanske skippar den, för visst blir det ett spänningsfall.

Ska uppdatera min inköpslista, sedan lägger jag ett par ordrar. Skit att ELFA inte har USB till RS232 kretsen, den får jag beställa från Lawicel. Ska börja skissa ett kretskort också.

Riktigt kolla ljudgrejer folk har gjort med propellern! Singing Monk Squad med "4-part harmony from the 16th century" är ju asball.



Cheers!
:P
Användarvisningsbild
BEEP
EF Sponsor
Inlägg: 1593
Blev medlem: 21 januari 2006, 16:57:56
Ort: Mölndal

Inlägg av BEEP »

"var läser du att de flesta instruktioner tar 4 cykler? Menar du SPIN instruktioner?"
Assembler, sidan 350 i manualen.

Jag tror inte att det står något i manualen om hur mycket långsammare SPIN är jämfört med assembler :?:


Edit:
Hittade lite inf i en tråd.

"Hi Jon,
Is there any performance hit using spin instead of assembler?"

"Yes, it's pretty big: Chip estimates that assembler runs about 250x the same program in Spin. The up-side of Spin is that it's a lot easier to code and can use the entire global RAM (which accounts for some of the speed penalty due to hub access). And Spin is not slow by Parallax standards -- about 2x the BS2px (using a 5 MHz crystal and the 16x PLL tap [80 MHz internal clock]).

The good news is that those of us who don't want to write in assembly can take advantage of those who do (like Chip) -- all Propeller assembly programs have a Spin interface which makes them easy to connect to a project.

Jon Williams
Applications Engineer, Parallax"
Användarvisningsbild
exile
EF Sponsor
Inlägg: 496
Blev medlem: 21 oktober 2005, 23:32:07

Inlägg av exile »

Är det bara jag som regerar på att insingnalen till dac är +/-, vilket inte adc klarar av. Han kommer då att få en klippning av de negativa delen av singnalen...

Sedan har han inget filter på utgången från DAC vilket kommer leda till ganska stort kvatserings brus...

Du kan lösa det genom att göra en virutuel jord på vcc/2 (samtidigt sliper du spänings inverteraren)

Sedan saknar Propeller hårdvare mulplikator vilket gör att mulplikation prestandan inte kommer vara på top... (vilket är ganska avgörande för ett FIR filter)

typ 160 (Mips) / 16(bitar)/3(instruktioner per bit för multiplikation)/44,1k(samplings frekvensen) /2 (kanaler) ~ 37 tapar med alla 8 Cog

Vist går det få upp hastigheten genom att använda konstanter, delvis genom att hård koda mulplikationerna för fasta konstanter...
typ 160(Mips) / 16bitar /0,5(antar hälften är noller) /2 (instruktioner add och skift, delvis ingen bit test då vi vet i förväg vad man multipliserar med)/44,1k(samplings frekvensen) /2 (kanaler) ~ 113 tapar med alla 8 Cog

Det är inte för att såga din ide, utan för ge dej lite mer kött på benen så att vet var du ger dej in på ^^

Sedan skulle jag nog använda en DAC som klarar 3,3volt för att slippa 5volt regulatorn... Men det är jag ^^

En Audio codec (inhåller filer ADC och DAC) skulle lösa en heldel problem men jag tror Propeller inte kommer hinna bit-banga I2S
Användarvisningsbild
DuckHead
Inlägg: 146
Blev medlem: 12 februari 2005, 23:48:39
Ort: Malmö (org: Gbg)
Kontakt:

Inlägg av DuckHead »

exile, du slog verkligen huvudet på spiken med ditt inlägg. Det är precis dessa problem jag har suttit och grubblat över i helgen! Jag mätte upp igår att utsignalen från min dators ljudkort är maximalt 1.2volt peak-peak. Filtret jag har nu förstärker mellan 3 och 7 gånger, beroende på inställning. Jag har lagt till en virtuell jord för att höja upp signalen och kom på så sätt precis som du säger exile undan spänningsinverteraren. Har lagt till en kondensator och motstånd på ingången för att förhindra att eventuella DC-komponenter kommer in och från ingången att flyta DC mässigt.
Min käre vän KennethF som finns här på forumet, tipsade mig om att använda log tabell istället för multiplikator. Dra mig i backen, men Propellern inehåller ju faktiskt en 2048 tals lång log och anti-log tabell! Woho! Kanske ett audio filter går att få till trots allt. Multiplicering blir ju addition för logaritmer.

Nytt schema: http://biphome.spray.se/hippie/Visio-Ritning.pdf

exile, vad är det för filter ut från DACen du menar? Ett till lågpassfilter? RC?

Snart ny vecka...
Användarvisningsbild
exile
EF Sponsor
Inlägg: 496
Blev medlem: 21 oktober 2005, 23:32:07

Inlägg av exile »

Log tabeller, tja det borde kunna bli ett hyfsat resultat... så vidare du multiplisera med 0 eller negativt tal (men det är klart att det räker med några if satser)


För Dac behöver du ett lågpass filter (dock inte så brant) för att få bort kvanteserings bruset, samnt ett högpass filter som hindrar DC att komma ut på utgången (en kondensator). Sedan är väll utsingnal nivån lite väl hög, så en volym kontrol?

Sedan tycker jag att ingångs filtert ser lite knepigt ut... Exempel om du inte har någon singnal in, delvis DC så kan man "ta" bort kondensatorena och då får vi att plus ingången på opampen är på 0 samt att minus ingången är på 2.5volt vilket får utgången att vara bottnad på 0. Vilket inte är så bra då den önskade värdet borde vara 2,5volt.... så 47k motsåndet borde vara anslutet till virtuella jorden istället för "nollan"

Sedan kan man om man vill ha samma sck och cs för bägge ADC och DAC. (för att spara pinnar, om man nu vill det)

Och till sist en lite fråga, tål verkligen propeller 5volt på ingångarna. Jag har för mej att den inte gillar det... (från ADC:arna)

Det ska bli intresant att se det färdiga resultatet, du kan väll hålla oss på forumuet uppdaterade ^^
Användarvisningsbild
DuckHead
Inlägg: 146
Blev medlem: 12 februari 2005, 23:48:39
Ort: Malmö (org: Gbg)
Kontakt:

Inlägg av DuckHead »

Oj, nu var det ett bra tag sedan jag uppdaterade projektet. Det har gått så lång tid att jag faktiskt är klar. Nu var det ju tänkt att bli ett ljudorienterat program (dsp), men det blev det alltså inte. Nä, istället så läste jag på om artificiella nätverk och lyckades implementera ett teckenigenkänningssystem (långt ord!).
Man använder sig utav en mus och ritar in tecknena på en VGA skärm. Tanken var att utnyttja flera av Propellerns cogar som parallella noder. Nu tog tyvärr drivrutinera för PS2 och VGA upp 4 stycken så fanns det bara fyra kvar för main och annat. Implementationen av nätverket fick således bli sekvensiell, men det funkar fint och blixtsnabbt ändå. En bild på GUI:t syns nedan.

Jag måste verkligen lyft på hatten för denna processor, den är underbar att jobba med. Lite jobbig ur debug-synvinkel, men med en uart fungerar det väl ok. Cogarna borde också ha något snabbt sätt att prata med varandra, idag måste man gå via hubminnet, bökigt och kan ta upp till över 20 clk.
Nätverket kan lära sig upp till 4 tecken, kanske lite, men minnet tog slut =( VGAns fel!

By the way, köpte ett demokort. Hade inte tyvärr inte tid att bygga.

Skönt att projektet är över i alla fall, på fredag blir det tenta (realtidssystem).

Bild
Skriv svar