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

Scripts en NMAP

Cuando pensamos en NMAP, pensamos en el escaneo de puertos de un host objetivo al que estamos relizando una prueba de intrusión, pero gracias a las posibilidades que nos ofrecen su Scripting Engine , NMAP es mucho más que eso. Antes de continuar, un aviso: algunas de posibilidades que nos ofrecen los scripts de NMAP son bastante intrusivas, por lo que recomiendo hacerlas contra hosts propios, máquinas virtuales como las de Metasploitable, o contrato de pentesting mediante. Para este artículo voy a usar las máquinas de Metasploitable3 . No voy a entrar en los detalles sobre el uso básico de NMAP, ya que hay miles de tutoriales en Internet que hablan sobre ello. Lo cierto es que NMAP tiene algunas opciones que permiten obtener información extra, además de qué puertos están abiertos y cuales no. Por ejemplo, la opción -sV trata de obtener el servicio concreto, e incluso la versión del servicio que está corriendo en cada puerto. Otro ejemplo es la opción -O, que intenta averiguar el ...

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...

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.