Professional Documents
Culture Documents
Universidad de Sevilla
INTRODUCCIN A
HD !ERIO"
Rev.7 (feb 2013)
Autor: Paulino Ruiz de Clavijo
Modificacione al te!to ori"inal:
#abel $%&ez' Alberto Molina ( )er"io Mart*n
2
#ndice
Introduccin a HDL Verilog
Bloque I: Diseo de circuitos combinacionales
Bloque II: Diseo de circuitos secuenciales
Bloque III: Simulacin y verificacin
Bloque IV: Implementacin
3
Introd$ccin
Verilog es un lenguae formal para describir e
implementar circuitos electrnicos!
"s similar a un lenguae de programacin imperativo:
formado por un conunto de sentencias que indican
como reali#ar una tarea!
$lgunas diferencias:
La mayor%a de las sentencias se eecutan concurrentemente
&ada sentencia corresponde a un bloque de circuito
4
%O&UE I
Dise'o de Circ$itos
Com(inacionales
5
%lo)$e I* #ndice
"structura general de una descripcin Verilog
'ipos de descripciones
Seales( puertos ")S y arrays
Sinta*is b+sica
6
Estr$ct$ra de descripciones !erilog
module mi_circuito (
input x, y,
input z,
output f1, f2
);
wire cable_interno;
reg variable_a
...
...
...
endmodule
Declaracin del mdulo con sus
entradas y salidas: input( output(
inout
Declaracin de seales y variables
que se utili#ar+n internamente en
la descripcin: ,ire( reg
Descripcin del mdulo! Hay
varias alternativas para reali#arla:
funcional( procedimental(
estructural
7
E+emplo* circ$ito votador
"*presin lgica:
z=ab+ac+bc
module votador (input a,b,c,output z);
assign z= (a & b) | (a & c) | (b & c);
endmodule
votador
a
b
c
z
8
Tipos de descripciones
Descripcin funcional
-odela circuitos combinaciones!
&onsiste en asignaciones de las salidas de manera continua
utili#ando assign!
'odas las sentencias assign se eecutan de manera concurrente!
module votador(input a,b,c, output z);
assign z = a&b | a&c | b&c;
endmodule
z=ab+ac+bc
9
Tipos de descripciones
Descripcin procedimental
.ermite el uso de estructuras de
control
La descripcin es algor%tmica(
igual que el soft,are
/acilita la creacin de funciones
compleas
Se basa en la sentencia al,ays
'odas las sentencias al,ays se
eecutan de forma concurrente
module votador(
input a,b,c,
output reg z)
always @(a,b,c)
if(a==1)
if(b==1 || c==1)
z=1;
ele
z=!;
ele
if(b==1 && c==1)
z=1;
ele
z=!;
endmodule
z=ab+ac+bc
10
Tipos de descripciones
Descripcin estructural
Se conectan mdulos que ya est+n
definidos previamente
Las puertas lgicas b+sicas ya est+n
predefinidas en Verilog 0and( nand(
or( nor( *or( *nor( not( buf( etc!1
"s muy 2til para la intercone*in de
los mdulos que se creen
3bserve que se utili#an ,ires para
conectar salidas y entradas de
puertas
module votador(
input a,b,c,
output z)
wire o"t1,o"t2,o"t#;
and and1(o"t1,a,b);
and and2(o"t2,b,c);
and and#(o"t#,a,c);
or or1(z,o"t1,o"t2,o"t#);
endmodule
or1
a
b
c
and1
and3
and2
#
out4
out5
out6
z=ab+ac+bc
Sinta*is puertas: $A+, intance-na&e(out.ut' in.ut)
11
Tipos de descripciones
'odas las sentencias assign y al,ays se eecutan de
manera concurrente!
La descripcin estructural se utili#a para la
intercone*in de los diferentes mdulos que se
creen!
Las descripciones estructurales conforman la erarqu%a
del sistema que se est+ diseando!
12
Tipos de descripciones
"emplo de descripcin de un /7LL8$DD"9 : bits a
partir de varios /7LL8$DD"9 de un bit
b! a!
!
cin
b1 a1
1
b2 a2
2
$% &bit
b# a#
#
co"t&
$%!
b! a!
!
co"t1 cin
$%1
b1 a1
1
co"t2
$%2
b2 a2
2
co"t#
$%#
b# a#
#
co"t&
13
Tipos de descripciones
.asos:
Descripcin de un mdulo para el /7LL8$DD"9 de
un bit!
Descripcin de un mdulo donde se utili#an : /7LL8
$DD"9 de un bit y se interconectan los cables de
los mdulos!
14
Tipos de descripciones
Descripcin funcional del /$ de un bit
$%
b a
cin co"t
module f"lladder(
in'"t a,
in'"t b,
in'"t cin,
o"t'"t ,
o"t'"t co"t);
assign = a ( b ( cin;
assign co"t = a & b | a & cin | b & cin;
endmodule
cin a b cout s
! ! ! ! !
! ! 1 ! 1
! 1 ! ! 1
! 1 1 1 !
1 ! ! ! 1
1 ! 1 1 !
1 1 ! 1 !
1 1 1 1 1
=abc
co"t=a)b + a)cin + b)cin
15
Tipos de descripciones
7nin de : /7LL8$DD"9: cone*in posicional!
module f"lladder&(
in'"t *#+!, a,
in'"t *#+!, b,
in'"t cin,
o"t'"t *#+!, ,
o"t'"t co"t&);
-ire co"t1,co"t2,co"t#;
f"lladder fa! (a*!,, b*!,, cin, *!,, co"t1);
f"lladder fa1 (a*1,, b*1,, co"t1, *1,, co"t2);
f"lladder fa2 (a*2,, b*2,, co"t2, *2,, co"t#);
f"lladder fa# (a*#,, b*#,, co"t#, *#,, co"t&);
endmodule
$%!
b! a!
!
co"t1 cin
$%1
b1 a1
1
co"t2
$%2
b2 a2
2
co"t#
$%#
b# a#
#
co"t&
16
Tipos de descripciones
7nin de : /7LL8$DD"9: cone*in nombrada!
module f"lladder&(
in'"t *#+!, a,
in'"t *#+!, b,
in'"t cin,
o"t'"t *#+!, ,
o"t'"t co"t&);
-ire co"t1,co"t2,co"t#;
f"lladder fa! (.a(a*!,), .b(b*!,), .cin(cin), .(*!,), .co"t(co"t1));
f"lladder fa1 (.a(a*1,), .b(b*1,), .cin(co"t1), .(*1,), .co"t(co"t2));
f"lladder fa2 (.a(a*2,), .b(b*2,), .cin(co"t2), .(*2,), .co"t(co"t#));
f"lladder fa# (.a(a*#,), .b(b*#,), .cin(co"t#), .(*#,), .co"t(co"t&));
endmodule
$%!
b! a!
!
co"t1 cin
$%1
b1 a1
1
co"t2
$%2
b2 a2
2
co"t#
$%#
b# a#
#
co"t&
17
Tipos de descripciones
Descripcin procedimental
module f"lladder&(
in'"t *#+!, a,
in'"t *#+!, b,
in'"t cin,
o"t'"t *#+!, ,
o"t'"t co"t&);
reg *&+!, re;
al-ay @(a,b,cin)
re = a + b + cin;
aign co"t=re*&,;
aign = re*#+!,;
endmodule
$ilin%:
&partan
'irte%
Altera:
Arria
()clone
&trati%
Actel:
*gloo
ProA&*(
&martFusion
Xilinx
Altera
Lattice
Actel
Otros
Cuota de mercado
100
Rec$rsos internos de $na 4,"A
"n general+ una FPGA contiene los siguientes recursos internos:
,ecursos l!gicos:
Slices+ agrupados en (L- (Configurable Logic
Blocks).
.emoria -,A. (Block ,A.).
.ultiplicadores empotrados.
,ecursos de intercone%i!n:
*ntercone%i!n programable.
-loques de entrada/salida *0- (Input/utput Blocks).
0tros recursos:
-1eres de relo2.
L!gica de escaneo de pines (boundary scan logic)
normalmente mediante cone%i!n 34AG (!oin "est
Action Group).
"n las siguientes diapositivas se ilustra la estructura de la 'irte%5
** de $ilin%.
101
Estr$ct$ra general de la 4,"A modelo
!irte/5II de 6ilin/
Gestin
reloj
BRAM
Multiplicadores
empotrados
IOB
Interconexin
programable
CLB
102
Estr$ct$ra general de la 4,"A modelo
!irte/5II de 6ilin/
(ada CLB de la 'irte%5**
permite generar
1unciones
combinacionales )
secuenciales.
(ontiene:
6 &lices
(one%ionado 7acia
los (L-8s vecinos
Una matri# de cone%i!n
que permite su cone%i!n
con el resto de elementos
de la FPGA.
103
Unidad (0sica de programacin* slice
(ada slice inclu)e b9sicamente:
: biestables ;.
: bloques de carry.
: bloques LU4
(Look-#p "able).
.ultiple%ores que permiten
di1erentes con1iguraciones
Los bloques LU4
&on programables (equivalen a una
,0. <=%<) ) pueden implementar
cualquier 1unci!n de 6 variables
Las dos LU4s del mismo slice se
pueden combinar para 1ormar
1unciones combinacionales de m9s
variables.
Los biestables ;
;ispone de Pr ) (l (con1igurables en
modo as>ncronos o s>ncronos)
Pueden traba2ar en modo latc7 o en
modo registro.
LUT Carr
LUT Carr
!R
CL
" C#
$
!R
CL
" C#
$
Virtex-II
104
Unidad (0sica de programacin* BRAM y
Multiplicador
(onectada a la red
general a travCs de 6
matrices de cone%i!n.
.ultiplicador:
(omplemento a :.
105
Unidad (0sica de programacin* IOB
*0-
Admiten di1erentes tipos de seDales:
;i1erencial (dos pads
consecutivos)
&ingle5ended
4res partes:
"ntrada
&alida
(ontrol de salida (triestado)
(ada parte tiene dos biestables
con1igurables como latc7 o registro.
(ada pin o pad puede con1igurarse
como entrada+ salida o bidireccional
La impedancia (o resistencia) de
salida se puede controlar digitalmente.
(ada : o 6 pads tiene un matri# de
cone%i!n que los conecta al con2unto.
Permite trans1erencias al doble de
velocidad ;;,.
106
Unidad (0sica de programacin*
Interconexin
La ma)or>a de las seDales se env>an por la red de l>neas
7ori#ontales ) verticales a la que los di1erentes (L-+ *0-+ etc+
tienen acceso a travCs de la matri# de intercone%i!n programable.
107
Unidad (0sica de programacin*
Interconexin
Long lines
-idireccionales
:6 7ori#ontales por cada 1ila ) columna
Abarcan toda la FPGA
Ee% lines
Unidireccionales
<:F por cada 1ila ) columna.
(onectan un bloque con su tercero o se%to
;ouble lines
Unidireccionales
6F por cada 1ila ) columna
(onectan un bloque con su contiguo o al
siguiente.
;irect connect lines
(onectan un (L- con sus contiguos
(inclu)endo la diagonal ).
<= en total
Fast connect lines
*nternas al (L-+ salidas de las LU4s a las
entradas de otras LU4s
108
Unidad (0sica de programacin*
Programacin