La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Circuitos Digitales II TestBench, Generics, Generate y Más sobre Procesos Semana No.4 Semestre 2008-2 Prof. Gustavo Patiño Prof. Eugenio.

Presentaciones similares


Presentación del tema: "Circuitos Digitales II TestBench, Generics, Generate y Más sobre Procesos Semana No.4 Semestre 2008-2 Prof. Gustavo Patiño Prof. Eugenio."— Transcripción de la presentación:

1 Circuitos Digitales II TestBench, Generics, Generate y Más sobre Procesos Semana No.4 Semestre 2008-2 Prof. Gustavo Patiño gpatino@udea.edu.co Prof. Eugenio Duque eaduque@udea.edu.co Departamento de Ingeniería Electrónica Facultad de Ingeniería 1

2 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Temario Repaso : Instrucciones de Asignación Dentro de Arquitecturas, fuera de procesos. Dentro de Procesos. Ejemplos : Máquinas de Estados VHDL Estructural Síntesis vs Simulación Test Bench (Banco de Prueba) Generics Generic Map Generate Statement FOR-scheme IF-scheme 2

3 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Las instrucciones condicionales y asignaciones seleccionadas difieren considerablemente en su gramática dentro y fuera de los Process. Fuera de un Process una asignación seleccionada es funcionalmente equivalente a una instrucción case dentro de un Process. Los procesos pueden ser utilizados para lógica combinacional, pero suelen ser más utilizados para encapsular lógica secuencial. 3 Repaso : Instrucciones de Asignación

4 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Repaso : Instrucciones de asignación concurrente: Asignación Condicional target_signal <= value1 when condition1 else value2 when condition2 else... valueN-1 when conditionN-1 else valueN; WHEN -ELSE.… Value N Value N-1 Condition N-1 Condition 2 Condition 1 Value 2 Value 1 Target Signal … 0 1 0 1 0 1 4

5 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Repaso : Formato para múltiples k-opciones WHEN value WHEN value_1 to value_2 WHEN value_1 | value_2 |.... | value N 5

6 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Repaso : Instrucciones de asignación concurrente: Asignación seleccionada with choice_expression select target_signal <= expression1 when choices_1, expression2 when choices_2,... expressionN when choices_N; With –Select – When choices_1 choices_2 choices_N expression1 target_signal choice expression expression2 expressionN Los valores deben ser constantes 6

7 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Repaso : Formato para múltiples k-opciones WITH sel SELECT y <= a WHEN 000, b WHEN 011 to "110, c WHEN 001 | 111, d WHEN OTHERS; 7

8 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Repaso : Instrucciones condicionales dentro de Process CASE – WHEN CASE variable/señal IS WHEN valor => enunciado ; … WHEN OTHERS => default ; END CASE; 8

9 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Repaso : Instrucciones condicionales dentro de Process FOR - LOOP FOR variable/señal IN a TO/DOWNTO b LOOP … END LOOP; 9

10 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Repaso : Circuitos secuenciales complejos Los circuitos que sean más complejos pueden ser construidos usando Máquinas de Estados Finitos (FSM: Finite State Machines). Las FSM son fácilmente especificadas usando instrucciones CASE/WHEN dentro de uno o varios Process. 10

11 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Repaso : Modelo secuencial mono fase 11

12 Señales vs Variables dentro de Process Ejemplos 12

13 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 13

14 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 14

15 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Código basado en el uso de Señales 15

16 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Código basado en el uso de variables 16

17 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 VHDL Estructural Para conectar varios dispositivos, se requiere definir una arquitectura estructural (componentes + conexiones) Ejemplo mínimo: Test Bench 17

18 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 VHDL Estructural (…cont) Beneficios: Al sintetizar una descripción estructural, los elementos individuales VHDL se colapsan dentro de un solo bloque, resultando quizá en lógica más eficiente. Portabilidad. Problemas: Fácilmente se equivocan las conexiones. No se puede rescatarse el diseño original a partir del archivo de síntesis. 18

19 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Modelo para VHDL estructural ENTITY nombre IS PORT(...); END ENTITY nombre; ARCHITECTURE estructural OF nombre IS COMPONENT tipo1 PORT( … ); END COMPONENT; COMPONENT tipo2 PORT( … ); END COMPONENT; … SIGNAL señal1, señal2, … BEGIN c1: tipo1 PORT MAP( …); c2: tipo2 PORT MAP(…);... END ARCHITECTURE estructural; ENTITY nombre IS PORT(...); END ENTITY nombre; ARCHITECTURE estructural OF nombre IS COMPONENT tipo1 PORT( … ); END COMPONENT; COMPONENT tipo2 PORT( … ); END COMPONENT; … SIGNAL señal1, señal2, … BEGIN c1: tipo1 PORT MAP( …); c2: tipo2 PORT MAP(…);... END ARCHITECTURE estructural; 19

