Aide en VHDL?

B

BGA

Guest
-------
Dernière édition par BGA le 23 Mai 2003 20:03, édité 1 fois au total

 
Si je vous comprends bien vous voulez retarder le signal, pas le bord de celui-ci.Puis, avec vos besoins, il semble presque impossible à réaliser.Vous auriez besoin veeeery registre à décalage longue pour avoir 500us retard, ce qui est de 100000 cycles d'horloge de 20MHz votre horloge principale.Il est vrai que les FPGA sont registre riche, mais pas tellement ...En plus de l'avoir programmables vous devez choisir une sortie de required enregistrer ce qui ne sera pas aussi trivial.

Si vous voulez retarder l'arête juste du signal alors il est une autre histoire.

 
BGA a écrit:

J'ai besoin de retarder une ligne numérique entre 0 ns et 500us avec une précision de 5ns.

Le montant de retard est spécifiée dans un registre.

N'importe quelle aide?
 
Salut ...merci pour la relecture.
Je vais essayer d'expliquer plus ...
Qu'est-ce que je dois faire c'est exactement ce que Gunship Ecrit par la poste.Pour résoudre le problème de la mémoire je pense pour stocker le signal d'entrée comme suit:
J'ai besoin d'utiliser 2 compteurs cadencé à 200Mhz (nommé counter1 et Counter2).
-Le premier front montant du signal d'entrée est utilisé pour démarrer counter1;
-Quand un front descendant vient, il s'arrête counter1 et laissez Counter2 départ.
-La valeur de counter1 est stocké en mémoire.
-Lorsque le bord montante suivante du signal d'entrée est détectée, Counter2 est arrêté et counter1 est démarré.
-La valeur de Counter2 est stocké.
....et ainsi de suite.
Pour produire le signal de sortie, j'ai besoin de faire de l'accès séquentiel à la mémoire tampon circulaire et de mettre la valeur dans d'autres deux compteurs (Counter3 et Counter4).
Le signal de contre-terminale de Counter3 est utilisée pour définir un FF, le compteur de stationnement Counter4 est utilisée pour effacer la FF.

Avec les caractéristiques du signal d'entrée que je reçois, j'ai besoin de moins de 1000 élément de mémoire 32 bits (probablement 1000 * 16 bits).

Le retard D est: D = N * 5ns où N est stocké dans un registre et peut changer au cours du processus de retard.

Maintenant, le problème est que je ne suis pas qualifié en VHDL et une aide est nécessaire pour mettre en œuvre cette machine dans FPGA.
Can u help me?

 
Je ne suis vraiment pas sûr de ce que vous voulez faire ..
Mais cela peut être utile si vous voulez retarder un signal dans un FPGA ..qui FPGA utilisez-vous?S'il est Xilinx Virtex / SpartanII, vous pouvez introduire ce changement dans SRL16Es.

Comme vous le savez l'élément de base dans un FPGA est un look up table.FPGA Xilinx utiliser un regard 4 d'entrée jusqu'à la table, et de nouveau je parle de famille de FPGA Xilinx Virtex.DANS FPGA Virtex, vous pouvez configurer une LUT comme un registre à décalage avec 16 niveaux de retard.De cette façon vous ne perdez pas de ressources logiques sur la puce.

Si vous n'utilisez pas de périphériques Xilinx ..et en particulier les appareils de la famille Virtex ...eh bien je ne sais pas

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Sourire" border="0" />Faites-moi savoir si vous voulez plus d'infos sur cette SRL16Es

Hope this helps
Kode

 
Essayons de cette façon:
1: obtenir la singal du front montant que vous voulez retarder
2: Utilisation 200M frequence [t = 5ns], (mai peut être généré à partir de FPGA)
3: utiliser un compteur, la longueur est de 17 ans au moins

quand il est détecté le signal de front de montée, vous mai engager le compteur à zéro, réglez le signal de sortie à un moment time.as même temps, le couter continue à augmenter jusqu'à ce qu'il atteigne l'objectif de votre juste de définir., puis la desactiver signal de sortie, abtain le bord automne.

mais, le problème est que la gigue de sortie sera plus 5ns.

 
Le problème est que pendant le temps de retard, le signal de retard peut avoir plus d'une hausse et le bord de tomber.Le signal peut changer entre 0 et 1 avec pas de règles particulières.

 

Welcome to EDABoard.com

Sponsor

Back
Top