2011-03-19 2 views
0

J'ai fait un levier/rotateur combinatoire de baril. Maintenant, je dois faire un bord déclenché un. Si vous utilisez les signaux de contrôle pour indiquer que le sélecteur/rotateur déclenché par le front se déplace d'un bit vers la droite, alors si vous ne changez pas les contrôles, la sortie ira-t-elle finalement à 0?Conception d'un levier de changement de cylindre/rotateur déclenché par les bords dans Verilog

Je suis censé concevoir à l'aide d'un levier de vitesses combinatoires/rotateurs et un registre D. Pourquoi un registre D est-il nécessaire?

Répondre

1

Il ne finit pas par 0, car la sortie n'est pas réinjectée en entrée. Un registre D est nécessaire pour fournir une sensibilité au front montant de l'horloge puisqu'un mélangeur/rotateur n'est pas sensible à celui-ci. Sur le front montant, le registre D déversera tout ce qu'il contient dans le levier de vitesses/rotateur.

1

D'après ce que je comprends, si vous êtes juste décalage, les bits tomberont et des zéros rempliront les positions de bits vides. Si vous faites la rotation, les bits ne peuvent jamais tomber et sont à la place collés à l'autre extrémité. Voici une rotation des bits ABCD bit position, deux fois: ABCD DABC CDAB. Vous pouvez voir que si le contrôle est bloqué en rotation, les bits continueront à tourner. Voici un shift d'une position de bit, trois fois: ABCD 0ABC 00AB 000A, et vous pouvez voir ce cas finira par zéro si le contrôle est inchangé. En ce qui concerne l'utilisation d'un registre D, voici ma conjecture: les registres sont des éléments de mémoire et doivent stocker des valeurs de bit, donc un registre D est un registre composé de D flip flops pour stocker ses éléments, et vous utilisez D flip flops depuis D Les bascules sont des dispositifs déclenchés par les bords. Vous pourriez très bien avoir un registre J-K qui utilise des bascules J-K pour stocker des éléments de mémoire. J'espère que cela t'aides.

+0

Supposons que vous ayez défini le paramètre ctrl pour indiquer au levier de décalage vers la droite. Ensuite, vous aviez votre entrée en 1111. Au prochain front montant, il deviendra 0111. Mais après cela, sur le prochain front montant, cela deviendra-t-il 0011? L'entrée est toujours 1111. –

Questions connexes