Вы находитесь на странице: 1из 4

Laboratorio de sistemas Digitales I

LAB - 6

Escuela Tcnica Superior de Ingeniera (ICAI)


Departamento de Electrnica y Automtica

Lab-6: Circuitos aritmticos. Multiplicador de 5 bits.


OBJETIVOS
El propsito de esta prctica es:
-

Comprender el funcionamiento de un multiplicador.


Usar los bucles for generate para generar sentencias en VHDL.

MATERIAL
-

Ordenador personal con Quartus II y ModelSim.


Tarjeta de desarrollo de lgica programable.

DURACIN
1 sesin.

TRABAJO PREVIO E INFORMACIN DE CONSULTA


En esta sesin se harn como ejercicios previos:
- Diseo en VHDL de los bloques necesarios para la prctica.
- Lectura previa de las notas de clase y tutorial de VHDL.
- Lectura del manual de la tarjeta de lgica programable DE1 (disponible en la pgina
web de la asignatura).

TRABAJO POSTERIOR Y ENTREGA DE RESULTADOS


Despus del desarrollo de la prctica se debe entregar un informe de resultados (vase gua
de informe) y el trabajo desarrollado en el laboratorio en soporte informtico que contenga
el proyecto completo. Debe incluir:
1. Descripcin del experimento y los pasos seguidos (tablas de verdad, expresiones
lgicas, K-maps).
2. Esquemas del circuito, cdigo VHDL y su explicacin.
3. Simulaciones y su explicacin.
4. Resultados y conclusiones.

Laboratorio de sistemas Digitales I

LAB - 6

INTRODUCCIN
En esta prctica se va a disear un circuito para multiplicar dos nmeros de 5 bits. Tambin
se usar el bloque BinA7Seg diseado en la prctica 4.
El diagrama de bloques del circuito a disear es el siguiente:

Ilustracin 1: Diagrama de bloques del circuito.

DESARROLLO PRCTICO
Para desarrollar esta prctica, organice en QuartusII un proyecto con el nombre Practica6.
El diagrama general de bloques de la prctica estar compuesto por tres decodificadores de
7 segmentos BinA7Seg y el bloque Multiplicador5Bits, adems de 10 interruptores (SW9SW0) y 3 displays de 7 segmentos (Display0, Display1 y Display2). La Ilustracin 1 nos
muestra este diagrama general de bloques.
A su vez, el multiplicador de 5 bits ha de implantarse a partir del expuesto en clase usando
bucles para generar los productos parciales.
Tenga en cuenta que la salida del multiplicador est formada por un nmero de 10 bits. Este
nmero ha de dividirse en tres grupos de 4 bits para visualizarlo en los displays. Por tanto
ser necesario aadir dos ceros por la izquierda.
Como primer paso, arranque QuartusII y genere un proyecto con el nombre Practica6.
Proceda a continuacin con la descripcin en VHDL del bloque Multiplicador5Bits.vhd.
Copie el archivo BinA7Seg.vhd de la prctica 4 y genere el componente.

Laboratorio de sistemas Digitales I

LAB - 6

A continuacin, abra una hoja nueva de tipo diagrama con el mismo nombre del proyecto
(Practica6) para colocar los componentes y su conexionado definitivo en la placa en el top
level del proyecto, tal como se refleja en la Ilustracin 1.
A continuacin ha de consultar el Manual de la Tarjeta DE1 para identificar el pin de la
FPGA con el correspondiente puerto de entrada y de salida:
Seal
a(0)
a(1)
a(2)
a(3)
a(4)
b(0)
b(1)
b(2)
b(3)
b(4)
d_a(6)
d_a(5)
d_a(4)
d_a(3)
d_a(2)
d_a(1)
d_a(0)
d_b(6)
d_b(5)
d_b(4)
d_b(3)
d_b(2)
d_b(1)
d_b(0)
d_c(6)
d_c(5)
d_c(4)
d_c(3)
d_c(2)
d_c(1)
d_c(0)

