simple question Verilog

S

Sobakava

Guest
J'ai implémenté un générateur de motif à l'aide Verilog et XC9500 CPLD.

Pattern générés avec une entrée d'horloge.

Il ya un compteur, il compte et il ya une affaire impulsions / / block ENDCASE laquelle la valeur de processus comptoir et génère ...
Lorsque le compteur atteint les 21.048, je l'ai mis à 0 et commence trame suivante ...

Lors de l'exécution mon générateur de pattern librement, il n'ya pas de problème ...

Mais maintenant j'ai besoin de contrôler générateur avec un déclencheur externe ...
Si un avantage négatif ou positif détecté de la broche départ, il
Générateur devrait courir pour une fois ...Un seul tour devrait être fait,
puis quand il atteint les 21.048, il convient de s'arrêter jusqu'à la prochaine Start Trigger ...

main_clock d'entrée;
reg compteur [14:0];
reg can_read = 0;

always @ (main_clock posedge)
commencer

if (compteur == 21048)
commencer
counter = 0;
can_read = 0;
fin

if (can_read)
begin / / begin pouvez le lire
counter counter = 1;

cas (compteur)
1: commencer ...fin
2: commencer ...fin
ENDCASE
fin
finJ'ai ajouté un reg appelé comme can_read à la conception ...

readit d'entrée;
always @ (readit posedge)
commencer
can_read = 1;
finComme je le disais, quand un front positif détecté sur la broche readit, bit can_read fixera et main_clk va générer jusqu'à ce schéma can_read reste activé.Lorsque le compteur atteint les 21.048, can_read seront remises à zéro et générateur de séquences s'arrêtera ...

Xilinx ISE peuvent mettre en œuvre cette conception et je le charge à puce, mais il semble qu'elle ne fonctionne pas ...Générateur fonctionne toujours et je ne peux pas arrêter à l'aide de broches readit ....

N'est-il pas possible de fixer / reset un registre (can_read) dans deux différentes et toujours @ (posedge. ...) bloque?

Toute opinion?

 
Est-il neccesarry, que votre compteur compte en place, ou est-il possible
de lui laisser le compte à rebours?

 
sûr que je peux faire l'inverser mais j'aurai besoin pour changer la casse - table de cas ENDCASE ...
pourquoi?J'obtiens cette erreur:
Counter.ucf ERREUR: NgdBuild: 755 - Ligne 15 en ': Impossible de trouver le filet (s)
'readit' dans la conception.Pour supprimer cette erreur préciser le net correcte
nom ou supprimer ces restrictions.Le «je Ignorer \ O contraintes sur les valeurs invalides Object
Noms des propriétés 'peut également être définie (commutateur-aul pour les utilisateurs de ligne de commande).
ERREUR: Parsers: 11 - Rencontré contrainte non reconnus lors de l'analyse.
ERREUR: NgdBuild: 19 - Erreurs détectées lors de l'analyse de contrainte fichier "counter.ucf".always @ (readit posedge)
commencer
can_read = 1;
fin

Mais si je ajouter une sortie mannequin broches et il bascule dans @ posedge readit il ne donne pas cette erreur:

always @ (readit posedge)
commencer
can_read = 1;
= ~ mannequin mannequin;
finPOURQUOI?

Je suppose ISE supprime toujours @ (readit posedge) ....bloc
lorsque je quitte seulement can_read = 1; déclaration ...
reg can_read est utilisé dans toujours @ (main_clock posedge) block aussi.
Est-il interdit?Comment résoudre cela?

 
il n'est pas interdit.Pensez-y, quand u utilisant
always @ (readit posedge)
can_read = 1;
il n'ya qu'une seule valeur possible pour can_read, il est évident qu'elle devrait être optimisé pour un combat permanent et c'est ce que fait à ISE ur code.
Vous semblez nouveau à la modélisation HDL, u'd mieux lire plus de livres / examples.

 
après la synthèse, vérifiez l'avertissement et de rechercher le schéma RTL pour savoir pourquoi le synthétiseur de supprimer votre conception.

 
Je vais essayer de ce que je cherche à voir avec la réduction de problème:

