Está en la página 1de 7

UNIVERSIDAD TÉCNICA DE AMBATO

FACULTAD DE INGENIERÍA EN SISTEMAS,


ELECTRÓNICA E INDUSTRIAL

CARRERA DE INGENIERÍA EN TELECOMUNICACIONES

Sistemas Embebidos VLSI

Quinto “B”

Tarea N°3

Conversor de código mediante instanciación de componentes

Integrantes:
Chisaguano Tapia Juan Andrés
Sánchez Morales Francis Joel
Sánchez Villa Juan Manuel

Fecha de Envió: 7 de enero de 2021


Fecha de entrega: 24 de enero de 2021
Docente: Ing. Edgar Patricio Córdova Córdova

OCTUBRE 2020 - ENERO 2021

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

5. DIAGRAMAS, ESQUEMAS Y DESARROLLO


Diseño con instanciación de componentes por tablas de verdad

a) Definir las características de operación para el conversor de código


Realizar un conversor de código que convierta una entrada de código NBCD a los códigos Grey,
Aiken2421 y Exceso 3, mediante un selector de 2 bits, utilizando solo la tabla de verdad del
circuito. El código resultante será visible de dos maneras, como un vector de 4 posiciones y
como 4 bits de salida.

b) Diagrama de bloques
c) Tabla de verdad

Tabla 1 Tabla de verdad del conversor de código

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

Ilustración 2 Modelo RTL Schematic


f) Technology Schematic

Ilustración 3 Modelo Technology Schematic


g) Simulación

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.

Ilustración 4 Simulación con selector 00


En la ilustración 5 podemos observar cómo actúa el conversor de código con el selector 01,
siendo su salida resultante la tabla de verdad de código Gray, para los números 10 a 15 su
salida será 0000

Ilustración 5 Simulación con slector01


En la ilustración 6 podemos observar cómo actúa el conversor de código con el selector 00,
siendo su salida resultante la tabla de verdad de código Aiken2421, para los números 10 a 15
su salida será 0000
Ilustración 6 Simulación con selector 10

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

Ilustración 7 Simulación con selector 11

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

➢ Se implemento un conversor de código creando una entidad que posee 3 subentidades,


una por cada código al que se requiere convertir.
➢ Se implemento el conversor de código al conectar las 3 subentidades mediante la
conexión de señales hacia un control de selector.
➢ Comprobamos que el diseño RTL y Technology han cambiado pues ya no se consta de
un with select(multiplexor) como en la tarea N°2, pues ahora cada subentidad tendrá su
propio multiplexor, sin embargo comprobamos que la simulación continúa funcionando,
generando los códigos correctos.

También podría gustarte