- Nota 0: Sugerir uso de Note pad ++ & Lenguage VHDL
- Nota 0.1: Sobre la asignación numérica (calificación), de lo entregado de los retos es Perfecta (completa, cumple todo lo requerido a la perfección, a tiempo, documentado haber asistido al encuentro presencial en clase,en la UTP), obtiene 5.0 (cinco punto cero), en caso contrario 1.0 (uno punto cero). Justificación: CUENTAN ( como lo pueden corroborar quienes han recurrido a la guía del profesor , durante todo el transcurso del curso), CON EL APOYO Y GUÍA DEL PROFESOR
Recurso 1:
ARQUITECTURA BCD A 7 SEGMENTOS CON DOT POINT. Dos consideraciones: ánodo común y cátodo común.)
Nota 1: Tener en cuenta como está definida la entidad con la que será utilizada.
Nota 2: Cómo determinar la entidad a partir de la arquitectura
Nota 2b: CADA ESTUDIANTE DEBE ADECUARLO A SU DISEÑO DE ACUERDO A LA ESTRUCTURA DE NOMBRES QUE SE HA INDICADO EN CLASE PARA TRABAJAR
- El NOT convierte a Anodo común. Sin el NOT el código es para Cátodo común
Architecture ar_JC< :::::::::::::::::::: > of JC< :::::::::::::::::::: > is
begin
process (Dato_BCD_in)
begin
CASE (Dato_BCD_in) is
when "0000" => Dato_7Segmentos <= NOT "01111110"; --"gfe_dcba_DP"
when "0001" => Dato_7Segmentos <= NOT "00001100"; --"gfe_dcba_DP"
when "0010" => Dato_7Segmentos <= NOT "10110110"; --"gfe_dcba_DP"
when "0011" => Dato_7Segmentos <= NOT "10011110"; --"gfe_dcba_DP"
when "0100" => Dato_7Segmentos <= NOT "11001100"; --"gfe_dcba_DP"
when "0101" => Dato_7Segmentos <= NOT "11011010"; --"gfe_dcba_DP"
when "0110" => Dato_7Segmentos <= NOT "11111010"; --"gfe_dcba_DP"
when "0111" => Dato_7Segmentos <= NOT "00001110"; --"gfe_dcba_DP"
when "1000" => Dato_7Segmentos <= NOT "11111110"; --"gfe_dcba_DP"
when "1001" => Dato_7Segmentos <= NOT "11011110"; --"gfe_dcba_DP"
when OTHERS => Dato_7Segmentos <= NOT "00000000"; --"gfe_dcba_DP"
end CASE;
end process;
end architecture;
Recurso 2:
Adaptación, como ejercicio académico, del módulo:
-- "4-Bit Unsigned Up Counter With Asynchronous Load From Primary Input VHDL Coding Example"
-- referencia: Pág. 40 en <https://www.xilinx.com/support/documentation/sw_manuals/xilinx14_7/xst.pdf>
----------------------------------------------------------------------------------
-- Company:
-- Engineer: Msc. Juan Carlos Gutiérrez Martínez
-- <GutierrezmartinezJuanca@Gmail.com>
-- Create Date: 22:05:33 04/23/2017
-- Design Name:
-- Module Name: Contador4bitLoadAsincrono - ar_Contador4bitLoadAsincrono
-- Project Name: contador3
-- Ejercicio académico Ing. Juan Carlos Gutiérrez Martínez
-- Target Devices: General
-- Tool versions: ISE Web Pack 14.6, 14.7
-- Description: Cómo utilizar la documentación disponible y adaptarla a
-- diseños propios. Ver Notas al final del encabezado
--
-- Dependencies: NA
--
-- Revision:
-- Revision 0.01 - File Created
-- Additional Comments:
-- Notas:Adaptación, como ejercicio académico, del módulo:
-- "4-Bit Unsigned Up Counter With Asynchronous Load From Primary Input VHDL Coding Example"
-- referencia: Pág. 40 en <https://www.xilinx.com/support/documentation/sw_manuals/xilinx14_7/xst.pdf>
----------------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.std_logic_unsigned.all; -- Para sumar 1 decimal
entity Contador4bitLoadAsincrono is
port(
clk, CargarDato : in std_logic;
DatoEntrada : in std_logic_vector(3 downto 0);
DatoSalida : out std_logic_vector(3 downto 0)
);
end Contador4bitLoadAsincrono;
architecture ar_Contador4bitLoadAsincrono of Contador4bitLoadAsincrono is
signal aux1: std_logic_vector(3 downto 0);
begin
process (clk, CargarDato, DatoEntrada)
begin
if (CargarDato='1') then
aux1 <= DatoEntrada;
elsif (clk'event and clk='1') then -- explicar Rising_edge a los estudiantes
aux1 <= aux1 + 1;
end if;
end process;
DatoSalida <= aux1;
end ar_Contador4bitLoadAsincrono;
Recurso 3:
Nota 3: ENTIDAD Y ARQUITECTURA (CADA ESTUDIANTE DEBE SEGUIR LA ESTRUCTURA PARA LOS NOMBRES, QUE SE HA INDICADO EN EL CURSO)
Nota 4: CADA ESTUDIANTE DEBE DIBUJAR LA ENTIDAD PROPIA DE ACUERDO A LA ESTRUCTURA DE PROYECTOS QUE SE HA INDICADO EN CLASE
Nota 5: CADA ESTUDIANTE DEBE CREAR SU DISEÑO ( No es momento de copiar y pegar; ¡transcribir línea por línea les permite aprender!)
Nota 6: CADA ESTUDIANTE DEBE CREAR CON BASE EN ESTE EJERCICIO, UN CONTADOR DESDE 00:00 HASTA 59:99 (ESTO PODRÍA SIGNIFICAR, por ejemplo, UN MINUTO Y 99 CENTÉSIMAS), PUEDEN CONTAR Y TIENEN EL APOYO Y GUÍA DEL PROFESOR
Nota 7: Pregunta para CADA ESTUDIANTE Y si se desea, en vez de contar de 00 a 59, contar de 00 a 23 ¿qué solución se propone?
Preliminares explicativo, de este tema, en clase viernes 5 de mayo:
- ¿Cual es la diferencia entre contar de 0 a 99 (lo convencional en decimal ) y contar de 00 a 99 (Formato BCD)? Analogía Un ciclo for y dos ciclos for . Luego eso se convierte a forma utilizando condicional If, elsif, else, end
- ¿Por qué signal? (Esto es: Lo que es harware y lo que es software...)
VHDL contador 00a59
-- Contador de "cero cero" a "cinco nueve" en BCD
-- contador en cascada. Incluye reset y Pausa
-- Nota del profesor: Los comentarios los he retirado a propósito para la publicación
-- Se irán adicionando en la medida que se avance en el diseño y explicacion
--**** LIBRERÍAS****
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
--**** ENTIDAD****
entity ContadorBCD_00_59 is
port(Clk_in, Reset : in std_logic;
Unidades_Conteo_de0a9 : out std_logic_vector(3 downto 0);
Decenas_Conteo_de0a5 : out std_logic_vector(3 downto 0);
Pausa : in std_logic
);
end ContadorBCD_00_59;
--**** ARQUITECTURA****
architecture ar_ContadorBCD_00_59 of ContadorBCD_00_59 is
signal aux_Unidades_Conteo_de0a9 : std_logic_vector(3 downto 0);
signal aux_Decenas_Conteo_de0a5 : std_logic_vector(3 downto 0);
begin
process (Clk_in, Reset, Pausa)
begin
if (Reset='1') then
aux_Unidades_Conteo_de0a9 <= "0000"; --"0000" = (0 decimal)
aux_Decenas_Conteo_de0a5 <= "0000";
elsif (Pausa = '1') then
aux_Unidades_Conteo_de0a9 <= aux_Unidades_Conteo_de0a9;
aux_Decenas_Conteo_de0a5 <= aux_Decenas_Conteo_de0a5;
elsif (rising_edge(Clk_in)) then
if (aux_Unidades_Conteo_de0a9 = "1001") then --"1001" = (9 decimal)
aux_Unidades_Conteo_de0a9 <= "0000";
aux_Decenas_Conteo_de0a5 <= aux_Decenas_Conteo_de0a5 + 1;
if (aux_Decenas_Conteo_de0a5 = "0101") then --"0101" = (5 decimal)
aux_Decenas_Conteo_de0a5 <= "0000";
end if;
else
aux_Unidades_Conteo_de0a9 <= (aux_Unidades_Conteo_de0a9 + 1) ;
end if;
end if;
end process;
Unidades_Conteo_de0a9 <= aux_Unidades_Conteo_de0a9;
Decenas_Conteo_de0a5 <= aux_Decenas_Conteo_de0a5;
end ar_ContadorBCD_00_59;
No hay comentarios.:
Publicar un comentario