Paso 5 - Componente Práctico - Sesión 1 (Parte infividual) Presentado por: Francisco Javier Chávez Flórez Código: 1080262056 Grupo 243004_33 Curso ELECTRONICA DIGITAL Tutor: Mario Ricardo Arbulu Universidad Nacional Abierta y a Distancia UNAD Escuela de Ciencias Básicas, Tecnología e Ingeniería -ECBTI Noviembre 2017 Actividades: Realizar el diseño a nivel de diagrama de bloques y la implementación en VHDL de los siguientes circuitos digitales. Ejercicios a resolver . 1. Diseñe un contador ascendente módulo N , donde N corresponde a los dos últimos dígitos de su Cédula de Ciudadanía. (Si es mayor que 31 se usan 8 bit) El diseño debe incluir: a. Un diagrama de bloques. Numero de cedula: (10802620 56 56)) Dos últimos dígitos: 56 Como 2 − 1 es el maximo de cuenta, donde “n” es igual al numero de bit, para este caso: (Si es mayor que 31 y menor que 63, para lo cual se usan 8 bit), Podemos usar 2 − 1 = 6 = 2*2*2*2*2*2 2*2*2*2*2*2= = 64 -pero para este ejemplo emplearemos 2 −1 b. 2 −1 = 28 − 1 = 2*2*2*2*2*2*2*2 2*2*2*2*2*2*2*2= = 256 Un pantallazo con la descripción en VHDL Scrip en software vivado: Resumen de la descripcion en vhdl ----------------------------------------------------------------------------------- Company: UNAD -- Engineer: FRANCISCO CHAVEZ FLOREZ -- Create Date: 12.11.2017 16:34:29 ---------------------------------------------------------------------------------library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; use IEEE.std_logic_unsigned.all; entity ContadorAsN is Port ( clk : in STD_LOGIC; reset : in STD_LOGIC; salida : out STD_LOGIC_VECTOR (7 downto 0)); end ContadorAsN; architecture Behavioral of ContadorAsN is signal D, Q : STD_LOGIC_VECTOR (7 downto 0); begin process (clk) begin if clk'event and clk='1' then if reset='1' then Q <= "00000000"; else Q <= D; end if; end if; end process; D <= Q+1; salida <= Q; end Behavioral; c. Un pantallazo con la simulación, en el cual se evidencie el correcto funcionamiento del diseño. Scrip en software vivado: Resumen Simulacion library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity SIMUcontador is -- Port ( ); end SIMUcontador; architecture Behavioral of SIMUcontador is component ContadorAsN port( clk : in std_logic; reset : in std_logic; salida : in std_logic_vector(7 downto 0); ); end component; --seccion1 -- Señales de las entradas signal clk : std_logic := '0'; signal reset : std_logic := '0'; -- Señales de salidas signal salida : std_logic_vector(7 downto 0); -- Constante de tiempo para la simulacion constant PERIOD : time := 10 ns; begin process begin clk <= '0'; wait for PERIOD/2; clk <= '1'; wait for PERIOD/2; end process; UO: ContadorAsN Port map ( clk => clk, reset => reset1, salida => salida ); process begin --- Estímulos de la simulación wait for 100 ns; reset <= '1'; wait for 100 ns; reset <= '0'; wait for 100 ns; wait; end process; end Behavioral; --seccion2 2. Diseñe un contador descendente módulo M , donde M es su edad. El diseño debe incluir: a. Un diagrama de bloques. M= Edad: 25 Como 2 − 1 es el maximo de cuenta, donde “n” es igual al numero de bit, para este caso: (Si es mayor que 15 y menor que 31, para lo cual se usan 5 bit) 2 b. −1 = 5 2 −1 = 2*2*2*2*2= 32 Un pantallazo con la descripción en VHDL Scrip en software vivado: Resumen de la descripcion en vhdl ----------------------------------------------------------------------------------- Company: UNAD -- Engineer: FRANCISCO GHAVEZ -- Create Date: 12.11.2017 09:05:16 ---------------------------------------------------------------------------------library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; use IEEE.std_logic_unsigned.all; entity CONTADOR is Port ( CLK : in STD_LOGIC; RESET : in STD_LOGIC; SALIDA : out STD_LOGIC_VECTOR (5 downto 0) ); end CONTADOR; architecture Behavioral of CONTADOR is --- aqui creamos las dos señales Q y D que son del mismo tamaño que la salida de 4 bits signal D, Q : STD_LOGIC_VECTOR (5 downto 0); begin process (clk) begin if clk'event and clk='1' then if reset='1' then Q <= "000000"; else Q <= D; end if; end if; end process; D <= "000000" when Q= 25 else Q-1; salida <= Q; end Behavioral; c. Un pantallazo con la simulación, en el cual se evidencie el correcto funcionamiento del diseño. Scrip en software vivado: Resumen Simulacion library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity CONTADORedad is -- Port ( ); end CONTADORedad; architecture Behavioral of CONTADORedad is component CONTADOR port(clk : in std_logic; reset : in std_logic; salida : in std_logic_vector(5 downto 0); ); end component; -- Señales de las entradas signal clk : std_logic := '0'; signal reset : std_logic := '0'; -- Señales de salidas signal salida : std_logic_vector(5 downto 0); -- Constante de tiempo para la simulacion constant PERIOD : time := 10 ns; begin process begin clk <= '0'; wait for PERIOD/2; clk <= '1'; wait for PERIOD/2; end process; UO: CONTADOR Port map ( clk => clk, reset => reset1, salida => salida ); process begin --- Estímulos de la simulación wait for 100 ns; reset <= '1'; wait for 100 ns; reset <= '0'; wait for 100 ns; wait; end process; end Behavioral; --seccion1 --seccion2 3. Diseñe un contador ascendente/descendente módulo M , donde M es su edad. El diseño debe incluir: a. Un diagrama de bloques. M= Edad: 25 Como 2 − 1 es el maximo de cuenta, donde “n” es igual al numero de bit, para este caso: (Si es mayor que 15 y menor que 31, para lo cual se usan 5 bit) 2 b. −1 = 5 2 −1 = 2*2*2*2*2= 32 Un pantallazo con la descripción en VHDL Scrip en software vivado: Resumen de la descripcion en vhdl ----------------------------------------------------------------------------------- Company: UNAD -- Engineer: FRANCISCO JAVIER CHAVEZ FLOREZ -- Create Date: 12.11.2017 19:29:10 ---------------------------------------------------------------------------------library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.std_logic_unsigned.all; entity contadorASCydesc is Port ( reset : in STD_LOGIC; clk : in STD_LOGIC; sentido : in STD_LOGIC := '0'; salida : out STD_LOGIC_VECTOR (5 downto 0)); end contadorASCydesc; architecture Behavioral of contadorASCydesc is signal counter : STD_LOGIC_VECTOR (5 downto 0) := "000000"; signal count : integer; signal clk1 : STD_LOGIC; constant max_count: integer := 25; begin process (clk1, clk) begin if rising_edge(clk) then count <= count + 1; if count = max_count then clk1 <= not clk1; count <= 0; end if; end if; end process; process(reset,clk) begin if reset='1' then counter <= "0000"; elsif clk1'event and clk1 = '1' then if sentido = '1' then counter <= counter + 1; else counter <= counter - 1; end if; salida <= counter; end if; end process; end Behavioral; c. Un pantallazo con la simulación, en el cual se evidencie el correcto funcionamiento del diseño. Scrip en software vivado: Resumen Simulacion ibrary IEEE; use IEEE.STD_LOGIC_1164.ALL; entity simASCydesc is -- Port ( ); end simASCydesc; architecture Behavioral of simASCydesc is Port ( reset : in STD_LOGIC; clk : in STD_LOGIC; sentido : in STD_LOGIC := '0'; salida : out STD_LOGIC_VECTOR (5 downto 0)); end component; -- Señales de las entradas signal clk : std_logic := '0'; signal reset : std_logic := '0'; -- Señales de salidas signal salida : std_logic_vector(5 downto 0); -- Constante de tiempo para la simulacion constant PERIOD : time := 10 ns; --seccion1 begin process begin clk <= '0'; wait for PERIOD/2; clk <= '1'; wait for PERIOD/2; end process; UO: CONTADOR Port map ( clk => clk, reset => reset1, salida => salida ); process begin --- Estímulos de la simulación wait for 100 ns; reset <= '1'; wait for 100 ns; reset <= '0'; wait for 100 ns; wait; end process; end Behavioral; --seccion2 IMPORTANTE: Todas las implementaciones en VHDL se deben hacer utilizando el soft ware Vivado. La implementación se debe evidenciar en el informe con el pantallazo de la descripción de VHDL y con el pantallazo del RTL. El Pantallazo debe seguir la indicaciones dadas en el video de la actividad de reconocimiento, de lo contrario el aporte no se considerará válido. El archivo se deberá entregar en formato pdf con el nombre: Paso5_Nombre_Apellido. La estructura del informe colaborativo debe ser la siguiente: o o Portada con los datos del estudiante. Contenido del informe: Diagramas de bloques con los diseños. Pantallazos de las implementaciones en VHDL. Simulación de cada uno de los componentes Referencias bibliograficas Sitios web: 1. Muñoz, J. (2012). Introducción a los Sistemas Digitales: Un enfoque usando Lenguajes de Descripción de Hardware. (Capítulos 7, 9 y 10, pp. 135-149,177-208). Madrid. Recuperado de https://openlibra.com/es/book/introduccion-a-los-sistemasdigitales 2. Fajardo, C. (2016, diciembre 13), Contadores Digitales. [Archivo de video]. Recuperado de https://youtu.be/erxuOIX9Lmo 3. Fajardo, C. (2017, julio 12), Diseño de un contador ascendente en VHDL. [Archivo de video]. Recuperado de https://youtu.be/4SlLC3VoJSM (Archivo de simulación Con señal CLK) 4. Fajardo, C. (2016, noviembre 4), Diseño de un contador ascendente/descendente (Diagrama de Bloques). [Archivo de video]. Recuperado de https://youtu.be/Uw3stcZUKcA 5. Fajardo, C. (2013, febrero 23), Circuitos Secuenciales: Process, IF, CASE. [Archivo de video]. Recuperado de https://youtu.be/U3tXM5NTSrs 6. Fajardo, C. (2012, diciembre 21), Diseño de Registros y Contadores [Archivo de video]. Recuperado de https://youtu.be/vTmBuR-JgvM 7. OVI – Unidad 3: 8. En este video se hace el diseño de una memoria en VHDL. El video busca orientar al estudiante en el diseño de memorias para ser utilizadas dentro de un diseño de hardware. 9. Fajardo, C. (2013, agosto 13), Diseño de memorias en VHDL. [Archivo de video]. Recuperado de https://youtu.be/kNKgrOYxC_o Otros sitios web 10. http://centros.edu.xunta.es/iesmanuelchamosolamas/electricidade/fotos/contadore s.htm 11. http://hflorezf-es.blogspot.com.co/2011/10/contadores-sincronos.html 12. Video Contador binario ascendente RincónIngenieril . Publicado el 10 dic. 2016 13. Video Diseño de un contador ascendente en VHDL Carlos Augusto Fajardo Ariza .Publicado el 17 jul. 2017