Question:
Comment un verrou détermine-t-il son état initial?
Lightyear Buzz
2012-01-25 08:12:54 UTC
view on stackexchange narkive permalink

Comment un verrou obtient-il son état initial? Je suppose que cela dépend des conditions de course et de la condition qui vient en premier, alors c'est l'état avec lequel le verrou commence.

La question du titre est trop large pour générer une seule réponse, elle ne convient donc probablement pas à ce site. Votre question technique (valide) est à peu près le double d'une autre question posée plus tôt dans la journée: http://electronics.stackexchange.com/questions/25581/sequential-circuits
Oui, mais les réponses à cette question n'étaient pas vraiment aussi informatives que celles ci-dessous et je ne suis pas sûr que trop de questions aient une seule réponse, ce qui est attesté en partie par le fait d'avoir un site comme celui-ci en premier lieu. Je conviens cependant que cela pourrait être un peu trop large, mais avec toutes les autres questions générales utiles sur ces sites, j'ai pensé qu'il serait peut-être préférable de publier cette question pour les autres et moi.
Si vous modifiez la question pour n'inclure que la partie technique (2ème paragraphe), je supprimerai mon vote défavorable.
** De quoi se réapprendre rapidement un concept oublié ** Ou pour s'enseigner un nouveau concept de la même manière. À moins qu'un changement de paradigme ne se produise, les fondamentaux sont pertinents et la plupart des changements (pratiques) technologiques sont suffisamment marginaux pour suivre le rythme.
Il n'y a pas de bonne réponse à cette question. Si la communauté veut vraiment que cette question reste ouverte, alors cela devrait au moins être un wiki de la communauté.
@ThePhoton, La question liée semblait être un médiocre substitut, j'ai tenté de ressusciter ce message pour être plus technique, mais il a déjà des réponses assez fortement votées basées sur la moitié de la section que j'ai supprimée.
Cinq réponses:
user3624
2012-01-25 08:51:37 UTC
view on stackexchange narkive permalink

Il y a certainement beaucoup de choses enseignées à l'école qui ne sont pas requises sur le marché du travail. Et, bien sûr, il y a beaucoup de choses qui ne sont pas enseignées qui devraient l'être. Cela pourrait probablement être dit à propos de n'importe quel marché du travail, car cela dépend de la spécialité dans laquelle la personne finit par être employée. Malheureusement pour vous, ni vos professeurs ni moi ne pouvons vous dire ce que vous utiliserez et n'utiliserez pas une fois que vous aurez un vrai emploi. votre domaine.

Par exemple, je n'utilise pas le calcul dans mon travail en tant qu'EE. Mais un collègue, qui est aussi techniquement un EE, utilise le calcul presque quotidiennement. Je conçois des PCB et des FPGA, tandis qu'il écrit des algorithmes DSP. Il était impossible que nos professeurs aient jamais su ce dont nous avions besoin pour faire le travail.

Cela étant dit ... Votre question à votre professeur, sur la valeur initiale du verrou ou de la bascule (FF ), était une excellente question et la façon dont votre professeur a répondu montre qu'elle ignorait les exigences pour concevoir des circuits logiques numériques pratiques.

En termes simples, la valeur initiale d'un Latch ou FF est indéterminée. Cela signifie qu'il aura une valeur initiale mais vous ne saurez pas ce que c'est à l'avance. Un verrou / FF donné peut même avoir des valeurs initiales différentes d'une mise sous tension à l'autre. Parfois, ce sera un «0», d'autres fois un «1». Des choses comme la température et la vitesse à laquelle les rails d'alimentation montent affecteront la valeur initiale.

Si votre circuit nécessite une valeur initiale connue, vous devez forcer la valeur. Normalement, cela se fait en utilisant une sorte d'entrée de réglage / réinitialisation / effacement qui est commandée par un signal de réinitialisation. C'est également pourquoi presque tous les circuits numériques de complexité raisonnable ont un signal de réinitialisation. Les signaux de réinitialisation ne sont pas uniquement destinés aux CPU.