20 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 VHDL Estructural (…cont) Components Once you have defined an entity, the next thing is to instantiate it as a component within another entitys architecture. The interface of the component must be defined in any architecture that instantiates it. Then, any number of port map statements create instances of that component. Example : Here is how to connect eight of the full adders to give a eight-bit adder: 20

21 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Ejemplo : Sumador completo de 1- bit library ieee; -- add this to the IEEE library use ieee.std_logic_1164.all; -- includes std_ulogic entity full_adder is port(a, b, c : in std_ulogic; sum, carry : out std_ulogic); end full_adder; architecture imp of full_adder is begin sum <= (a xor b) xor c; -- combinational logic carry <= (a and b) or (a and c) or (b and c); end imp; library ieee; -- add this to the IEEE library use ieee.std_logic_1164.all; -- includes std_ulogic entity full_adder is port(a, b, c : in std_ulogic; sum, carry : out std_ulogic); end full_adder; architecture imp of full_adder is begin sum <= (a xor b) xor c; -- combinational logic carry <= (a and b) or (a and c) or (b and c); end imp; 21

22 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Ejemplo : Sumador completo de 8- bits usando components library ieee; use ieee.std_logic_1164.all; entity add2 is port (A, B : in std_logic_vector(7 downto 0); sum_out : out std_logic_vector(8 downto 0)); end add2; architecture imp of add2 is component full_adder port (a, b, c : in std_ulogic; sum, carry : out std_ulogic); end component; signal carry : std_ulogic_vector(6 downto 0); begin bit0 : full_adder port map (a => A(0), b => B(0), c => 0, sum => sum_out(0), carry => carry(0)); bit1 : full_adder port map (a => A(1), b => B(1), c => carry(0), sum => sum_out (1), carry => carry(1)); bit2 : full_adder port map (a => A(2), b => B(2), c => carry(1), sum => sum_out (2), carry => carry(2)); bit3 : full_adder port map (a => A(3), b => B(3), c => carry(2), sum => sum_out (3), carry => carry(3)); bit4 : full_adder port map (a => A(4), b => B(4), c => carry(3), sum => sum_out (4), carry => carry(4)); bit5 : full_adder port map (a => A(5), b => B(5), c => carry(4), sum => sum_out (5), carry => carry(5)); bit6 : full_adder port map (a => A(6), b => B(6), c => carry(5), sum => sum_out (6), carry => carry(6)); bit7 : full_adder port map (a => A(7), b => B(7), c => carry(6), sum => sum_out (7), carry => sum_out (8)); end imp; 22

23 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Síntesis vs Simulación Todos los diseños sintetizables pueden ser simulados. No todos los diseños para simulación pueden ser sintetizados. Considere, por ejemplo, el siguiente código: 23

24 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Síntesis vs Simulación (…cont) La entrada din es asignada a dout después de 10ns (after 10ns) Puede esto representar un sistema del mundo real ?SI Será posible de implementar esto en un dispositivo ?TAL VEZ Será posible de implementar esto en todos los dispositivos ?NO Esta arquitectura puede ser simulado más no sintetizado. Algunas herramientas de diseño en VHDL sólo permiten el uso de palabras claves sintetizables. La mayoría de las herramientas aceptan un subconjunto sintetizable de VHDL93. 24

25 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Test Bench (Banco de Prueba) -- Modelo VHDL para elaboración de un testbench en VHDL: LIBRARY IEEE; USE IEEE.std_logic_1164.all; LIBRARY WORK; USE WORK.all; ----------------------------------------------------------------------- -- Declaración del banco de prueba ----------------------------------------------------------------------- ENTITY mux2a1_tb IS END ENTITY mux2a1_tb; -- Modelo VHDL para elaboración de un testbench en VHDL: LIBRARY IEEE; USE IEEE.std_logic_1164.all; LIBRARY WORK; USE WORK.all; ----------------------------------------------------------------------- -- Declaración del banco de prueba ----------------------------------------------------------------------- ENTITY mux2a1_tb IS END ENTITY mux2a1_tb; No hay interface externa. Básicamente debido a que la declaración de un Testbench no es en si mismo un bloque circuital. Es sólo la especificación temporal de variaciones de señales para efectos de simulación. No hay interface externa. Básicamente debido a que la declaración de un Testbench no es en si mismo un bloque circuital. Es sólo la especificación temporal de variaciones de señales para efectos de simulación. Eventualmente WORK es la colección de diseños que se desean simular. 25

