Está en la página 1de 11

Centro de Ciencias Básicas

Dpto. de Sistemas Electrónicos


Ingeniería en Electrónica

Lenguaje de Descripción de Hardware

Practica 8: “Multiplicador de Arreglo natural”

Prof.: Cristian Jael Mejía Aguirre

Alumnos:
Diana Santillana Fernández
Gustavo Adolfo Ornelas Ríos
Alexis Mejia Luna

7º Semestre
Introducción:
Lo que se planea llevar a cabo en esta práctica es un multiplicador de 8 bits, pero para ello
tenemos que adquirir antes el conocimiento de lo que es un multiplicador.
En pocas palabras y de una manera resumida el multiplicador es un componente
fundamental de algoritmos donde el producto de un numero en este caso A y de “n” bits
por otro número B de “m” bits generan un producto de salida S de” m + n” bits, Además de
que hay muchos y diferentes tipos de multiplicadores, pero en este caso veremos
específicamente el multiplicador de arreglo natural

Ilustración 1

En esta imagen es un algoritmo de un multiplicador de 4 bits, pero la única diferencia


conuno de 8 bits es que se tendrán más bloques.

Desarrollo:
Para la elaboración del código de esta práctica se tuvo la ayuda del profesor en turno,
demanera que nos explicó el funcionamiento de un multiplicador, para así dar paso al
código.
Lo primero que se usó fueron las librerías que se muestran en el código, esto para facilitar
el código en VHDL a gran escala ya que con ellas podemos realizar operaciones
matemáticas a nuestras entradas de 8 bits. En cambio, para el código en Verilog se
tomaron diferentes clases durante la semana para poder realizar el código, esto con ayuda
del docente.
Código:
library IEEE;

use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity mul is

Port(

A, B: in std_logic_vector(7 downto 0);

Cini: in std_logic;

S: out std_logic_vector(15 downto 0);

Couti: out std_logic

);

end mul;

architecture Behavioral of mul is

Signal c : std_logic_vector(2 downto 0);

begin

S <= A*B;

end Behavioral;

CONS

#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++#

# This file is a .ucf for Mimas (http://www.numato.com) #

# To use it in your project : #

# * Remove or comment the lines corresponding to unused pins in the project.#

# * Rename the used signals according to the your project. #


# * For more detail refer to the User Guide available at http://numato.com/products/fpga-
boards/ #

#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++#

#************************************************************************
*************************************************************************
*#

# UCF for Mimas


#

#************************************************************************
*************************************************************************
*#

#NET "CLK" LOC = P126;

#TIMESPEC TS_CLK = PERIOD "CLK" 100 MHz HIGH 50%;

#########################################################################
##########################################################################

# LEDs
#

#########################################################################
##########################################################################

NET "S[0]" LOC = P119 | IOSTANDARD = LVCMOS33 | DRIVE = 8 |SLEW =


FAST | PULLUP;

NET "S[1]" LOC = P118 | IOSTANDARD = LVCMOS33 | DRIVE = 8 |SLEW =


FAST | PULLUP;

NET "S[2]" LOC = P117 | IOSTANDARD = LVCMOS33 | DRIVE = 8 |SLEW =


FAST | PULLUP;

NET "S[3]" LOC = P116 | IOSTANDARD = LVCMOS33 | DRIVE = 8 |SLEW =


FAST | PULLUP;
NET "S[4]" LOC = P115 | IOSTANDARD = LVCMOS33 | DRIVE = 8 |SLEW =
FAST | PULLUP;

NET "S[5]" LOC = P114 | IOSTANDARD = LVCMOS33 | DRIVE = 8 |SLEW =


FAST | PULLUP;

NET "S[6]" LOC = P112 | IOSTANDARD = LVCMOS33 | DRIVE = 8 |SLEW =


FAST | PULLUP;

NET "S[7]" LOC = P111 | IOSTANDARD = LVCMOS33 | DRIVE = 8 |SLEW =


FAST | PULLUP;

#########################################################################
##########################################################################

# Push Button Switches


#