Entrées à ma puce:
Horloge
Lire

Sorties:
Cadre

La parole est à chaque chef d'accusation / cycle réinitialiser que le cadre ...Un compteur fonctionne avec l'horloge, lorsque l'horloge atteint au début, il réinitialise et un seul signal d'impulsion cadre apparaît à la sortie.J'ai besoin de faire d'autres tâches au cours de compteur est de comptage.

Quand un front d'impulsion positive LIRE détecté (risign un bord et de toute durée d'impulsion), un peu actif doit être définie dans l'écran suivant, si ce bit est réglé, je fais mes tâches dans @ (horloge posedge) block ....

Au début de la trame suivante, s'il n'y a pas de nouvelle impulsion LIRE, ce bit actif doit être effacé ...

Mon problème est que je peux pas mettre en œuvre READ / Mécanisme actif ...Je ne suis pas expert en Verilog, je suis indépendant de l'apprenant

<img src="http://www.edaboard.com/images/smiles/icon_wink.gif" alt="Wink" border="0" />
.1. Always @ (posedge LIRE)
.2. Commencent
.3.activate_it = 1
.4. Fin
.5.
.6. Always @ (CLOCK posedge)
.7. Commencent
.8.count = count 1
.9.if (count == 0)
10.commencer
11.if (activate_it)
12.commencer
13.activate_it = 0;
14.ACTIF = 1
15.fin
16.autre
17.ACTIF = 0
18.fin
19.endXilinx ISE n'accepte pas la ligne 3 ...

always @ (posedge LIRE)
commencer
= activate_it ~ activate_it;
fin
Si je fais cela, je peux mettre en œuvre la conception sans erreurs, mais:always @ (posedge LIRE)
commencer
activate_it = 1;
fin
si je fais ça, "ATTENTION: XST: 647 - Entrée <READ> n'est jamais utilisée.
message apparaît ...
Counter.ucf ERREUR: NgdBuild: 755 - Ligne 16 dans '': Impossible de trouver le filet (s) »lire« en
ERREUR: Parsers: 11 - Rencontré contrainte non reconnus lors de l'analyse.
ERREUR: NgdBuild: 19 - Erreurs détectées lors de l'analyse de contrainte fichier "counter.ucf".Je supposais qu'il est en raison de l'optimisation, l'outil de synthèse, il supprime ...Je pense que c'est une question fondamentale et simple, mais j'ai vraiment besoin d'aide les gars ...

Pièce jointe image est chronogramme de ce que je suis en train de faire ...
Désolé, mais vous devez vous loguer pour voir cette pièce jointe

 
Quand est contre reachs à votre état préféré vous pouvez accorder au VIH lui un grand nombre diverses.Et un triger externe doit réinitialise votre compteur à 0.et Thise est point de départ pour de nouveaux châssis Out.

 
Je ne peux pas réinitialiser le compteur de déclenchement externe.Elle devrait compter jusqu'à désiré fixe Valeur temps Evert ...

 
AVERTISSEMENT: XST: 528 - Multi-source dans l'unité <counter> sur le signal <activate_it> pas remplacé par une logique
Le signal est bloqué à GND
ERREUR: XST: 415 - Synthèse échouéQu'est-ce que cela signifie?

 
<img src="http://www.edaboard.com/images/smiles/icon_rolleyes.gif" alt="Rolling Eyes" border="0" /> Je pense que ce yeewang dire, c'est bien! WAHT De plus, vous ne pouvez pas assigner une valeur à un même signal sur deux always.did vous ne pré-simulation? Is it right?

 
Je comprends que,
mais je ne peux pas définir un bit dans un «toujours» et le réinitialiser dans d'autres toujours ...

outil de synthèse ne peut pas synthétiser cela, mais,

"What Can I Do?"

S'il vous plaît voir les photos, vous comprendrez ce dont j'ai besoin ...

 

Welcome to EDABoard.com

Sponsor

Back
Top