Sida 1 av 2
Driva och terminera lång buss
Postat: 27 juli 2007, 11:56:39
av Maze
Skulle behöva driva ett par långa bussar med längden 500-800 mm med hjälp av en Spartan3 FPGA. Bussen ska ha fyra signaler med 3,3V CMOS nivåer och mottagarna är utsridda längs bussen. Har jordplan under så jag tänke mig striplines med 100 ohms impedans.
Mitt problem är hur jag ska lyckas driva och terminera bussen ? Eftersom jag har kretsar utspridda längs bussen funkar inte serieterminering och enkel terminering i slutet av bussen kommer dra för mycket ström då FPGAn lämnar max 24 mA per pinne. Finns det några andra sätt att lösa det på ?
Eftersom max klockfrekvens är 4 MHz, vilket ger en periodtid på 250 nS, funderar jag på om man inte kan sänka stig och falltiderna så att ringningar och reflektioner upphör. Räknade lite snabbt och kom fram till att en stigtid på ca 30 ns hade funkat dvs en 1/6 av signalens längd är lika med bussens längd. Är detta något som används i praktiken och i så fall hur implementerar jag det ? Vet att FPGAn kan ställas in på två olika slewrate och olika drivförmåga, kanske det går att använda för att uppnå det hela.
Postat: 27 juli 2007, 16:05:49
av peter555
Du kan lägga kondensatorer i serie med termineringsmotstånden så drar det ingen ström i viloläge.
Postat: 29 juli 2007, 22:54:02
av Maze
Jo det är en lösning, men funkar inte det bara om signalerna på bussen är DC balanserade ? Även en terminering med DC bias hade ju funkat och krävt mindre ström för FPGAn sett, men det är kanske lite onödig väg att gå om nu klockfrekvensen är så låg. Skulle det inte fungera att ställa ner FPGAns drivförmåga och få hela bussen att arbeta med en längre stigtid istället eller bör jag satsa på att terminera min buss korrekt vilket tyvärr leder till mycket högre strömförbrukning då det handlar om 64 utgångar. Längre stigtider borde väl vara att föredra i EMI syfte också. Leddrivarna som sitter längs bussen har schmitttrigger på ingångarna vilket borde vara en fördel.
Postat: 29 juli 2007, 23:05:45
av grym
vad ska du ha för kretskort?, bara fundering på varför du valt 100 ohm, kanske möjligt att öka den impendansen
har du provat hur signalen faktiskt ser ut längst bort om du inte terminerar helt ok?
Postat: 29 juli 2007, 23:16:20
av peter555
Postat: 30 juli 2007, 04:24:28
av xxargs
Om det skall gå över bandkabel eller twistad kabel så finns det inte mycket alternativ då båda har impedans av ca 100 Ohm vid frekvenser över 100-200 KHz.
Etsa på flexibla kort med jordplan ger lite större möjlighet, men ledarbredderna skulle bli ytterst smala även vid 100 Ohm pga. närheten till jordplan. Hög resistans pga smala ledare är heller inge bra då det ger hög sträckdämpning.
Primära uppgiften är att förninska reflexer som kan misstolkas. Vad jag förstår så är det avtapp på vägen vilket gör att reflexen på änden av kabeln måste dämpas - annars hade det räckt att sätta 100 Ohm i serie på utgången av drivern så att reflexen från kabeln inte vänder och åker ut igen.
Om ringningen/reflexen ha betydelse eller inte beror på när och hur mottagarkretsarna tar beslutet vad som är hög eller låg status rent tidmässigt - är det flanktriggat så är det bekymmersamt, är det i mitten på dataperioden så är ringningen i flankbörjan ointressant och det enda man kanske måste säkra på något sätt är synk/enable/latch-klockan fördröjs rätt och att ev. ringing den vägen inte ger någa andra beslut än väntat när statusen klockas in från de andra ledarna .
AC terminerat med konding i serie med 100 Ohm till backen borde fungera - står det och skakar hela tiden så är det mycket effekt som måste absorberas - Därför fins dom här lågvoltsteknikerna med differtiell överföring och matchade in och utgångar just för att svinget skall hållas låg men ändå med tillräklig signal/brus förhållande - det är enda sätte att få ned effektförbrukning/last på höga frekvesner då det är kabelns impedans som bestämmer hur mycket effekt som måste pumpas in för ett visst önskat spänningssving hos mottagarändan.
Att få ned stig och sänk-tiderna på pulserna är alltid bra när man jagar EMC, reflexer likaså då ringing fungerar som svängning på antenn och mer energi läcker ut i luften än en stum reflexfri höjning eller sänkning
USB-busen är väl i princip sista resten av busteknologierna som fortfarande kör med TTL-sving medans alla moderna seriella bussar kör med betydligt lägre sving - kabelimpedansen kan man inte göra mycket åt om man inte vill köra med gamla 300 Ohm TV-kabel eller 3-4 dm avstånd mellan ledarna om man vill ha 600 Ohm... - vill man 900 - 1200 Ohm impedans så kan man slå ett öga på våra kraftledningar och dess ledaravstånd...
Postat: 30 juli 2007, 09:52:45
av peter555
Det verkar som du har en ladder-line med 1 dm Cu-rör om du får 3-4 dm mellan ledningarna.
På mina 300 ohms TV-bandkablar är det ca 10 mm mellanrum.
Postat: 30 juli 2007, 20:39:00
av xxargs
1.9 mm ledardiameter och 3 dm avstånd ger 607 Ohm i luft, mao ingen rörmokeri direkt. Telefonins/telekoms 600 Ohm standard kommer nämligen ifrån hur lufthängda telegraf/telefonlinor kopplade sig mot varandra. Dessa har ingen diskantdämpning beroende längd som kabel uppvisar då impedansen är reell även nere på låga audiotonfrekvenser. Det var när man flyttade ihop ledarna och satte en bit isolering mellan som de stora problemen dök upp, kapasitansen ökade kraftigt och induktansen försvann nästan helt och gav kabeln nya oönskade egenskaper (kostade några misslyckade Atlantenkablar bara för att inse detta...).
I stället för en reel dämpning av α = 0.5R * √(C/L) * 8.686 dB per längdenhet vid lufthängt så får man komplex dämpning α = 8.686 * √((ωrc)/2) dB per längdenhet (ω = 2πf) med frekvensberoende och 45 grader fasvinkelskillnad mellan ström och spänning, resulterande av induktansen inte är längre dominerande faktorn. [1]
Man får en RCRCRC-effekt samt att strömmen är 45 grader förskjuten före spänningen och kräver därmed komplex anpassning vid låga frekvenser och långa sträckor (välbekant inom telefonin för att få till fungerande hybrid/gaffelkoppling)
Med andra ord dom flesta twisted pairkablar har en RCRC-dämpeffekt beroende av längden upp till ungefär 20 KHz och komplexa impedansen kan variera från 1200 Ohm vid 300 Hz till 200 Ohm vid 20kHz inom frekvensintervallet, medans 20 kHz till 200 kHz har man ett besvärligt övergångsområde där fasen ändrar sig kraftigt beroende av frekvensen och distar kurvformen på signaler som RS232 i 115200 baud och är en av förklaringarna att det inte går att köra på särskillt långa kabelsträckningar. Medans över 200 KHz och upp så är kabeln mer eller mindre 100 Ohm reel impedans oavsett om vi pratar telefontrådar, Cat5 eller bandkabel - kan variera mellan 90 - 120 Ohm ungefär vilket gör att en 100 Ohms terminering är gott nog för dom flesta fallen.
Med andra ord skall man ha långa sträckors överföringar av data så skall man hålla sig inom audiområdet eller över 200 KHz... annars måste man ha avancerad kodning som i ADSL-modem med komplett analys av linjens egenskap i sina modeller för att kunna tolka skrynklet som kommer fram.
---
[1]
Ovanstående är förenklade formler - vill man räkna noga så använder man hela telegrafekvationen - vilket inkluderar komplexa kvadratrötter.
Köper man miniräkare för sina studier i gymnasie/högskola så enligt min mening _måste_ den ha stöd för komplexa kvadratrötter och kan räkna komplexa tal på enkelt sätt - med en sådan är det enkelt att räkna på ovanstående (och vid räkning av reflektionskofficienten i samband med smithchart) , men skall man lösa detta manuellt så är det omfattande och dom flesta lär sig bara så långt som behövs för att klara proven och inte mer - och undviker liknande problemställningar som pesten i fortsättningen. Det är därför som man ser i litteraturen att tex. CAT5 etc skall avslutas med 100 Ohm fast man pratar om audiofrekvenser - vilket är HELT fel!!!
Postat: 30 juli 2007, 21:53:00
av peter555
Jag såg inte att du skrev 600 ohm lina. Du har helt rätt, det var förvånande att det drog iväg så mycket. Jag provade att beräkna en 300 ohms lina då fick man 0.9 mm tråd och 10 mm spacing. Jag håller med om, det stora missförståndet, att telefontråden är 600 ohm. Möjligen på mycket låga frekvenser sen går det snabbt ner mot 100 ohm.
Postat: 31 juli 2007, 11:00:03
av Maze
"Med andra ord skall man ha långa sträckors överföringar av data så skall man hålla sig inom audiområdet eller över 200 KHz... "
Men frekvensen ovan utgår väl ifrån signalens stig och falltider och inte dess klockfrekvens ? 0,5/Tr ger väl ett mått på vad som är högsta frekvensen i signalen och är väl det som man ska utgå ifrån när man avgör ledarens "elektriska längd" osv ?
Bussen ovan kommer att dras hela vägen på mönsterkort dvs ingen kabel. FPGAn kommer sitta mitt på ett "bakplanskort" med längden 640 mm tillsammans med 16 kontakter med CC mått 40 mm. Via dessa kontakter ansluts sen ytterligare kort med 3 leddrivare och längden 640 mm. Har tänkt använda fyrlagerskort för att kunna dra striplines och i EMI syfte med heltäckande jord och matningsplan.
Postat: 31 juli 2007, 11:15:45
av peter555
"Via dessa kontakter ansluts sen ytterligare kort med 3 leddrivare och längden 640 mm."
Om du tänkt dig att passivt hänga på långa ledningar på din bakplansbuss får du problem. Du måste ha drivers som är högomiga på ingången vid varje knutpunkt.
Postat: 31 juli 2007, 11:48:28
av Maze
Ok, lite slarvigt förklarat kanske. På bakplanet går det separata ledare till varje kontakt från FPGAn. På de korten som sen sätts i kontakterna fortsätter dessa ledare genom nästan hela korten. På dessa kort sitter det sen tre leddrivers utpridda med CC avstånd 200 mm. Dessa har vanliga CMOS ingångar och de ska enbart ta emot data från bussen.
Postat: 31 juli 2007, 18:55:47
av peter555
OK, det låter bättre, så termineringen sitter längst ut på instickskorten ?
Postat: 31 juli 2007, 19:50:08
av xxargs
Vad har du för symboltakt - dvs. den kortaste nyttiga klock/informationperioden ute i perferiområdet sas.
Det är egentligen den som avgör om reflexer är ett besvär för signalitergriteten eller inte - lite fnas i början på någon % i varje omslag har i sammanhanget ingen betydelse medans går den in 1/6 del av peroden så är det en annan sak.
En sak till - du har ingen nytta av 2 ns flanktider om din symboltakt ligger på 100 KHz till 1 MHz i perferin och kan gott filtrera utgångarna eller välja långsammare drivers så att flanktiderna stiger till typ 1/10 del av symboltiden eller liknande - ju långsammare det går här, ju mindre EMI-bekymmer får du.
Det här är faktiskt en av dom viktigaste designbesluten du kan ta när du designar din FPGA - dvs. hur fort perferin skall skaka som max. - en enda klockutgång som går 10 ggr fortare än resten av utgångarna kan förstöra alltihop. Detta och flanktiderna är det som bestämmer hur mycket jobb du senare måste lägga på EMI-hantering och ev. reflexhantering.
Regeln är kör inte högre frekvens/kortare periodtid/flanktid än vad som behövs för att få jobbet gjort på säkert sätt. - dock över 200 KHz om vi pratar långa transporter över kablar...
Postat: 1 augusti 2007, 12:55:12
av Maze
Tackar för alla svar än så länge. Jo, efter sista leddrivaren hade jag tänkt terminera ledarna om det nu behövs. Så här ligger det till, jag har två olika typer av leddrivare att välja mellan. Tar och beskriver de två alternativen lite och hoppas på lite goda råd på vad jag ska välja.
Den första varianten är av enkel on/off typ med ett shiftregister som lagrar vilka utgångar som ska vara på. Dessa kräver tre signaler, data, klocka och latch. Datasignalen kaskadkopplas genom krestsarna. Klocka och latch är flanktriggade. Med dessa måste PWM klockan läggas i FPGAn vilket leder till att jag behöver använda den högsta klockfrekvensen kretsarna klarar av för att uppnå tillräcklig prestanda vilket är 25 MHz. Här blir periodtiden 40 ns vilket enligt tumregeln ovan ger en stigtid på 4 ns. Eftersom ledarna är mellan 500-800 mm långa antar jag att detta måste termineras för att huvudtaget fungera. Nackdelen här är att jag inte riktigt vet hur jag ska terminera då en Spartan3 FPGA max lämnar 24 mA vilket inte riktigt räcker till för att driva en stripline med normal impedans och med nån enkel terminering. Vidare så antar jag att det kan bli en del EMI problem på grund av långa ledare och korta stigtider eller skulle det kunna gå tillsammans med heltäckande jord och matningplan ? Enda fördelen är priset på dessa leddrivare vilket nästa är 50 % lägre än mitt andra alternativ.
Andra varianten av leddrivare har ingbyggd PWM räknare och kräver fyra signaler, data, klocka, latch samt en pwmklocka. Även här kaskadkopplas datasignalen genom kretsarna och de tre andra signalerna är flanktriggade. För att uppnå god prestanda med dessa kretsar behövs en klockfrekvens på 4 MHz till PWM klockan, de andra signalerna klarar sig med ett par hundra kHz. Detta ger en periodtid på 250 ns vilket enligt ovan ger att stigtider på runt 25 ns hade fungerat. En 1/6 av en signals elektriska längd med stigtiden 30 ns är 800 mm vilket betyder jag kanske skulle kunna slippa terminera i det här fallet. Fördelen är att jag slipper termineringar och dess strömförbrukning på alla mina kort och kan lösa allt vid FPGAn istället. Sen måste även mina eventuella EMI problem minska då stigtiderna har ökat. Men hur gör jag enklast för att sänka stigtiderna ? I FPGAn kan jag välja mellan två olika slewrate och ställa drivförmågan på utgångarna, kan något av det användas ? Vidare finns något som heter DCI vilket är nån typ av inbyggd serieteminering på alla utgångar där resistansen sätts med hjälp av ett extern motstånd. Kanske en serieterminering med resistans R tillsammans med kapacitansen C hos ledarna och leddrivarnas ingångar kan användas för att sätta mina stigtider ?