No estoy seguro si esta es la implementación correcta, aunque funciona hasta ahora. Emití los datos en el flanco ascendente de la señal FETCH (esto no es un reloj). Los datos solo deben estar en el estado OUTP. Esto también cuenta la cantidad de palabras emitidas hasta el momento, y la máquina de estado (no se muestra) hace la transición a un estado diferente si el recuento de palabras alcanza algún valor.
always @(posedge FETCH)
case(state)
OUTP: begin
OUT_DATA <= DATA[WordCounter];
WordCounter <= WordCounter + 1 ;
end
default:WordCounter <= 6'd0;
endcase
El problema es que para reiniciar WordCounter, debo pulsar la señal FETCH cuando no esté en el estado OUTP. ¿Existe una forma mejor de volver a escribir este código, de modo que pueda recuperar los datos en el borde, pero el WordCounter se puede restablecer en cualquier estado que no sea OUTP que no requiera un borde ascendente?