Está en la página 1de 14

INTRODUCCIN

VHDL (VHSIC, Hardware Description Language) es un lenguaje de


descripcin hardware
Capaz de abarcar todo el ciclo de desarrollo de un sistema digital, desde
los requisitos y
Necesidades iniciales hasta la simulacin y validacin del prototipo
hardware de dicho
Sistema.
Los lenguajes de descripcin hardware se gestaron durante los aos
setenta, momento
en el que se produjo un enorme desarrollo electrnico y tecnolgico que
provoc un cambio radical en los mtodos de diseo de sistemas y de
fabricacin de sistemas digitales que existan en esa poca.
MARCO TEORICO
Un lenguaje HDL para descripcin de hardware (HDL: Hardware
Description Language) es una herramienta formal para describir el
comportamiento y la estructura de sistemas (usualmente electrnicos
pero a veces tambin de otros tipos) usando un esquema textual
Usando HDL el diseador puede describir la operacin del sistema con
diferentes niveles de abstraccin (o estilos):
describiendo QU es lo que el sistema debe hacer
(Comportamiento)
describiendo CMO hacerlo (algortmico)
detallando CON QU hacerlo (flujo de datos y estructural).
Caractersticas de un HDL
Describe actividades que ocurren en forma simultnea
(CONCURRENCIA).
Permite describir mdulos con acciones que sern evaluadas en forma
secuencial (procedural), donde todo el mdulo ser visto como una
accin concurrente ms
Posibilita la construccin de una estructura jerrquica, donde es
posible combinar descripciones estructurales y de flujo de datos con
descripciones de comportamiento (BEHAVIOR)
Permite modelizar el concepto de tiempo, fundamental para la
descripcin de sistemas electrnicos. [1]

Que ventajas da el uso de HDLs?


Como herramienta de especificacin es posible su uso para la de
especificacin general de un sistema, tanto a nivel de hardware como de
software
permite describir el hardware, tanto a nivel de sistemas y subsistemas,
como de componentes
Como herramienta de diseo, permite una Mejor documentacin y
facilidad de reso, Posibilidad de parametrizacin, portabilidad de un
diseo y una mayor Independencia tecnolgica
Como herramienta de simulacin presenta una mayor disponibilidad
de modelos de distintos componentes de fabricantes variados en HDLs
normalizados y mayor Facilidad para la generacin de vectores de test
complejos. [2]

DISEO
Problema
1.

Construya un circuito con la capacidad de comparar dos vectores


de 8 bits, con un pin de seleccin que determine si la comparacin es con
signo (sel=0) o sin signo (sel=1). El circuito debe tener tres salidas,
correspondientes a, a>b, a=b, a<b. Si se cumple la condicin la salida ser
1, si no alta impedancia.

2. Usando solo cdigo concurrente disear un sumador/restador de 8 bits


utilizando operaciones con o sin signo. Con una entrada de 2 bits que
determinara que tipo de operacin se usara.

Pasos para la creacin de un diseo en vhdl con ISE Design Suite 14.7

Creamos un nuevo proyecto asignndole el nombre deseado.


En nuestro proyecto creamos un nuevo diseo especificando las
caractersticas y la placa de desarrollo, en nuestro caso utilizamos
la spartan 3E starter board.
Agregamos una nueva fuente de tipo VHDL MODULE,
especificando el respectivo nombre de archivo y su ubicacin.
Especificamos las caractersticas de los puertos, como son las
entradas, las salidas y si son de tipo bit_vector o std_logic_vector
debemos especificar su tamao y el bit ms significativo.
Luego procedemos a codificar nuestro circuito, declarando las
libreras correspondientes, dependiendo de nuestro diseo.
Despus de finalizado nuestro cdigo VHDL nos vamos a la
ventana de propiedades de diseo y le damos en synthesize-XST
para verificar la sintaxis de nuestro diseo y ver si hay errores.
Despus de sintetizar nuestro diseo y comprobar que no tiene
errores, pasamos a crear un nuevo archivo de simulacin haciendo
click derecho en nuestro archivo y add new source (aadir nueva
fuente), seleccionando la opcin VHDL-test bench.
Si nuestro archivo es concurrente combinacional necesariamente
debemos borrar en el archivo generado de simulacin todas las
lneas que contengan el comando clock (reloj)
Luego ubicado sobre el archivo de simulacin le damos en check
syntax para verificar el cdigo del archivo de simulacin.
Una vez verificado que nuestro cdigo de simulacin es funcional y
no tiene errores, procedemos a implementar la simulacin
haciendo doble click en simulate nombre model (en nombre
debe aparecer e nombre de nuestro archivo de simulacin).
Teniendo nuestra ventana de simulacin debemos dar click
derecho sobre la variable o seal que queremos cambiar de estado
y le damos click en forc constant para asignarle un nuevo valor

