FPGA puede enviar datos, pero no puede recibir datos. (UART - RS232)

5

Tengo una placa DE0-nano FPGA y estoy tratando de establecer una conexión serie con mi PC.

Estoy usando la implementación RS232 desde aquí: enlace

He probado el envío desde el FPGA y funcionó perfectamente. Sin embargo, cuando intento enviar al FPGA, parece que no funciona.

Aquí está mi código verilog:

module Learning(
    input clk,
    input RxD,
     output LED
);

wire RxD_data_ready;
wire [7:0] RxD_data;
reg [7:0] data;

async_receiver RX(.clk(clk), .RxD(RxD), .RxD_data_ready(RxD_data_ready), .RxD_data(RxD_data));

always @(posedge clk) if(RxD_data_ready) data <= RxD_data;

assign LED = (data == 8'h24);

endmodule

Básicamente, lo diseñé de manera que un LED específico en mi tablero se encienda mientras envío el valor hexadecimal 24. Ya que estoy enviando este valor a una frecuencia muy alta, espero que el LED permanezca encendido durante toda la transmisión . Sin embargo, nada está sucediendo. Se mantiene apagado.

Ya probé la opción de bit inverso desde mi programa rs232. Además, el uso de un valor simétrico como 0x55 no funcionó.

¿Cuál podría ser el problema?

    
pregunta thejohnny

2 respuestas

2

Me las arreglé para averiguarlo.

Resulta que el módulo RS232 particular que estoy usando funciona de manera óptima con un reloj de entrada de 25MHz. Mi reloj principal FPGA es de 50MHz, así que simplemente lo ejecuté a través de un divisor de 1 bit para obtener un reloj de 25MHz. Usando esto como mi reloj UART funcionó perfectamente.

También utilicé los 8 LED para mostrar los 8 bits de datos recibidos, lo que ayudó enormemente.

    
respondido por el thejohnny
3

Ya que no puedes depurar Verilog de la manera que puedes con C y un microcontrolador, debes realizar pasos de depuración incrementales ...

  • Si solo asigna el LED 1, ¿el LED se enciende y permanece encendido?
  • ¿Se están leyendo los datos? Tal vez solo cambie el LED si aparece el carácter cualquiera
  • Asegúrese de que funcionen y que se muevan a 0x24

Mi consejo es que sigan los pasos del bebé al realizar la depuración, especialmente con un lenguaje de descripción de hardware.

    
respondido por el BabaBooey

Lea otras preguntas en las etiquetas