vhdl "esperar hasta" en un bucle

0

Aparece un mensaje de error "Error (10398): Error de declaración de proceso de VHDL: la declaración de proceso debe contener solo una declaración de espera" para este código
FOR i IN 0 TO N LOOP WAIT UNTIL tx_busy = '0'; tx_data <= data(i); END LOOP;
Entiendo lo que significa y por qué está ahí, pero sigo sintiendo que hay una manera de hacer lo que pretendía, pero no he encontrado una manera

    
pregunta RKishmar

1 respuesta

-1

El bucle no funciona porque los bucles se ejecutan en un ciclo de reloj y, por lo tanto, existen varias declaraciones WAIT al mismo tiempo.

Así es como puedes hacerlo:

process
    variable i : natural := 0;
    constant N : natural := 42;
begin
    wait until tx_busy = '0';  -- step 1

    if i < N then              -- step 2
        i := i + 1;            --   |
    else                       --   |
        i := 0;                --   |
    end if;                    --   |

    tx_data <= data(i);        -- step 3
end process;

El código tiene tres pasos:

  1. esperar hasta que tx_busy sea '0'
  2. aumentar i mientras sea más pequeño que N , de lo contrario, restablézcalo a 0
  3. escriba data(i) en la señal de destino
respondido por el Blaubär

Lea otras preguntas en las etiquetas