Habiendo especificado el valor de las seales o variables,


procedemos a darle click en RUN y verificamos si nuestro cdigo
es realmente funcional de acuerdo al diseo propuesto.
Luego procedemos a la implementacin y programacin de
nuestra fpga, para nuestro caso la spartan 3E.

RESULTADOS

CDIGO EJERCICIO 1
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use
IEEE.STD_LOGIC_SIGNED.ALL;
-- Uncomment the following
library declaration if using
-- arithmetic functions with
Signed or Unsigned values
--use IEEE.NUMERIC_STD.ALL;
-- Uncomment the following
library declaration if instantiating
-- any Xilinx primitives in this
code.
--library UNISIM;
--use UNISIM.VComponents.all;
entity ejercicio1 is
Port ( a : in
STD_LOGIC_VECTOR (7 downto
0);
b : in STD_LOGIC_VECTOR
(7 downto 0);
sel : in STD_LOGIC;
x1 : out STD_LOGIC;

x2 : out STD_LOGIC;
x3 : out STD_LOGIC);
end ejercicio1;
architecture Behavioral of
ejercicio1 is
signal q,w: signed (7 downto 0);
signal l,k: unsigned (7 downto 0);
begin
q<= signed(a);
w<= signed(b);
l<= unsigned(a);
k<= unsigned(b);
x1<='1' when (sel='0' and q>w)
else
'1' when (sel='1' and l>k) else
'Z';
x2<='1' when (sel='0' and q=w)
else
'1' when (sel='1' and l=k) else
'Z';
x3<='1' when (sel='0' and q<w)
else
'1' when (sel='1' and l<k) else
'Z';
end Behavioral;

-- any Xilinx primitives in this


code.
--library UNISIM;
--use UNISIM.VComponents.all;
entity ejercicio2 is
Port ( a : in
STD_LOGIC_VECTOR (7 downto
0);
b : in STD_LOGIC_VECTOR
(7 downto 0);
sel : in
STD_LOGIC_VECTOR (1 downto
0);
sum : out
STD_LOGIC_VECTOR (7 downto
0));
end ejercicio2;
architecture Behavioral of
ejercicio2 is
signal x,y,k,l:
STD_LOGIC_VECTOR (7 downto
0);
signal q,w: unsigned (7 downto
0);
begin
CDIGO EJERCICIO 2
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use
IEEE.STD_LOGIC_SIGNED.ALL;
-- Uncomment the following
library declaration if using
-- arithmetic functions with
Signed or Unsigned values
--use IEEE.NUMERIC_STD.ALL;
-- Uncomment the following
library declaration if instantiating

k<="10000000";
l<="00000001";
x<=not(a)+l;
y<=not(b)+l;
q<=unsigned(a);
w<=unsigned(b);
sum<=q+w when sel="00" else
q-w when sel="10" else
x-y+k when (sel="01" and
a(7)='1') else
x-y+k when (sel="01" and
b(7)='1') else
a+b when sel="01" else
x+y+k when (sel="11" and
a(7)='1') else

x+y+k when (sel="11" and


b(7)='1') else
a-b;
end Behavioral;

CDIGO E IMPLEMENTACIN DE EJERCICIOS ANTERIORES.


