Verilog Lenguaje de Descripción de Hardware. Descripción por Módulos Los módulos se pueden ver como cajas negras. E
Views 145 Downloads 0 File size 92KB
Verilog Lenguaje de Descripción de Hardware.
Descripción por Módulos Los módulos se pueden ver como cajas negras.
E1 E2 E3 E4
Módulo
S1 S2 S3
E1 E2
Módulo 2
Módulo 4
Módulo1 E3 E4
Módulo 3
S
Describir un Módulo module Uno (E1, E2, E3, E4, S)
E1 E2 E3 E4
input E1; input E2; input E3; input E4; output S; . . endmodule
S
module Dos (E, S) input [O:3] E; output S; . . endmodule
Funcionalidad del Módulo La funcionalidad de cada módulo se puede describir de dos forma: BLOQUEANTE y NO BLOQUEANTE Bloqueante: orientado a eventos (p.e. sincronizado con el reloj). No Bloqueante: ejecución continua (circuito combinacional).
Módulo Bloqueante always @(x or y or …) begin
… end
@* Sensible al cambio de todas las variables
@(a or b or c …) Sensible al cambio de “a” o “b” o “c” o …
@(negedge clock) Sensible solo al canto de bajada de clock
@(posedge clock) Sensible solo al canto de subida de clock
Módulo no Bloqueante assign f = a && b; assign f = c; assign f[3] = ~a[0] & b[1];
Para la asignación de circuitos combinacionales. Es conveniente usar este método de asignación cuando se requiere implementar circuitos combinacionales que no requieren sincronizar con el reloj.
Tipos de entradas y salidas input
: Entradas del módulo
output : Salidas del módulo inout
: Pueden cumplir la función de entrada y salida en un módulo input inout
Módulo
output
Tipos de Variables Son dos los principales tipos de variables: reg : Son de tipo registro y permiten almacenar un valor. wire : Es una red que permite la conexión de circuitos (un cable).
Otras variables de interés son integer, float y arreglos y memorias.
Loops y Condiciones (I) Verilog
C
if (…) else if (…) else (…)
if (…) else if (…) else (…)
case (a) 0: 1: … default: endcase
switch(a) { case 0: case 1: … default: }
for (i=0; i