Ir al contenido principal

Placa de desarrollo FPGA EP1C3T144

Últimamente están apareciendo placas de entrenamiento para FPGAs a un precio bastante interesante, y si miramos al mercado chino, aún más. El otro día me topé con una bastante completa basada en la EP1C3T144 de Altera. Es una FPGA de la primera generación de la familia Cyclone, así que tiene sus limitaciones, pero por el precio, es más que recomendable para empezar a jugar con las FPGA. Si buscas "FPGA Cyclone Altera EP1C3T144 Learning Board" en eBay, la encontrarás sin mayor problema (incluso la venden con el programador USB-Blaster y el cable JTAG).

 

Placa FPGA EP1C3T144

  

Las características de la placa son:Altera Cyclone de la serie serie EP1C3T144.

  • Cuatro teclas.
  • Cuatro displays de 7 segmentos.
  • Seis leds.
  • Dos DIP de seis interruptores.
  • Reloj activo a 50Mhz.
  • Receptor de infrarrojos (VS1838).
  • Sensor de temperatura (DS18B20).
  • Un buzzer.
  • Puerto de comunicaciones serie MAX232.
  • Módulo de reloj DS1302.
  • Interfaz para LCD de 16 pines.
  • Interfaz JTAG y AS.
  • 28 Puertos E/S.

Pero (siempre hay un pero) tiene un pequeño problema: la documentación. La placa viene tal cual, ni un simple esquemita que te permita saber cómo se conectan los elementos de la placa a la FPGA, así que toca trastear un poco. Para probarla he montado un circuito sencillo que me permita al menos probar los botones y los leds: un semisumador de un bit.

Half adder

La tabla de verdad para el semisumador es

Half adder table

Esta FPGA se puede usar con el software Quartus II de Altera, sólo hay que bajar la web edition 11, que es gratuita (versiones posteriores no soportan esta FPGA). Así pues, configuramos el circuito:

circuito sumador

Las correspondencias de los pines de la FPGA con los botones y los leds en esta placa son:

  • PIN_42 - LED7
  • PIN_47 - LED6
  • PIN_49 - LED5
  • PIN_52 - LED4
  • PIN_55 - LED3
  • PIN_57 - LED2
El LED1 está conectado directamente a VCC por lo que siempre está encendido.
  • PIN_60 - Botón 4
  • PIN_61 - Botón 3
  • PIN_62 - Botón 2
  • PIN_67 - Botón 1

Para el semisumador, he conectado las entradas s1 y s2 a los pines de los botones 1(PIN_67) y 2(PIN_62) y las salidas sum y carry a los leds 2(PIN_57) y 3(PIN_55). Esta es la asignación en el pin planner de Quartus.

Conexiones

Tras configurar la FPGA, la primera en la frente. Se iluminan todos los leds de la placa, incluidos los displays de 7 segmentos. Tiene fácil solución, hay que configurar los pins no conectados como triestado.

Unused pins

Ahora ya no se ilumina toda la placa, pero... el circuito no se comporta correctamente. Es más, parece actuar de forma contraria a la que debería. La verdad es que no es nada extraño que los pines de entrada a la FPGA dónde se conectan los botones estén directamente  conectados a VCC a través de una resistencia pull-up, de forma que al pulsarlos conecten el pin a tierra y lo pongan en estado bajo. Justo lo contrario de lo que esperábamos.

Resistencia pulldown

Algo parecido ocurre con los leds, así que para solucionarlo he añadido inversores a las entradas y las salidas del circuito.

Half adder final


Ahora sí, vemos que todo marcha como debería.


Ya os iré contando más cosas de esta placa para tratar de suplir un poco la falta de documentación.

Comentarios

Entradas populares de este blog

Creando firmas de virus para ClamAV

ClamAv es un antivirus opensource y multiplataforma creado por Tomasz Kojm muy utilizado en los servidores de correo Linux. Este antivirus es desarrollado por la comunidad, y su utilidad práctica depende de que su base de datos de firmas sea lo suficientemente grande y actualizado. Para ello es necesario que voluntarios contribuyan activamente aportando firmas. El presente artículo pretende describir de manera sencilla cómo crear firmas de virus para ClamAV y contribuir con ellas a la comunidad.

Manejo de grafos con NetworkX en Python

El aprendizaje computacional es un área de investigación que en los últimos años ha tenido un auge importante, sobre todo gracias al aprendizaje profundo (Deep Learning). Pero no todo son redes neuronales. Paralelamente a estas técnicas, más bien basadas en el aprendizaje de patrones, también hay un auge de otras técnicas, digamos, más basadas en el aprendizaje simbólico. Si echamos la vista algunos años atrás, podemos considerar que quizá, la promesa de la web semántica como gran base de conocimiento ha fracasado, pero no es tan así. Ha ido transmutándose y evolucionando hacia bases de conocimiento basadas en ontologías a partir de las cuales es posible obtener nuevo conocimiento. Es lo que llamamos razonamiento automático y empresas como Google ya lo utilizan para ofrecerte información adicional sobre tus búsquedas. Ellos lo llaman Grafos de Conocimiento o Knowledge Graphs . Gracias a estos grafos de conocimiento, Google puede ofrecerte información adicional sobre tu búsqueda, ad...

Ingeniería inversa de un parche de Microsoft Windows

A estas alturas ya hemos asumido que la seguridad total en Internet es, cuanto menos, un mito. Ningún software está libre de vulnerabilidades, y por mucha auditoría, test de intrusión o pruebas de fuzzing que nos empeñemos en hacer, ninguna metodología puede demostrar sin lugar a dudas que un software es 100% seguro. Ante este panorama, hay dos tendencias mayoritarias a la hora de hacer públicas las vulnerabilidades. Por un lado, están los que piensan que cuando se descubre un fallo ha de hacerse público de forma inmediata. En este escenario, la publicación de una vulnerabilidad es el pistoletazo de salida para una carrera entre el desarrollador para sacar el parche y los "malos" para lograr explotarla. Esta política es conocida como full disclosure . Por otro lado, tenemos a los siguen una política responsible disclosure , que abogan por mantener la vulnerabilidad en secreto hasta la salida del parche por parte del desarrollador. Sin entrar en cuestiones filosóficas que no...