Serial to Hexadecimal.

97 views
Skip to first unread message

Democrito

unread,
Nov 21, 2020, 5:35:49 AM11/21/20
to FPGAwars: explorando el lado libre
Hola,

He diseñado un circuito en el que podemos enviar un número hexadecimal a través del serial y lo convierte a binario (en formato hexadecimal) directamente desde cualquier terminal.

Serial_to_hexadecimal_icestudio.PNG

Esto puede ser súper útil cuando queremos hacer pruebas rápidas para interactuar con periféricos a través del serial. Hasta ahora este tipo de pruebas las estaba haciendo desde ScriptCommunicator que es un programa muy útil porque permite enviar en ascii, hexadecimal, binario, etc.., pero quería evitar salir de Icestudio para cosas así.
En próximos post (en este hilo) pondré ejemplos de cómo interactuar directamente con periféricos para ayudar a comprender lo útil que puede ser este tipo de herramienta. Esto quiere decir que antes de hacer un diseño podemos experimentar directamente con el periférico y ver cómo funciona, enviándole los códigos que necesite, ya sea de configuración o datos.

Cómo funciona:
Recomiendo usar el terminal serie de Icestudio, aunque puede ser cualquiera, entonces, escribimos por ejemplo:
FF ó ff (no es "case sensitive") y pulsamos enter, o escribimos coma, o espacio y todos los leds se encenderán (en el ice que adjunto como ejemplo).
Si ahora ponemos aa ó AA (y pulsamos enter o escribimos coma o un espacio), verás que se encienden los leds de forma alterna, lo mismo sucederá si enviamos 55.
  • Cualquier errata de tipo de letra que no sea A..F lo tomará por 0.
  • Permite escribir un sólo carácter, es decir, podemos enviar F y lo tomará como 0F.
  • Si damos al enter, coma o espacio repetidamente no se enviará nada, sería como no haber hecho nada. De esta forma se evita enviar 0 si no viene al caso.
Adjunto Ice, y lo dicho, en los próximos días pondré ejemplos para ver la utilidad de este pequeño circuito.

Saludos.

Post Data:
Más adelante, completado las pruebas, lo subiré al Excel de Carlos.
example_serial_to_hexadecimal.ice

Obijuan

unread,
Nov 22, 2020, 6:20:18 AM11/22/20
to FPGAwars: explorando el lado libre
Hola Demócrito!

Lo acabo de probar. Funciona muy bien,  y es super útil! Muchas gracias 😀️

Me encantan los bloques con los que lo has implementado. Están muy bien estructurados y el circuto se entiende muy bien

Saludos, Obijuan

Democrito

unread,
Nov 22, 2020, 7:02:24 AM11/22/20
to FPGAwars: explorando el lado libre
Hola Obijuan!

Muchísimas gracias por las pruebas!

Este circuito lo hice para antes de comenzar a plantear un diseño con I2C o SPI, poder enviar códigos de configuración y datos y ver el funcionamiento/comportamiento, y en base a la experiencia luego crear el diseño. Porque me he visto en muchas ocasiones (antes de conocer Scriptcommunicator) comenzando a construir por el tejado. Nada puede sustituir a este estupendo programa de comunicaciones, pero me encantaba la idea de tener un módulo que tuviera la función de enviar datos en hexadecimal.

Sigo trabajando sobre facilitar el envío de información sobre SPI. He hecho varios diseños y ninguno me convence porque a la hora de explicar cómo funciona sé que no va a ser sencillo para todo el mundo. Ahora estoy con otro enfoque y si me convence iré por ese camino.

Gracias una vez más a ti y a Carlos por todo vuestro trabajo.

Saludos.

Democrito

unread,
Nov 22, 2020, 7:06:19 AM11/22/20
to FPGAwars: explorando el lado libre
En el 4º párrafo, donde digo SPI quise decir I2C. Aunque en el futuro la intención es aplicar eso mismo al SPI.

Juan Gonzalez Gomez

unread,
Nov 22, 2020, 7:11:28 AM11/22/20
to FPGA-WARS: explorando el lado libre
Yo estoy convencido de que ese es el camino a seguir: hacer un hardware que sea fácil de entender. Es muy importante el cómo ordenador las ideas y el cómo organizar los bloques para lograrlo. Yo reconozco que estoy muy enganchado a este tipo de pensamiento hardware, y el intentar hacerlo cada vez más simple y fácil

El dom, 22 nov 2020 a las 13:06, Democrito (<spo...@gmail.com>) escribió:
En el 4º párrafo, donde digo SPI quise decir I2C. Aunque en el futuro la intención es aplicar eso mismo al SPI.

--
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/d7129cfa-92cb-4a85-9446-63a7b5b779f1n%40googlegroups.com.

charli va

unread,
Nov 22, 2020, 2:33:01 PM11/22/20
to fpga-wars-explora...@googlegroups.com
Demócrito funciona fenomenal! me encanta! this is the way!!

estoy deseando ver el tema del spi como lo hayas afrontado, yo ando también jugando bastante con el spi estos días, a ver si cierrro unas cosas y os las paso y en ese sentido no me he parado a plantear un sistema genérico para spi anque sí que segúnando con ello veo que es necesario, a ver donde podemos llegar! facilitaría mucho las cosas en general.

Vamos a por ello!

Democrito

unread,
Nov 22, 2020, 4:19:27 PM11/22/20
to FPGAwars: explorando el lado libre
Gracias por la prueba Carlos!

Cometí una errata, quise decir I2C, que es de lo que ahora mismo estoy más o menos "empapado", y luego trasladar esas mismas ideas al SPI.

Después de varios intentos, el planteamiento que tengo ahora es meter todos datos en una memoria, pero también tendría que ir (además de los datos en sí) a modo de cabecera la cantidad de bytes que van a ser escritos y leídos (se reservan 4 bytes para esto). Habría un circuito "cribador" que sabría cuándo es info de cantidad de bytes (para leer y escribir) y el grupo de datos y dónde terminan los datos. Todo esto lo tengo en proceso (y circuito del pasado con esta finalidad) aunque hay detalles que también he de contemplar y es ahí donde le doy vueltas a la cabeza, como por ejemplo, que de forma externa podamos cambiar uno o dos bytes de un grupo de datos.

Es la forma más sencilla de configurar un periférico, interactuar con él y obtener datos. Porque es cabecera+datos....cabecera+datos...
Como cada periférico tiene unas necesidades distintas, lo difícil es crear algo sencillo y que los englobe todos.

En ello estamos, a ver que sale!
Reply all
Reply to author
Forward
0 new messages