Au cours de mes études, j'ai appris beaucoup de choses dont je n'avais pas strictement besoin plus tard dans ma vie professionnelle, mais qui m'ont toujours été très utiles. «Apprendre à apprendre» est un élément important d'une éducation.
Vous ne savez jamais ce que vous allez avoir besoin de savoir. J'ai obtenu mon diplôme d'EE dans les années 60. Je me souviens avoir suivi des cours comme la radio à micro-ondes, et à l'époque, je pensais que je vais travailler avec des systèmes numériques et que je n'utiliserai jamais rien de tout cela (à l'époque, les micro-ondes étaient principalement utilisés par la compagnie de téléphone pour les relais radio longue distance. ). Aujourd'hui, plus de 40 ans plus tard, je travaille sur des systèmes embarqués, tout est sans fil, et je pose des antennes microruban sur un PCB.
@davidKessner, Je pensais que dans certains verrous en condition de course, la façon dont votre rail d'alimentation était chargé importait vraiment. Une charge très rapide peut conduire à une chose, tandis qu'une charge lente en est une autre, mais il vous faut une caractérisation de très bonne qualité de vos portes. Cela seul rendrait le processus un peu inutile pour tout appareil réel où une broche de réinitialisation fonctionne facilement, avec peu de conception et une faible complexité.
Oli Glaser
2012-01-25 11:04:38 UTC
view on stackexchange narkive permalink

Si vous voulez dire à l'allumage (avant la réinitialisation), alors c'est à peu près ce que vous dites - les portes du FF ne seront pas parfaitement symétriques donc on "gagnera" la course et le verrou se dirigera vers cet état. L'état dans lequel il sera est imprévisible.

C'est un peu comme si vous équilibriez une balle au sommet d'un toit pointu de maison - en théorie, si tout était parfaitement immobile, il devrait y rester. En pratique, il roulera toujours d'un côté ou de l'autre.

C'est pourquoi à la mise sous tension, la plupart des circuits numériques doivent être réinitialisés à un état connu (où il est nécessaire que l'état soit connu au départ, vous devez laisser certains registres non définis / inutilisés jusqu'à ce qu'ils soient écrits à la première fois)

smallbee
2012-01-25 08:49:39 UTC
view on stackexchange narkive permalink

Je suppose que cela dépend du verrou dont vous parlez.

http://en.wikipedia.org/wiki/Latch_%28electronics%29

Certains verrous peuvent être réinitialisés pour que vous sachiez par où commencer. Je pense aussi qu'elle essayait juste de démontrer le concept de l ' état "inchangé" / "conserver" , peu importe l'état précédent.

clabacchio
2012-01-25 13:27:37 UTC
view on stackexchange narkive permalink

Deux brèves choses: pour la première question, je suis encore étudiant, je fais un stage en entreprise et j'ai trouvé que de nombreux concepts, même certains que je jugeais moins importants, sont utiles, et vous allez vous plaindre quand vous ne connaissez pas bien ces notions parce que vous avez eu un mauvais professeur. (Je sais que cela peut sembler anodin, mais c'est la première impression que j'ai eue quand je suis arrivé dans le monde réel)

Pour la deuxième question, j'ajouterais simplement mon point de vue: les verrous et les FF sont signifiés pour contenir des valeurs, et elles ont du sens si vous donnez d'abord cette valeur (à moins que vous ne souhaitiez créer un générateur aléatoire). Donc, avec une réinitialisation ou la mise d'une valeur, la première étape est toujours l'entrée.

Tobias Knauss
2019-07-02 01:40:21 UTC
view on stackexchange narkive permalink

(traduction allemande ci-dessous)
(Deutsche Übersetzung weiter unten)

