Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

[Verilog] Sensivity list generazione reset

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

0
voti

[1] [Verilog] Sensivity list generazione reset

Messaggioda Foto Utentemarioursino » 28 nov 2020, 14:23

Ciao a tutti. Premessa: non ho mai programmato in Verilog.

Sto utilizzando una MACHXO3LF-6900C di Lattice per generare alcuni segnali digitali. Il codice è molto semplice, c'è solo un top-level che istanzia due blocchi dello stesso tipo, i quali generano onde rettangolari fisse tramite un contatore e un registro di rollover. I due gruppi di onde rettangolari devono essere generati con una fase impostabile all'avvio.

I due blocchi all'avvio vengono appunto caricati con due fasi diverse; la fase è semplicemente il valore a cui parte il timer interno, che al raggiungimento del registro di rollover riparte da zero.

Il conteggio funziona normalmente, ma ho un problema al caricamento della fase. In particolare, sto cercando di generare un reset interno tramite il codice seguente:

(modulo top_level)
Codice: Seleziona tutto
// Internal reset
reg [3:0] rst_cnt = 4'b0000;
wire nrst = rst_cnt[3];

always @(posedge clk) begin
    if(!nrst) begin
        rst_cnt <= rst_cnt + 1'b1;
   
        pr1 <= 49;
        pr2 <= 49;
        phase1 <= 0;
        phase2 <= 24;
    end
end


Il blocco che genera i segnali campiona la fase in modo sincrono quando trova nrst alto:

(modulo core)
Codice: Seleziona tutto
...
reg [7:0] count;

always @(posedge(clk)) begin
    if(!nrst) begin
        count <= phase;
        seq <= 0;
        ...
        ...


In simulazione tutto funziona bene, ma nella realtà entrambi i gruppi di segnali hanno la stessa fase, come se phase1 e phase2 avessero lo stesso valore.

L'unico modo per fare funzionare correttamente il sistema è modificare la sensivity list della generazione del reset in questa versione:

Codice: Seleziona tutto
always @(posedge clk or negedge nrst) begin


in questo modo i segnali compaiono con la fase corretta.

Non riesco proprio a capire cosa non vada nella prima versione.
Avatar utente
Foto Utentemarioursino
5.437 3 9 13
G.Master EY
G.Master EY
 
Messaggi: 1559
Iscritto il: 5 dic 2009, 4:32

0
voti

[2] Re: [Verilog] Sensivity list generazione reset

Messaggioda Foto Utentewruggeri » 28 nov 2020, 14:51

Premettendo che sono molto impegnato e quindi - mi scuso in anticipo nel caso dovesse succedere - potrei non trovare il tempo di aiutarti nel modo migliore, ho un dubbio, perché tu scrivi che a regime tutto funziona normalmente ma poi esponi un problema: vuoi dire che i due segnali iniziano come se fossero in fase e poi si assestano al giusto sfasamento?
Rispondo solo a chi si esprime correttamente in italiano e rispetta il regolamento.
Se non conosci un argomento, non parlarne.
Gli unici fatti sono quelli dimostrabili, il resto è opinione.
Non sono omofobo, sessista, leghista o analoghe merdate.
Avatar utente
Foto Utentewruggeri
5.474 2 8 13
Master EY
Master EY
 
Messaggi: 1127
Iscritto il: 25 nov 2016, 18:46

0
voti

[3] Re: [Verilog] Sensivity list generazione reset

Messaggioda Foto Utentemarioursino » 28 nov 2020, 15:03

Hai ragione, non sono stato chiaro. I segnali sono giusti ma hanno la fase sbagliata, questo è quello che intendo. Ora modifico.
Avatar utente
Foto Utentemarioursino
5.437 3 9 13
G.Master EY
G.Master EY
 
Messaggi: 1559
Iscritto il: 5 dic 2009, 4:32

0
voti

[4] Re: [Verilog] Sensivity list generazione reset

Messaggioda Foto Utentewruggeri » 28 nov 2020, 18:01

Onestamente dai pochi estratti di codice che hai trascritto non sono in grado di risponderti :cry: Il fatto che la seconda forma che hai dato alla sensitivity list funzioni mi fa pensare che qualche transizione importante non venga vista dal tuo modulo, ma sono cose che in simulazione dovrebbero apparire :-k
Rispondo solo a chi si esprime correttamente in italiano e rispetta il regolamento.
Se non conosci un argomento, non parlarne.
Gli unici fatti sono quelli dimostrabili, il resto è opinione.
Non sono omofobo, sessista, leghista o analoghe merdate.
Avatar utente
Foto Utentewruggeri
5.474 2 8 13
Master EY
Master EY
 
Messaggi: 1127
Iscritto il: 25 nov 2016, 18:46


Torna a Firmware e programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 3 ospiti