Departamento de Sistemas e Informática Síntesis de sistemas digitales en FPGA Diseño jerárquico - Estilo de descripción estructural 2016 Contenido Diseño jerárquico Descripción en estilo estructural Ejemplo de aplicación Elementos sintácticos Comparación de distintos estilos de descripción Ejercitación 2 Diseño jerárquico El sistema se plantea como una estructura que permite dividirlo en partes más reducidas Es una metodología de diseño desarrollada para manejar la complejidad VHDL provee herramientas específicas para abordar este tipo de diseño Estilo de descripción estructural Definición de componentes 3 Descripción estructural Describe la estructura del circuito como interconexión entre componentes Orientada hacia el diseño jerárquico Dirigida a la reutilización de diseños y dispositivos Los componentes conectados pueden variar desde primitivas de bajo nivel a módulos de alta complejidad 4 Descripción estructural. Ejemplo Módulo TOP del diseño donde se instancian los componentes Instancias de los componentes en el diseño En el módulo TOP se deben declarar los componentes y realizar el mapeo de los puertos para interconectarlos 5 5 Descripción estructural. Ejemplo library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity Sistema is Port ( e1 : in STD_LOGIC; e2 : in STD_LOGIC; clk : in STD_LOGIC; reset : in STD_LOGIC; sal1 : out STD_LOGIC; sal2 : out STD_LOGIC); end Sistema; 6 Descripción estructural. Ejemplo architecture Behavioral of Sistema is component contador Port ( clk : in STD_LOGIC; reset : in STD_LOGIC; TC : out STD_LOGIC; En : in STD_LOGIC; cero : out STD_LOGIC); end component; component registro Port ( IH : in STD_LOGIC; IL : in STD_LOGIC; clk : in STD_LOGIC; reset : in STD_LOGIC; s : out STD_LOGIC); end component; 7 Contador del ejemplo architecture Behavioral of Contador is signal cuenta:std_logic_vector (3 downto 0); begin process(clk,reset) begin if reset = '1' then cuenta <= (others => '0'); elsif clk'event and clk = '1'then if en = '1' then cuenta <= cuenta + 1; end if; end if; end process; TC <= '1' when cuenta = "1111" else '0'; cero <= '1' when cuenta = "0000" else '0'; end Behavioral; 8 Contador del ejemplo Contador de 4 bits con reset asincrónico y habilitación de cuenta cero: detecta “0000” Esquemático RTL TC: detecta cuenta máxima 9 Registro del ejemplo architecture Behavioral of Registro is signal aux: std_logic_vector(1 downto 0); begin aux <= Ih & Il; process (clk, reset) begin if reset = '1' then s <= '0'; elsif clk = '1' and clk'event then case aux is when "10" => s <= '1'; when "01"=> s <= '0'; when "11"=> s <= '1'; when others => null; end case; end if; end process; 10 IH IL Qt+1 0 0 Qt 0 1 0 1 0 1 1 1 1 Registro del ejemplo Esquemático RTL 11 IH IL Qt+1 0 0 Qt 0 1 0 1 0 1 1 1 1 Descripción estructural. Ejemplo Esquemático RTL signal TC1, TC2, cero1,cero2: std_logic; begin Cuenta1: contador port map (clk => clk, reset=>reset, En => e1, TC => TC1, cero => cero1); Cuenta2: contador port map (clk => clk, reset=>reset, En => e2, TC => TC2, cero => cero2); 12 Descripción estructural. Ejemplo Esquemático RTL Cuenta2 signal TC1, TC2, cero1,cero2: std_logic; begin Reg1: registro port map (clk => clk, reset=> reset, Ih => TC1, Il => cero2, s => sal1); Reg2: registro port map (clk => clk, reset=> reset, Ih => TC2, Il=> cero1, s => sal2); 13 Descripción estructural. Sintaxis Declaración de componente: component contador Port ( clk : in STD_LOGIC; reset : in STD_LOGIC; TC : out STD_LOGIC; En : in STD_LOGIC; cero : out STD_LOGIC); end component; Los componentes utilizados deben estar definidos Previamente en el diseño Bibliotecas del entorno Paquetes o bibliotecas adicionales 14 Descripción estructural. Sintaxis Instanciación y mapeo de puertos: Cuenta1: contador -- Se instancia el componente port map (clk => clk, reset => reset, En => e1, TC => TC1, cero => cero1); Los puertos del componente se pueden conectar a los puertos del sistema La conexión de puertos entre componentes se realiza con señales 15 Estilos de descripción VHDL Descripción Estructural Si los componentes son de bajo nivel o primitivas !!! Descripción de Flujo de datos Interconexión entre objetos del lenguaje Descripción Algorítmica Descripción comportamental p. p. dicha 16 Nivel de Abstracción Lista de componentes interconectados Descripción estructural Es la forma de interconectar en VHDL módulos complejos, subsistemas o IP cores Divide y vencerás En este caso representa una vista de alto nivel del sistema Diseño jerárquico 17 TP3 – ítem 2: Implementación en placa Componentes R = 1: Estado inicial P1 = 1: Rota a la izquierda P2= 1: Encendidos 18 ¿Preguntas?