La réponse acceptée de l'utilisateur "user3624" et les autres réponses donnent déjà beaucoup d'informations bonnes et suffisantes.
Mais tous se réfèrent soit au comportement théorique du circuit. Ou ils font référence à de vrais circuits intégrés, c'est-à-dire à des circuits électroniques construits dans des conditions industrielles: les circuits sont très précis et presque symétriques.
En théorie, une bascule ou une bascule ne fonctionnera jamais car la théorie (qui utilise des pièces électroniques parfaites) ne peut pas expliquer le comportement d'allumage du circuit. Pour la même raison, de nombreux simulateurs ne peuvent pas simuler une bascule (parfaite).

Si vous n'utilisez pas de loquet ou de bascule dans un CI (comme les CI de la série 7400, par exemple 7474 ou 74279), mais créez un simple par vous-même, vous pouvez le modifier facilement pour obtenir un état initial parfaitement déterminé. Construire un verrou est très facile et ne nécessite que quelques pièces: 2 transistors et 4 résistances; et 2 boutons poussoirs pour contrôler les états.
Voici un schéma de circuit d'un simple verrou. J'ai utilisé les mêmes transistors que ceux indiqués dans le schéma:
enter image description here Lors de la construction de ce circuit sur une maquette (avec une LED supplémentaire avant la résistance 1k), j'ai constaté que toujours la même LED était allumée lors de sa mise sous tension. Cela est dû aux tolérances des composants électroniques: un transistors n'est jamais comme l'autre. Il bascule un peu plus vite ou plus lentement, de sorte que l'ensemble du circuit a un état initial préféré, dans lequel il tombe à la mise sous tension.
Maintenant, je voulais forcer ce circuit à l'état initial opposé, où l'autre LED était toujours allumée à la mise sous tension. J'ai trouvé quelques conseils sur Internet, dont:

  • utilisez différentes résistances sur les bases des transistors
  • ajouter une diode avant une base de transistor

J'ai essayé les deux, séparément et ensemble, mais le résultat n'était pas satisfaisant. Au lieu d'avoir toujours le même état initial, il est devenu aléatoire lors de l'application d'un ou des deux changements mentionnés. Cela allait donc dans la bonne direction, mais ce n'était pas suffisant. J'aurais pu modifier davantage les valeurs de résistance, ou utiliser 2 diodes au lieu d'une, mais je pense que cela ne donnerait toujours pas de solution de sauvegarde. J'ai donc eu une autre idée:

  • placez un petit condensateur sur une base de transistor, un côté connecté à la base du transistor et l'autre côté connecté à la terre.

J'ai d'abord essayé 1uF et cela a parfaitement fonctionné. Ensuite, je suis descendu à 10nF et plus loin à 100pF et 10pF, et cela fonctionnait toujours. Cela fonctionnait même 90% du temps avec 1pF.
enter image description here Cela fonctionne parce que le condensateur court-circuite la base du transistor connecté (Q1) à la masse pendant un temps très court jusqu'à ce que le condensateur soit chargé ... serait chargé. "serait", car ce court moment est suffisant pour que l'autre transistor Q2 s'allume, et une fois que Q2 est allumé, la base de Q1 est connectée à la masse, donc Q1 restera éteint jusqu'à ce que quelqu'un pousse SW2. Lorsque SW2 est enfoncé, le condensateur se charge et une fois terminé, Q1 est allumé.

Pour une utilisation sûre à long terme, vous pouvez ajouter une petite résistance (comme 10R) en ligne avec le condensateur pour éviter les courants élevés lorsqu'il est déchargé.

(schémas de circuits créés en ligne avec "CircuitLab")


Enfin, parce que je suis allemand et que je veux que mes compatriotes trouvent des réponses également dans notre langue, j'écris à nouveau tout le texte en allemand:

