Discusiones sobre Productos NI

cancelar
Mostrando los resultados de 
Buscar en lugar de 
Quiere decir: 

Control LQR en FPGA

hola...
Estoy haciendo un proyecto con Labview FPGA y estoy trabajando con la Spartan-3E...
El FPGA tiene que hacer la adquisicion de datos, procesamiento  y la interfaz de usuario, tengo q utilizar el DAC para salida del controlador del LQR , el LCD y el rotary encoder para moverse por la interfaz, mi pregunta es como puedo reducir la parte del LQR (en las operaciones) porque este me ocupa la mayor cantidad de memoria...
(trabajo con labview 2010)

 

Gracias por su ayuda...

 

0 kudos
Mensaje 1 de 7
3.479 Vistas

Buenos días yoyo,

 

Estuve revisando tu código y lo que se me ocurre es que puedas subir la ecuación final para tratar de reducirla antes de programarla y así ver que podemos mejorar en la programación.

 

Estoy atento a ver que sale, la verdad no estoy familiarizado con lo que hace tu código y no se por donde empezar a atacarlo.

 

Saludos,

Luis Elias
NI VeriStand and HIL Product Manager
0 kudos
Mensaje 2 de 7
3.459 Vistas

Que tal yoyo,

 

Una cosa que acabo de notar de tu código es que tienes muchas operaciones con datos de distinto tamaño de bits,esto lo que hace es que al convertir de un tamaño más pequeño a uno más grande se aloca en otra localidad de memoria, por lo que ahora tendremos dos bloques de memoria con el mismo dato. Si estandarizas todos, tu prorama utilizará menos memoria y funcionará más rápido.

 

Otras cosas que puedes hacer es usar la función de Inplace, esto sirve para no generar copias de la información en cada operación y así evitar el uso de memoria indiscriminado.

 

Te agrego algunos tutoriales que te pueden ayudar:

 

http://zone.ni.com/devzone/cda/tut/p/id/11169

http://zone.ni.com/devzone/cda/tut/p/id/5493

http://zone.ni.com/devzone/cda/tut/p/id/6749

http://zone.ni.com/devzone/cda/tut/p/id/7606

http://zone.ni.com/devzone/cda/tut/p/id/11472

http://zone.ni.com/devzone/cda/tut/p/id/6211

 

En estos links hay un poco de todo, desde un curso llamado LV Performance hasta explicaciones de como compila LV el código FPGA para poder entender como hacerlo un poco más eficiente!!

 

Revisalos y cualquier duda me avisas!

Luis Elias
NI VeriStand and HIL Product Manager
0 kudos
Mensaje 3 de 7
3.453 Vistas

Saludos Luis Elias...gracias por responder...

 

Voy a estandarizar los datos y  ver como me va....
Lo que estoy haciendo es un controlador LQR para un pendubot, pero quiero que todo el control este en el FPGA...
el problema que tengo es que el codigo se hace demasiado grande cuando ingreso todo el control, desde adquisicion de datos hasta la presentacion en el LCD...voy a leer los tutoriales y escribo los resultados....

Gracias....

0 kudos
Mensaje 4 de 7
3.446 Vistas

Hola de nuevo....

Otra pregunta....
Tengo una duda respecto a la funcion de Inplace que mencionas...me puedes dar un ejemplo o donde encuentro esa funcion....gracias nuevamente...

0 kudos
Mensaje 5 de 7
3.443 Vistas

Que tal,

 

Una disculpa es la In Place Element Structure, aqui te dejo la liga de la ayuda: http://zone.ni.com/reference/en-XX/help/371361G-01/glang/inplace_elementinout/

 

Revisalo y me comentas!!

 

Lo único es que las operacciones que puedes hacer ahí dentro estan limitadas.

 

Saludos y mucho exito!!

 

PD como te fue con la estandarización del tamaño de los datos?!

Luis Elias
NI VeriStand and HIL Product Manager
0 kudos
Mensaje 6 de 7
3.432 Vistas

Saludos...

 

He revisado los tutoriales y he realizado algunas mejoras en el programa....ya he logrado implementar todo el control pero no puedo mostrar en el lcd ya que la memoria es insuficiente (el programa del lcd esta escrito en codigo vhdl utilizando el ip integration)

 

Respecto a la In Place Element Structure no se puede utilizar en la Spartan 3E, ya que este elemento no se encuenra en la paleta de funciones, en lo referente a la estandarización de datos tampoco se logro reducir el codigo, ya que al aumentar el tamaño de los bits aumenta la memoria en un porcentaje considerable.

 

He logrado  reducir el codigo utilizando lazos for haciendo indexación.. como se muestra un ejemplo en el adjunto...

 

He notado que existe un dsp48e en la paleta de funciones de la fpga en las operaciones matematicas de alto rendimiento, se puede utilizar para la spartan 3e? y como podría configurarlo para implementar el controlador en esta funcion disponible....

De antemano agradezco la ayuda.....

0 kudos
Mensaje 7 de 7
3.422 Vistas