#########################################################################
##########################################################################

#NET "SW0" LOC = P124 | IOSTANDARD = LVCMOS33 | DRIVE = 8 |SLEW =


FAST | PULLUP;

#NET "SW1" LOC = P123 | IOSTANDARD = LVCMOS33 | DRIVE = 8 |SLEW =


FAST | PULLUP;

#NET "SW2" LOC = P121 | IOSTANDARD = LVCMOS33 | DRIVE = 8 |SLEW =


FAST | PULLUP;

#NET "SW3" LOC = P120 | IOSTANDARD = LVCMOS33 | DRIVE = 8 |SLEW =


FAST | PULLUP;

#########################################################################
##########################################################################

# HEADER P1
#

#########################################################################
##########################################################################
NET "A[0]" LOC = P35 | IOSTANDARD = LVCMOS33 | DRIVE = 8 |
SLEW = FAST ; # IO_L1P_3 Sch = GPIO-P18

NET "A[1]" LOC = P34 | IOSTANDARD = LVCMOS33 | DRIVE = 8 |SLEW =


FAST ; # IO_L1N_VREF_3 Sch = GPIO-N18

NET "A[2]" LOC = P33 | IOSTANDARD = LVCMOS33 | DRIVE = 8 |SLEW =


FAST ; # IO_L2P_3 Sch = GPIO-P17

NET "A[3]" LOC = P32 | IOSTANDARD = LVCMOS33 | DRIVE = 8 |SLEW =


FAST ; # IO_L2N_3 Sch = GPIO-N17

#NET "IO_P1[7]" LOC = P30 | IOSTANDARD = LVCMOS33 | DRIVE = 8


| SLEW = FAST ; # IO_L36P_3 Sch = GPIO-P16

NET "B[0]" LOC = P29 | IOSTANDARD = LVCMOS33 | DRIVE = 8 |SLEW =


FAST ; # IO_L36N_3 Sch = GPIO-N16

NET "B[1]" LOC = P27 | IOSTANDARD = LVCMOS33 | DRIVE = 8 |SLEW =


FAST ; # IO_L37P_3 Sch = GPIO-P15

NET "B[2]" LOC = P26 | IOSTANDARD = LVCMOS33 | DRIVE = 8 |SLEW =


FAST ; # IO_L37N_3 Sch = GPIO-N15

NET "B[3]" LOC = P24 | IOSTANDARD = LVCMOS33 | DRIVE = 8 |SLEW =


FAST ; # IO_L41P_GCLK27_3 Sch = GPIO-P14

#NET "IO_P1[12]" LOC = P23 | IOSTANDARD = LVCMOS33 | DRIVE =8 | SLEW


= FAST ; # IO_L41N_GCLK26_3 Sch = GPIO-N14

#NET "IO_P1[13]" LOC = P22 | IOSTANDARD = LVCMOS33 | DRIVE =8 | SLEW


= FAST ; # IO_L42P_GCLK25_TRDY2_3 Sch = GPIO-P13

#NET "IO_P1[14]" LOC = P21 | IOSTANDARD = LVCMOS33 | DRIVE =8 | SLEW


= FAST ; # IO_L42N_GCLK24_3 Sch = GPIO-N13

#NET "IO_P1[15]" LOC = P17 | IOSTANDARD = LVCMOS33 | DRIVE =8 | SLEW


= FAST ; # IO_L43P_GCLK23_3 Sch = GPIO-P12

#NET "IO_P1[16]" LOC = P16 | IOSTANDARD = LVCMOS33 | DRIVE =8 | SLEW


= FAST ; # IO_L43N_GCLK22_IRDY2_3 Sch = GPIO-N12

#NET "IO_P1[17]" LOC = P15 | IOSTANDARD = LVCMOS33 | DRIVE =8 | SLEW


= FAST ; # IO_L44P_GCLK21_3 Sch = GPIO-P11

#NET "IO_P1[18]" LOC = P14 | IOSTANDARD = LVCMOS33 | DRIVE =8 | SLEW


