[Verilog] Generador de multiplicadores

238 views
Skip to first unread message

Obijuan

unread,
Jun 15, 2016, 11:24:07 AM6/15/16
to FPGA-WARS: explorando el lado libre
Hola!

  El otro día por tuiter [1] vi este generador de bloques de multiplicación por hardware  (Variable por constante)

http://www.spiral.net/hardware/multless.html

  Tiene muy buena pinta. Todavía no lo he probado, pero genial para hacer filtros digitales con la FPGA

[1] https://twitter.com/ico_TC/status/742029212232605697

ruben nieto

unread,
Jun 15, 2016, 3:10:50 PM6/15/16
to FPGA-WARS: explorando el lado libre
A este hilo, había pensado en programar yo una práctica de la Universidad, que trataba de implementar un filtro FIR o IIR, aún no he probado nada, pero si tengo algo lo comparto!

Otra idea que tenía (basada en otra práctica) es implementar el algoritmo de CORDIC para generar señales sinusoidales de forma "sencilla" con pocos recursos.

Saludos

Juan Gonzalez Gomez

unread,
Jun 15, 2016, 4:19:37 PM6/15/16
to FPGA-WARS: explorando el lado libre

Ruben!!! Eso de las señales sinusoidales me interesa muchísimo!!! Con ellas se pueden crear osciladores hardware para la locomoción de robots. Lo que tengo implementados ahora se basan en tablas con valores precargados, y no los puedo modular.

Sería brutal tener esa unidad hardware generadoras de senos :-)

Saludos, Obijuan

--
Has recibido este mensaje porque estás suscrito al grupo "FPGA-WARS: explorando el lado libre" de Grupos de Google.
Para anular 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 publicar en este grupo, envía un correo electrónico a fpga-wars-explora...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/fpga-wars-explorando-el-lado-libre/cdcce3a7-a7c2-4714-ad04-aeaaaa736499%40googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

BrainCodec

unread,
Jun 15, 2016, 4:44:03 PM6/15/16
to FPGA-WARS: explorando el lado libre
Hace tiempo estuve detrás de la implementación de CORDIC en VHDL, sin duda sería muy útil tenerlo en VERILOG, para implementación de cinemáticas y demás maravillas.
 
Aquí tenemos una implementación en Verilog:

Aquí otra en VHDL:

Y por último aquí bastante información sobre CORDIC:

A ver si tengo un rato y pruebo la implementación de Verilog que todavía no la he podido testear.

ruben nieto

unread,
Jun 15, 2016, 4:50:08 PM6/15/16
to FPGA-WARS: explorando el lado libre
Pero sí que podrías modular esas señales precargadas!!

Imaginate que tienes una tabla de 1024 valores, que te genera un seno. En leer esos valores de memoria tiene una latencia, que cuando acabe de leer los 1024 determinará el periodo de la señal. Si en vez de leer los 1024 valores lees la mitad de los mismos (512), saltandote muestras intermedias, tendrás una señal peor definida pero con el doble de frecuencia, ya que el periodo se te reduciría a la mitad. Si posteriormente filtras esa señal para suavizar los escalones de cuantificación, no tendrías ningún problema.

Evidemente, no tendríamos todas las frecuencias posibles, pero quizás sí un rango que sirva para la aplicación.

Dejo a continuación, un poco de la teoría de CORDIC que data de los 60 y la ventaja es que se implementa mediante sumas y desplazamientos de bits. Con él también se pueden hacer otras operaciones como raices, multiplicaciones, divisiones, etc. Pero en este caso tendríamos el mismo problema de antes, podríamos calcular el valor del seno de 0 a 2pi, pero en intervalos p.e. de 0.1 determinaría nuestro periodo máximo, por tanto nuestra menor frecuencia, mientras que si esos intervalos sería de 0.2 la frecuencia sería el doble que antes.

[1] http://www.ijcta.com/documents/volumes/vol1issue1/ijcta2010010111.pdf
[2] http://www.physi.uni-heidelberg.de/~angelov/VHDL/VHDL_SS09_Teil06.pdf
[3] http://dspace.uah.es/dspace/bitstream/handle/10017/20805/TFG%20V%c3%a1zquez%20Aloc%c3%a9n%202014.pdf?sequence=1&isAllowed=y

Obijuan

unread,
Jun 16, 2016, 1:24:41 AM6/16/16
to FPGA-WARS: explorando el lado libre
Correcto. Con tablas se puede hacer. No hace falta tener mucha precisión en el seno para aplicarlo a la locomoción de robots. Pero si en vez de tener la señal muestreada se genera directamente con los algoritmos que comentas, sería genial. Es un campo fascinante, que hay que probar, ver qué recursos ocupa en la fpga, etc

Una gran aportación!  :-)

Saludos, Obijuan
Reply all
Reply to author
Forward
0 new messages