Ceci est-il réalisable ?

a marqué ce sujet comme résolu.

Bonjour,

lors de la conception logique d’un circuit, je me suis retrouvé face à ce cas de figure : un évènement se passe à la condition nécessaire A d’un ou certains états d’un registre R1 (c’est-à-dire A := (R1=x0) ou (R1=x1) ou…) . Il prend un coup d’horloge. Sur ce même coup d’horloge, cet évènement change l’état de R1 tel que la condition A devient fausse (n’est plus remplie).

Ce système est-il stable et donne-t-il un résultat déterminé, ou préfère-t-on en pratique l’éviter et utiliser deux coups d’horloge ; par exemple en ajoutant une autre variable d’état (par exemple un registre R2), et en posant A1:= R1 est élément [un ensemble E1 de valeurs] et A2 := R2 est élément [un autre ensemble E2]. On aurait alors au premier coup d’horloge, à la condition A1, on écrit une des valeurs de E2 dans R2, et au deuxième coup d’horloge, à la condition A2, qui est donc automatiquement remplie, on change la valeur de R1 (ceci ayant un intérêt uniquement si la nouvelle valeur de R1 n’est pas dans E1 (ce qui était justement le problème originel)). E2 est surtout un singleton (et R2 une bascule d’un bit).

J’ai l’impression d’ailleurs que le serpent se mord la queue, parce qu’il faudrait changer la valeur de R2 avant le troisième coup d’horloge.

Merci beaucoup !

+0 -0

Bonjour,

J’ai attendu que quelqu’un réponde pour voir la tournure que la discussion allait prendre mais je crains que le pave de texte pour expliquer un système logique n’est pas la meilleure solution pour avoir des réponses. :D

Plus sérieusement, ça serait possible d’avoir un schéma ? Pas forcément un truc de logique avec des portes, mais au moins pour comprendre où tu veux en venir. :p

Le seul élément de réponse que je peux fournir en l’état concerne le temps de propagation, on a tendance à le négliger en théorie, mais il est bien présent en pratique. En soi, si sur le même coup d’horloge tu réalises tes deux actions, alors le résultat de ta condition sera aléatoire, un coup la condition sera validée (ou rejetée), un coup non … si j’ai bien compris le problème.

Pour moi la solution serait d’utiliser 2 coups d’horloges comme tu l’as expliqué. ;)

+1 -0

Salut,

Comme le dit Spit, il y a un temps de propagation dans les portes. Mais du coup je pense que la valeur de A correspondra à la valeur du registre au coup d’horloge précédent. C’est-à-dire que A sera simplement décalé d’un coup d’horloge par rapport à R1.

Mais effectivement, je pense qu’un schéma nous aiderait à être sûr !

Bonjour,

vous avez bien compris. J’ai eu beaucoup de mal, finalement, à fabriquer un schéma minimal pour montrer ce que je voulais. Le voici.

x1 sert juste à toggle à 1. La bascule D sert juste à éviter que la sortie du ET s’allume quand T passe à 1.

Circuit va évidemment marcher si on joue sur les délais, mais j’ai l’impression que c’est une solution moche, parce que si l’on change un des composants et qu’il a un délai différent, le comportement sera imprévisible. C’est pour ça que je cherche une alternative entièrement synchrone.

Merci !

PS: une question au passage : ça se fait de mettre un ET entre l’horloge et une entrée comme je l’ai fait, ou évite-t-on de le faire pour ne pas désynchroniser le truc commandé par la sortie du ET à cause du délai de ladite porte ?

+0 -0

Ah bon ? Chez moi, ça marche, pourtant, sans être connecté à DropBox. Mais bon, c’est fait.

Merci !

EDIT : je ne comprends rien aux images sur ce site, maintenant ça ne marche plus alors que ça marchait avec Dropbox, alors que vous disiez que ça ne marchait pas. J’essaie encore

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte