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.
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.
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.
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)
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.
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.
(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:
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:
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:
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.
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:
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:
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.