Ir al contenido principal

Placa de desarrollo FPGA EP1C3T144 (II)

Seguimos indagando en las posibilidades de esta placa de desarrollo, y en esta ocasión vamos a ver cómo están conectados el cuádruple display de siete segmentos (bueno, 8 segmentos con el punto decimal) y los dos bancos de switches.

FPGA EP1C3T144

El display es un 3461B (de ánodo común). Al igual que un 7 segmentos normal, este display tiene las 8 entradas para cada uno de los leds, y además, otras cuatro para seleccionar el led a iluminar en cada momento (refrescando los displays consecutivamente pueden usarse los cuatro a la vez). Estos son los pines de la FPGA asociados a cada pin del display.

Pin display Pin FPGA
Segmento A (pin 14) PIN 74
Segmento B (pin 16) PIN 77
Segmento C (pin 13) PIN 78
Segmento D (pin 3) PIN 79
Segmento E (pin 5) PIN 75
Segmento F (pin 11) PIN 82
Segmento G (pin 15) PIN 73
Punto decimal (pin 7) PIN 76
Dígito 1 (pin 1) PIN 83
Dígito 2 (pin 2) PIN 84
Dígito 3 (pin 6) PIN 85
Dígito 4 (pin 8) PIN 91
Las cuatro señales de selección del display las gobiernan los 4 transistores Q1 a Q4 que hay situados en la placa justo debajo del display. Ahora vamos con los dos bancos de switches. Cada uno de ellos tiene 6 switches, es decir, disponemos un total de 12. Estos son los pines a los que están conectados los switches.
Banco switch Pin FPGA
1 1 PIN 40
1 2 PIN 39
1 3 PIN 37
1 4 PIN 38
1 5 PIN 36
1 6 PIN 35
2 1 PIN 54
2 2 PIN 53
2 3 PIN 51
2 4 PIN 50
2 5 PIN 48
2 6 PIN 41
Con esta información vamos a poner en marcha un circuito que nos permita usar el display y los switches. En el pasado artículo usamos un semisumador. Ahora vamos a hacer un circuito sumador completo de dos bits. Para introducir los dos bits vamos a usar el segundo banco de switches, en concreto, los switches 1 y 2 para introducir el primer sumando y los switches 5 y 6 para introducir el segundo sumando. El resultado se mostrará en decimal en el display (sólo vamos a usar uno de los cuatro displays).

El esquema del sumador completo es el siguiente.

Full adder

Y su tabla de verdad es

Tabla verdad full adder

En esta ocasión, en lugar de trazar el esquemático vamos a implementar el sumador de un bit en VHDL.

library ieee ;
use ieee.std_logic_1164.all;

entity fulladder is port ( Cin, x, y : in std_logic; s, Cout : out std_logic ); end fulladder;

architecture rtl of fulladder is begin s <= x xor y xor Cin; Cout <= (x and y) or (Cin and x) OR (Cin and y); end rtl;

Como vamos a sumar dos bits necesitamos dos sumadores de un bit. También necesitamos un circuito decodificador que traduzca la salida de los sumadores a las señales necesaria para mostrar el resultado en el display. Este circuito también vamos a especificarlo en VHDL.
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity decoder7s is port ( bcd : in std_logic_vector(2 downto 0); seg7 : out std_logic_vector(7 downto 0); dsel : out std_logic_vector(3 downto 0)); end decoder7s;

architecture beh of decoder7s is begin dsel <= "1110"; -- seleccionar display 1 with bcd select seg7 <= "11000000" when "000", -- '0' "11111001" when "001", -- '1' "10100100" when "010", -- '2' "10110000" when "011", -- '3' "10011001" when "100", -- '4' "10010010" when "101", -- '5' "10000010" when "110", -- '6' "11111000" when "111", -- '7' "11111111" when others; end beh;

Los leds del display son activos a nivel bajo, así que ponemos un 0 cuando queremos encender un led y un 1 para apagarlo.

Finalmente, usamos el sumador y el decodificador que acabamos de crear para montar todo el circuito.

Las entradas desde los switches van negadas por la misma razón que ya se explicó en el artículo anterior. Finalmente, y siguiendo las tablas anteriores, asignamos los pines a la FPGA con el pin planner.

El resultado puede verse en el siguiente vídeo.

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.