5 votos

FPGA capaz de enviar datos, pero incapaz de recibirlos. (UART - RS232)

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

Estoy utilizando la implementación RS232 de aquí: http://www.fpga4fun.com/SerialInterface.html

He probado el envío desde la FPGA y ha funcionado perfectamente. Sin embargo, cuando intento enviar a la 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 he diseñado de tal manera que un LED específico de mi placa se enciende mientras estoy enviando el valor hexadecimal 24. Como estoy enviando este valor a una frecuencia muy alta, espero que el LED permanezca encendido durante toda la transmisión. Sin embargo, no ocurre nada. Permanece apagado.

Ya he probado la opción del bit inverso desde mi programa rs232. Además, usar un valor simétrico como 0x55 no funcionó.

¿Cuál podría ser el problema?

3voto

thejohnny Puntos 196

Me las ingenié para descubrirlo.

Resulta que el módulo RS232 en particular que estoy usando funciona óptimamente con un reloj de entrada de 25MHz. El reloj principal de mi FPGA es de 50MHz, así que simplemente lo pasé por un divisor de 1 bit para obtener un reloj de 25MHz. Usando esto como mi reloj UART funcionó perfectamente.

También utilicé los 8 LEDs para mostrar los 8 bits de datos que se recibían, lo que ayudó enormemente.

3voto

schnaader Puntos 26212

Como no se puede depurar Verilog como se puede hacer con C y un microcontrolador, hay que dar pasos de depuración incrementales...

  • Si sólo asignas el LED 1, ¿se enciende el LED y permanece encendido?
  • ¿Se leen los datos? Tal vez sólo se conmuta el LED si cualquier el carácter viene en
  • Asegúrate de que esto funciona y pasa a 0x24

Mi consejo es dar pasos de bebé al depurar, especialmente con un lenguaje de descripción de hardware.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X