Вы находитесь на странице: 1из 4

Instituto Tecnolgico de Costa Rica

Escuela de Ingeniera Electrnica

I Semestre 2007

Preparado por: Dr.-Ing. Paola Vega-Castillo

1. Lenguajes de Descripcin de Hardware


La creciente complejidad de diseo, as como consideraciones de costo de desarrollo
y tiempo de lanzamiento de productos han impulsado el desarrollo de las herramientas de
diseo electrnico automtico (EDA, Electronic Design Automation). Estas herramientas
asisten a los ingenieros en las diferentes etapas de los flujos de diseo. Uno de los
principales componentes que ha contribuido a complementar estas herramientas son los
lenguajes de descripcin de hardware (HDLs).
Los HDLs abrieron la posibilidad de describir sistemas digitales y ms
recientemente sistemas analgicos- considerando nicamente su funcionalidad y con ello, la
posibilidad de un diseo independiente de la tecnologa de fabricacin. De esta manera, los
HDLs reducen el tiempo de captura del diseo, implementacin y depuracin, lo que
redunda en una reduccin del costo de diseo y del tiempo de lanzamiento del producto al
mercado. Adicionalmente, las descripciones escritas con HDLs pueden ser modificadas y
reutilizadas para producir otro sistema, o bien mantenerse sin cambios y ser utiizadas para
producir el mismo sistema con otra tecnologa de fabricacin.
Los HDLs se crearon con la intencin de proveer una notacin formal para la
documentacin, simulacin, verificacin formal y sntesis, as como para facilitar el
mantenimiento, reusabilidad y actualizacin de los diseos digitales.
Los sistemas digitales pueden describirse con HDLs utilizando un enfoque
comportamental, de flujo de datos o estructural. Los primeros dos enfoques y/o una
combinacin de los dos se conoce como cdigo de nivel de transferencia de registros (RTL,
register transfer level). En algunos textos este nivel se conoce tambin como nivel
comportamental (behavioral) o cdigo arquitectnico (ARTL, architectural RTL). Por otra
parte, el enfoque estructural se conoce como cdigo estructural, puesto que es una lista
textual de compuertas y sus interconexiones. Puede pensarse que el cdigo estructural es
un archivo de texto describiendo un esquemtico.
Para implementar los diferentes enfoques de descripcin de hardware, el diseador
puede utilizar diferentes niveles de abstraccin dependiendo de los requerimientos
especficos:

Nivel de conmutadores (switch level), utilizado para describir el circuito en


trminos de transistores y cables
Nivel de compuertas (gate level), para describir el circuito en trminos de
compuertas lgicas y elementos de almacenamiento como flip-flops. Esta es una
descripcin textual del esquemtico.
Nivel de flujo de datos, que describe el circuito en trminos de flujo de datos entre
registros
Nivel algortmico o comportamental similar a un programa en un lenguaje de alto
nivel como C. Incluye instrucciones de alto nivel tales como lazos, comandos de
decisin y otros.

El nivel de abstraccin ms comn es el nivel de transferencia de registros (register


transfer level), para describir el circuito en trminos de registros y transferencias de vectores
entre registros, que es una combinacin entre el nivel de flujo de datos y el nivel algortmico.
1

Para los propsitos de este curso se utilizar el nivel de transferencia de registros, ya


que ste permite al diseador concentrarse en describir la funcionalidad del diseo, dejando
que las herramientas de sntesis resuelvan los detalles de implementacin. Estas
herramientas compilan la descripcin del diseo en una descripcin a nivel de compuertas
que es independiente de la tecnologa de fabricacin y puede usarse en etapas posteriores
del flujo.
Las descripciones algortmicas tambin pueden sintetizarse utilizando una
herramienta especial para este propsito, tal como Behavioral Compiler de Synopsys. Sin
embargo, la herramienta de sntesis ms popular, Design Compiler de Synopsys, puede
sintetizar solamente cdigo RTL.
La mayora de los sintetizadores actuales y los simuladores son capaces de utilizar
los dos lenguajes de descripcin de hardware ms difundidos, a saber, Verilog y VHDL.
Otros pueden incluso manejar descripciones escritas con una combinacin de ambos

