Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Quinto “B”
Tarea N°3
Integrantes:
Chisaguano Tapia Juan Andrés
Sánchez Morales Francis Joel
Sánchez Villa Juan Manuel
AMBATO - ECUADOR
2020
1. TEMA
Conversor de código mediante instanciación de componentes
2. OBJETIVOS
a. Objetivo General
Diseñar un sistema digital para la conversión de código NBCD a código Gray,
Aiken2421 y exceso 3
b. Objetivos Específicos
➢ Diseñar el conversor de código mediante el uso de instanciaciones de
componentes
➢ Programar el conversor como un componente utilizando el programa VHDL
realizado en la tarea N°2
➢ Comparar el código, los modelos RTL y Technology generados con los
generados en la tarea N°2
3. DESCRIPCIÓN
Diseñar un circuito conversor de código, con las mismas características de operación de la
tarea N°2, utilizando la instanciación por componentes.
4. LISTADO DE MATERIALES Y EQUIPOS
- Softwares de simulación:
ISE Design Suit
b) Diagrama de bloques
c) Tabla de verdad
d) Programación
Top Module
1. library IEEE;
2. use IEEE.STD_LOGIC_1164.ALL;
3. entity conversorcomp is
4. Port( sel : in std_logic_vector(1 downto 0);
5. n: in std_logic_vector (3 downto 0);
6. res: inout std_logic_vector(3 downto 0);
7. r1,r2,r3,r4: inout std_logic);
8. end conversorcomp;
9. architecture Behavioral of conversorcomp is
10. signal res1,res2,res3: std_logic_vector(3 downto 0);
11. begin
12. cg:entity work.codg port map (N=>N,res=>res1);
13. ca:entity work.coda port map (N=>N,res=>res2);
14. ce:entity work.code port map (N=>N,res=>res3);
15. process(sel,res1,res2,res3)
16. begin
17. if sel = "00" then res <= "0000"; end if;
18. if Sel = "01" then res <= res1; end if;
19. if Sel = "10" then res <= res2; end if;
20. if Sel = "11" then res <= res3; end if;
21. end process;
22. R1 <= res(0);
23. R2 <= res(1);
24. R3 <= res(2);
25. R4 <= res(3);
26. end Behavioral;
Test Bench
1. LIBRARY ieee;
2. USE ieee.std_logic_1164.ALL;
3.
4. ENTITY main IS
5. END main;
6.
7. ARCHITECTURE behavior OF main IS
8.
9. COMPONENT conversorcomp
10. PORT(
11. sel : IN std_logic_vector(1 downto 0);
12. n : IN std_logic_vector(3 downto 0);
13. res : INOUT std_logic_vector(3 downto 0);
14. r1: out STD_LOGIC;
15. r2: out STD_LOGIC;
16. r3: out STD_LOGIC;
17. r4: out STD_LOGIC
18. );
19. END COMPONENT;
20.
21.
22. --Inputs
23. signal sel : std_logic_vector(1 downto 0) := (others => '0');
24. signal n : std_logic_vector(3 downto 0) := (others => '0');
25.
26. --Outputs
27. signal res : std_logic_vector(3 downto 0);
28. signal R1 : std_logic;
29. signal R2 : std_logic;
30. signal R3 : std_logic;
31. signal R4 : std_logic;
32.
33. BEGIN
34.
35. -- Instantiate the Unit Under Test (UUT)
36. uut: conversorcomp PORT MAP (
37. sel => sel,
38. n => n,
39. res => res,
40. r1 => r1,
41. r2 => r2,
42. r3 => r3,
43. r4 => r4 );
44.
45. -- Stimulus process
46. stim_proc1: process
47. begin
48. N(0)<='0'; wait for 100 ns;
49. N(0)<='1'; wait for 100 ns;
50. end process;
51.
52. stim_proc2: process
53. begin
54. N(1)<='0'; wait for 200 ns;
55. N(1)<='1'; wait for 200 ns;
56. end process;
57.
58. stim_proc3: process
59. begin
60. N(2)<='0';
61. wait for 400 ns;
62. N(2)<='1';
63. wait for 400 ns;
64. end process;
65.
66. stim_proc4: process
67. begin
68. N(3)<='0'; wait for 800 ns;
69. N(3)<='1'; wait for 800 ns;
70. end process;
71.
72. stim_proc5: process
73. begin
74. sel(0)<='0'; wait for 1600 ns;
75. sel(0)<='1'; wait for 1600 ns;
76. end process;
77.
78. stim_proc6: process
79. begin
80. sel(1)<='0'; wait for 3200 ns;
81. sel(1)<='1'; wait for 3200 ns;
82. end process;
83.
84. END;
e) RTL Schematic
En la ilustración 4 podemos observar cómo actúa el conversor de código con el selector 00,
siendo su salida resultante 0000 para cada caso.
En la ilustración 7 podemos observar cómo actúa el conversor de código con el selector 00,
siendo su salida resultante la tabla de verdad código exceso 3, para los números 10 a 15 su
salida será 0000
6. RESULTADOS
Se implemento el conversor de código mediante el uso de las tablas de verdad y las sentencias
with select mediante el uso de instanciación de componentes, haciendo uso de proyectos
anteriores, el diseño se ha basado únicamente en la reutilización de código y la correcta
creación de señales para sus respectivas conexiones internas.
7. RECOMENDACIONES
Como pudimos observar, el uso de componentes es muy útil en el diseño de VHDL,
ya que nos permite reciclar anteriores proyectos y acoplarlos a nuevos diseños que
queramos realizar, se recomienda programar los componentes mas utilizados en el
diseño electrónico pues con una base de componentes utiles, a futuro nos
enfocaríamos solo en la correcta interconexión de sistemas esto nos permite
optimizar nuestro tiempo y nuestro código.
8. CONCLUSIONES