= FAST ; # IO_L44N_GCLK20_3 Sch = GPIO-N11

#NET "IO_P1[19]" LOC = P12 | IOSTANDARD = LVCMOS33 | DRIVE =8 | SLEW


= FAST ; # IO_L49P_3 Sch = GPIO-P10
#NET "IO_P1[20]" LOC = P11 | IOSTANDARD = LVCMOS33 | DRIVE =
8 | SLEW = FAST ; # IO_L49N_3 Sch = GPIO-N10

#NET "IO_P1[21]" LOC = P10 | IOSTANDARD = LVCMOS33 | DRIVE =8 | SLEW


= FAST ; # IO_L50P_3 Sch = GPIO-P9

#NET "IO_P1[22]" LOC = P9 | IOSTANDARD = LVCMOS33 | DRIVE = 8


| SLEW = FAST ; # IO_L50N_3 Sch = GPIO-N9

#NET "IO_P1[23]" LOC = P8 | IOSTANDARD = LVCMOS33 | DRIVE = 8


| SLEW = FAST ; # IO_L51P_3 Sch = GPIO-P8

#NET "IO_P1[24]" LOC = P7 | IOSTANDARD = LVCMOS33 | DRIVE = 8


| SLEW = FAST ; # IO_L51N_3 Sch = GPIO-N8

#NET "IO_P1[25]" LOC = P6 | IOSTANDARD = LVCMOS33 | DRIVE = 8


| SLEW = FAST ; # IO_L52P_3 Sch = GPIO-P7

#NET "IO_P1[26]" LOC = P5 | IOSTANDARD = LVCMOS33 | DRIVE = 8


| SLEW = FAST ; # IO_L52N_3 Sch = GPIO-N7

#NET "IO_P1[27]" LOC = P2 | IOSTANDARD = LVCMOS33 | DRIVE = 8


| SLEW = FAST ; # IO_L83P_3 Sch = GPIO-P6

#NET "IO_P1[28]" LOC = P1 | IOSTANDARD = LVCMOS33 | DRIVE =8 | SLEW


= FAST ; # IO_L83N_VREF_3 Sch = GPIO-N6

#NET "IO_P1[29]" LOC = P142 | IOSTANDARD = LVCMOS33 | DRIVE =8 | SLEW


= FAST ; # IO_L2P_0 Sch = GPIO-P5

#NET "IO_P1[30]" LOC = P141 | IOSTANDARD = LVCMOS33 | DRIVE =8 | SLEW


= FAST ; # IO_L2N_0 Sch = GPIO-N5

#NET "IO_P1[31]" LOC = P140 | IOSTANDARD = LVCMOS33 | DRIVE =8 | SLEW


= FAST ; # IO_L3P_0 Sch = GPIO-P4

#NET "IO_P1[32]" LOC = P139 | IOSTANDARD = LVCMOS33 | DRIVE =8 | SLEW


= FAST ; # IO_L3N_0 Sch = GPIO-N4

#NET "IO_P1[33]" LOC = P138 | IOSTANDARD = LVCMOS33 | DRIVE =8 | SLEW


= FAST ; # IO_L4P_0 Sch = GPIO-P3

#NET "IO_P1[34]" LOC = P137 | IOSTANDARD = LVCMOS33 | DRIVE =8 | SLEW


= FAST ; # IO_L4N_0 Sch = GPIO-N3

#NET "IO_P1[35]" LOC = P134 | IOSTANDARD = LVCMOS33 | DRIVE =8 | SLEW


= FAST ; # IO_L34P_GCLK19_0 Sch = GPIO-P2
#NET "IO_P1[36]" LOC = P133 | IOSTANDARD = LVCMOS33 | DRIVE =8 | SLEW
= FAST ; # IO_L34N_GCLK18_0 Sch = GPIO-N2

#NET "IO_P1[37]" LOC = P132 | IOSTANDARD = LVCMOS33 | DRIVE =8 | SLEW


= FAST ; # IO_L35P_GCLK17_0 Sch = GPIO-P1

