• [^] # Re: j'ai quelques questions msieur !

    Posté par (site web personnel, Mastodon) . En réponse à la dépêche TapTempo en Verilog. Évalué à 5. Dernière modification le 26 septembre 2020 à 07:48.

    Néanmoins l'implémentation des bascules m'étonne car on passe dans la même itération le signal dans deux valeurs. Il y a une notion basique que j'ignore.

    Tu veux sans doute parler de ce code :

    /* Synchronize btn_i to avoid metastability*/
    reg btn_old, btn_s;
    always@(posedge clk_i or posedge rst)
    begin
     if(rst) begin
     btn_old <= 1'b0;
     btn_s <= 1'b0;
     end else begin
     btn_old <= btn_i;
     btn_s <= btn_old;
     end
    end

    Toute l'explication se trouve dans l'opérateur d'affectation non bloquante <=. Cet opérateur signifie que l'affectation ne sera effective qu'à la sortie du processus (always@).

    Donc si l'on regarde les deux lignes suivantes :

     // La valeur btn_i n'est pas encore affecté à btn_old
     btn_old <= btn_i;
     // btn_old a ici la valeur de btn_i à l'instant t-1
     btn_s <= btn_old;

    J'ai plus qu'une balle