SEP

DGEST
INSTITUTO

TECNOLÓGICO

SNEST

DE

MATAMOROS

DEPARTAMENTO DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA

Diseño Digita...
Practica 7
Objetivo:
Esta práctica implementará un contador de 3 bits descendente/ascendente usando
el AldecHDL y máquinas...
Procedimiento:
Se crea nuevo proyecto en aldec HDL
Se crea un diagrama de estados
Entity : counter
Architecture: counter_a...
Se escribe el código VHDL en el nuevo proyecto
Divisorreloj
libraryieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_u...
Contador3bit
libraryieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
enti...
bcd7seg
libraryieee;
use ieee.std_logic_1164.all;
entity BCD_A_7Seg is
port(BCD: in std_logic_vector (3 downto 0);
seg : o...
Nächste SlideShare
Wird geladen in …5
×

Reporte vhdl7

478 Aufrufe

Veröffentlicht am

practicas realizadas en la clase de vhdl (programacion ) unidad 2 .

Veröffentlicht in: Bildung
0 Kommentare
0 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
478
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
2
Aktionen
Geteilt
0
Downloads
5
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Reporte vhdl7

  1. 1. SEP DGEST INSTITUTO TECNOLÓGICO SNEST DE MATAMOROS DEPARTAMENTO DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA Diseño Digital con VHDL Equipo: Alumno(s): Núm. de control: Mario Arturo Cruz Colunga 11260077 Miguel Angel Fierros Peña 11260081 Hermenegildo Martínez de la Cruz 11260095 Jorge Alejandro Reyes Torres 11260108 H. MATAMOROS, TAM. 16 de Octubre del 2013
  2. 2. Practica 7 Objetivo: Esta práctica implementará un contador de 3 bits descendente/ascendente usando el AldecHDL y máquinas de estado finito. Marco teórico: Un contador ascendente/descendente (up/down) Es aquel capaz de procesar en cualquier dirección a lo largo de una cierta secuencia. Un contador ascendente/descendente, algunas veces también denominado contador bidireccional, puede tener cualquier secuencia de estados especificada. Un contador binario de 3 bits que avanza en modo ascendente a través de la secuencia (0,1,2,3,4,5,6,7) y que luego pueda invertirse para recorrer la secuencia en sentido contrario (7,6,5,4,3,2,1,0) es un ejemplo de un modo de operación secuencial ascendente/descendente. Máquina de estados Se denomina máquina de estados finitos (FSM por finitestate machine) si el conjunto de estados de la máquina es finito, este es el único tipo de máquinas de estados que podemos modelar en un computador en la actualidad; debido a esto se suelen utilizar los términos máquina de estados y máquina de estados finitos de forma intercambiable. Sin embargo un ejemplo de una máquina de estados infinitos sería un computador cuántico esto es debido a que los Qubit que utilizaría este tipo de computadores toma valores continuos, en contraposición los bits toman valores discretos (0 ó 1). Otro buen ejemplo de una máquina de estados infinitos es una Máquina universal de Turing la cual se puede definir teóricamente con una "cinta" o memoria infinita. La representación de una máquina de estados se realiza mediante un Diagrama de estados, sin embargo también es posible utilizar un Diagrama de flujo. Material: Laptop Kit spartan3e Software aldec HDL, xilinx ISE, adept.
  3. 3. Procedimiento: Se crea nuevo proyecto en aldec HDL Se crea un diagrama de estados Entity : counter Architecture: counter_arch C X B clk A Sreg0 clk ce No clock enable X='1' count2 /010/ A<='0';B<='1';C<='0' X='1' count1 /001/ X='0' X='0' A<='0';B<='0';C<='1' count3 /011/ A<='0';B<='1';C<='1' X='1' X='0' X='0' count0 /000/ X='1' X='1' count4 /100/ A<='0';B<='0';C<='0' X='1' X='0' count7 /111/ count5 /101/ X='1' A<='1';B<='1';C<='1' X='1' X='0' X='0' count6 /110/ A<='1';B<='1';C<='0' A<='1';B<='0';C<='0' X='0' A<='1';B<='0';C<='1'
  4. 4. Se escribe el código VHDL en el nuevo proyecto Divisorreloj libraryieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entitydivisorrelojis port( clkin: in std_logic; reset: in std_logic; clkout: outstd_logic ); enddivisorreloj; architectureclkdiv of divisorrelojis signal q: std_logic_vector(23 downto 0); begin process(clkin, reset) begin ifreset='1' then q <= x"000000"; elsifclkin'event and clkin ='1' then q <= q + 1; endif; endprocess; clkout<= q(23); endclkdiv;
  5. 5. Contador3bit libraryieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entitycontadorconrelojis port( CLK50M, UPDOWN, reset: in std_logic; anodo7seg: outstd_logic_vector(3 downto 0); display:outstd_logic_vector(6 downto 0)); endcontadorconreloj; architectureArq_contadorconreloj of contadorconrelojis componentdivisorreloj port( clkin: in std_logic; reset: in std_logic; clkout: outstd_logic); --modifique algunos cosas por mi reloj, si pongo el del pdf modificar CLK, pulsoout endcomponent; componentcounter port( clk, X: in std_logic; A,B,C: outstd_logic); endcomponent; component BCD_A_7Seg port( BCD: in std_logic_vector(3 downto 0); Seg: outstd_logic_vector(6 downto 0)); endcomponent; signal CLK1: std_logic; signal B: std_logic_vector(3 downto 0); begin B(3) <= '0'; anodo7seg <= "1110"; U1: divisorreloj portmap(clkin => CLK50M, reset =>reset, clkout => CLK1); U2: counter portmap(clk => CLK1, X => UPDOWN, A => B(2), B => B(1), C=>B(0)); U3: BCD_A_7Seg portmap (BCD => B, Seg =>display ); endArq_contadorconreloj;
  6. 6. bcd7seg libraryieee; use ieee.std_logic_1164.all; entity BCD_A_7Seg is port(BCD: in std_logic_vector (3 downto 0); seg : outstd_logic_vector(6 downto 0)); end BCD_A_7Seg; architecture BCD_A_7Seg of BCD_A_7Seg is begin DecodificadorProc: process (BCD) -- corre el proceso si la entrada BCD cambia. begin case BCD is -- Catodo valor bajo -- abcdefg when "0000" =>seg<= "0000001"; when "0001" =>seg<= "1001111"; when "0010" =>seg<= "0010010"; when "0011" =>seg<= "0000110"; when "0100" =>seg<= "1001100"; when "0101" =>seg<= "0100100"; when "0110" =>seg<= "0100000"; when "0111" =>seg<= "0001111"; when "1000" =>seg<= "0000000"; when "1001" =>seg<= "0000100"; when "1010" =>seg<= "1110010"; when "1011" =>seg<= "1100110"; when "1100" =>seg<= "1011100"; when "1101" =>seg<= "0110100"; when "1110" =>seg<= "1110000"; whenothers =>seg<= "1111111"; end case; endprocess; end BCD_A_7Seg; --llamaremos seg provisionalmente Observaciones y conclusiones: El programa se realizó con algunas dificultades porque se cambiaron algunos nombres del proyecto original, pero después de detectarse los errores se realizaron las correcciones y terminamos la práctica satisfactoriamente.

×