26 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Componentes del TestBench ---------------------------------------------------------------- -- Definición del banco de prueba ---------------------------------------------------------------- ARCHITECTURE prueba OF mux2a1_tb IS -- Declaración del componente bajo prueba (cbp) COMPONENT mux2a1 IS PORT( s: IN std_logic ; -- selector a,b: IN std_logic_vector(7 DOWNTO 0); -- entradas o: OUT std_logic_vector(7 DOWNTO 0) -- salida ); END COMPONENT mux2a1; -- Declaración de señales de prueba SIGNAL clk: std_logic; SIGNAL a,b,o: std_logic_vector(7 DOWNTO 0); ---------------------------------------------------------------- -- Definición del banco de prueba ---------------------------------------------------------------- ARCHITECTURE prueba OF mux2a1_tb IS -- Declaración del componente bajo prueba (cbp) COMPONENT mux2a1 IS PORT( s: IN std_logic ; -- selector a,b: IN std_logic_vector(7 DOWNTO 0); -- entradas o: OUT std_logic_vector(7 DOWNTO 0) -- salida ); END COMPONENT mux2a1; -- Declaración de señales de prueba SIGNAL clk: std_logic; SIGNAL a,b,o: std_logic_vector(7 DOWNTO 0); 26

27 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Instancias y procesos del testbench BEGIN cbp : COMPONENT mux2a1 -- instancia del dispositivo PORT MAP( clk,a,b,o); reloj: PROCESS IS -- generación de reloj BEGIN clk <= '1'; WAIT FOR 25 ns ; clk <= '0'; WAIT FOR 25 ns ; END PROCESS reloj; estimulación: PROCESS IS -- patrones de estimulación BEGIN a <= "01010101"; -- define entrada 'a' b <= "00001111"; -- define entrada 'b' WAIT ; END PROCESS estimulación; END ARCHITECTURE prueba; BEGIN cbp : COMPONENT mux2a1 -- instancia del dispositivo PORT MAP( clk,a,b,o); reloj: PROCESS IS -- generación de reloj BEGIN clk <= '1'; WAIT FOR 25 ns ; clk <= '0'; WAIT FOR 25 ns ; END PROCESS reloj; estimulación: PROCESS IS -- patrones de estimulación BEGIN a <= "01010101"; -- define entrada 'a' b <= "00001111"; -- define entrada 'b' WAIT ; END PROCESS estimulación; END ARCHITECTURE prueba; Component/Port map : Genera una instancia del componente y lo conecta a las señales del circuito al cual pertenece. Component/Port map : Genera una instancia del componente y lo conecta a las señales del circuito al cual pertenece. Wait/wait for: Le indican al simulador que esperen infinitamente por el tiempo especificado. Wait/wait for: Le indican al simulador que esperen infinitamente por el tiempo especificado. 27

28 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Generics Generics provide a method to communicate static information to an architecture from the external environment. They are passed through the entity construct. 28

29 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Generics – Example 29

30 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Generic Map 30

31 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Generic Map : Sintax 31

32 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Another Example 32

33 Generate Statement FOR-scheme and IF-Scheme 33

34 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Generate Statement VHDL provides the GENERATE statement to create well-patterned structures easily. Some structures in digital hardware are repetitive in nature (e.g. RAMs, adders). Any VHDL concurrent statement may be included in a GENERATE statement, including another GENERATE statement. Specifically, component instantiations may be made within GENERATE bodies 34

35 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Generate Statement (…cont) VHDL provides two different schemes of the GENERATE statement : FOR-scheme IF-scheme. The FOR-scheme is reminiscent of a FOR loop used for sequence control in many programming languages. The FOR-scheme generates the included concurrent statements the assigned number of times. In the FOR-scheme, all of the generated concurrent statements must be the same. 35

36 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 For – Scheme All objects created are similar The GENERATE parameter must be discrete and is undefined outside the GENERATE statement (i.e. it is not a variable or signal visible elsewhere in the architecture). Loop cannot be terminated early 36

37 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 For – Scheme : Example 37

38 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 IF – Scheme Allows for conditional creation of components. Cannot use ELSE or ELSIF clauses with the IF- scheme. 38

39 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 IF – Scheme (…cont) One obvious difference between this scheme and the FOR-scheme is that all the concurrent statements generated do not have to be the same. While this IF statement may seem reminiscent to the IF-THEN ELSE constructs in programming languages, note that the GENERATE IF-scheme does not provide ELSE or ELSIF clauses. 39

40 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 Departamento de Ing. Electrónica Circuitos Digitales II Universidad de Antioquia 2008-2 IF – Scheme : Example 40


Descargar ppt "Circuitos Digitales II TestBench, Generics, Generate y Más sobre Procesos Semana No.4 Semestre 2008-2 Prof. Gustavo Patiño Prof. Eugenio."

Presentaciones similares


Anuncios Google