Verilog

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

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

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