Programando el Hardware (II): Arduino y el Hardware Abierto

Hace un par de semanas introdujimos el mundo de la programación Hardware, con las FPGA y los ASIC. Como ya dije, esas herramientas están muy enfocadas al desarrollo hardware puro, en otras palabras, se programan en bajo nivel y se crean nuevos dispositivos hardware específicos, siendo las FPGA un sistema para pruebas. Para un uso más “mundano” o “de andar por casa” existen otras placas, como las llamadas Arduino.

Arduino es una plataforma abierta y sencilla, tanto a nivel de programación como de hardware, enfocada a hacer pruebas y ejemplos simples, permitiendo crear lo que se desea en poco (muy poco) tiempo respecto a las FPGA. Su mayor inconveniente es que por tanto no están diseñadas para hacer diseños robustos hardware y en caso de querer profundizar en la placa más de lo debido la programación puede convertirse en algo más complejo que las anteriores.

(more…)

Read More

Programando el Hardware (I): El mundo de las FPGA

A día de hoy la mayoría de la gente sabe que un programa se crea a partir de código, que no es más que un fichero escrito con miles de instrucciones a hacer (operaciones matemáticas, movimientos de datos, y conexiones con periféricos), pero ¿y el hardware? ¿Sigue existiendo la filosofía de 4 personas rodeadas de chips soldando como locos como en los sesenta?

Actualmente al igual que el software y los programas han evolucionado también lo ha hecho la manera de diseñar el hardware, la parte física, y ésta evolución ha sido cambiando los soldadores por código. En otras palabras, actualmente el hardware se programa. Por extraño que parezca ya no se comenten los riesgos de actuar “in situ” (imaginad una mala unión en una placa que costase millones) así que para ello lo que se utiliza son las llamadas FPGA, entre otras herramientas. Éstas son capaces de emular un periférico hardware, normalmente a menor velocidad o potencia, pero con una actuación semejante a un chip real.

Durante los próximos artículos del tema trataré distintas de estas herramientas, unas más enfocadas al propio diseño hardware y otras a la robótica o ejemplos más directos al usuario final.

(more…)

Read More