#NET "IO_P1[38]" LOC = P131 | IOSTANDARD = LVCMOS33 | DRIVE =8 | SLEW


= FAST ; # IO_L35N_GCLK16_0 Sch = GPIO-N1

#########################################################################
##########################################################################

# HEADER P2
#

#########################################################################
##########################################################################

#NET "IO_P2[3]" LOC = P43 | IOSTANDARD = LVCMOS33 | DRIVE = 8


| SLEW = FAST ; # IO_L62N_D6_2 Sch = GPIO-N23

#NET "IO_P2[4]" LOC = P44 | IOSTANDARD = LVCMOS33 | DRIVE = 8


| SLEW = FAST ; # IO_L62P_D5_2 Sch = GPIO-P23

#NET "IO_P2[5]" LOC = P45 | IOSTANDARD = LVCMOS33 | DRIVE = 8


| SLEW = FAST ; # IO_L49N_D4_2 Sch = GPIO-N25

#NET "IO_P2[6]" LOC = P46 | IOSTANDARD = LVCMOS33 | DRIVE = 8


| SLEW = FAST ; # IO_L49P_D3_2 Sch = GPIO-P25

#NET "IO_P2[7]" LOC = P47 | IOSTANDARD = LVCMOS33 | DRIVE = 8


| SLEW = FAST ; # IO_L48N_RDWR_B_VREF_2 Sch = GPIO-N24

#NET "IO_P2[8]" LOC = P48 | IOSTANDARD = LVCMOS33 | DRIVE = 8


| SLEW = FAST ; # IO_L48P_D7_2 Sch = GPIO-P24

#NET "IO_P2[9]" LOC = P50 | IOSTANDARD = LVCMOS33 | DRIVE = 8


| SLEW = FAST ; # IO_L31N_GCLK30_D15_2 Sch = GPIO-N22

#NET "IO_P2[10]" LOC = P51 | IOSTANDARD = LVCMOS33 | DRIVE =8 | SLEW


= FAST ; # IO_L31P_GCLK31_D14_2 Sch = GPIO-P22

#NET "IO_P2[11]" LOC = P55 | IOSTANDARD = LVCMOS33 | DRIVE =8 | SLEW


= FAST ; # IO_L30N_GCLK0_USERCCLK_2 Sch = GPIO-N19

#NET "IO_P2[12]" LOC = P56 | IOSTANDARD = LVCMOS33 | DRIVE =8 | SLEW


= FAST ; # IO_L30P_GCLK1_D13_2 Sch = GPIO-P19
#NET "IO_P2[13]" LOC = P74 | IOSTANDARD = LVCMOS33 | DRIVE =8 | SLEW
= FAST ; # IO_L74N_DOUT_BUSY_1 Sch = GPIO-N26

#NET "IO_P2[14]" LOC = P75 | IOSTANDARD = LVCMOS33 | DRIVE =8 | SLEW


= FAST ; # IO_L74P_AWAKE_1 Sch = GPIO-P26

#NET "IO_P2[15]" LOC = P78 | IOSTANDARD = LVCMOS33 | DRIVE =8 | SLEW


= FAST ; # IO_L47N_1 Sch = GPIO-N27

#NET "IO_P2[16]" LOC = P79 | IOSTANDARD = LVCMOS33 | DRIVE =8 | SLEW


= FAST ; # IO_L47P_1 Sch = GPIO-P27

#NET "IO_P2[17]" LOC = P80 | IOSTANDARD = LVCMOS33 | DRIVE =8 | SLEW


= FAST ; # IO_L46N_1 Sch = GPIO-N28

#NET "IO_P2[18]" LOC = P81 | IOSTANDARD = LVCMOS33 | DRIVE =8 | SLEW


= FAST ; # IO_L46P_1 Sch = GPIO-P28

#NET "IO_P2[21]" LOC = P82 | IOSTANDARD = LVCMOS33 | DRIVE =8 | SLEW


= FAST ; # IO_L45N_1 Sch = GPIO-N29

#NET "IO_P2[22]" LOC = P83 | IOSTANDARD = LVCMOS33 | DRIVE =8 | SLEW