Die akzeptierte Répondre Benutzer "user3624" und die anderen Répondre liefern bereits viele gute und ausreichende Informationen.
Aber alle beziehen sich enweder auf das théoretische Verhalten der Schaltung, oder sie beziehen sich auf einen realen IC, aussi eine elektronische Schaltung, die unter industriellen Bedingungen hergestellt wurde: extrem genau und fast symmetrisch.
En théorie, un multivibrateur bistable ou une bascule ne fonctionnera jamais, car la théorie ne peut pas expliquer le processus d'allumage en utilisant des composants électroniques parfaits. Pour cette raison, les bascules ne peuvent pas être simulées par de nombreux simulateurs.

Si vous n'utilisez pas de multivibrateur ou de bascule dans un circuit intégré (comme dans la série 7400, par exemple 7474 ou 74279), mais en construisez-en un vous-même, vous pouvez facilement le modifier afin d'obtenir un état d'activation défini de manière sécurisée. Construire un multivibrateur est très simple et vous n'avez besoin que d'une poignée de composants: 2 transistors et 4 résistances, et 2 boutons pour changer d'état.
Un schéma de circuit d'une bascule simple est illustré ci-dessus. J'ai utilisé les mêmes transistors dans mon circuit que dans le schéma.
[IMAGE 1]
Lorsque j'ai installé ce circuit sur une maquette (avec une LED supplémentaire devant la résistance 1k), j'ai remarqué que la même LED s'allumait toujours lorsqu'elle était allumée. Cela est dû aux tolérances des composants électroniques: aucun transistor en est un autre. On commute plus vite ou plus lentement, ce qui signifie que l'ensemble du circuit a un état préféré qu'il assume après la mise sous tension.
Maintenant, je voulais forcer le circuit à adopter l'état opposé lorsqu'il est allumé, dans lequel l'autre LED s'allume toujours. J'ai trouvé divers conseils sur Internet, notamment:

  • Utilisez différentes résistances devant les bases des transistors
  • ajouter une diode devant une base de transistor

J'ai essayé les deux, individuellement et ensemble, mais le résultat n'était pas satisfaisant. Au lieu d'obtenir toujours le même état de mise en marche, c'était maintenant une coïncidence si la LED était allumée après l'allumage. Cela allait dans la bonne direction, mais cela ne suffisait pas. J'aurais pu changer encore plus les valeurs de résistance ou peut-être connecter 2 diodes en série devant la base du transistor, mais je pense que cela ne fournirait toujours pas une solution sûre. J'ai donc eu une autre idée:

  • Ajoutez un petit condensateur devant une base de transistor, un côté connecté à la base du transistor et l'autre à la masse.

J'ai d'abord essayé 1uF et cela a parfaitement fonctionné. Ensuite, j'ai utilisé des valeurs plus petites, d'abord 10nF, puis 100pF et 10pF, et cela fonctionnait toujours. Il a même fonctionné avec 1pF dans 90% des cas.
[IMAGE 2]
Cela fonctionne parce que le condensateur court momentanément la base du transistor Q1 à la masse jusqu'à ce que le condensateur soit chargé ... serait chargé. "Serait" parce que ce bref instant est suffisant pour que le transistor Q2 s'allume, et dès que celui-ci est passé, la base de Q1 est reliée à la masse et Q1 reste bloqué jusqu'à ce que quelqu'un actionne SW2. Lorsque SW2 est enfoncé, le condensateur est chargé et Q1 est commuté immédiatement après.

Pour une utilisation sûre à long terme, il est recommandé de connecter une petite résistance (par exemple 10R) en série avec le condensateur afin d'éviter des courants de décharge élevés.

Bienvenue sur EE.SE.Notez que lorsque vous utilisez le bouton CircuitLab de la barre d'outils de l'éditeur, un schéma modifiable est enregistré dans votre publication.Cela nous permet de copier et de modifier facilement nos réponses.Vous n'avez pas besoin d'un compte CircuitLab, pas de captures d'écran, pas de téléchargement d'images, pas de grille d'arrière-plan.


Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...