ARM MCU snabb men endast 3,5 MHz på I/O ..?
ARM MCU snabb men endast 3,5 MHz på I/O ..?
http://www.avrfreaks.net/index.php?name ... ic&t=68833
"My test on a LPC2103 running at 60 MHz, show that the max frequency avilable on an I/O pin was 3.5 MHz for a loop that did"
Stämmer det att ARM MCUer har så låg respons på I/O portarna?
"My test on a LPC2103 running at 60 MHz, show that the max frequency avilable on an I/O pin was 3.5 MHz for a loop that did"
Stämmer det att ARM MCUer har så låg respons på I/O portarna?
Re: ARM MCU snabb men endast 3,5 MHz på I/O ..?
Jag har ingen erfarenhet eller liknande men rent omedelbart skulle jag räkna lite:
60MHz:2 = 30MHz (kan ju fint vara sekvenscyklar som anges...)
Om sekvensen som växlar läge på portpinnen ser ut som t.ex. "Pinne ^= true;" kommer detta att ta runt 7-10 instruktioner att utföra.
(Har testat lite och på de µC jag lekar med är
if(Pinne) Pinne = 0;
else Pinne = 1;
en del snabbare än
Pinne ^= true;)
Så låt oss säga att hela snudden tar runt 8 instruktioner pga. kass programmering, då blir det 30MHz:8 = 3,75MHz vilket alltså är helt OK och realistisk. I loopen ska det ju även finnas en "hoppa till starten" som också tar tid så jag ser talet som ganska realistisk för en programmör som inte helt har koll på saken.
Sedan finns det lite annat som inte framgår - kan den som har kollat detta ens mäta dessa frekvenser tillförlitligt? Är det på ett oscilloskop som klarar av bandbredden?
Kan det vara så att h*n har varit tvungen att sänka frekvensen så pass att det syns på oscilloskopet?
Så som så ofta förut: tveksamma data, kan vara realistiska men jag tror inte att de är det! Jag är ganska säker på att de kan gå full hastighet på portpinnar också, i annat fall skulle ingen vilja jobba med dom helt enkelt!
"Sådär, nu är porten satt, nu ska programmet bara vänta på att den faktisk växlar..."? Skulle inte tro det!
60MHz:2 = 30MHz (kan ju fint vara sekvenscyklar som anges...)
Om sekvensen som växlar läge på portpinnen ser ut som t.ex. "Pinne ^= true;" kommer detta att ta runt 7-10 instruktioner att utföra.
(Har testat lite och på de µC jag lekar med är
if(Pinne) Pinne = 0;
else Pinne = 1;
en del snabbare än
Pinne ^= true;)
Så låt oss säga att hela snudden tar runt 8 instruktioner pga. kass programmering, då blir det 30MHz:8 = 3,75MHz vilket alltså är helt OK och realistisk. I loopen ska det ju även finnas en "hoppa till starten" som också tar tid så jag ser talet som ganska realistisk för en programmör som inte helt har koll på saken.
Sedan finns det lite annat som inte framgår - kan den som har kollat detta ens mäta dessa frekvenser tillförlitligt? Är det på ett oscilloskop som klarar av bandbredden?
Kan det vara så att h*n har varit tvungen att sänka frekvensen så pass att det syns på oscilloskopet?
Så som så ofta förut: tveksamma data, kan vara realistiska men jag tror inte att de är det! Jag är ganska säker på att de kan gå full hastighet på portpinnar också, i annat fall skulle ingen vilja jobba med dom helt enkelt!
"Sådär, nu är porten satt, nu ska programmet bara vänta på att den faktisk växlar..."? Skulle inte tro det!
-
victor_passe
- Inlägg: 2436
- Blev medlem: 28 januari 2007, 18:45:40
- Ort: Kungsbacka
Re: ARM MCU snabb men endast 3,5 MHz på I/O ..?
PIC32 kan man uppnå nästan 40MHz på i/o pinnarna.
Det finns register som heter typ "PORTBINV" och skriver man en 1:a till bit 1 så inverteras PORTB.Pinne1.
Det finns register som heter typ "PORTBINV" och skriver man en 1:a till bit 1 så inverteras PORTB.Pinne1.
Re: ARM MCU snabb men endast 3,5 MHz på I/O ..?
För det första så är nog inte 3.5 MHz "låg respons" på I/O pinnar hanterade direkt från koden.
Det är mycket mer än de allra flesta externa processer kräver.
För det andra så förklaras detta ganska ingående i det forum du länkade till.
Om du inte hade klippt ditt citat så är det ju tydligt :
som helst vid motsvarande frekvens.
> PIC32 kan man uppnå nästan 40MHz på i/o pinnarna.
Men knappast om den ska göra något annat "jobb" förutom att toggla en pinne också.
(Och sannolikt inte vid 60 Mhz processorhastighet)
Det är mycket mer än de allra flesta externa processer kräver.
För det andra så förklaras detta ganska ingående i det forum du länkade till.
Om du inte hade klippt ditt citat så är det ju tydligt :
Det är väl ungefär det man kan förvänta sig från vilken processorarkitekturYes, that's what I say.
The architecture with the AHB bus just does not allow it, also, the pipeline "breaks" when you have a tight loop.
The ARM is not designed for fast port fiddling. It has internal devices for such. Including USB. It was never meant for hacks like bit banged I/O.
The Atmel SAM7 is way faster than the Philips variants.
My test on a LPC2103 running at 60 MHz, show that the max frequency avilable on an I/O pin was 3.5 MHz for a loop that did:
start loop:
Pin lo,
Pin Hi,
loop
som helst vid motsvarande frekvens.
> PIC32 kan man uppnå nästan 40MHz på i/o pinnarna.
Men knappast om den ska göra något annat "jobb" förutom att toggla en pinne också.
(Och sannolikt inte vid 60 Mhz processorhastighet)
-
victor_passe
- Inlägg: 2436
- Blev medlem: 28 januari 2007, 18:45:40
- Ort: Kungsbacka
Re: ARM MCU snabb men endast 3,5 MHz på I/O ..?
Nej, vid 80MHz.
men koden för ARM processorn gör ju inte heller något annat?
men koden för ARM processorn gör ju inte heller något annat?
Re: ARM MCU snabb men endast 3,5 MHz på I/O ..?
Nä, det är väl lite olika designval helt enkelt.
Ett ganska meningslöst test/paramater i alla fall.
Alla processorer i denna "klass" har inbyggda hårdvaruenheter
för att ta hand om höghastighetskommunikation.
Visa ett komplett kodexempel där du togglar en pinne med
40 MHz istället. D.v.s "sustained", inte bara ett par gånger...
Om ARM'en hade gjort :
Pin lo,
Pin Hi,
Pin lo,
Pin Hi,
Pin lo,
Pin Hi,
Pin lo,
Pin Hi,
Pin lo,
Pin Hi,
istället så hade det kanske blivit lite mer en 3.5 MHz (ett litet tag).
Men, som sagt, ett ganska meningslöst test i alla fall...
Ett ganska meningslöst test/paramater i alla fall.
Alla processorer i denna "klass" har inbyggda hårdvaruenheter
för att ta hand om höghastighetskommunikation.
Visa ett komplett kodexempel där du togglar en pinne med
40 MHz istället. D.v.s "sustained", inte bara ett par gånger...
Om ARM'en hade gjort :
Pin lo,
Pin Hi,
Pin lo,
Pin Hi,
Pin lo,
Pin Hi,
Pin lo,
Pin Hi,
Pin lo,
Pin Hi,
istället så hade det kanske blivit lite mer en 3.5 MHz (ett litet tag).
Men, som sagt, ett ganska meningslöst test i alla fall...
-
victor_passe
- Inlägg: 2436
- Blev medlem: 28 januari 2007, 18:45:40
- Ort: Kungsbacka
Re: ARM MCU snabb men endast 3,5 MHz på I/O ..?
Verkar lite osannolikt att den skulle göra två instruktioner (inkl
ett "hopp") inom samma klockcykel. Men är det så så.
(För att få ut 40 MHz på en pinne så måste man invertera
pinnen med 80 MHz, alltså lika snabbt som processorklockan...)
ett "hopp") inom samma klockcykel. Men är det så så.
(För att få ut 40 MHz på en pinne så måste man invertera
pinnen med 80 MHz, alltså lika snabbt som processorklockan...)
-
victor_passe
- Inlägg: 2436
- Blev medlem: 28 januari 2007, 18:45:40
- Ort: Kungsbacka
Re: ARM MCU snabb men endast 3,5 MHz på I/O ..?
Man får skriva:
top
PORTAINV=1;
PORTAINV=1;
PORTAINV=1;
PORTAINV=1;
PORTAINV=1;
PORTAINV=1;
...
goto TOP.
Men visst då når man inte riktigt upp i 40MHz men desto fler upprepningar av PORTAINV=1; desto närmare.
Men skriver man bara en gång får man bara 20MHz på PORTA.1(15MHz @ 60MHz sysclk)
Det är ju dock mer än 3,5MHz.
top
PORTAINV=1;
PORTAINV=1;
PORTAINV=1;
PORTAINV=1;
PORTAINV=1;
PORTAINV=1;
...
goto TOP.
Men visst då når man inte riktigt upp i 40MHz men desto fler upprepningar av PORTAINV=1; desto närmare.
Men skriver man bara en gång får man bara 20MHz på PORTA.1(15MHz @ 60MHz sysclk)
Det är ju dock mer än 3,5MHz.
Re: ARM MCU snabb men endast 3,5 MHz på I/O ..?
Jorå, visst är det lite mer men...
Det är ju väldigt korkat att posta en siffra som
bl.a bygger på "rak" o-loopad kod och vid en annan
frekvens än vad det hela handlade om...
Det är ju väldigt korkat att posta en siffra som
bl.a bygger på "rak" o-loopad kod och vid en annan
frekvens än vad det hela handlade om...
Re: ARM MCU snabb men endast 3,5 MHz på I/O ..?
Han som skrivit inlägget på avrfreaks tror jag har samma användarnamn här på forumet, ni kan nog fråga honom. 
