Codice Verilog per divisore di frequenza
Su Febbraio 17, 2021 da adminPotete aiutarmi a creare un codice Verilog per circuito divisore di frequenza in grado di generare 50 Hz segnale di clock in uscita dal segnale 50 MHz utilizzando contatore sincrono a 16 bit. Ho provato a farlo, ma non ha funzionato!
module divier_16 (clk_in, clk_out); input clk_in; wire w; wire [0:15]temp; output clk_out; count_16 c1 (clk_in, w); count_16 c2 (w, temp); assign clk_out= temp[6];
Commenti
- Utilizzo 16 bit di cosa?
- E cosa hai provato? Potresti pubblicare il tuo codice?
- Contatore sincrono a 16 bit
- Puoi usare due di questi?
- Bene. Quindi prima dividi per 1000, poi dividi per altri 1000 ..
Risposta
Sfortunatamente, 16 bit non sono sufficienti per convertire un segnale a 50 MHz in un segnale a 50 Hz. Questo perché è necessario dividere il clock per 1 milione. $$ 2 ^ {16} = 65536 $$ Quindi non è abbastanza. A un contatore con almeno 20 bit sarebbe sufficiente perché: $$ 2 ^ {20} = 1048576 $$
Per convertire il segnale devi semplicemente contare fino a 1 milione di cicli di clock, quindi cambiare lo stato del segnale in uscita .
esempio:
always @(posedge clk_in) begin count_20 <= count_20 + 1; if(count_20 == 1000000) begin count<=0; clk_out <= !clk_out; end end
Modifica: si scopre che ^^ risulterebbe in un segnale a 25 Hz, quindi devi solo conta fino a 500000 che necessita di 19 bit La domanda quindi è dove fa quel 20esimo bit viene dal vedere come devi dividere per 1 milione. Bene, il bit clk_out funge da ventesimo bit.
Commenti
- unaltra soluzione è usare molti di quei contatori a 16 bit. avresti bisogno di almeno 16 di questi (16 * 65536 = 2 ² ⁰ = 1048576)
- Potrei aver commesso un errore, penso che la mia soluzione risulterebbe a 25Hz?
- te ne servirebbero solo due, questo ti darebbe 32 bit
- @Makoto sì, devi contare fino a 500_000, e il secondo – molto probabilmente ci sarà un avvertimento utilizzando un tipo di assegnazione diverso nel costrutto sempre, penso che intendessi
clk_out <= !clk_out
; - sì lo cambierà
Lascia un commento