April 3
Una modulazione di larghezza di impulso è un modo per controllare la rotazione o la posizione di un motore elettrico o servo.
Utilizzando Verilog HDL, vi mostrerò come è facile da usare contatori in modo da creare un PWM.
1 Allora, come funziona un PWM?
Avere un segnale rettangolare di periodico, cambiamo il ciclo di lavoro (modulare) per essere più piccolo o più grande, e quindi controllare il nostro dispositivo.
Perché usare un PWM?
Si tratta di un semplice digitale tecnica di conversione analogico che non richiede un ADC.
2
Ok, così lascia pensare che cosa ingressi, uscite, registri e contatori che avranno bisogno, e che il design vogliamo creare.
Voglio usare gli otto interruttori sulla scheda FPGA Spartan per controllare come il mio motore / servo si muove o quanto veloce o lento che voglio di muoversi.
Ingressi: orologio, 8 interruttori
Uscite PWM
Registri: pwm
Contatori: contatore a 16 bit (spiegheranno il motivo per cui 16 bit più avanti)
3
Sapere cosa è la velocità di clock del vostro FPGA e quale periodo che si desidera utilizzare.
Ho una scheda FPGA Spartan con un orologio 50MHz. Vorrei aggiornare il segnale ogni 1 millisecondo (t). Noi applichiamo il seguente calcolo per trovare il periodo di forma d'onda (p)
p = t * FPGA clock
Nel mio caso:
p = .001 seconds * 50MHz = 50000
Conoscendo il mio p è importante al fine di calcolare il mio ritardo passo (sd):
sd = p / 256 = 195
Perché ho usato 256? Userò 8 interruttori per controllare il mio servo / motore, in modo 2 ^ 8 = 256.
4
Infine vogliamo usare il nostro contatore come il nostro ciclo di lavoro. Per calcolare il numero di bit che compongono il nostro contatore usiamo:
log2 (sd) = il numero di bit è il nostro contatore
Mentre il contatore è inferiore a sd (ritardo step) moltiplicato per il valore interruttori (che può variare da 0 a 255), questo è il nostro duty cycle.