Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad...
Transcript of Digital II – Ingeniería Electrónica · Dispositivos de lógica programable. Mayor flexibilidad...
VHDLVHDL
VVery ery HHigh speed integrated circuit igh speed integrated circuit HHardware ardware DDescription escription LLanguageanguage
Digital II – Ingeniería Electrónica
Rosa CortiRosa Corti
Contenido
Dispositivos FPGALenguaje VHDL: Evolución y característicasUnidades de diseño básicas: Entidad y ArquitecturaSeñales en VHDLTipos de datos – Bibliotecas usualesDescripción de circuitos combinacionales
Sentencias de asignación concurrente Ejemplos
Descripción de circuitos secuencialesEl bloque ProcessRepresentación de la señal de relojSentencias algorítmicasEjemplos
La Ley de MOORE
“ El número de transistores en un circuito integrado se podrá duplicar cada dos años”
3
Dispositivos de lógica programable.
Mayor flexibilidad
10/09/2010 4
El usuario configura un dispositivo standard.
Personalización independiente de la fábrica
Entradas
Salidas
DESVENTAJA
Se desperdician recursos de pastilla
FPGA: ¿ Cuál es la innovación introducida ??
Arquitectura extremadamente flexible de tecnología SRAM
Reprogramación simple y rápida en circuito Bloques lógicos programables
(CLB, LE)
Bloques I/O programables
Interconexión programable
10/09/2010 5
FPGA: ¿ Cómo cambiar la lógica ?
PLD convencionales
LUT´s
FPGA10/09/2010 6
Elementos básicos de la FPGA
Celdas o bloques lógicosLUT (Look Up Table) MultiplexorRegistro
10/09/2010 7
Configuración de una FPGA:
BITSTREAM Los bits permanecen en el dispositivo que se configura
Un bit de configuración controla un switch de conexión o un bit de lógica
8
Programación de un dispositivo
µP FPGA
Se cambian las conexiones y las funciones lógicas
Se cambian las instrucciones
Cambia el Software Cambia el Hardware
10/09/2010 9
Evolución de las Arquitecturas
Virtex II y Virtex II Pro Spartan 2 y Virtex
Fuente: Publicaciones de la empresa Xilinx.10/09/2010 10
FPGAs basadas en SRAM
1. Dispositivo de lógica programable estándar muy flexible
2. Personalizable por el usuario con ambientes EDA
programación en campo3. Arquitectura basada en SRAM
Pierden su configuración al cesar la energía4. Volátiles
Otras característicasOtras tecnologías de fabricación
10/09/2010 11
Datos generales sobre FPGA´s
Algunas aplicaciones
Guitarras Gibson – sonido digitalVehículos de exploración de Marte (NASA)Módulo de control de Williams F1Misiles Tomahawk
XilinxAlteraAtmel
LatticeCypressActelQuicklogic
AlgunosFabricantes
Costo de los dispositivos
Desde menos de 10 dólares a varios cientos, dependiendo de las características, aún en la misma familia de dispositivos.
12
Nivel RTL: Ingreso del diseño
Descripción esquemática Descripción VHDL
Descripción mixta10/09/2010 13
Diseño digital
CI de gran nivel de integración
Nuevas metodologías para manejar la complejidad creciente de los diseños
Un lenguaje permite la edición más rápida y sencilla
Una descripción con esquemas resulta más fácil de entender10/09/2010 14
Diseño digital
Lenguajes de Descripción de Hardware (HDL)
Permiten descripciones de alto nivel
La edición es rápida y sencilla
Soportados por herramientas EDA
Las herramientas EDA permitenintegrar distintos estilos de diseño
10/09/2010 15
VHDL: Antecedentes históricos
Necesidad de estandarizar los diseños
DoD +IEEE Patrocinan el desarrollo en los 80´s
VHDL-87Es estándar de IEEE en 1987
VHDL-93El estándar se amplía en 1993
VHDL-01Modificaciones menores en 2001
Existen otros HDL populares como ABEL y VERILOG10/09/2010 16
VHDL: Evolución
Se inicia como un leguaje de modelado y especificación.
DocumentaciónLigado a actividades de
Simulación
Luego se incorporan herramientas de síntesis capaces de manejar este tipo de descripciones
Ambientes integrados de diseño10/09/2010 17
VHDL: Síntesis en FPGA
FPGA Ambientes CAD
SíntesisAtraviesa todos los niveles de abstracción de la descripción desde el más alto al más bajo
VHDL
Es un lenguaje para el modelado, simulación lógica dirigida por eventos y síntesis de sistemas de Hardware
10/09/2010 18
Flujo de diseño VHDL orientado a FPGA
Análisis Código Síntesis Simulaciónfuncional
Mapeo, rutasy ubicación
Simulación post PAR
Bitstream
10/09/2010 19
Programación de un dispositivo
µP FPGA
Se cambian las conexiones y las funciones lógicas
Se cambian las instrucciones
Cambia el Software Cambia el Hardware
10/09/2010 20
VHDL VHDL
Construcciones bConstrucciones báásicassicas
VHDL: Unidades de diseño básicas
10/09/2010 22
Componentes
DispositivoVHDLEntidad Arquitectura
Descripción comportamental
Declaración de I/O
Caja negra Caja blanca
VHDL: Unidades de diseño básicas
10/09/2010 23
Diseño VHDL Entidad
Arquitectura
Archivo de texto
library IEEE;use IEEE.std_logic_1164.all;entity PuertaAnd is
port ( A, B:in std_logic;C: out std_logic );
end PuertaAnd;architecture arch_flu of PuertaAnd isbeginC <= A and B;end arch_flu;
AND
Estructura de un diseño VHDL: Entidad
library IEEE;use IEEE.std_logic_1164.all;
entity PuertaAnd isport (A, B:in std_logic;
C: out std_logic );end PuertaAnd;
Declaración de bibliotecasVisibilidad de paquetes
Declaración de puertos
INTERFAZ
Da nombre al módulo y define su conexión con el exterior
10/09/2010 24
Bibliotecas y unidades de diseño
Modelo VHDL
Bibliotecas VHDL
10/09/2010 25
Colecciones de unidades de diseño
Compuesto por unidades de diseño
Secciones mínimas de código compilables en forma independiente
Organizan el códigoPromueven el reuso
Puertos de la entidad
port (nombre_señal : modo tipo_señal) ;
Modo Define cómo se lo utiliza
in: Entrada, se lee. No se le puede asignar valor.out: Salida, se le asigna valor. No se puede leer.inout: Entrada / Salida. CUIDADO !!buffer: Salida / Puede ser usado en el sistema (leído).
Define los valores y operaciones legalesTipo
10/09/2010 26
Objetos VHDL: señales
a
b
c
d
s
nd
xnc
Modelan hilos de un circuito
SEÑALES
10/09/2010 27
Objetos VHDL
Un objeto en VHDL es un elemento que contiene información de un tipo específico de
datos.SeñalesConstantesVariables
VHDL es un lenguaje fuertemente tipado.
10/09/2010 28
VHDL: Tipos de datos
Un tipo de datos define los valores legales y los operadores aplicables para los objetos de ese tipo.
Tipos de datos escalares Sus valores constituyen una unidad indivisible
Sus valores pueden dividirse en unidades atómicas más pequeñasTipos de datos compuestos
No hay tipos propios del lenguaje, existen tipos
Bibliotecas del sistema
predefinidosSe pueden definir de datos en forma sencilla
10/09/2010 29
VHDL: Tipos de datos
Tipos de datos predefinidos Biblioteca Standard (STD)
BITBOOLEANINTEGERREAL
Escalares Orientados a síntesis
Compuestos Bit_vector (n-1 downto 0)
Modela buses
Es un arreglo de n bits
10/09/2010 30
Datos predefinidos: Ejemplos
DeclaraciónSignal valor: integer range 0 to 255;
Asignaciónvalor <= 128;
DeclaraciónSignal Bus1, Bus2: Bit_vector (7 downto 0);
Bus1 <= “11001010”;
Bus2 <= “11” & Bus1(6 downto 1);Asignación
Operador concatenación10/09/2010 31
Datos definidos por el usuaro: Ejemplos
Escalar enumerado
Type desplazamiento is (arriba, abajo, izquierda, derecha);Signal puntero: desplazamiento;Puntero <= arriba;
Compuesto
Type memoria is array ( 0 to 63) of std_logic_vector(15 downto 0);Signal MiMem: memoria;Mimem (15) <= (others => ‘1’);Mimen (7) <= “1111000011110000”;
10/09/2010 32
VHDL: Tipos de datos
Para representar situaciones reales en los circuitos, la IEEE definiódos tipos de datos multivaluados orientados a síntesis
Std_logic Modela líneas (escalar)
Std_logic_vector (n-1 downto 0) Modela buses (enumerado)
Los valores posibles en síntesis para un objeto de estos tipos son:
‘0’ valor bajo‘1’ valor alto‘Z’ alta impedancia
Biblioteca: IEEEPaquete: std_logic_1164
10/09/2010 33
VHDL: Descripción de un circuito
library IEEE;use IEEE.std_logic_1164.all;entity circuito is
port ( a, b, c, d: in std_logic;s: out std_logic );
end;architecture arch_flu of circuito issignal nc, nd, x: std_logic;beginnc <= not c;nc <= not c;x <= a and nc and nd ;s <= c or a;end arch_flu;
b
c s
nd
xnc
a
d
10/09/2010 34
Estructura de un diseño VHDL: Arquitectura
Se ligan arquitectura y entidad
architecture arch_flu of Circuito issignal nc, nd, x: std_logic;beginnc <= not c;nc <= not c;x <= a and nc and nd ;s <= c or a;end arch_flu;
Descripción de la funcionalidad del módulo
10/09/2010 35
Declaración objetos utilizados
b
c s
nd
xnc
a
d
VHDL VHDL
DescripciDescripcióón de circuitos n de circuitos combinacionalescombinacionales
Sentencias de asignación concurrente
Verificar el tipo de las señalesSi son vectores, verificar tamañoAsignaciones simples
10/09/2010 37
Asignaciones condicionales
x <= a and nc and nd ;
s <= a when c = “00” else d when c = “01” else e ;
Asignaciones con selección with (c or f) selects <= a when “100” ,
d when “010” ,e when others;
Descripción de multiplexores
10/09/2010 38
library IEEE;use IEEE.STD_LOGIC_1164.ALL;entity Multiplexor isport ( a , b : in std_logic_vector(1 downto 0);
sel : in std_logic;s : out std_logic_vector(1 downto 0));
end Multiplexor;architecture Behavioral of Multiplexor isbegin
s <= a when sel ='1' else b;end Behavioral;
10/09/2010 39
architecture Behavioral of Cod_7seg isbeginwith HEX select
LED <= "1111001" when "0001", --1"0100100" when "0010", --2"0110000" when "0011", --3"0011001" when "0100", --4"0010010" when "0101", --5"0000010" when "0110", --6"1111000" when "0111", --7"0000000" when "1000", --8"0010000" when "1001", --9"0001000" when "1010", --A"0000011" when "1011", --b"1000110" when "1100", --C"0100001" when "1101", --d"0000110" when "1110", --E"0001110" when "1111", --F"1000000" when others; --0
end;
Lógica negativa
library IEEE;use IEEE.STD_LOGIC_1164.ALL;
entity Cod_7seg isport ( HEX : in std_logic_vector( 3 downto 0);
LED:out in std_logic_vector( 6 downto 0));end;
Descripción de Codificadores
Descripción de una memoria ROM
10/09/2010 40
architecture behavioral of MROM istype mem is array ( 0 to 15) of std_logic_vector(7 downto 0); signal mi_Rom : mem; begin mi_Rom <= (
0 => "00000000", 1 => "00000001", 2 => "00000010", 3 => "00000011", 4 => "00000100", 5 => "11110000", 6 => "11110011", 7 => "11110111",
others => "11111111");
datos <= Mi_rom (CONV_INTEGER(dir));end behavioral;
library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all;
entity MROM is port ( dir : in std_logic_vector(3 downto 0); datos : out std_logic_vector(7 downto 0) );
end MROM;
Esquemático RTL
Tipo de datos del usuario
Modelado y simulación de la concurrencia
Se modela HARDWARE usando SOFTWARE
Concurrente Secuencial
Las puertas deben funcionar al mismo tiempo !!A
D
BC
S
L No se puede modelar y simular en un lenguaje convencional
10/09/2010 41
Caracterización de señales para simulación
Cada señal tiene asociado un “Driver”
Cola o tabla de transacciones que almacena la forma de onda
S
15 40 45 [ns]
Tiempo de simulación 0 El driver “proyecta” valores futuros de la señal en simulación
tiempo 0 15 40 45
valor 1 0 1 0Driver de S10/09/2010 42
VHDL: Simulación de la concurrencia
Se utilizan sentencias “concurrentes” para describir el comportamiento del circuito
Estas sentencias son sensibles a señales
(A, B, C y S)S <= A or B;Q <= C and S;
Los cambios en las señales “fuente” (eventos), disparan la “ejecución” de las sentencias concurrentes.
En simulación hay un soporte explícito de la concurrencia.10/09/2010 43
VHDL: Simulación de la concurrencia
Cada vez que se presenta un evento
library IEEE;use IEEE.STD_LOGIC_1164.ALL;entity SimCon isport ( a,b,c : in std_logic;
e,f : out std_logic);end ;architecture Behavioral of SimCon isbegine<= a and b;f<= b or c;end ;
Las señales se actualizan luego de que el simulador “procesa” una sentencia concurrente.
VHDL: Operadores usados en Digital II
Existe una gran cantidad de operadores definidos para
distintos tipos de datos
Lógicos
Relacionales
AritméticosSólo un subconjunto está
orientado a síntesisConcatenación
10/09/2010 45
VHDL: Operadores usados en Digital II
and, or, nor, xor, notLógicos
Definidos para: bit, bit_vector, std_logic, std_logic_vector, boolean
Los operandos deben ser del mismo tipo y tener la misma cantidad de bits
Ejemplos
signal A, B, C, D: std_logic_vector (7 downto 0);A <= “11001010”;B <=“10011010”;C <= A or B;D <= A and B;
10/09/2010 46
VHDL: Operadores usados en Digital II
Relacionales= (igual) /= (distinto)< (menor) <= (menor o igual)> (mayor) >= (mayor o igual)
Definidos para: bit, bit_vector, std_logic, std_logic_vector, boolean, integer
Los operandos deben ser del mismo tipo y pueden tener distinta cantidad de bits
Las comparación de dos vectores, se realiza bit a bit alineando ambas tiras de dígitos a partir del MSB de cada una.
Cuidado !!!10/09/2010 47
VHDL: Operadores relacionales
Comparación de vectores de distinta cantidad de bits
signal A : std_logic_vector (7 downto 0);signal B : std_logic_vector (3 downto 0);A <= “00100100”;B <= “0110”
A > B ? NO !!
10/09/2010 48
VHDL: Operadores relacionales
Comparación de vectores
¿ Cómo se interpreta la tira de dígitos de std_logic_vector?
signal A : std_logic_vector (3 downto 0);A <= “1010”;
¿A es igual a 10 o a -6?
10/09/2010 49
Interpretación de std_logic_vector
La interpretación que se da a los datos std_logic_vector depende de los paquetes que se incluyan en el diseño
STD_LOGIC_ARITH
STD_LOGIC_UNSIGNED
STD_LOGIC_SIGNED
Desarrollados por Synopsis. Se distribuyen como parte de
la biblioteca IEEE.
Los incorporan muchos los ambientes de diseño
Actualmente constituyen un estándar10/09/2010 50
Interpretación de std_logic_vector
library IEEE; use IEEE.STD_LOGIC_1164.all;
use IEEE.STD_LOGIC_SIGNED.all;
use IEEE.STD_LOGIC_UNSIGNED.all;
STD_LOGIC_VECTOR se interpreta como entero en C2
STD_LOGIC_VECTOR se interpreta como entero sin signo10/09/2010 51
VHDL: Operadores de comparación
Ejemplo de comparación de vectores
signal A :std_logic_vector (3 downto 0);signal B :std_logic_vector (3 downto 0);signal COMP: boolean;A <= “0110”;B <= “1000”;COMP <= A > B; COMP verdadero si se
incluyó el paquete SIGNED
COMP será falso si se incluyó el paquete UNSIGNED
10/09/2010 52
VHDL: Comparador sin signo
library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity compara isport ( a : in std_logic_vector(3 downto 0);
b : in std_logic_vector(3 downto 0);mayor: out std_logic);
end compara;
architecture Behavioral of compara isbeginmayor <= '1' when a > b else '0';end Behavioral;
10/09/2010 53
VHDL: Comparador sin signo
Circuito RTL inferido por el ambiente
Simulación del modelo
10/09/2010 54
VHDL: Comparador en C2
library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_SIGNED.ALL;
entity comparaSig isport ( a : in std_logic_vector(3 downto 0);
b : in std_logic_vector(3 downto 0);mayor: out std_logic);
end comparaSig;
architecture Behavioral of comparaSig isbeginmayor <= '1' when a > b else '0';end Behavioral;
10/09/2010 55
VHDL: Comparador en C2
Simulación del modelo
10/09/2010 56
Circuito RTL inferido por el ambiente
VHDL: Operadores usados en Digital II
+ (suma) - (resta) Aritméticos
Definidos para datos enteros (integer)
Se pueden utilizar con vectores std_logic_vector
Se debe incluir el paquete correspondiente (SIGNED o UNSIGNED)
10/09/2010 57
VHDL: Operadores usados en Digital II
Concatenación (&)
Permite definir vectores a partir de líneas u otros vectores
signal A :std_logic_vector (3 downto 0);signal B :std_logic_vector (3 downto 0);signal C: std_logic_vector (5 downto 0);A <= “0110”;B <=“1000”;C <= A(3 downto 1) & B(2 downto 0); C será “011000”
10/09/2010 58
VHDL: Sumador / Restador en C2
library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_SIGNED.ALL;
entity SuRes isport ( a : in std_logic_vector(3 downto 0);
b : in std_logic_vector(3 downto 0);sub : in std_logic;
s : out std_logic_vector(4 downto 0));end;
architecture Behavioral of SuRes isbegins <= (a(3) & a) + b when sub = '0' else (a(3) & a) - b;end;
Se incluye el paquete SIGNED
Se previene OF definiendo la salida
con un bit más
Se completa formato con bit de signo
10/09/2010 59
VHDL: Sumador / Restador en C2
10/09/2010 60
VHDL: Sumador / Restador en C2
Simulación del modelo
Al trabajar con un bit más en la salida, se previene el sobreflujo
10/09/2010 61
VHDL: Sumadores/Restadores
De acuerdo con la representación de datos adoptada
Incluir el paquete que corresponde
Completar formato en forma adecuada
Si el tamaño de bus está acotado y se requiere detectar OF
Se debe agregar en la descripción del sumador
10/09/2010 62
Circuitos combinacionales y memoria implícita
Las salidas sólo dependen de las entradas, no se permite que:
La señal que se está asignando intervenga en la asignación:
s <= a when sel = ‘1’ else b;s <= a when sel = ‘1’ else s;s <= a when s = ‘1’ else b;
COMBINACIONAL
SECUENCIAL
Existan lazos combinacionales
COMBINACIONAL SECUENCIAL
a <= b or c;e <= d and a;
a <= b or c;b <= d and a;
10/09/2010 63
VHDL VHDL
DescripciDescripcióón de circuitos n de circuitos secuenciales sincrsecuenciales sincróónicosnicos
Circuitos secuenciales sincrónicos
Las salidas dependen del estado interno del sistema y, dependiendo del modelo, de las entradas.
MOORE
Interviene la señal de reloj6510/09/2010
Descripción de un elemento de memoria
library IEEE;use IEEE.STD_LOGIC.1164.ALL;entity FF isport ( entrada: in std_logic;
clk:in std_logic;salida: out std_logic);
end;architecture Behavioral of FF isbeginprocess (clk)beginif clk'event and clk = '1' then salida <= entrada ; end if;end process ;end;
10/09/2010 66
Simulación de un FFD
El simulador adecúa las ondas, respetando
el sincronismo
10/09/2010 67
El bloque process
process (clk)beginif clk'event and clk = '1‘then … ; end if;end process ;
En simulación, cada vez que cambia alguna de las señales
se ejecuta el bloque
Activación del bloque PROCESSLista de sensibilidad
Descripción del flanco activo de reloj
SIMULADOR:
El bloque es una sentencia concurrente
Las sentencias internas se ejecutan secuencialmente
10/09/2010 68
El bloque process
Es una construcción de un mayor de abstracción
Su uso está ligado a un tipo de descripción “ALGORITMICA”
Permite otros elementos sintácticos
CondicionalesSelecciónBucles
Están ligados a una descripción de más alto nivel10/09/2010 69
El bloque process
Sentencia condicional IF...THEN...ELSE
Esta estructura puede anidarse.if condición thensentencias
elsif condición thensentencias
elsesentencias
end if ;
Modela una selección jerárquica.
elsif y else son optativas. Si no se contemplan todas las posibilidades, se infiere
almacenamiento. 10/09/2010 70
El bloque process
Sentencia condicional IF...THEN...ELSE
process ( a, b, c )beginif a > b thenp <= a;elsif a > c then p <= c;elsif (a = c and c = b) thenp <= a;else p <= ‘0’;end if ;end process ;
p < = b when a > b elsec when a > c elsea when (a = c and c = b) else‘0’ ;
Con asignación “concurrente”
La lista sensible debe incluir todas las señales cuyo cambio es importante.
10/09/2010 71
El bloque process
case sel iswhen “10” = > s <= a;when “00” = > s <= b;when “01” => s <= c;when others = > s <= d;
end case ;
Sentencia de selección CASE
case expresión iswhen caso1 = >
instruccioneswhen caso2 = >
instrucciones
when others = >instrucciones
end case ;
La expresión de selección debe ser discreta.No puede haber casos duplicados.Se deben cubrir todas las opciones de selección.
10/09/2010 72
Descripción de un registro de desplazamiento
library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_unsigned.all;--Registro con reset sincrónico, carga paralela y --desplazamiento a la izquierda, prioridades en ese orden.
entity regis isport (
din: in STD_LOGIC_VECTOR (3 downto 0);clk: in STD_LOGIC;r, l, shl: in STD_LOGIC;sli: in STD_LOGIC;dout: out std_logic_vector (3 downto 0)
);end regis;
10/09/2010 73
Registro de desplazamiento: Continuación
architecture register_arch of regis isbeginprocess (clk)variable bout : std_logic_vector (3 downto 0);begin
if ( clk'event and clk = '1') then if r = ‘1’ then bout := (others => ‘0’);elsif l = ‘1’ then bout := din;elsif shl ='1' then bout := bout (2 downto 0) & sli;end if;end if;dout <= bout;end process;end register_arch;
Flanco ascendente del reloj.
Todas las señales de control son sincrónicas
Operador de concatenación
Local al proceso
10/09/2010 74
El bloque process y las variables
No tienen significado físico
Deben ser declaradas dentro del proceso y son locales a él.
Su asignación es inmediata pero secuencial, al estar en distintas sentencias en el proceso.
Deben tener un valor asignado antes de utilizarlas.
El orden de las sentencias es importante
a := b or c;d := e and a;
Variables vs. Señales
Señales Variables
Sintaxis destino<= fuente destino:= fuente
Utilidad Modelan nodos físicos del circuito
Representan almacenamiento
local
Visibilidad Global (comunicación entre procesos)
Local (dentro del proceso)
Comportamiento Se actualizan al avanzar el tiempo (suspensión proceso)
Se actualizan inmediatamente
Registro de desplazamiento: Continuación
10/09/2010 77
Descripción de un contador binario
library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_unsigned.all;-- Contador de 8 bits con reset asincrónico carga paralela y -- habilitación de cuenta, con prioridades en ese orden.-- La salida tc indica cuenta máxima.entity contador isport (
din: in STD_LOGIC_VECTOR (7 downto 0);clk: in STD_LOGIC;r, l, en: in STD_LOGIC;tc: out STD_LOGIC;cuenta: out std_logic_vector (7 downto 0)
);end contador;
10/09/2010 78
Contador binario: Continuación
architecture contador_arch of contador issignal bout : std_logic_vector (7 downto 0);beginprocess (clk, r)beginif r = ‘1' then bout <= (others => '0');elsif ( clk'event and clk = '1') then if l = '1' then bout <= din;elsif en = '1' then bout <= bout +1;end if;end if; end process;cuenta <= bout;tc <= '1' when bout = “11111111” else '0';end contador_arch;
El reset es asincrónico
En la misma arquitectura coexisten distintos estilos de descripción
10/09/2010 79
Contador binario: Continuación
Esquemático inferido por el ambiente
80