Dominio
Estructural

Dominio
Comportamental

Dominio
Fsico
Figura 1. Diagrama Y mostrando los dominios de abstraccin
lenguajes y/o el nuevo lenguaje SystemVerilog, surgido de la fusin de ambos. En este
curso se utilizar Verilog.

Verilog
Inicialmente desarrollado en 1985, Verilog is es un HDL utilizado por los diseadores
digitales para capturar, modelar y probar diseos. Junto con VHDL, Verilog es el HDL ms
popular tanto en la industria como en la academia. Fue declarado un estndar de la IEEE
en 1995 (IEEE 1364-1995). Los recursos de dominio pblico de Verilog HDL estn bajo la
responsabilidad de la organizacin Open Verilog International (OVI).

Verilog fue desarrollado originalmente por Gateway Design y se mantuvo durante


varios aos como un lenguaje propietario. En 1989, Gateway Design Automation fue
adquirida por Cadence Desgin Systems, quien lo liber al dominio pblico en 1990.
Su sintaxis est basada en el lenguaje de programacin C.

VHDL
VHDL es el acrnimo de VHSIC HDL (Very High Speed Integrated Circuit Hardware
Description Language). Este HDL fue originalmente concebido para proveer una notacin
formal para descripcin y documentacin de hardware estndar e independiente de la
tecnologa de fabricacin. Fue desarrollado gracias a la cooperacin entre IBM, Texas
Instruments e Intermetrics a inicios de la dcada de 1980.
VHDL fue desarrollado para la Agencia de Proyectos Avanzados para la Defensa
(Defense Advanced Research Projects Agency, DARPA) del Departamento de Defensa de
los Estados Unidos. Fue aceptado como un estndar de la IEEE en 1987 (IEEE 10761987). Desde el inicio fue un lenguaje de dominio pblico, puesto que uno de sus propsitos
era la estandarizacin. Su sintaxis se basa en el lenguaje de programacin ADA.
A continuacin se muestran algunos ejemplos de cdigo en Verilog para los
diferentes niveles de abstraccin discutidos anteriormente.
// Cdigo Verilog a nivel de conmutadores para un inversor
module our_inverter (out, in);
//Declaracin del mdulo
output out;
// Declaracin de puertos
input in;
supply1 pwr;
// Declaracin de alimentacin y tierra
supply0 gnd;
pmos (out, pwr, in);
nmos (out, gnd, in);

//Instanciar transistores NMOS y PMOS

endmodule

// Cdigo Verilog a nivel estructural para un multiplexor 2 a 1


module mux (out, a, b, sel);
// Declaracin del mdulo
output out;
input a,b, sel;
wire sel_a, sel_b, sel_n;

//Declaration of internal wires

not I5 (sel_n, sel);


and I6 (sel_a, a, sel);
and I7 (sel_b, sel_n, b);
or I4 (out, sel_a, sel_b);

//Declaring the gates by instance names

endmodule
// Cdigo Verilog a nivel algortmico para un multiplexor 2 a 1
Module muxfunc (y, a, b, sel);
output y;
input a, b, sel;
3

assign y=muxfunct(sel, a, b)
function muxfunct;

//declaracin de funcin

input a, b , sel;
if (sel) muxfunct=b;
else muxfunct=a;
endfunction
endmodule

// Cdigo Verilog a nivel RTL para un multiplexor 2 a 1 (nfasis procedural)


module mux (y, a, b, sel);
module mux (y, a, b, sel);
output y;
output y;
input a, b, sel;
input a, b, sel;
reg y;
assign y= sel ? a : b;

endmodule

always @(sel or a or b)
if (sel)
y=a;
else
y=b;
endmodule

// Cdigo Verilog a nivel RTL para un multiplexor 2 a 1 (nfasis estructural)


module AOI (out, a, b ,c, d);
module mux (y, a, b, sel);
input a, b, c, d;
output y;
output out;
input a, b, sel;
reg s_not=~s;
assign out =~ ( (a & b) | (c & d) );
assign y=s_not & a + s & b
endmodule

endmodule

Вам также может понравиться