Problemas con puerto serie y Eco.

58 views
Skip to first unread message

Alberto Nicas

unread,
Jun 13, 2020, 6:32:36 AM6/13/20
to FPGAwars: explorando el lado libre
Hola a todos.

Lo primero y antes de nada daros las gracias a la comunidad.
os voy a poner un vídeo que ha grabado para que veais el problema que tengo ya que no le encuentro solución alguna. No obstante lo voy a documentar también con imágenes.

Pulsa aquí para ver el vídeo del ejemplo.

El problemita lo tengo con la conexión serie que no consigo solucionar. y se divide en 2 partes.

1, la conexión serie entre los bloques TX y RX diseñados en verilog o por bloques se comportan completamente diferente. cuando ejecuto el ejercicio 13 de la coleccion jedi 30 (rx-tx-eco) si envio un dígito no hay ningún problema, si mandas una A te devuelve una A pero si mandas un HOLA devuelve basura, eso sucede utilizando los bloques de TX y RX diseñados con verilog, si lo que usamos son los bloques diseñados por bloques, los que hace es que nos devuelve un caracter si y uno no.
En esta imagen se ve lo que devuelve utilizando los bloques diseñados con bloques.

Monitor serie hola numeros con bloques.png

Y en esta otra imagen se puede ver lo que devuelve utilizando los bloques diseñados con verilog,

Monitor serie hola numeros con verilog.png


Y aquí os dejo una imagen de lo que viene a ser el diseño del circuito del eco que es el ejercicio 13 de la coleccion jedi 30. El cambio de arriba lo podemos ver tan solo cambiando los bloques TX y RX diseñados por bloques o por verilog.

Eco tx rx icestudio.png


PARTE 2. ANALIZANDO LAS SEÑALES.

Pues para ver que es lo que estaba pasando he conectado un analizador lógico (Gracias obijuan por darme a conocer esta maravilla de aparato tan ridículamente barata y buena) y los resultados han sido estos.
En esta primera imagen os dejo los resultados de la lectura logica del circuito verilog, el resultado es este.


Lectura logica RX TX verilog hola.png


Lectura logica RX TX verilog numeros.png




Y ahora os dejo las imagenes del resultado logico del ejercicio diseñado con bloques.



Lectura logica RX TX hola bloques.png

Lectura logica RX TX bloques numeros.png




Por lo que puedo ver, y por lo que yo entiendo hasta ahora los Baudios los veo desplazados medio bit, he probado varias cosas, pero no consigo que me funcione del todo bien. es como si el bit de START se adelantase medio bit, entoces ese primer digito lo devuelve bien, pero el siguiente, al ya no recibir el bit a cero para indicarle el start se pierde.

No se... llevo un par de días volviéndome loco y no se que es lo que está pasando. pero en el video, del tutorial 30 de obijuan tal cual carga el ejemplo en icestudio le devuelve bien toda la información, pero a mi siempre me devuelve basura.

Muchas gracias por vuestro tiempo.

Alberto Nicas

unread,
Jun 13, 2020, 6:52:27 AM6/13/20
to FPGAwars: explorando el lado libre
Perdonar chicos aqui os pongo el video que sin querer me acabo de dar cuenta que esta en privado. ya teneis el enlace en publico.

Obijuan

unread,
Jun 13, 2020, 9:17:03 AM6/13/20
to FPGAwars: explorando el lado libre
Hola Alberto,

Ese es un bug muy antigüo que fue corregido hace mucho (sólo afecta a la conexión directa entre el transmisior y el receptor. En el resto de casos todo funcionaba bien). En la colección del tutorial 30 se ha debido colar alguna de estas versioners bugeadas

El ejemplo 13 si lo cargas tal cual te debería funcionar. Yo lo acabo de probar y va bien, y ese mismo ejemplo lo han probado muchos de los que han hecho el curso.

Así que vamos por partes:

1: Carga el ejemplo 13 tal cual (sin modificar nada) y pruébalo. Cárgalo directamente de la colección desde el menú Archivos/Ejemplos/1-Ejemplos/02-receptor/ 13-rx-tx-eco  (Ese mismo ejemplo te lo adjunto aquí, es el que acabo de probar en la Alhambra II para verifcar que está ok)

Con la misma prueba que has hecho, de enviar la cadena "hola" directamente dinos qué obtienes. Te adjunto un pantallazo de la salida que me da a mi

Según los resultados seguimos investigando más cosas

Saludos, Obijuan

13-rx-tx-eco.ice
serial-test.png

Alberto Nicas

unread,
Jun 13, 2020, 11:32:19 AM6/13/20
to FPGAwars: explorando el lado libre
Pues así acabo de hacer y me devuelve lo siguiente.

basura eco.png

Obijuan

unread,
Jun 13, 2020, 1:17:45 PM6/13/20
to FPGAwars: explorando el lado libre
Vaya, estamos ante un expediente x: a mí me funciona bien, pero a tí no

En estos casos sólo queda seguir haciendo pruebas hasta encontrar lo que está ocurriendo

Te mando el mismo ejemplo, pero con los últimos bloques de transmisión serie, que son los que están en la biblioteca stdio.

