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.
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 |
| 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 |
El esquema del sumador completo es el siguiente.
Y su tabla de verdad es
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;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.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;
library IEEE; use IEEE.STD_LOGIC_1164.ALL;Los leds del display son activos a nivel bajo, así que ponemos un 0 cuando queremos encender un led y un 1 para apagarlo.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;
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
Publicar un comentario