= FAST ; # IO_L45P_1 Sch = GPIO-P29

#NET "IO_P2[23]" LOC = P84 | IOSTANDARD = LVCMOS33 | DRIVE =8 | SLEW


= FAST ; # IO_L43N_GCLK4_1 Sch = GPIO-N30

#NET "IO_P2[24]" LOC = P85 | IOSTANDARD = LVCMOS33 | DRIVE =8 | SLEW


= FAST ; # IO_L43P_GCLK5_1 Sch = GPIO-P30

#NET "IO_P2[25]" LOC = P87 | IOSTANDARD = LVCMOS33 | DRIVE =


8 | SLEW = FAST ; # IO_L42N_GCLK6_TRDY1_1 Sch = GPIO-N31

#NET "IO_P2[26]" LOC = P88 | IOSTANDARD = LVCMOS33 | DRIVE =8 | SLEW


= FAST ; # IO_L42P_GCLK7_1 Sch = GPIO-P31

#NET "IO_P2[27]" LOC = P92 | IOSTANDARD = LVCMOS33 | DRIVE =8 | SLEW


= FAST ; # IO_L41N_GCLK8_1 Sch = GPIO-N32

#NET "IO_P2[28]" LOC = P93 | IOSTANDARD = LVCMOS33 | DRIVE =8 | SLEW


= FAST ; # IO_L41P_GCLK9_IRDY1_1 Sch = GPIO-P32

#NET "IO_P2[29]" LOC = P94 | IOSTANDARD = LVCMOS33 | DRIVE =8 | SLEW


= FAST ; # IO_L40N_GCLK10_1 Sch = GPIO-N33

#NET "IO_P2[30]" LOC = P95 | IOSTANDARD = LVCMOS33 | DRIVE =8 | SLEW


= FAST ; # IO_L40P_GCLK11_1 Sch = GPIO-P33
#NET "IO_P2[31]" LOC = P97 | IOSTANDARD = LVCMOS33 | DRIVE =
8 | SLEW = FAST ; # IO_L34N_1 Sch = GPIO-N34

#NET "IO_P2[32]" LOC = P98 | IOSTANDARD = LVCMOS33 | DRIVE =


8 | SLEW = FAST ; # IO_L34P_1 Sch = GPIO-P34

#NET "IO_P2[33]" LOC = P99 | IOSTANDARD = LVCMOS33 | DRIVE =


8 | SLEW = FAST ; # IO_L33N_1 Sch = GPIO-N35

#NET "IO_P2[34]" LOC = P100 | IOSTANDARD = LVCMOS33 | DRIVE =


8 | SLEW = FAST ; # IO_L33P_1 Sch = GPIO-P35

#NET "IO_P2[35]" LOC = P101 | IOSTANDARD = LVCMOS33 | DRIVE =


8 | SLEW = FAST ; # IO_L32N_1 Sch = GPIO-N20

#NET "IO_P2[36]" LOC = P102 | IOSTANDARD = LVCMOS33 | DRIVE =


8 | SLEW = FAST ; # IO_L32P_1 Sch = GPIO-P20

#NET "IO_P2[37]" LOC = P104 | IOSTANDARD = LVCMOS33 | DRIVE =


8 | SLEW = FAST ; # IO_L1N_VREF_1 Sch = GPIO-N21

#NET "IO_P2[38]" LOC = P105 | IOSTANDARD = LVCMOS33 | DRIVE =


8 | SLEW = FAST ; # IO_L1P_1 Sch = GPIO-P21

#########################################################################
##########################################################################

Conclusión:
Para la realización de esta práctica trabajamos en conjunto en la redacción del código
tanto como para realizar este reporte para poder lograr el objetivo el cual se completó y
gracias a conocimientos previos y los aprendidos en clase sobre cómo funcionan los
multiplicadores pudimos completar la práctica sin problemas, esperamos poder aprender
aún más de esto para poder mejorar nuestras habilidades y mejorar aún más como
ingenieros.

También podría gustarte