ID de l'article: 000080719 Type de contenu: Dépannage Dernière révision: 11/09/2012

Quel est l’état initial d’une machine d’état mise en marche ?

Environnement

BUILT IN - ARTICLE INTRO SECOND COMPONENT
Descriptif Lorsque vous synthétisez une machine d’état pour Altera® périphériques, vous devez vous assurer que la machine d’état est réinitialisée correctement. Tous les registres d’un périphérique Altera démarrent dans un état faible, sauf si l’option Not-Gate-Push-Back est utilisée ou si les options de mise sous alimentation élevée sont définies sur le registre. Tous les périphériques Altera prennent en charge les périphériques Not-Gate-Push-Back.

Si la machine d’état est définie de sorte qu’un ou plusieurs bits d’état ne sont pas zéro dans l’état de réinitialisation, vous devez explicitement réinitialiser l’ordinateur d’état à l’aide d’un signal de réinitialisation (voir ci-dessous). Si la machine d’état n’est pas réinitialisée explicitement dans ce cas, la machine d’état peut s’alimenter dans un état non défini et MAXPLUS® II envoie le message suivant :

Infos : la machine d’état « <nom> » doit être réinitialisée pour garantir un bon fonctionnement

Pour corriger ce problème, la machine d’état doit être réinitialisée explicitement. Vous trouverez ci-dessous des exemples de formats d’entrée de gamme pour AHDL, VHDL et Verilog HDL.

Pour AHDL, le signal de réinitialisation doit être déclaré et revendiqué.

SUBDESIGN statemachine

(

  clk, reset, ena, d : INPUT;

  q         : OUTPUT;

)



VARIABLE

  ss: MACHINE WITH STATES (s0=1, s1=0); -- reset state is s0, state register is non-zero



BEGIN



  ss.reset = reset; -- assert this signal to properly reset the state machine



Pour VHDL, l’état initial peut être défini par une IF déclaration et un signal de réinitialisation.

ENTITY statemachine IS

PORT( clk : IN STD_LOGIC;

input : IN STD_LOGIC;

reset : IN STD_LOGIC;

output : OUT STD_LOGIC);

END statemachine;



ARCHITECTURE a OF statemachine IS

  TYPE STATE_TYPE IS (s1, s2); -- reset state is s1

  ATTRIBUTE ENUM_ENCODING : STRING;

  ATTRIBUTE ENUM_ENCODING OF STATE_TYPE : TYPE IS "1 0"; -- state register for s1 is non-zero

  SIGNAL state : STATE_TYPE;

BEGIN

  PROCESS (clk)

    BEGIN

     IF reset = '1' THEN state <= s2; -- causes state machine to power up in state s2

       IF (clk'EVENT AND clk = '1') THEN

         CASE state IS







Pour Verilog HDL, l’état initial doit être défini par une IF déclaration et un réinitialiser le signal, c’est-à-dire

module statemachine (clk, in, reset, out);

  input  clk, in, reset;

  output out;     

  reg   out;

  reg   state;

      

  parameter s1 = 1, s2 = 0;

  always @ (state) begin

   case (state) -- define outputs

     s1: out = 0;



  always @ (posedge clk or posedge reset) begin

   if (reset) state = s1; -- causes state machine to power up in state s1

   else case (state) -- define state transitions

      s1: if (in) state = s2;



Pour tous les formats HDL, si vous ne définissez pas l’état initial de l’ordinateur d’état comme étant des zéros, réinitialisez explicitement la machine d’état, car la machine d’état alimentera faiblement.

Voir les sections AHDL, VHDL et Verilog HDL de l’aide MAX PLUS II pour informations complètes sur l’implémentation des machines d’état dans MAX PLUS II.

Produits associés

Cet article concerne 1 produits

Circuits programmables Intel®

1

Le contenu de cette page est une combinaison de traduction humaine et informatique du contenu original en anglais. Ce contenu vous est fourni pour votre commodité et à titre informatif seulement et ne saurait être totalement exact ou complet. En cas de contradiction entre la version anglaise de cette page et la traduction, c'est la version anglaise qui prévaut. Afficher la version anglaise de cette page.