Divisor de frecuencia
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
entity DIVFREC is
Port ( CLK : in STD_LOGIC;
Y : out STD_LOGIC;
Z : out STD_LOGIC);
end DIVFREC;
architecture Behavioral of DIVFREC is
begin
Z<=CLK;
PROCESS(CLK)
variable I : integer:=0;
variable K : integer:=0;
begin
if(CLK'EVENT AND CLK='1') THEN
I:=I+1;
END IF;
IF (I> 10 AND I< 90) THEN
Y<='1';

ELSE
Y<='0';
END IF;
IF (I=160) THEN
I:=0;
END IF;
END PROCESS;
end Behavioral;
IMPLEMENTACIN
NET "CLK" CLOCK_DEDICATED_ROUTE = FALSE;
NET "CLK" LOC = "C9";
NET "Y" LOC = "A6";
NET "Z" LOC = "B6";

Cdigo compuerta XOR


library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

begin
s <= x XOR y;

-- Uncomment the following


library declaration if using
-- arithmetic functions with
Signed or Unsigned values
--use IEEE.NUMERIC_STD.ALL;

end Behavioral;

-- Uncomment the following


library declaration if instantiating
-- any Xilinx primitives in this
code.
--library UNISIM;
--use UNISIM.VComponents.all;

IMPLEMENTACIN
NET "X" LOC ="N17";
NET "Y" LOC ="H18";
NET "S" LOC ="F9";

entity archivo1 is
Port ( x,y : in STD_LOGIC;
s : out STD_LOGIC);
end archivo1;
Cdigo compuerta AND
architecture Behavioral of
archivo1 is

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

-- arithmetic functions with


Signed or Unsigned values
--use IEEE.NUMERIC_STD.ALL;
-- Uncomment the following
library declaration if instantiating
-- any Xilinx primitives in this
code.
--library UNISIM;
--use UNISIM.VComponents.all;
entity COMPUERTA is
Port ( A : in STD_LOGIC;
B : in STD_LOGIC;
SAL : out STD_LOGIC);
end COMPUERTA;

-- arithmetic functions with


Signed or Unsigned values
--use IEEE.NUMERIC_STD.ALL;
-- Uncomment the following
library declaration if instantiating
-- any Xilinx primitives in this
code.
--library UNISIM;
--use UNISIM.VComponents.all;
entity MULTIPLEXOR_W is
Port ( A,B,C,D : in STD_LOGIC;
S : out STD_LOGIC;
SEL : in
STD_LOGIC_VECTOR (1 downto
0));
end MULTIPLEXOR_W;

architecture Behavioral of
COMPUERTA is
begin

architecture Harley of
MULTIPLEXOR_W is

SAL<= A AND B;

begin
S <= A WHEN SEL="00" ELSE
B WHEN SEL="01" ELSE

end Behavioral;

C WHEN SEL="10" ELSE


IMPLEMENTACIN
NET "A" LOC ="N17";
NET "B" LOC ="H18";
NET "SAL" LOC ="F9";

Cdigo multiplexor
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
-- Uncomment the following
library declaration if using

D;
end Harley;
IMPLEMENTACIN
NET
NET
NET
NET
NET
NET
NET

"A" LOC="N17";
"B" LOC="H18";
"C" LOC="L14";
"D" LOC="L13";
"S" LOC="F9";
"SEL<0>" LOC="D18";
"SEL<1>" LOC="K17";

SIMULACIN EJERCICIO 1

SIMULACIN EJERCICIO 2

IMPLEMENTACIN CDIGOS
1. COMPUERTA AND

2. COMPUERTA XOR

3. MULTIPLEXOR

4. DIVISOR DE FRECUENCIA 40 PULSOS

DIVISOR DE FRECUENCIA 80 PULSOS

CONCLUSIONES

Solo es posible llamar una de las 2 libreras signed o unsigned


debido a que si una es Llamada ya es imposible llamar la otra.
El uso de seales es muy importante puesto que estas pueden ser
usadas para simplificar y reducir el cdigo usado.
el uso de las conversiones puede ser muy til a la hora de
simplificar algunos clculos pero hay que tener en muy en cuenta
no involucrar varios tipos de datos en una misma ecuacin
El manejo de cdigo vhdl es fcil de implementar y a su vez, nos
ayuda a reducir toda la circuitera y llevar la electrnica a un nivel
superior ya que ste nos permite la elaboracin de nuevos
componentes para aplicaciones ms precisas.

REFERENCIAS BIBLIOGRAFICAS.

circuit desing with VHDL volnei a pedroni.


[1] pgina web (http://arantxa.ii.uam.es/~jgonzale/fco/curso0708/download/seminarios-vhdl.pdf)
[2] pgina web (http://oretano.iele-ab.uclm.es/~miniesta/intro
%20hdl.pdf)

También podría gustarte