E8bC : exécution d’une instruction à la fois

step_debug

Jusqu’à présent, nous avons testé les instructions en les exécutant cycle par cycle via le signal MAN_CLK. Mais les instructions ayant des cycles variables, il n’est pas toujours aisé de passer rapidement sur plusieurs instructions pour atteindre l’instruction qui nous intéresse précisément. C’est le but de la petite modification avec le signal DEBUG.

Le signal de contrôle HALT permettait déjà d’ignorer les signaux d’horloge. Je l’ai simplement combiné avec une porte logique OR. La deuxième entrée de cette porte logique est reliée à un flip-flop SR (Set/Reset) qui est positionné à un lorsque l’exécution d’une instruction se  termine.

Ce flip-flop est positionné à un lorsque le signal debug est à un et que l’on reçoit le signal CTL_RST. Pour rappel, le signal CTL_RST est la dernière microinstruction de chaque instruction, et permet de redémarrer un nouveau cycle fetch/décodage/exécution d’une instruction.

En pratique, lorsque l’on désire exécuter instruction par instruction, il suffit de positionner DEBUG à 1, et de démarrer la génération des signaux d’horloge. Lorsqu’une instruction est terminée, le signal d’horloge est automatiquement bloqué. Pour débloquer le signal d’horloge, il suffit de remettre à zéro le flip-flop SR.

Un petit exemple d’utilisation avec le programme pusha_01.rom :

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s