Sida 1 av 2
PWM-matte
Postat: 17 september 2015, 20:32:05
av Mr Andersson
Jag håller på att experimentera lite grann med PWM och skulle behöva lite hjälp att verifiera att jag har förstått allt rätt.
Jag har en FPGA klockad i 100MHz, som genererar en PWM-signal på 250KHz.
Då blir väl varje PWM-cykel 400 FPGA-cykler? (
100e6 / 250e3)
Och upplösningen blir ungefär 8.64 bitar? (
LN(400) / LN(2))
Och för att kunna höja upplösningen till 10 bitar (vilket jag egentligen inte behöver, men det är intressant att förstå hur man gör) så måste jag
* Höja FPGA-klockan till >= 256MHz (
250e3 * 1024) eller
* Sänka PWM-klockan till <= 97.7KHz (
100e6 / 1024)
Stämmer detta? Formlerna verkar rimliga i mitt huvud men det händer rätt ofta att jag missar något enkelt misstag

Re: PWM-matte
Postat: 17 september 2015, 22:00:52
av hanzibal
Det verkar stämma bra
Re: PWM-matte
Postat: 17 september 2015, 22:02:49
av Andax
Ja det ser korrekt ut. Det finns lite speciella tekniker man kan använda för att skapa högre upplösning i snitt, mha sk fractional counters. Men det är överkurs.
Re: PWM-matte
Postat: 18 september 2015, 21:31:43
av qx5
Hur fungerar "fractional counters" ?
Re: PWM-matte
Postat: 18 september 2015, 21:41:26
av hanzibal
Gissningsvis en klock-dividerare som kan dividera med bråktal men det skall bli intressant att se hur fpga-klockan kan sönderdelas ytterligare

PLL?
P.s. Hurra för 2Log. D.s.
Re: PWM-matte
Postat: 18 september 2015, 21:52:19
av Andax
För en vanlig räknare så ökar man den oftast med 1 varje cykel.
Den vanligaste implementationen av fractional counter är att man har en räknare med x fler bitar och sedan ökar med ett större tal än 1, oftast samma storleksordning som x bitar långt. Skillnaden är att när man får overflow på räknaren så börjar man inte om från 0 utan på restvärdet.
I praktiken så får man då x bitar till, dock bara om man ser på medelvärdet.
Hoppas du förstår, men är lite trött så här på fredagkvällen...
Re: PWM-matte
Postat: 18 september 2015, 22:16:23
av hanzibal
Jag fattar inte men är å andra sidan också trött

Hur lyckas man utföra operationer mellan fpga-cyklerna?
Re: PWM-matte
Postat: 18 september 2015, 22:35:16
av superx
Det gör man inte. Men om man slog om lite sent en gång kompenseras det med att man slår om lite för tidigt nästa.
Re: PWM-matte
Postat: 18 september 2015, 22:50:21
av hanzibal
Aha, så man "chansar" på sista biten och så blir det bättre i snitt?
Re: PWM-matte
Postat: 18 september 2015, 23:36:17
av superx
Nja, inte chansar direkt. Mer att man bokför sina avrundningsfel och kompenserar för det senare. Lite som när man handlar många saker för 9,95kr Till slut spelar den där 5-öringen roll, även om varje post i sig blir 10kr efter avrundning.
Re: PWM-matte
Postat: 19 september 2015, 00:14:20
av hanzibal
Jo, men hur implementerar man denna logik i brist på verkliga cykler?
Det som beskrivs låter mer som förfarandet vid progressiv sampling, dvs i helt andra riktningen.
EDIT: Jag menar; om man nu kör kretsen på 100MHz och lägger ut PWM på 0,25MHz så har man väl varken mer eller mindre än 400 kretscykler på sig per PWM-period - eller tänker jag fel nu?
Re: PWM-matte
Postat: 19 september 2015, 00:35:47
av swp
Antar att handlar om det som även brukar kallas "dithering" (vet inte vad det heter på svenska). Enklaste fallet är väl om man vill öka upplösningen med en bit. Om man har 400 klockcykler och vill lägga ut 367.5 så lägger man ut 367 en period och sedan 368 nästa period och sedan alternerar mellan dessa, då blir ju medel 367.5.
Re: PWM-matte
Postat: 19 september 2015, 00:42:19
av hanzibal
Ok, då fattar jag!
EDIT: Men max en halv bit extra va?
Re: PWM-matte
Postat: 19 september 2015, 11:01:01
av sodjan
Det går att driva hur långt som helst och till vilken upplösning som helst.
Med 367 1 period och 368 99 perioder: 367.01
Med 367 2 perioder och 368 98 perioder: 367.02
...
...
Med 367 98 perioder och 368 2 perioder: 367.98
Med 367 99 perioder och 368 1 period: 367.99
O.s.v...
Eller kör med 16, 32, 64 sekvenser så går det jämt upp
med antal bitar direkt...
Re: PWM-matte
Postat: 19 september 2015, 14:50:29
av Nerre
PWM handlar ju normalt om MEDELVÄRDE över flera pulser.
Med enbart "hela" pulser så kan vi som medelvärde över tre pulser bara få t.ex.
(5+5+5)/3=5
(4+4+4)/3=4
Men om vi varierar pulsbredden mellan pulserna kan vi få andra medelvärden över tre pulser. Ex.
(5+5+5)/3=5
(5+4+5)/3=4,67
(5+4+4)/3=4,33
(4+4+4)/3=4