Introducciín LDH
de hardware
Noviembre 2009
Jorge Juan Chico
Departamento de Tecnología Electrónica
Universidad de Sevilla
Usted es libre de copiar, distribuir y comunicar públicamente la obra y de hacer obras derivadas siempre que
se cite la fuente y se respeten las condiciones de la licencia Attribution-Share alike de Creative Commons.
Puede consultar eltexto completo de la licencia en http://creativecommons.org/licenses/by-sa/3.0/
Lección 1. Contenidos
●
¿Qué es un LDH?
●
¿Para qué sirve?
●
Estructura de una descripción LDH
●
Tipos de descripción
–
–
Procedimientos
–
●
Asignación continua (combinacional)
Estructural: módulos y primitivas
Herramientas
2
¿Qué es un lenguaje de descripción de hardware (LDH)?
●
●
Es un lenguaje formal que sirve para describir la operación de circuitos
electrónicos.
Es similar a un lenguaje de programación pero con notables diferencias:
–
Las directivas representan operaciones concurrentes
–
Existen diferentes formas de describir una función
// Operación AND
// Operación AND
x = a & b;
x = a & b;
// Operación OR
// Operación OR
y =a | b;
y = a | b;
// Función
// Función
z = x & !y
z = x & !y
combinacional z = xy' + x'y
combinacional z = xy' + x'y
| !x & y;
| !x & y;
3
¿Para qué sirven los LDH?
●
Simulación
–
–
●
Permite simular la operación del circuito descrito mediante LDH
Permite asegurar la correcta operación del circuito antes de su fabricación
(implementación)
Síntesis automática–
Hay programas de síntesis automática que permiten obtener una
implementación de un circuito a partir de su descripción en LDH
–
Equivalente a la “compilación” en el software
4
Ejemplos de LDH
●
VHDL
–
–
Sintaxis más compleja
–
●
Sintaxis parecida al lenguaje ADA
Gran número de tipos de datos
Verilog
–
Sintaxis parecida al lenguaje C
–Sintaxis más simple
–
Número de tipos de datos reducido
5
Estructura de una descripción LDH
●
Declaración del módulo
–
–
●
Nombre del módulo
Definición de entradas y salidas
Declaración de señales
–
●
Nombres y tipos de señales internas
Descripción del diseño
–
Estructuras de procesamiento
–
Directivas del simulador
–
Directivas del preprocesador (definiciones, etc.)
`timescale 1ns / 1ps
`timescale 1ns / 1ps
//
//
//
//
//
//
Módulo: mayoria
Módulo: mayoria
Descripción: función mayoría
Descripción: función mayoría
f = ab + bc + ac
f = ab + bc + ac
module mayoria(
module mayoria(
input a,
input a,
input b,
input b,
input c,
input c,
output f
output f
);
);
assign f = a&b | b&c | a&c;
assign f = a&b | b&c | a&c;endmodule
endmodule
// mayoria
// mayoria
6
Tipos de descripciones
●
Funcional (asignación continua)
–
–
●
Representa funciones (circuitos) combinacionales
Se asigna el valor definido constantemente
Procedimental
–
Los valores asignados se describen mediante un procedimiento
–
El procedimiento se ejecuta ante el cambio de ciertas señales (lista de
sensibilidad)–
Pueden representar funciones (circuitos) combinacionales o secuenciales
–
Pueden emplearse estructuras de control
●
–
●
ifelse, case, for, while, ...
En general esta descripción es la más fácil de escribir
Estructural
–
Describe la interconexión de módulos y primitivas lógica
–
Equivalente al esquema del circuito
7
Tipos de descripciones
`timescale 1ns /1ps
`timescale 1ns / 1ps
// Módulo: mayoria
// Módulo: mayoria
// Descripción: función mayoría
// Descripción: función mayoría
// f = ab + bc + ac
// f = ab + bc + ac
module mayoria(input a, input b, input c, output f);
module mayoria(input a, input b, input c, output f);
always @(a or b or c)
always @(a or b or c)
if(a == 1)
if(a == 1)
if(b == 1 || c == 1) wire out1, out2,...
Regístrate para leer el documento completo.