Title: VHDL Alliance
1VHDLAlliance
2VHDL
Desarrollado para el Very High Speed Integrated
Circuits Program del gobierno de EEUU. Luego,
standard de la IEEE. Objetivos para el
lenguaje Permitir descripción de la estructura
de un diseño (descripción estructural). Especifica
r la funcionalidad usando estructuras similares a
las de lenguajes de programación familiares (Ada)
(descripción de comportamiento). Simulación de
los diseños. Permite describir un componente
mediante dos enfoques comportamiento y
estructura.
3Comportamiento vs Estructura
Comportamiento Enfoque caja negra Se
especifican las salidas en función de las
entradas. En una descripción jerárquica, las
hojas son descripciones de comportamiento. Ej
a2_y.vbe (compuerta AND de dos entradas)
Estructura Enfoque caja blanca Se especifica la
manera de interconectar los componentes que
forman el diseño. En una descripción jerárquica
los nodos internos especifican estructura. Ej
mux4.vst (multiplexor de 4 a 1 de 1 bit de ancho).
4Tipos de Datos
Tipos de datos escalares (númericos, enumerados,
algunos predefinidos) y compuestos (arreglos y
records). Para nuestro trabajo nos vamos a
manejar con los siguientes tipos BIT type BIT
is (0, 1) BIT_VECTOR type BIT_VECTOR is
array ( range ) of BIT Donde el rango se
especifica de la siguiente manera range
simple_expression direction simple_expression dire
ction to downto Ej Entrada_ALU
BIT_VECTOR (0 to 5) Salida_ALU BIT_VECTOR (8
downto 3)
5Describiendo comportamiento
Entity componente is generic( declaraciones
genéricas ) port( declaraciones de
ports ) End componente Architecture
comportamiento of componente is Begin descripción
de comportamiento End comportamiento
6Ejemplo a2_y.vbe
ENTITY a2_y IS GENERIC ( CONSTANT area
NATURAL 1008 -- area CONSTANT cin_i0
NATURAL 39 -- cin_i0 CONSTANT tpll_i0
NATURAL 1244 -- tpll_i0 CONSTANT rdown_i0
NATURAL 2048 -- rdown_i0 CONSTANT
tphh_i0 NATURAL 1122 -- tphh_i0
CONSTANT rup_i0 NATURAL 1848 -- rup_i0
CONSTANT cin_i1 NATURAL 39 -- cin_i1
CONSTANT tpll_i1 NATURAL 1319 -- tpll_i1
CONSTANT rdown_i1 NATURAL 2048 --
rdown_i1 CONSTANT tphh_i1 NATURAL
1029 -- tphh_i1 CONSTANT rup_i1 NATURAL
1848 -- rup_i1 ) Sigue en la próxima
transparencia
7Ejemplo a2_y.vbe
PORT ( i0 in BIT -- i0 i1 in BIT -- i1
t out BIT -- t vdd in BIT -- vdd vss
in BIT -- vss ) END a2_y -- Architecture
Declaration ARCHITECTURE behaviour_data_flow OF
a2_y IS BEGIN ASSERT ((vdd and not (vss))
'1') REPORT "power supply is missing on
a2_y" SEVERITY WARNING t lt (i0 and i1) END
8VHDL - Especificando estructura
- Definir interfaz del componente.
- Entity identifier is
- entity_header
- entity_declarative_part
- end identifier
- entity_header
- generic_clause
- port_clause
- generic_clause generic (generic_list)
- port_clause port( port_list)
- Cada elemento del generic_list es de la forma
- constant identifier_list in
subtype_indication expression - Cada elemento del port_list es de la forma
- signal identifier_list mode
subtype_indication bus expression
9Ejemplo
Entity alu1 is port( a in bit b in
bit carry_in in bit res out
bit carry_out out bit vdd, vss in
bit) end alu1 alu1 será una entidad con tres
puertos de entrada de un bit cada uno (a, b,
carry_in) , y dos puertos de salida (res,
carry_out) de un bit cada uno, además de las
señales de tierra y alimentación. Ahora, queda
declarar los componentes de nuestra entidad,
instanciarlos y definir su interconexión gt la
arquitectura de nuestro diseño.
Puertos de entrada
Puertos de salida
10Describiendo la arquitectura
architecture identifier of entity_name
is architecture_declarative_part begin architectur
e_statement_part end identifier En la parte
declarativa en general pondremos declaraciones de
señales internas o de componentes. signal_declarat
ion signal identifier_list
subtype_indication register bus
expr. component_declaration component
identifier generic_clause port_clause
end component En la parte de
comandos instanciaremos los componentes, de la
siguiente manera.
11Instanciando componentes
component_instatiation_statement label
component_name generic_map_aspect port_map_as
pect Ejemplo enable_gate nand3 port map ( a
gt en1, b gt en2, c gt int_req, y gt
interrupt) parameter_rom read_only_memory gener
ic_map (data_bits gt 16, addr_bits gt
8) port_map (en gt rom_sel, data gt param, addr
gt a (7 downto 0) Ahora, pasemos a un ejemplo
completo.... Construyamos un XOR usando
compuertas AND y NOT.
12XOR con AND, OR y NOT
A xor B (A and (not B)) or ((not A) and B)
13Diagrama del circuito
n1_y
a2_y
A
o2_y
B
14Alliance
Conjunto de herramientas para desarrollo y
validación de circuitos utilizando VHDL como
lenguaje. Disponible para Linux y Windows
Licencia GNU Provee muchas herramientas Asimut Ge
nlib Bsg Rage Mips_asm Etc... En esta primer
parte, vamos a utilizar la herramienta de
simulación Asimut.
15Asimut generalidades
Uso asimut opciones archivo_vhdl
archivo_patrón archivo_resultado Los archivos
VHDL pueden ser descripciones estructurales
(.vst) o de comportamiento (.vbe) Los componentes
referenciados por el archivo_vhdl se buscan
usando el siguiente orden Descripcion de
comportamiento (vbe) en el path
MBK_CATA_LIB. Descripcion estructural (vst) en el
directorio actual. Los resultado se escriben en
el directorio indicado por MBK_WORK_LIB Opciones
mas usadas -c solo compilar. OJO! Muchos
errores se detectan sólo al linkear. Ejemplo
asimut mi_xor prueba_mi_xor resultado_mi_xor
16Asimut Archivo Patrón
Son archivos que contienen las pruebas a realizar
sobre los componentes. Estructura in out
signal ltnombre_de_señalgt tipo_de_dato Begin ltn
ombre_patrongt ltlista de valoresgt . . End Donde
la ltlista de valoresgt puede contener caracteres
comodÃn (), valores fijos (1,0) o valores
a validar (?0).
17Asimut Archivo Patrón ejemplo
Prueba_mi_xor.pat in a B in b B out result
B begin 1 0 0 2 1 0 3 0 1 4 1
1 end