Tipo
Entrada
Entrada
Entrada
Entrada
Entrada
Entrada
Entrada
Entrada
Entrada
Entrada
Salida
Salida
Salida
Salida
Salida
Salida
Salida
Salida
Salida
Salida
Salida
Salida
Salida
Salida
Salida
Salida
Salida
Salida
Salida
Salida
Salida

Seven
Seven
Seven
Seven
Seven
Seven
Seven
Seven
Seven
Seven
Seven
Seven
Seven
Seven
Seven
Seven
Seven
Seven
Seven
Seven
Seven

Componente
SW0
SW1
SW2
SW3
SW4
SW5
SW6
SW7
SW8
SW9
Segment Digit
Segment Digit
Segment Digit
Segment Digit
Segment Digit
Segment Digit
Segment Digit
Segment Digit
Segment Digit
Segment Digit
Segment Digit
Segment Digit
Segment Digit
Segment Digit
Segment Digit
Segment Digit
Segment Digit
Segment Digit
Segment Digit
Segment Digit
Segment Digit

Pin FPGA

0[a]
0[b]
0[c]
0[d]
0[e]
0[f]
0[g]
1[a]
1[b]
1[c]
1[d]
1[e]
1[f]
1[g]
2[a]
2[b]
2[c]
2[d]
2[e]
2[f]
2[g]

Tabla 1. Asignacin de patillas de la FPGA a las seales del circuito.


El manual lo tiene en el siguiente enlace:
(http://www.dea.icai.upcomillas.es/daniel/asignaturas/SistDig1_1_ITL/DE1_UserManual_v1018.pdf ).
Realizado este paso proceda a la compilacin del circuito diseado, corrija los errores, si
los hubiera, en el cdigo VHDL y en el conexionado de los bloques. Proceda a
continuacin con la simulacin en ModelSim. En el anexo A se incluye un banco de prueba
para generar los estmulos para la simulacin (vase la prctica 3 si no recuerda cmo
aadir el testbench). Ojo, en el banco de prueba mostrado se ha aadido al generado
automticamente por Quartus el paquete ieee.numeric_std (3 lnea) y el interior del ltimo
PROCESS. Atencin: Para que funcione el testbench del anexo, es necesario incluir la
3

Laboratorio de sistemas Digitales I

LAB - 6

salida del multiplicador P[9..0] como salida del circuito, aunque no es necesario definir sus
nmeros de patillas.
Finalmente realice el volcado a la placa del circuito diseado para su comprobacin por el
profesor.
Ejercicio opcional

Realice una descripcin estructural del nivel superior de la jerarqua, es decir, describa en
VHDL el esquema de la Ilustracin 1. Escriba para ello un archivo denominado
Practica6.vhd e instancie en ella todos los componentes.
Anexo A
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity Multipl5Bits_vhd_tst is
end Multipl5Bits_vhd_tst;
architecture Multipl5Bits_arch of Multipl5Bits_vhd_tst is
-- signals
signal a : std_logic_vector(4 downto 0);
signal b : std_logic_vector(4 downto 0);
signal p : std_logic_vector(9 downto 0);
component Multipl4BitsAN
port (
a : in std_logic_vector(4 downto 0);
b : in std_logic_vector(4 downto 0);
p : out std_logic_vector(9 downto 0)
);
end component;
begin
i1 : Multipl5BitsAN
port map (
-- list connections between master ports and signals
a => a,
b => b,
p => p
);
init : process
-- variable declarations
begin
-- code that executes only once
wait;
end process init;
always : process
-- optional sensitivity list
-- (
)
-- variable declarations
begin
-- code executes for every event on sensitivity list
for i in 0 to 31 loop
a <= std_logic_vector(to_unsigned(i, 5));
for j in 0 to 31 loop
b <= std_logic_vector(to_unsigned(j, 5));
wait for 100 ns;
assert unsigned(p) = i*j
report "fallo en la multiplicacion."
severity failure;
end loop;
end loop;
wait;
end process always;
end Multipl5Bits_arch;

Вам также может понравиться