Pruébalo de la misma forma que antes

Este circuito me funciona perfectamente. A ver a tí qué te sale

Arranca icestudio, abre el programa que te adjunto. serial-eco-test1.ice, cárgalo, abre el script communicator y repite la prueba

En mi caso funciona bien: mando la cadena "hola" del tirón y se recibe el eco bien

Según los resultados, te manderá unas u otras pruebas

Saludos, Obijuan



serial-eco-test-1.ice

Alberto Nicas

unread,
Jun 14, 2020, 7:01:08 AM6/14/20
to FPGAwars: explorando el lado libre
Pues ya encontré el problema, probé con el archivo que me pasaste de test 1 y me seguía haciendo lo mismo, y dije... huy, aquí tengo algo o mal configurado o algo, y me puse a trastear, pues despues de desinstalar los últimos programas que instale, y varias cosas que iba probando, decidí mirar la configuración del script comunicator, y resulta que en la configuración de paridad, me devuelve bien el dato en todos los modos excepto en "NONE" que era justo donde lo tenia, de echo desinstale el programa y lo volví a instalar y por defecto se me configura en "none"

Asi que bien, problema resuelto, pero una duda... de todas las opciones que hay. ¿cual es la mas correcta dejar activada?
Muchas gracias.

tx rx solution.png

charli va

unread,
Jun 14, 2020, 7:04:35 AM6/14/20
to fpga-wars-explora...@googlegroups.com
Recuerda que la nightly ya trae su propio terminal serie! 😇

--
Has recibido este mensaje porque estás suscrito al grupo "FPGAwars: explorando el lado libre" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fpga-wars-explorando-el...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/fpga-wars-explorando-el-lado-libre/3d9bd790-2acc-4ecd-8c36-da4917037eebo%40googlegroups.com.

Alberto Nicas

unread,
Jun 14, 2020, 7:19:47 AM6/14/20
to FPGAwars: explorando el lado libre
La verdad que no me había puesto a trastearlo, pero tiene muy buena pinta, simple y facilisimo de configurar.

Muchas gracias por todo el trabajo tan enorme que estáis haciendo. de verdad esto lo facilita todo muhciiisimo.

Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fpga-wars-explorando-el-lado-libre+unsubscribe@googlegroups.com.

Juan Gonzalez Gomez

unread,
Jun 14, 2020, 7:23:01 AM6/14/20
to FPGA-WARS: explorando el lado libre
Vale, ok, NO TE HA FUNCIONADO.

La configuración correcta de paridad es None: no estamos usando ningún bit de paridad

Al conectar directametne el receptor con el transmisor la temporización está muy ajustada. Y parece que en mi caso funciona, pero que en otros casos no.

Bueno es saberlo... porque así ya pasamos a la solución definitiva, que no quise implementar en el tutorual para no complicarlo. Si ya funcionaba bien conectando directamente el receptor con el transmisor lo dejaba así.

En las aplicaciones reales se usan bufferes de almacenamiento intermedio para evitar precisamente estas desincronizaciones.

He creado un bloque transmisor que tiene un buffer de 1 byte. Con esto es suficiente para los ejemplos sencillos que se están haciendo en el tutorial 30

Te adjunto un nuevo ejemplo para que lo pruebes. El transmisor incluye este buffer de 1 byte

Deja la configuración que viene por defecto: Paridad None

Abre este nuevo ejemplo, cárgalo y haz otra vez la prueba

Ya estamos muy cerca... ¡Gracias!

Saludos, Obijuan


--
Has recibido este mensaje porque estás suscrito al grupo "FPGAwars: explorando el lado libre" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fpga-wars-explorando-el...@googlegroups.com.
serial-eco-test-3.ice

Alberto Nicas

unread,
Jun 14, 2020, 7:33:34 AM6/14/20
to FPGAwars: explorando el lado libre
Me quito el sombrero señor Maestro. Ahora en "none" funciona PERFECTAMENTE. Me voy a guardar estos bloques, y los sustituyo por los que hay en la colección Jedi.

Mil gracias.

tx rx solution 2.png


Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fpga-wars-explorando-el-lado-libre+unsubscribe@googlegroups.com.

Juan Gonzalez Gomez

unread,
Jun 14, 2020, 8:04:43 AM6/14/20
to FPGA-WARS: explorando el lado libre
OK, bug cazado y resuelto! 😃

Los bloque de la colección Jedi te van a funcionar bien, salvo en el caso de conexión directa entre receptor y transmisión. Este nuevo bloque transmisor con un buffer de un byte está en la colección stdio, y en cuanto la tenga un poco más madura la documentaré

Ya estás a punto de acabar el curso, mi joven Jedi Nivel 2...

Saludos, Obijuan

Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fpga-wars-explorando-el...@googlegroups.com.

--
Has recibido este mensaje porque estás suscrito al grupo "FPGAwars: explorando el lado libre" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fpga-wars-explorando-el...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/fpga-wars-explorando-el-lado-libre/0cc8dd25-2704-40bb-b14e-f77ae0e19159o%40googlegroups.com.
Reply all
Reply to author
Forward
0 new messages