2017-10-04 3 views
-1

J'essaie de construire une impulsion qui est haute pour 8 impulsions d'horloge et passe au repos bas. Ainsi, lorsque l'activation et l'horloge sont élevées, l'impulsion haute passe au-delà de 8 impulsions d'horloge. Comment puis-je mettre en œuvre et aborder cela dans Verilog. Voici ce que j'ai fait jusqu'à maintenant.Compteur d'impulsions dans verilog

module clkgenerator(
    input clk, 
    input [3:0] count = 4'b0, 
    input enable, 
    output andpulse 
    ); 
    [email protected](posedge enable and posedge clk) 
    begin 
    andpulse <= 1; 
     if(count == 4'b1000); 
     andpulse <= 0; 
     count <= 4'b0; 
     else 
     count <= count + 1; 
     end 
    endmodule 

Mais cela jette et erreur

Error: C:\altera\14.0\clkgenerator.v(3): near "=": syntax error, unexpected '=', expecting ')'

Besoin d'aide.

+0

est un message correct, vous ne pouvez pas initialiser les ports du module. – Serge

Répondre

-1

Essayez ceci: changement

module clkgenerator(
    input clk, 
    input [3:0] count = 4'b0, 
    input enable, 
    output andpulse 
    ); 

à:

module clkgenerator(clk,count, enable, andpulse); 
input clk, enable; 
input [3:0] count = 4'b0000; 
output andpulse; 

Je ne sais pas si cela va fonctionner.

+1

Non, cela ne fonctionnera pas. Vous ne pouvez pas initialiser un 'input' en utilisant l'ancienne syntaxe de port non plus. – duskwuff

0
  1. Vous devez déclarer le nombre et que les registres etdes:

    module clkgenerator(
        input clk, 
        input reg [3:0] count = 4'b0, 
        input enable, 
        output reg andpulse 
    ); 
    
  2. Vous ne devriez pas mettre l'activer dans la liste de sensibilité du bloc toujours. Mettez la place dans une condition if:

    [email protected](posedge clk) 
    if(enable) 
    begin 
        andpulse <= 1; 
        if(count == 4'b1000) 
        begin 
        andpulse <= 0; 
        count <= 4'b0; 
        end 
        else 
        count <= count + 1; 
        end 
    endmodule 
    
+0

Votre premier point donne une erreur "Le mode Port est incompatible avec la déclaration: compte". Je ne sais pas ce que ça veut dire. –

+0

Verilog ne prend pas en charge les valeurs par défaut pour les entrées. 'input [3: 0] count = 4'b0,' doit être changé en 'count [3: 0],'. Les entrées ne peuvent pas non plus être affectées. – Greg