O
ohadohad2
Guest
Bonjour à tous, je me demande si quelqu'un peut expliquer pourquoi il me semble pour obtenir la même erreur encore et encore.
J'ai donc été la rédaction d'un code et une partie de celui-ci a été un compteur.
Après avoir achevé l'écriture du code, j'ai remarqué que le comte semblent agir très étrangement, pour une raison quelconque la sortie contre le changement d'heure semble bien que son milieu de front d'horloge déclenché.
Pour vérifier cela que j'ai utilisé le fichier VHDL forme d'onde.
Voici quelques codes différents, j'ai écrit pour le compteur exacte et tous semblent avoir le même problème (Im également attacher une image de l'un des simulations calendrier):
Counter est une entité
génériques (N: integer: = 7);
port (permettre, CLK, RST: à peu;
Count: gamme entière des 0 à N);
Contre la fin;Comptage d'architecture Counter est
Count_State type est (zéro, un, deux, trois, quatre, cinq, six, sept);
signal Current_State: Count_State;
commencer
processus (CLK, RST)
commencer
Si la TVD = '1 'alors Current_State <= zéro;
clk'event elsif et CLK = '1 'alors
Current_State cas est
dès que le zéro => Current_State <= Un;
quand on => Current_State <= Deux;
lorsque deux => Current_State <= Trois;
Lorsque trois => Current_State <= Quatre;
Quand quatre => <= Cinq Current_State;
Lorsque cinq Current_State = <= Six>;
Lorsque Six => <= Current_State Sept;
lorsque Sept => Current_State <= zéro;
Fin de cas;
fin si;
processus de bout;
avec Current_State sélectionnez
Nombre <= 0 lorsque Zero,
1 lorsque One,
2 Lorsque deux,
3 Lorsque Trois,
4 Lorsque Quatre,
5 Lorsque Cinq,
6 Lorsque Six,
7 lorsque Sept;
Compter fin;-------------------------------------------------- --------------------------------------
entité est Dflop
port (D, RST, CLK, permettent: dans peu;
Q: peu en dehors);
Dflop fin;
Comportez-architecture de Dflop est
commencer
processus (CLK, RST)
commencer
Si la TVD = '1 'alors
Q <= '0 ';
elsif (clk'event et CLK = '1 ') puis
Si la case Activer = '1 'alors
Q <= D;
fin si;
fin si;
processus de bout;
Comportez-fin;
-------------------------------------------------- --------------------------------------
entité est Struc_Counter
génériques (N: integer: = 7);
port (CLK, RST, permettent: à peu;
Count: gamme entière des 0 à N);
Struc_Counter fin;
l'architecture des Fonds structurels est Struc_Counter
composante Dflop
port (D, RST, CLK, permettent: dans peu;
Q: peu en dehors);
composante fin;
-------------------------------------------------- --------------------------------------
signal inA, INB, Inc, Outa outb, OUTC: peu;
signal ABC: bit_vector (0 à 2);
commencer
inA <= ((outA et (pas outb)) ou (outb et (xor outA OUTC)));
inb <= (xor outb OUTC);
Inc <= (pas OUTC);
A1: la carte du port Dflop (D => INA, rst => RST, CLK => CLK, enable => Activer, Q => outA);
B1: carte port Dflop (D => INB, rst => RST, CLK => CLK, enable => Activer, Q => outb);
C1: la carte du port Dflop (D => inc, rst => RST, CLK => CLK, enable => Activer, Q => OUTC);ABC <= outA & outb & OUTC;
avec ABC sélectionnez
Nombre <= 0 lorsque «000»,
1 lorsque «001»,
2 Lorsque "010",
3 lorsque «011»,
4 lorsque «100»,
5 lorsque "101",
6, lorsque "110",
7 lorsque "111";
Struc fin;Counter est une entité
génériques (N: integer: = 7);
port (permettre, CLK, RST: à peu;
Count: gamme entière des 0 à N);
Contre la fin;Comptage d'architecture Counter est
cnt signal: gamme entière de 0 à N;
commencer
processus (CLK, RST)
commencer
Si la TVD = '1 'alors <cnt = 0;
elsif (clk'event et CLK = '1 ') puis
Si la case Activer = '1 'alors
cnt <= 1 CNT;
si cnt = n alors
cnt <= 0;
fin si;
fin si;
fin si;
processus de bout;
Comte <= cnt;
Compter fin;
Désolé, mais vous avez besoin de connexion pour voir cette pièce jointe
J'ai donc été la rédaction d'un code et une partie de celui-ci a été un compteur.
Après avoir achevé l'écriture du code, j'ai remarqué que le comte semblent agir très étrangement, pour une raison quelconque la sortie contre le changement d'heure semble bien que son milieu de front d'horloge déclenché.
Pour vérifier cela que j'ai utilisé le fichier VHDL forme d'onde.
Voici quelques codes différents, j'ai écrit pour le compteur exacte et tous semblent avoir le même problème (Im également attacher une image de l'un des simulations calendrier):
Counter est une entité
génériques (N: integer: = 7);
port (permettre, CLK, RST: à peu;
Count: gamme entière des 0 à N);
Contre la fin;Comptage d'architecture Counter est
Count_State type est (zéro, un, deux, trois, quatre, cinq, six, sept);
signal Current_State: Count_State;
commencer
processus (CLK, RST)
commencer
Si la TVD = '1 'alors Current_State <= zéro;
clk'event elsif et CLK = '1 'alors
Current_State cas est
dès que le zéro => Current_State <= Un;
quand on => Current_State <= Deux;
lorsque deux => Current_State <= Trois;
Lorsque trois => Current_State <= Quatre;
Quand quatre => <= Cinq Current_State;
Lorsque cinq Current_State = <= Six>;
Lorsque Six => <= Current_State Sept;
lorsque Sept => Current_State <= zéro;
Fin de cas;
fin si;
processus de bout;
avec Current_State sélectionnez
Nombre <= 0 lorsque Zero,
1 lorsque One,
2 Lorsque deux,
3 Lorsque Trois,
4 Lorsque Quatre,
5 Lorsque Cinq,
6 Lorsque Six,
7 lorsque Sept;
Compter fin;-------------------------------------------------- --------------------------------------
entité est Dflop
port (D, RST, CLK, permettent: dans peu;
Q: peu en dehors);
Dflop fin;
Comportez-architecture de Dflop est
commencer
processus (CLK, RST)
commencer
Si la TVD = '1 'alors
Q <= '0 ';
elsif (clk'event et CLK = '1 ') puis
Si la case Activer = '1 'alors
Q <= D;
fin si;
fin si;
processus de bout;
Comportez-fin;
-------------------------------------------------- --------------------------------------
entité est Struc_Counter
génériques (N: integer: = 7);
port (CLK, RST, permettent: à peu;
Count: gamme entière des 0 à N);
Struc_Counter fin;
l'architecture des Fonds structurels est Struc_Counter
composante Dflop
port (D, RST, CLK, permettent: dans peu;
Q: peu en dehors);
composante fin;
-------------------------------------------------- --------------------------------------
signal inA, INB, Inc, Outa outb, OUTC: peu;
signal ABC: bit_vector (0 à 2);
commencer
inA <= ((outA et (pas outb)) ou (outb et (xor outA OUTC)));
inb <= (xor outb OUTC);
Inc <= (pas OUTC);
A1: la carte du port Dflop (D => INA, rst => RST, CLK => CLK, enable => Activer, Q => outA);
B1: carte port Dflop (D => INB, rst => RST, CLK => CLK, enable => Activer, Q => outb);
C1: la carte du port Dflop (D => inc, rst => RST, CLK => CLK, enable => Activer, Q => OUTC);ABC <= outA & outb & OUTC;
avec ABC sélectionnez
Nombre <= 0 lorsque «000»,
1 lorsque «001»,
2 Lorsque "010",
3 lorsque «011»,
4 lorsque «100»,
5 lorsque "101",
6, lorsque "110",
7 lorsque "111";
Struc fin;Counter est une entité
génériques (N: integer: = 7);
port (permettre, CLK, RST: à peu;
Count: gamme entière des 0 à N);
Contre la fin;Comptage d'architecture Counter est
cnt signal: gamme entière de 0 à N;
commencer
processus (CLK, RST)
commencer
Si la TVD = '1 'alors <cnt = 0;
elsif (clk'event et CLK = '1 ') puis
Si la case Activer = '1 'alors
cnt <= 1 CNT;
si cnt = n alors
cnt <= 0;
fin si;
fin si;
fin si;
processus de bout;
Comte <= cnt;
Compter fin;
Désolé, mais vous avez besoin de connexion pour voir cette pièce jointe