Documentos de Académico
Documentos de Profesional
Documentos de Cultura
AGOSTO DE 2003
1
PROGRAMACION DE SISTEMAS DIGITALES CON VHDL
Lenguaje de programación - Hardware Description Lenguaje (VHDL) Very High Speed Integrated Circuit
(VHSIC)
Permite integrar “Sistemas Digitales” que contienen una gran cantidad de subsistemas electrónicos con el fin
de minimizar el tamaño de la aplicación. Ya sea en un solo CI y si el problema es complejo, a través de una
serie sucesiva de circuitos programables como CPLD (Dispositivo Lógico Programable complejo o FPGA
(Arreglo de Compuertas Programables en campo).
CARACTERISTICAS
architecture (secundaria)
configuration (primaria)
Las dos primeras unidades Entity declaration y architecture son indispensables en la estructura de un
programa.
Es el bloque elemental de diseño en VHDL donde se identifica con claridad sus entradas y salidas
generales.
2
Sintaxis de una declaración VHDL.
entity entity-name is
port (signal-names: mode signal-type;
signal-names: mode signal-type;
…..
signal-names: mode signal-type);
end entity-name ;
Puerto. Se refiere a cada una de las señales de entrada y salida, el cual equivale a un pin de un símbolo
esquemático.
Tipo de dato: clase de información que se transmite por el puerto. Se asignan de acuerdo a un diseño
en particular. Algunos tipos mas utilizados son:
3
-- Texto comentario que es ignorado por el compilador.
; Se usa para finalizar una declaración.
: Se usa para asignar nombres a las entradas salidas
Ejemplo:
.
Cin Entidad Cout
A[3:0]
B[3:0]
Sumador SUMA[3:0]
Los tres vectores A, B, SUMA se definen con cuatro componentes distribuidos en orden descendente por
medio del comando:
3 downto 0 (3 hacia 0)
Una vez se ha establecido el orden en que aparecerán los bits enunciados en cada vector, no se puede
modificar a menos que se utilice el comando to.
0 to 3 (0 hasta 3)
4
3. port (A,B: in bit_vector (3 downto 0);
4. Cin: in bit;
5. Cout: in bit;
6. SUMA: out bit_vector (3 downto 0);
7. end sumador;
LIBRERÍA
Una librería o biblioteca es un lugar al que se tiene acceso para utilizar unidades de diseño predeterminadas
por el fabricante de la herramienta.
- ieee
o std_logic_1164
- work
o numeric_std
o std_arith
o gatesspkg
o otra
Para un diseño VHDL el compilador crea automáticamente y utiliza una librería “work”
Una librería permite también almacenar resultados de la compilación de un diseño, con el fin de utilizar
en uno o varios programas.
La librería work es el lugar establecido donde se almacenan los programas que el usuario va
generando.
Esta librería (work) se encuentra siempre presente en la compilación de un diseño o diseños que
guardan en ella mientras no se especifique otra cosa.
5
PAQUETE
Un paquete VHDL es un archivo que contiene definiciones de objetos que pueden ser utilizados en otros
programas. La clase de objetos que pueden ser puestos en un paquete incluye declaraciones de señal, tipo,
constantes, función, procedimiento y componentes.
Es una unidad de diseño que permite desarrollar un programa en VHDL de una forma ágil, debido a que
contiene algoritmos preestablecidos (sumadores, restadores, contadores, etc.) que ya tienen optimizado su
comportamiento.
Cuando en el diseño se utiliza un paquete es necesario llamar a la librería que lo contiene, para esto se utiliza
la siguiente declaración library ieee;
El paquete std_logic_1164 contiene todos los tipos de datos que suelen emplearse en VHDL
(std_logic_vector, std_logic), entre otros.
El acceso a la información contenida en un paquete se hace por medio de la sentencia use así:
use nombre_libreria.nombre_paquete.all;
La palabra all indica que puede usar todas las definiciones almacenados en el paquete, en este archivo.
Paquete numeric_std define funciones para realizar operaciones entre diferentes tipos de datos, además los
datos pueden representarse con signo o sin este.
Paquete numeric_bit define tipos de datos binarios c0n signo o sin este.
Paquete std_arith define funciones y operaciones aritméticas, como igual (=), mayor que (>), menor que (<)
entre otros.
6
2.5 ARQUITECTURA (architecture)
Se define como la estructura que describe el funcionamiento de una Entidad.
El VHDL permite mediante un algoritmo de programación describir los diseños desde el nivel de compuertas
hasta sistemas complejos.
Ejemplo:
signal signal-name: signal-type;
constans Z: character<= ‘Z’;
1. Estilo funcional.
2. Estilo por flujo de datos.
3. Estilo estructural.
A [1:0] Entidad
B [1:0]
Sumador C
7
5. port (A,B: in bit_vector(1 downto 0);
6. C: out bit);
7. end comp;
8.
9. architecture functional of comp is
10. begin
11. compara: process (A,B)
12. begin
13. if A = B then
14. C = ‘1’;
15. else
16. C = ‘0’;
17. end if;
18. end process compara;
19. end functional;
Ejemplo 2: Describa mediante declaraciones del tipo if~then~else el funcionamiento de una compuerta OR
con base a la tabla de verdad.
Donde:
begin: Señala el inicio de la sección donde se comienza a declarar el proceso que rige el comportamiento del
sistema.
La declaración del proceso se utiliza para la definición del algoritmo etiqueta opcional: process y une la lista
sensitiva (A,B) que hace referencia a las señales que determinan el funcionamiento del proceso. El proceso se
ejecuta mediante declaraciones secuenciales del tipo if~then~else.
Una vez se ha definido el proceso se termina con la palabra end process. Luego se termina la arquitectura
con end (nombre) en el siguiente renglón.
Varias instrucciones concurrentes adicionales permiten a VHDL, describir un circuito en terminos de flujo de
datos y operaciones activadas dentro del circuito.
Indica la forma en que los datos se pueden transferir de una señal a otra sin necesidad de declaraciones
secuenciales if~then~else. Este tipo de descripción puede utilizar dos formatos:
8
a. Mediante instrucciones when~else.
b. Mediante ecuaciones booleanas
La forma de flujo de datos en cualquiera de sus representaciones describe el camino que los datos siguen al
ser transferidos de las operaciones efectuadas entre las señales de entrada y las señales de salida.
NOTA: En el caso anterior se tiene una declaración secuencial donde su ejecución debe seguir un orden para
evitar la pérdida de la lógica descrita. En este caso se tiene una declaración concurrente donde no importa el
orden que se ejecuta.
Si tomamos el comparador de dos bits, se puede representar por medio de compuertas lógicas básicas y su
ecuación booleana será:
F = ( A0 B 0) ( A1 B1)
9
4. entity comp is
5. port (A,B: in bit_vector(1 downto 0);
6. C: out bit);
7. end comp;
8.
9. architecture booleana of comp is
10. begin
11. C <= (A(1) xnor B(1)
12. and A(0) xnor B(1);
13. end booleana;
Para la compuerta OR
Para iniciar la programación de una entidad de manera estructural es necesario la descomposición lógica del
diseño en pequeños submodulos (jerarquizada), los cuales permiten analizar de manera practica el circuito ya
que la función de entrada / salida es conocida.
En VHDL es importante aclarar que una jerarquía se refiere al procedimiento de dividir en bloques y no a que
un bloque tenga mayor jerarquía que otro.
La salida de cada uno de los bloques se maneja como una señal, las cuales se declaran dentro de la
arquitectura y no en la entidad, debido a que no representan a una terminal (pin) y solo se utilizan para
conectar bloques de manera interna a la entidad.
En el caso del comparador cada compuerta se encuentra dentro de un paquete gatesspkg,6 del cual se toman
la estructura del diseño. Este tipo de arquitecturas estándares se conoce como componentes.
El cuerpo de una arquitectura es una serie de instrucciones concurrentes. En VHDL, cada instrucción
concurrente se ejecuta de manera simultánea con otras instrucciones concurrentes en el mismo cuerpo de
arquitectura.
Las instrucciones concurrentes son necesarias para simular el comportamiento del Hardware, donde los
elementos conectados se afectan entre si de manera continua, no precisamente en segmentos de tiempo
particulares, con un orden. De este modo, en un cuerpo de arquitectura VHDL, si la última instrucción actualiza
una señal que es utilizada por la primera instrucción, entonces el simulador regresara a esa primera instrucción
y actualizara sus resultados de acuerdo con la señal que acaba de cambiar.
Instrucción component es la más fundamental de las instrucciones concurrentes y tiene la siguiente sintaxis:
10
label: component-name port map (signal1, signal2,…..,signaln);
component component-name
port (signal-name : mode signal-type ;
signal-name : mode signal-type ;
…………
signal-name : mode signal-type) ;
end component ;
Las palabras clave port map introducen una lista que asocia los puertos de la entidad nombrada con señales
en la arquitectura actual. La lista puede escribirse en dos estilos diferentes:
Primero. Es un estilo Posicional; las señales en la lista se encuentran asociadas con los puertos de la entidad
en el mismo orden en que aparecen en la definición de la entidad.
Segundo. Es un estilo explicito; cada uno de los puertos de la entidad se conectan a una señal utilizando el
operador “=>” y estas asociaciones pueden enumerarse en cualquier orden.
Los componentes usados en una arquitectura pueden ser los que fueron previamente definidos como parte de
un diseño o pueden ser partes de una librería.
Una arquitectura VHDL que utiliza componentes se denomina a menudo una descripción estructural o diseño
estructural, porque define la estructura de interconexión precisa de senales y entidades que realiza la entidad.
Los componentes xnor y and no se declaran debido a que se encuentran en el paquete de compuertas
gatesspkg, el cual se encuentra dentro de la librería de trabajo work.
11
7. end combina;
8. use work.compuerta.all;
9.
10. architecture estructural of combina is
11. signal X: bit_vector (0 to 2);
12. begin
13. U0: and2 port map (B, C, X(0);
14. U1: and2 port map (C, A, X(1);
15. U2: and2 port map (A, B, X(2));
16. U3: or3 port map (X(0), X(1), X(2), F);
17. end estructural;
12
3. DISEÑO LOGICO COMBINATORIO
Las declaraciones concurrentes se encuentran fuera de la declaración de un proceso y suelen usarse en las
descripciones de flujo de datos y estructural.
En la declaración concurrente no importa el orden en que se escriban las señales, ya que el resultado para
determinada función seria el mismo.
a Entidad
b Prueba f(a,b,c)
c
a B C F
0 0 0 1
0 0 1 0
0 1 0 0
0 1 1 1
1 0 0 0
1 0 1 0
1 1 0 1
1 1 1 1
Descripción de la entidad:
13
8. architecture ejemplo of tabla is
9. begin
10. f <= '1' when (a='0' and b ='0' and c ='0') else
11. '1' when (a='0' and b ='1' and c ='1') else
12. '1' when (a='1' and b ='1' and c ='0') else
13. '1' when (a='1' and b ='1' and c ='1') else
14. '0';
15. end ejemplo;
Ejemplo 2. Una función F depende de cuatro variables D,C,B,A donde A es la variable menos significativa. La
función adopta el valor de uno si el numero formado por las cuatro variables es inferior o igual a 7 y superior a
3.
Encuentre la tabla de verdad de la funcion y realice el programa correspondiente en VHDL (utilice la estructura
del tipo when-else y operadores lógicos.
D C B A F
0 0 0 0 0
0 0 0 1 0
0 0 1 0 0
0 0 1 1 0
0 1 0 0 1
0 1 0 1 1
0 1 1 0 1
0 1 1 1 1
1 0 0 0 0
1 0 0 1 0
1 0 1 0 0
1 0 1 1 0
1 1 0 0 0
1 1 0 1 0
1 1 1 0 0
1 1 1 1 0
1 library ieee;
2 use ieee.std-logic-1164.all;
3 entity funcion is port (
4 D,C,B,A: in std-1ogic;
5 F: out std-1ogic) ;
6 end funcion;
7 architecture a-func of funcion is
8 begin
9 F <= '1' when (A = 'O' and B = '0' and C = '1' and D = '0') else
10 '1' when (A = '1' and B = '0' and C = '1' and D = '0') else
11 '1' when (A = '0' and B = '1' and C = '1' and D = '0') else
12 '1' when (A = '1' and B = '1' and C = '1' and D = '0') else
13 '0' ;
14 end a-func;
14
1. -- Ejemplo circuito logico realizado con compuertas
2. library ieee;
3. use ieee.std_logic_1164.all;
4. entity logic is port (
5. a,b,c,d,e,f: in std_logic;
6. x1,x2,x3: out std_logic;
7. end logic;
8. architecture booleana of logic is
9. begin
10. x1 <= a xnor b;
11. x2 <= (((c and d) or a xnor b)) nand
12. ((e xor f) and (c and d)));
13. x3 <= (e xor f) and (c and d);
14. end booleana;
Ejemplo 3.
a(0) a(1) F
0 0 1
0 1 0
1 0 1
1 1 0
1. library ieee;
2. use ieee.std_logic_1164.all;
3. entity circuito is port (
4. a: in std_logic_vector (1 downto 0);
5. c: out std_logic);
6. end circuito
7. architecture arq_cir of circuito is
8. begin
9. with a select
10. c <= '1' when "00",
11. '0' when "01",
12. '1' when "10",
13. '0' when others,
14. end arq_cir;
Ejemplo 4. Se requiere diseñar un circuito combinacional que detecte números primos de 4 bits. Realice la
tabla de verdad y elabore un programa que describa su función. Utilice instrucciones del tipo with -select
-when.
X0 X1 X2 X3 F
0 0 0 0 0
0 0 0 1 1
0 0 1 0 1
0 0 1 1 1
15
0 1 0 0 0
0 1 0 1 1
0 1 1 0 0
0 1 1 1 1
1 0 0 0 0
1 0 0 1 0
1 0 1 0 0
1 0 1 1 1
1 1 0 0 0
1 1 0 1 1
1 1 1 0 0
1 1 1 1 0
Si se considera que la entrada X es un vector de 4 bits y que F es la función de salida, el programa en VHDL
quedaría de la siguiente manera
I library ieee;
2 use ieee.std-logic-1164.all;
3 entity seleccion is port (
4 X: in std-logic-vector(O to 3);
S F: out std-logic);
6 end seleccion;
7 architecture a-selec of seleccion is
B begin
9 with X select
10 F <= '1' when "0001",
11 '1' when "0010",
12 '1' when "0011",
13 '1' when "0101",
14 '1' when "0111",
15 '1' when "1011",
16 '1' when "1101",
17 '0' when others;
18 end a-selec;
16
5. INTEGRACIÓN DE ENTIDADES BÁSICAS
La integración de entidades puede realizarse mediante el diseño individual de bloques lógicos a través de
procesos internos que posteriormente pueden unirse mediante un programa común En este caso se presenta
el inconveniente de un numero excesivo de terminales pues se debe declarar las terminales de entrada y
salida de cada entidad..
Otra posibilidad es observar y analizar de manera global todo el sistema evaluando su comportamiento solo a
través de sus entradas y salidas. Aquí las terminales de entrada salida disminuyen, pero se debe desarrollar un
trabajo para diseñar un algoritmo interno capaz de interpretar el funcionamiento de cada bloque además de
conectar cada uno de ellos.
DISPLAY
TECLADO CODIFICADOR REGISTRO A DECODIFICADOR
7 SEG B
Su objetivo es observar en el display el número correspondiente a la tecla presionada, para ello el codificador
generara (C0,C1,C2,C3) el equivalente del número en BCD, el cual es almacenado en el registro, cuyo
contenido (Q0,Q1,Q2,Q3) proporciona la información (D0,D1,D2,D3) al decodificador de siete segmentos para
ser observado en el display.
La programación de cada modulo se muestra en el siguiente listado, donde se han asignado terminales para
cada uno de ellos.
1 library ieee;
2 use ieee.std_logic_1164.all;
3 entity display1 is port (
4 clk: in std_logic;-- pulso de reloj
5 tecla: in std_logic_vector (0 to 8);-- botón de teclado
6 C: inout std_logic_vector (3 downto 0); -- salida codificador
7 A: inout std_logic_vector (3 downto 0); -- entrada registro
8 Q: inout std_logic_vector (3 downto 0); -- salida registro
9 D: inout std_logic_vector (3 downto 0); -- entrada decodificador
10 seg: out std_logic_vector (0 to 6); -- salidas decodificador
11 end display1;
12 architecture a_disp1 of display1 is
13 begin
14 C<= “0001” when tecla = “100000000” else
15 “0010” when tecla = “010000000” else
16 “0011” when tecla = “001000000” else
17 “0100” when tecla = “000100000” else
18 “0101” when tecla = “000010000” else
19 “0110” when tecla = “000001000” else
20 “0111” when tecla = “000000100” else
21 “1000” when tecla = “000000010” else
22 “1001”;
17
23 A<= C;
24 process (clk, A, D) begin
25 if (clk’event and clk= ‘1’) then
26 Q <= A;
27 D <= Q;
28 end if;
29 case D is
30 when “0000” => seg <= “0000001”;
31 when “0001” => seg <= “1001111”;
32 when “0010” => seg <= “0010010”;
33 when “0011” => seg <= “0000110”;
34 when “0100” => seg <= “1001100”;
35 when “0101” => seg <= “0100100”;
36 when “0110” => seg <= “0100000”;
37 when “0111” => seg <= “0001110”;
38 when “1000” => seg <= “0000000”;
39 when others => seg <= “0001100”;
40 end case;
41 end process;
42 end a_disp1;
1 library ieee;
2 use ieee.std_logic_1164.all;
3 entity display is port (
4 clk: in std_logic; -- pulso de reloj
5 tecla : in std_logic_vector (0 to 8); -- declaración de entradas
6 seg: out std_logic_vector(0 to 6); -- declaración salidas
7 end display;
8 architecture a_disp of display is
9 signal C: std_logic_vector ( 3 downto 0);
10 signal Q: std_logic_vector ( 3 downto 0);
11 begin
12 process (clk, tecla, C, Q) begin
13 if (clk’ event and clk = ‘1’) then
14 Q <= C
15 end if
16 if (tecla = “100000000”) then
17 C<= “0001”;
18 elsif (tecla = “010000000”) then
19 C<= “0010”;
20 elsif (tecla = “001000000”) then
21 C<= “0011”;
22 elsif (tecla = “000100000”) then
23 C<= “0100”;
24 elsif (tecla = “000010000”) then
25 C<= “0101”;
26 elsif (tecla = “000001000”) then
27 C<= “0110”;
28 elsif (tecla = “000000100”) then
29 C<= “0111”;
18
30 elsif (tecla = “000000010”) then
31 C<= “1000”;
32 else
33 C<= “1001”;
34 end if;
35 case Q is
36 when “0000” => seg <= “0000001”;
37 when “0001” => seg <= “1001111”;
38 when “0010” => seg <= “0010010”;
39 when “0011” => seg <= “0000110”;
40 when “0100” => seg <= “1001100”;
41 when “0101” => seg <= “0100100”;
42 when “0110” => seg <= “0100000”;
43 when “0111” => seg <= “0001110”;
44 when “1000” => seg <= “0000000”;
45 when others => seg <= “0001100”;
46 end case;
47 end process;
48 end a_disp;
Ejemplo 5.1 Se necesita diseñar un circuito de control para una maquina empacadora de muñecas, en forma
individual o con un máximo de 9 muñecas por caja.
Descripción: Por medio de un teclado decimal, se ingresa la cantidad de muñecas a empacar por caja, luego el
codificador (C0,C1,C2,C3) convierte el número decimal en código BCD, el cual es almacenado en un registro A
(R0,R1,R2,R30, cuyo contenido es mostrado por el decodificador de siete segmentos a través de un display.
Esta información se debe mantener hasta completar la cantidad de muñecas deseadas.
DECODIFICADOR
19
Procedimiento: Después de seleccionar la cantidad de muñecas por empacar, el operador presiona el botón de
inicio en el modulo Controlador, el cual genera una señal de reset que coloca el contador en estado cero;
enseguida envía una señal de arranque (Encendido) al motor que controla el avance de la banda
transportadora, hasta que el numero de muñecas sensadas en el contador B sea igual al numero programado
en el registro A. Cumplido lo anterior, el comparador envía una señal al controlador, el cual detiene la banda
transportadora (Apagado) finalizando el proceso.
DISPLAY (7)
SISTEMA
TECLADO
DE Sensor
INTEGRACION
Reset A=B
Encendido/Apagado
Vcc
CONTROLADOR Banda transportadora
Inicio
1. Library ieee;
2. use ieee.std_logic_1164.all;
3. use std_arith.all;
4. entity control is port(
5. clk, reset: in std_logic;
6. boton: in std_logic_vector(0 to 8);
7. sensor: in std_logic;
8. deco: out std_logic_vector(0 to 6);
9. compara: out std_logic);
10. end control;
11. Architecture a_control of control is
12. signal Q,C,R: std_logic_vector (3 down to 0);
13. begin
14. Proceso1: process (sensor, reset, Q) begin
15. If (sensor event and sensor= ‘1’) then
16. Q <= “0000”;
17. Q <= Q+1;
18. If (reset = ‘1’ or Q =“1001”) then
19. Q <= “0000”;
20. end if;
21. end if;
22. end process;
23. Proceso2: process (clk, boton, R) begin
24. if (clk event and clk=‘1’ ) then
25. R<=C;
26. If (boton = "1000000000") then
27. C<="0001";
28. elsif (boton = "0100000000") then
29. C<="0010";
30. elsif (boton = "0010000000") then
31. C<="0011";
32. elsif (boton = "0001000000") then
33. C<="0100";
20
34. elsif (boton = "0000100000") then
35. C<="0101";
36. elsif (boton = "0000010000") then
37. C<="0110";
38. elsif (boton = "0000001000") then
39. C<="0111";
40. elsif (boton = "0000000100") then
41. C<="1000";
42. else
43. C<=“1001”;
44. end if;
45.
46. case R is
47. when “0000” => deco <= “0000001”;
48. when “0001” => deco <= “1001111”;
49. when “0010” => deco <= “0010010”;
50. when “0011” => deco <= “0000110”;
51. when “0100” => deco <= “1001100”;
52. when “0101” => deco <= “0100100”;
53. when “0110” => deco <= “0100000”;
54. when “0111” => deco <= “0001111”;
55. when “1000” => deco <= “0000000”;
56. when others => deco <= “0001100”;
57. end case;
58. end process;
59.
60. compara <=‘1’; when Q = R else ‘0’;
61.
62. end architecture;
Ejercicio 5.2: La siguiente figura muestra el circuito electrónico de una Unidad Lógica Aritmética – ALU. Su
tabla característica indica la función que se ejecuta de acuerdo a sus controles de selección. Programe dicho
circuito utilizando la integración de entidades mediante la relación de señales de entrada salida.
21
Selector de S0 C0
Función S1 C1 Salida de
S2 C2 4 bits
S3 C3
ALU
B0
Entrada de B1
4 bits B2 A=B
B3
A0
A1
Entrada de A2 Cn + 4
4 bits A3 Acarreo de baja velocidad
Cn P’
Library ieee;
use ieee.std_logic_1164.all;
use works.math;
22
architecture arq_alu of alu is
begin
Operaciones: process (S, A, B, C, M, Cn1) begin
If (M =’0’ and Cn = `0`) then
case S is
when “0000” => C<= A;
when “0001” => C<= A + B;
when “0010” => C<= A + not B;
when “0011” => C<= A + 1;
when “0100” => C<= A*(A - not B);
when “0101” => C<= (A+B)*(A*not B);
when “0110” => C<= A – B - 1;
when “0111” => C<= A*(not B -1);
when “1000” => C<= A*(A - B);
when “1001” => C<= A - B;
when “1010” => C<= (A + not B)*A*B;
when “1011” => C<= (A * B)-1;
when “1100” => C<= A + A;
when “1101” => C<= (A + B) * A;
when “1110” => C<= (A + not B)*A;
when “1111” => C<= A - 1;
end case;
Elseif (M =’1’)
case S is
when “0000” => C<= not A;
when “0001” => C<= not (A or B);
when “0010” => C<= not A and B ;
when “0011” => C<= “0000”;
when “0100” => C<= not (A and B);
when “0101” => C<= not B;
when “0110” => C<= A or B;
when “0111” => C<= A and (not B);
when “1000” => C<= not A or B;
when “1001” => C<= not(A and B );
when “1010” => C<= B;
when “1011” => C<= A and B;
when “1100” => C<= 1111;
when “1101” => C<= A or (not B) ;
when “1110” => C<= A or B;
when “1111” => C<= A;
end case;
else C<=”0000”;
end if;
end process;
23
If ((A + B) = “10000” ) then
Cn2 = ”1”;
else
Cn2 = ”0”;
end if;
end process;
end architecture;
El diseño jerárquico permite la programación de extensos diseños mediante la unión de varios módulos o
entidades electrónicas, las cuales se pueden analizar y simular de manera individual, para luego relacionarlas
a través de un algoritmo de integración, llamado Top Level.
Esto permite, en diseños grandes trabajar al mismo tiempo con otros diseñadores al mismo tiempo
(paralelismo).
Entidad 1 Entidad 2
Top Level
Entidad 1 Entidad 2
24
Nota. Un componente es la parte de un programa que define un elemento fisico, el cual se puede usar en
otros diseños o entidades.
25