SEMANA 14 RECURSOS

Viernes 05 de mayo de 2017
  • 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 5CADA 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