Paso 6: Envío de los Estados para el transmisor
Ahora que los Estados están disponibles con el transmisor el transmisor necesita saber cuando está bien para enviar datos. Utilizando una instrucción ternaria la lógica para esto puede hacerse sin la necesidad de un bloque de siempre.
assign uart_transmit = (next_state != prev_state && clk_50 == 1'b1 ? 1 : 0);
Esto es equivalente al siguiente bloque de siempre:
always @ (posedge(clk_50)) begin if (next_state != prev_state) uart_transmit <= 1; else uart_transmit <= 0; end
El último estado necesita ser conocido para poder detectar un cambio de estado. Esto se puede hacer con otra declaración de terciario:
assign prev_state = (uart_busy == 1'b0 && tx_clk == 1'b1 ? state : prev_state);
El código ahora debería estar listo para generar el flujo de bits y programa los 3 Basys. Supongo que han seguido el how to tutorial código su propia máquina de garra y hecho esto paso antes.
Escribí un programa python pequeño que lee del puerto serie e imprime en la consola con