Академический Документы
Профессиональный Документы
Культура Документы
VHDL
M.I BENJAMN O. HERNNDEZ GARCIA
C.R.O.D.E CELAYA
Rev. 3
CR-PP-PO-05-05
CONTENIDO
PRESENTACIN
OBJETIVO DEL CURSO
1.- INTRODUCCIN
2.- TARJETA DE DESARROLLO NEXYS 2/BASYS 2
3.- ORGANIZACIN DE VHDL
4.- AMBIENTE DE TRABAJO XILINX ISE DESIGN
SUITE 12.1
5.- DISEO LGICO COMBINACIONAL EN VHDL
6.- DISEO LGICO SECUENCIAL EN VHDL
7.- VHDL ESTRUCTURAL
8.- SIMULACIN DE DISEOS
9.- MQUINAS DE ESTADOS EN VHDL
Rev. 3
CR-PP-PO-05-05
OBJETIVO
Rev. 3
CR-PP-PO-05-05
1.- INTRODUCCIN
OBJETIVO DE LA UNIDAD
El
participante
identificar
las
caractersticas
principales
de
los
dispositivos lgicos programables y del
lenguaje VHDL mediante la presentacin de
dichos temas de acuerdo al plan de sesin.
Rev. 3
CR-PP-PO-05-05
1.- INTRODUCCIN
Rev. 3
CR-PP-PO-05-05
1.- INTRODUCCIN
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
3. Organizacin de VHDL
Objetivo de la unidad
El participante reconocer la organizacin bsica
de VHDL identificando las partes principales de
dicho lenguaje de acuerdo al plan de sesin.
Al Servicio del Sistema
Nacional de Educacin
Superior Tecnolgica
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
3.2 Entidad
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
3.2.2 Modos
Rev. 3
CR-PP-PO-05-05
3.2.2 Modos
Modo in. Se refiere a las seales de entrada a la
entidad. Este slo es unidireccional y nada ms
permite el flujo de datos hacia dentro de la entidad.
Modo out. Indica las seales de salida de la entidad.
Rev. 3
CR-PP-PO-05-05
3.2.2 Modos
Modo inout. Permite declarar a un puerto de forma
bidireccional es decir, de entrada/salida; adems permite
la retroalimentacin de seales dentro o fuera de la entidad.
Modo buffer. Permite hacer retroalimentaciones internas dentro
de la entidad, pero a diferencia del modo inout, el puerto
declarado se comporta como una terminal de salida.
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
3.2.5 Identificadores
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
entity sumador is
port (A,B: in bit_vector (3 downto 0);
Cin: in bit;
Cout: out bit;
SUMA: out bit_vector(3 downto
0));
end sumador;
Al Servicio del Sistema
Nacional de Educacin
Superior Tecnolgica
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
library ieee;
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
3.3 Paquetes
Rev. 3
CR-PP-PO-05-05
3.3 Paquetes
use nombre_librera.nombre_paquete.all;
por ejemplo:
use IEEE.STD_LOGIC_1164.ALL;
Rev. 3
CR-PP-PO-05-05
3.3 Paquetes
El paquete use
IEEE.STD_LOGIC_ARITH.ALL; define
funciones y operadores aritmticos, como
igual (=), mayor que (>), menor que (<),
entre otros.
Rev. 3
CR-PP-PO-05-05
3.4 Arquitecturas
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Arrancar
el
programa
Xilinx
Project
Navigator,
que
se
encuentra
en
InicioTodos los ProgramasXilinx ISE
12.1Project Navigator.
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Haga clic en
finish, de esta
manera el proyecto
esta creado, En la
ventana sources se
observa el icono
del nuevo proyecto
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Location contiene
la ruta del proyecto
actual por defecto.
Verifique que la
casilla Add to
project este
seleccionada, para
adicionar el archivo
fuente al proyecto
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Se observa el
cuadro resumen
del nuevo
archivo fuente
del proyecto que
se est
realizando. Ahora
damos clic en
Finish
Rev. 3
CR-PP-PO-05-05
El archivo
fuente contiene
el par entidad /
arquitectura
visualizados en
el espacio de
trabajo
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
A continuacin se
guarda el fichero
y se comprueba
si se ha tenido
algn error de
sintaxis haciendo
clic en Synthesize
XSTCheck
Syntax. Esto est
en la subventana
de Processes
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Para lo cual se
selecciona
Project>New
Source y se
escoge
Implementatio
n Constraints
File, se le da
un nombre y
se da clic en
Next.
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Posteriormente se
conecta la tarjeta
Nexys2 a la
computadora mediante
el cable USB y ponemos
el interruptor de
alimentacin en la
posicin ON.
Transcurrido un tiempo,
en la ventana del Adept
aparecer que se ha
conectado una tarjeta
Rev. 3
CR-PP-PO-05-05
A continuacin se da
clic en el botn
browse
correspondiente a la
FPGA, y buscamos el
fichero con extensin
bit que hemos
generado en nuestro
proyecto. Aparecer
una advertencia
(warning).A este
mensaje contestamos
S.
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Ejercicio complementario
Una funcin depende de 4 variables D,C,B,A,
que representan un nmero binario, donde A
es la variable menos significativa. La funcin
F adopta el valor de uno si el nmero
formado por las cuatro variables es inferior o
igual a 7 y superior a 3. En caso contrario la
funcin F es cero.
Obtenga la tabla de la verdad de la funcin F
e implemente el diseo correspondiente en
VHDL, utilice estructuras del tipo when-else y
operadores lgicos.
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
El valor de la
salida c depende
de las seales de
entrada
seleccionadas
a(0) y a(1), de
acuerdo con la
tabla de verdad
correspondiente.
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
A
0
0
0
0
1
1
1
1
Rev. 3
CR-PP-PO-05-05
ENTRADAS
B
0
0
1
1
0
0
1
1
C
0
1
0
1
0
1
0
1
SALIDA
X
1
0
1
0
1
0
1
1
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Ejercicio complementario
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Los registros de tres estados (buffers triestado) tienen diversas aplicaciones, ya sea
como salidas de sistemas (modo buffer) o
como parte integral de un circuito. En VHDL
estos dispositivos son definidos a travs de
los valores que manejan (0,1 y alta
impedancia 'Z').
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
5.4 Multiplexores
Rev. 3
CR-PP-PO-05-05
5.5 Sumadores
Rev. 3
CR-PP-PO-05-05
5.5 Sumadores
Rev. 3
CR-PP-PO-05-05
5.5 Sumador
library ieee;
use ieee.std_logic_1164.all ;
entity m_sum is port (
A,B: in std_logic;
SUMA, Cout: out std_logic) ;
end m_sum;
architecture behavioralof m_sum is
begin
SUMA <= A XOR B;
Cout <= A AND B;
end behavioral;
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Ejercicio complementario 2
Dada la siguiente tabla, halle las ecuaciones de X,Y y
Z de la forma suma de productos e implemntelas
en la FPGA.
A
Rev. 3
CR-PP-PO-05-05
Ejercicio complementario 3
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
library ieee;
use ieee.std_logic_1164.all ;
entity deco is port (
A: in std_logic_vector(3 downto 0);
anodo: out std_logic_vector (3 downto 0);
d: out std_logic_vector(6 downto 0));
end deco;
architecture behavioral of deco is
begin
anodo<=1110;
process (A) begin
case A is
when "0000" => d <= "0000001";
when "0001" => d <= "1001111";
when "0010" => d <= "0010010";
when "0011" => d <= "0000110";
when "0100" => d <= "1001100";
when "0101" => d <= "0100100";
when "0110" => d <= "0100000";
when "0111" => d <= "0001110";
when "1000" => d <= "0000000";
when "1001" => d <= "0000100";
when others = > d < = "1111111";
end case;
end process;
end behavioral;
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
6.2 Flip-Flops
Rev. 3
CR-PP-PO-05-05
Es importante
recordar el
significado de la
notacin Q y Q(t+i);
Q = estado presente
o actual
Qt+1 = estado
futuro o siguiente
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
6.4 Flip-Flop SR
Rev. 3
CR-PP-PO-05-05
6.4 Flip-Flop SR
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity Flip_Flop_SR is
Port ( S : in STD_LOGIC;
R : in STD_LOGIC;
clk : in STD_LOGIC;
Q : out STD_LOGIC;
Qn : out STD_LOGIC);
end Flip_Flop_SR;
Rev. 3
CR-PP-PO-05-05
architecture Behavioral of
Flip_Flop_SR is
begin
process (clk, S, R)
begin
if (clk'event and clk = '1') then
if S = '0' and R = '1' then
Q <= '0';
Qn <= '1';
elsif (S = '1' and R = '0') then
Q <= '1';
Qn <= '0';
elsif (S = '0' and R = '0') then
else
Q <= '-';
Qn <= '-';
end if;
end if;
end process;
end Behavioral;
Rev. 3
CR-PP-PO-05-05
6.5 Registros
Rev. 3
CR-PP-PO-05-05
6.5 Registros
library ieee;
use ieee.std_logic_1164.all;
entity reg is port (
D: in std_logic_vector(0 downto 7);
clk: in std_logic;
Q: out std_logic_vector(0 downto 7));
end reg ;
architecture behavioral of reg is
begin
process (clk) begin
if (clk'event and clk='1') then
Q <= D;
end if;
end process;
end behavioral;
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
6.6 Contadores
Rev. 3
CR-PP-PO-05-05
6.6 Contadores
library ieee;
use ieee.std_logic_1164.all ;
use ieee.std_logic_unsigned.all;
entity cont4 is port (
clk: in std_logic;
Q: out std_logic_vector(3 downto 0));
end cont4;
architecture behavioral of cont4 is
begin
process (clk)
variable Qaux: std_logic_vector (3 downto 0) := 0000;
begin
If (clk'event and clk = '1') then
Qaux := Qaux + 1;
end if;
Q <= Qaux;
end process ;
end behavioral;
Rev. 3
CR-PP-PO-05-05
6.6 Contadores
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
6.6 Contadores
Rev. 3
CR-PP-PO-05-05
6.6 Contadores
library ieee;
use ieee.std_logic_1164.all ;
use ieee.std_logic_unsigned.all;
entity contador is port (
clk: in std_logic;
UP:in std_logic;
Q: out std_logic_vector(3 downto 0));
end contador;
architecture behavioral of contador is
begin
process (UP, clk)
variable Qaux: std_logic_vector(3 downto 0) := 0000;
begin
if (clk'event and clk = '1')then
if (UP = '0') then
Qaux := Qaux + 1;
else
Qaux := Qaux - 1;
end if ;
end if ;
Q <= Qaux;
end process ;
end behavioral;
Rev. 3
CR-PP-PO-05-05
7. VHDL ESTRUCTURAL
Objetivo de la unidad
El participante aplicar el diseo estructural
en VHDL mediante ejercicios prcticos
utilizando la tarjeta de desarrollo Nexys 2
de manera adecuada.
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Esfcilmodificaralgnbloquedeldiseo,
mientrasquesedejaelrestoigual.
Permitelareutilizacinyaquepuedequeun
bloquedeundiseolonecesitemospara otro.
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
2 use ieee.std_logic_1164.all;
3 entity comp is port (
4 a,b: in std_logic;
5 c: out std_logic);
6 end comp;
7 architecture estructural of comp is
8 component xnor
9 port (a0,b0: in std_logic;
10 salida: out std_logic);
11 end component;
12 component and
13
port (a1,b1: in std_logic;
14
salida: out std_logic);
15 end component;
16 signal x0,x1: std_logic;
17
18 begin
19 U0: xnor port map (a,b,x0);
20 Ul: xnor port map (a,b,x1);
21 U2: and port map (x0,x1, c);
Al Servicio del
Sistema
22
end estructural;
Nacional de Educacin
Superior Tecnolgica
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Ejercicio 7.1
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
entity Div2 is
PORT (Clk50Mhz: IN STD_LOGIC;
Rev. 3
CR-PP-PO-05-05
process (Clk50Mhz)
begin
if
else count := 0;
end if;
if
end if;
end if;
end process;
end Behavioral;
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
8. SIMULACIN DE DISEOS
Objetivo de la unidad
El participante comprender la manera de
realizar simulaciones de los diseos
realizados en VHDL mediante el uso
adecuado del software ModelSim.
Rev. 3
CR-PP-PO-05-05
8. SIMULACIN DE DISEOS
library ieee;
use ieee.std_logic_1164.all;
entity Circuito is
port (a,b,c: in std_logic;
y: out std_logic);
end Circuito;
Rev. 3
CR-PP-PO-05-05
8. SIMULACIN DE DISEOS
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity Circuito_test is
end Circuito_test;
architecture tst of Circuito_test is
component Circuito
Port (a : in std_logic;
b : in std_logic;
c : in std_logic;
y : out std_logic);
end component;
signal a,b,c,y: std_logic;
begin
uut: Circuito port map (a=>a, b=>b, c=>c,
y=>y);
a <='0', '1' after 200ns, '0' after 400ns;
b <='1', '0' after 300ns, '1' after 600ns;
c <='1', '0' after 350ns, '1' after 700ns;
end tst;
Rev. 3
CR-PP-PO-05-05
8. SIMULACIN DE DISEOS
Rev. 3
CR-PP-PO-05-05
8. SIMULACIN DE DISEOS
Edit>Preferences
Rev. 3
CR-PP-PO-05-05
8. SIMULACIN DE DISEOS
Cambio a Simulation
Rev. 3
CR-PP-PO-05-05
8. SIMULACIN DE DISEOS
Rev. 3
CR-PP-PO-05-05
8. SIMULACIN DE DISEOS
Rev. 3
CR-PP-PO-05-05
8. SIMULACIN DE DISEOS
Rev. 3
CR-PP-PO-05-05
8. SIMULACIN DE DISEOS
Rev. 3
CR-PP-PO-05-05
8. SIMULACIN DE DISEOS
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Donde:
x=> Vector de entrada.
Z=> Vector de salida.
y=> Vector de estado actual.
Y=> Vector de estado prximo.
Rev. 3
CR-PP-PO-05-05
entity maquina is
port( x: in
std_logic_vector (1
downto 0);
clk: in std_logic;
reset: in std_logic;
z: out std_logic);
end maquina;
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
begin
case actual is
when alfa=> if x(1)=0
then proximo <= beta;
else proximo <= alfa;
end if;
when beta=> if x(0)=0
then proximo <= delta;
else proximo <= gama;
end if;
when gama=> proximo <= eta;
when delta=> prximo <= eta;
when eta=> prximo <= alfa;
end case;
end process;
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05
Rev. 3
CR-PP-PO-05-05