Transpar Tema1a

63
UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA Diseño y Verificación de Sistemas Digitales Introducción a Verilog INTRODUCCIÓN A VERILOG Objetivos comprender el uso de un HDL en el diseño de sistemas digitales estudiar Verilog como Lenguaje de Descripción de Hardware (HDL)

Transcript of Transpar Tema1a

Page 1: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

INTRODUCCIÓN A VERILOG

Objetivos

comprender el uso de un HDL en el diseño de sistemas digitales

estudiar Verilog como Lenguaje de Descripción de Hardware (HDL)

Page 2: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

Bibliografía

1. J. Bhasker: “Verilog HDL synthesis: A practical primer”, Star Galaxy Publishing, 1998.

2. E. Villar y P. Sánchez: “Síntesis”, Capitulo 4 de L. Terés, Y. Torroja, S. Olcóz y E. Villar: “VHDL: Lenguaje estándar de diseño electrónico”, McGraw-Hill, 1998.

INTRODUCCIÓN A VERILOG

Page 3: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

Simulación Lógica

SÍNTESIS AL NIVEL DE TRANSFERENCIA ENTREREGISTROS

Arquitectura RT

Circuito Lógico

PosicionamientoInterconexión

SíntesisRT-Lógica

Implementación

Retroanotación

Simulación RT

Optimización aritméticaIdentificación de elementos de memoriaCodificación de tiposExtracción de las funciones lógicasMinimización Lógica

Page 4: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

NIVELES DE ABSTRACCIÓN

Señal

transición activa de la señal de relojSeñal

t

Simulación RT

Modelo de Computación: Tiempo discreto

Page 5: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

NIVELES DE ABSTRACCIÓN

Simulación LógicaSeñal

t

Señal

t

transición activa de la señal de reloj

Simulación RT

Modelo de Computación: eventos discretos

Simulación dirigida por eventos

Page 6: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

NIVELES DE ABSTRACCIÓN

Simulación Lógica

Señal

t

Señal

t

transición activa de la señal de reloj

Simulación RT

Señal

t

Simulación Lógica

retroanotada

transición activa de la señal de reloj

tiempo de‘set-up’

periodo de reloj - tiempo de ‘set-up’

camino crítico

ventana de comparación

corrección del diseño

valores compatibles

‘X’

‘1’

‘1’

Page 7: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

SISTEMA DIGITAL A NIVEL RT

Entradasde Control

Entradasde Datos

Salidasde Control

Señalesde Control

Señalesde Estatus

Salidasde Datos

Unidadde

Control

Unidadde

Datos

Page 8: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

SISTEMA DIGITAL A NIVEL RT

LógicaCombinacional

deControl

Registrode

Estado

reloj

resetset

Estadode Controlpróximo

Estadode Control

actual

Salidasde Control

Entradasde Control

Señalesde Control

Señalesde Estatus

LógicaCombinacional

y UnidadesOperacionales

Registrosde

Datos

reloj

resetset

Datospróximos

Valoresactuales en

registros

Salidasde Datos

Entradasde Datos

Page 9: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

simulación síntesis

0 ‘0’ lógico ‘0’ lógico

1 ‘1’ lógico ‘1’ lógico

z (?) tri-estadotri-estado

(‘don’t care’ en sentencias ‘case’)

x desconocido ‘don’t care’

VALORES LÓGICOS

Interpretación en modelado y síntesis

Page 10: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

MÓDULO

Entidad de diseño

Error

BpWWaitValid

Clear

Ejemplo

module Ejemplo (BpW, Error, Wait, Valid, Clear);

input Error, Wait, Valid, Clear;output BpW;...

endmodule

Page 11: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

TIPOS DE DATOS

Nodos de red (‘net data types’)

wire Ax; // línea de un ‘bit’wire [4:0] Dak; // agrupación de 5 líneas

wire

línea

tri

idéntico a ‘wire’ (sólo informa de múltiples drivers)

supply0 y supply1

‘0’ ‘1’

Page 12: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

TIPOS DE DATOS

Nodos de red (‘net data types’)

wire

Error

BpWWaitValid

Clear

module Ejemplo (BpW, Error, Wait, Valid, Clear);

input Error, Wait, Valid, Clear;output BpW;wire BpW;

assign BpW = Error&Wait;

endmodule

Ejemplo

Page 13: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

TIPOS DE DATOS

Nodos de red (‘net data types’)

múltiples ‘drivers’

Error

BpWWaitValid

Clear

module Ejemplo (BpW, Error, Wait, Valid, Clear);

input Error, Wait, Valid, Clear;output BpW;wire BpW;

assign BpW = Error&Wait;assign BpW = Valid | Clear;

endmodule

Error&Wait 0101Valid | Clear 0011 BpW 0xx1

Page 14: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

TIPOS DE DATOS

Nodos de red (‘net data types’)

wor

Error

BpWWaitValid

Clear

module Ejemplo (BpW, Error, Wait, Valid, Clear);

input Error, Wait, Valid, Clear;output BpW;wor BpW;

assign BpW = Error&Wait;assign BpW = Valid | Clear;

endmodule

Error&Wait 0101Valid | Clear 0011 BpW 0111

Page 15: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

TIPOS DE DATOS

Nodos de red (‘net data types’)

wor

Error

BpWWaitValid

Clear

module Ejemplo (BpW, Error, Wait, Valid, Clear);

input Error, Wait, Valid, Clear;output BpW;wor BpW;

assign BpW = Error&Wait;assign BpW = Valid | Clear;

endmodule

Page 16: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

TIPOS DE DATOS

Nodos de red (‘net data types’)

wand

Error

BpWWaitValid

Clear

module Ejemplo (BpW, Error, Wait, Valid, Clear);

input Error, Wait, Valid, Clear;output BpW;wand BpW;

assign BpW = Error&Wait;assign BpW = Valid | Clear;

endmodule

Error&Wait 0101Valid | Clear 0011 BpW 0001

Page 17: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

TIPOS DE DATOS

Nodos de red (‘net data types’)

wand

Error

BpWWaitValid

Clear

module Ejemplo (BpW, Error, Wait, Valid, Clear);

input Error, Wait, Valid, Clear;output BpW;wand BpW;

assign BpW = Error&Wait;assign BpW = Valid | Clear;

endmodule

Page 18: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

TIPOS DE DATOS

Registros

reg Ax; // registro de un ‘bit’reg [4:0] Dak; // registro de 5 ‘bits’

reg

integer

registros de hasta 32 ‘bits’ en complemento-2

la herramienta de síntesis debe sintetizar el tamaño mínimo

6

wire [1:5] Brq, Rbu;integer Arb;...Arb = Brq + Rbu;...

+

Brq

Rbu

Arb

5

5

Page 19: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

TIPOS DE DATOS

Constantes

30 -2

decimal simple

32 ‘bits’ en complemento-2

formato con base

2’b10 6’d-4 ’d-10

[size]’base valuebase=h,H,o,O,b,B,d,D

Page 20: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

TIPOS DE DATOS

Parámetros

constantes nominales

parameter RED = -1, GREEN = 2; // constantes decimales (32 bits en complemento-2)

parameter READY = 2’b01, BUSY = 2’b11, EXIT = 2’b10; // constantes de 2 ‘bits’

Page 21: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

DESCRIPCION ESTRUCTURAL

Page 22: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

DESCRIPCION PARAMETRIZABLE (0)

Page 23: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

DESCRIPCION PARAMETRIZABLE (1)

Page 24: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

SENTENCIAS DE ASIGNACIÓN

Asignación continua

assign

ErrorStop

Start

WaitValid

Clear

module Ejemplo (Stop, Start, Error, Wait, Valid, Clear);input Error, Wait, Valid, Clear;output Stop, Start;wire Stop, Start;

assign Stop = Error&Wait;assign Start = Valid | Clear;

endmodule

Ejemplo

sentencias

concurrentes

Page 25: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

SENTENCIAS DE ASIGNACIÓN

Asignación continua

retraso

ErrorStop

Start

WaitValid

Clear

module Ejemplo (Stop, Start, Error, Wait, Valid, Clear);input Error, Wait, Valid, Clear;output Stop, Start;wire Stop, Start;

assign #5 Stop = Error&Wait;assign #6 Start = Valid | Clear;

endmodule retrasos ignorados en síntesis

Page 26: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

SENTENCIAS DE ASIGNACIÓN

Asignación procesal

module Ejemplo (Preset, Count);input [0:2] Preset;output [3:0] Count;reg [3:0] Count;

always @ (Preset)begin

.

.

.

end

endmodule

sentencias

secuenciales

Page 27: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

SENTENCIAS DE ASIGNACIÓN

Asignación procesal

asignación bloqueante

module Ejemplo (Preset, Count);input [0:2] Preset;output [3:0] Count;reg [3:0] Count;

always @ (Preset) Count = Preset + 1;

endmodule

Preset[2]

Preset[1]

Preset[0]

Count[0]

Count[1]

Count[3]

Count[2]

Page 28: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

SENTENCIAS DE ASIGNACIÓN

Asignación procesal

asignación no-bloqueante

module Ejemplo (Preset, Count);input [0:2] Preset;output [3:0] Count;reg [3:0] Count;

always @ (Preset) Count <= Preset + 1;

endmodule

Preset[2]

Preset[1]

Preset[0]

Count[0]

Count[1]

Count[3]

Count[2]

Page 29: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

SENTENCIAS DE ASIGNACIÓN

Asignación procesal

las asignaciones dobles a un mismo objeto son un error

Count <= Preset + 1;...Count = Mask;

los retrasos se ignoran

#5 Count <= Preset + 1;...Count = #5 Mask;

retrasos ignorados en síntesis

Page 30: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

OPERADORES

Operadores lógicos

expresiones de conmutación

~ complemento

& and

| or

^ xor

module FullAdder (A, B, Carryin, Sum, Carryout);input A, B, Carryin;output Sum, Carryout;

assign Sum = (A ^ B) ^ Carryin;assign Carryout = (A & B) | (B & Carryin) | (A & Carryin);

endmodule

A

B

Carryin

Carryout

Sum

Page 31: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

OPERADORES

Operadores aritméticos

+, - signo

+ suma

- substracción

* multiplicación

/ división

% módulo

Page 32: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

OPERADORES

Operadores aritméticos

net, reg: operaciones sin signo

module UnsignedAdder (Arb, Bet, Lot);input [2:0] Arb, Bet;output [2:0] Lot;

assign Lot = Arb + Bet;

endmodule

+

Arb

Bet

Lot

3

3

3

Page 33: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

OPERADORES

Operadores aritméticos

integer: operaciones con signo

module SignedAdder (Arb, Bet, Lot);input [1:0] Arb, Bet;output [2:0] Lot;reg [2:0] Lot;

always @ (Arb or Bet)begin: addition

integer Arbint, Betint;

Arbint = - Arb;Betint = Bet;Lot = Arbint + Betint;

end

endmoduleBet

‘1’

Arb

+

Lot+

2

3 3

2

3

Page 34: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

OPERADORES

Operadores aritméticos

‘carry’ y ‘borrow’

module carryborrow (Arb, Bet, Lot);input [3:0] CdoBus;output [3:0] Sum;output [4:0] OneUp;output [3:0] ShortOneUp;output Bore;

assign OneUp = CdoBus + 1;assign ShortOneUp = CdoBus + 1;assign (Bore, Sum) = CdoBus – 2;

endmodule

// OneUp[4] lleva el ‘carry’// se pierde el ‘carry’// Bore lleva el ‘borrow’

Page 35: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

OPERADORES

Operadores relacionales

> mayor

< menor

<= menor o igual

>= mayor o igual

Page 36: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

OPERADORES

Operadores relacionales

net, reg: comparaciones sin signo

module GreatherThan (A, B, Z);input [3:0] A, B;output Z;

assign Z = A[1:0] > B[3:2];

endmodule

B

A

> Z

Page 37: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

OPERADORES

Operadores relacionales

integer: comparaciones con signo

module SignedGreatherThan (ArgA, ArgB, ResultZ);input [2:0] ArgA, ArgB;output ResultZ;reg ResultZ;integer ArgAInt, ArgBInt;

always @ (ArgA or ArgB)begin

ArgAInt = - ArgA;ArgBInt = - ArgB;ResultZ = ArgAInt > ArgBInt;

end

endmodule

‘1’

ArgB

‘1’

ArgA

+

>

+

ResultZ

Page 38: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

OPERADORES

Operadores relacionales

igualdad y desigualdad

module NotEquals (A, B, Z);input [0:3] A, B;output Z;reg Z;

always @ (A or B)begin: comparison

integer IntA, IntB;

IntA = A;IntB = B;Z = IntA !=IntB;

end

endmodule

= igual

!= distinto

A[0]

B[0]

Z

A[1]

B[1]A[2]

B[2]A[3]

B[3]

Page 39: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

OPERADORES

Operadores de desplazamiento

desplazamiento lógico constante

module ConstantShift (DataMux, Address);input [0:3] DataMux;output [0:5] Address;

assign Address = (~ DataMux) << 2;

endmodule

<< desplazamiento izquierda

>> desplazamiento derecha

DataMux[0] Address[0]

DataMux[1] Address[1]

DataMux[2] Address[2]

DataMux[3] Address[3]

Address[4]

Address[5]

Page 40: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

OPERADORES

Operadores de desplazamiento

desplazamiento lógico variable

module VariableShift (MemDataReg, Amount, InstrReg);input [0:2] MemDataReg;input [0:1] Amount;output [0:2] InstrReg;

assign InstrReg = MemDataReg >> Amount;

endmodule

MemDataReg[0]MemDataReg[1]MemDataReg[2] InstrReg[0

]

InstrReg[1]

InstrReg[2]

Amount[0]

Amount[1]

Page 41: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

OPERADORES

Operaciones con vectores

operaciones lógicas

module LogicalVectorOperations (A, B, C, Z);input [0:3] A, B, C;output [0:3] Z;

assign Z = (A & B) | C;

endmoduleC[0]

B[0]

A[0]

Z[0]

C[1]

B[1]

A[1]

Z[1]

C[2]

B[2]

A[2]

Z[2]

C[3]

B[3]

A[3]

Z[3]

Page 42: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

OPERADORES

Operaciones con vectores

selección de partes

module Selection (A, B, RegFile, ZCat);input [3:0] A, B, RegFile;output [3:0] ZCat;

assign ZCat[3] = A[2];assign ZCat[2:1] = B[3:2];assign ZCat[0] = RegFile[3];

endmodule

A[2]

B[3]

B[2]

RegFile[3]

ZCat[3]

ZCat[2]

ZCat[1]

ZCat[0]

Page 43: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

OPERADORES

Operaciones con vectores

concatenación

module Concatenation (A, B, RegFile, ZCat);input [3:0] A, B, RegFile;output [3:0] ZCat;

assign ZCat[3:0] = {A[2], B[3:2], RegFile[3]};

endmodule

A[2]

B[3]

B[2]

RegFile[3]

ZCat[3]

ZCat[2]

ZCat[1]

ZCat[0]

Page 44: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

OPERADORES

Operaciones con vectores

selección de ‘bit’ variable en fuente

module SourceVariableSelection (Data, Index, Dout);input [0:3] Data;input [1:2] Index;output Dout;

assign Dout = Data[Index];

endmodule

Data[0]

Data[1]

Data[2]

Data[3]

00

01

10

11

Dout

Index[0]Index[1]

Page 45: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

OPERADORES

Operaciones con vectores

selección de ‘bit’ variable en destino(no soportado por ISE)

module TargetVariable Selection (Mem, Store, Addr);input Store;input [1:3] Addr;output [7:0] Mem;

assign Mem[Addr] = Store;

endmodule

Mem[0]

Mem[1]

Mem[2]

Mem[3]

Mem[4]

Mem[5]

Mem[6]

Mem[7]

000

001

010

011

100

101

110

111

Store

Addr[0]Addr[1]Addr[2]

Page 46: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

OPERADORES

Expresión condicional

<condición> ? <expresión 1> : <expresión 2>

module ConditionalExpression (StartXM, ShiftVal, Reset, StopXM);input StartXM, ShiftVal, Reset;output StopXM;

assign StopXM = (! Reset) ? StartXM ^ ShiftVal : StartXM | ShiftVal;

endmodule

1

0

StartXM

ShiftVal

Reset

StopXM

Page 47: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

COMPORTAMIENTO COMBINACIONAL

descripción de comportamientocódigo secuencial

Sentencia ‘always’

module EvenParity (A, B, C, D, Z);input A, B, C, D;output Z;reg Z, Temp1, Temp2;

always @ (A or B or C or D)begin

Temp1 = A ^ B;Temp2 = C ^ D;Z = Temp1 ^ Temp2;

end

endmodule

ZABCD

Page 48: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

lista de sensibilidadlógica combinacional

Sentencia ‘always’

module EvenParity (A, B, C, D, Z);input A, B, C, D;output Z;reg Z;

always @ (A or B)begin

Z = A ^ B ^ C ^ D;end

endmodule

ZABCD

COMPORTAMIENTO COMBINACIONAL

Page 49: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

Condición

COMPORTAMIENTO COMBINACIONAL

module Condition (StartXM, ShiftVal, Reset, StopXM);input StartXM, ShiftVal, Reset;output StopXM;reg StopXM;

always @ (StartXM or ShiftVal or Reset)begin

if (Reset)StopXM = StartXM | ShiftVal;

elseStopXM = StartXM ^ ShiftVal;

end

endmodule

1

0

StartXM

ShiftVal

Reset

StopXM

Page 50: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

Selección

COMPORTAMIENTO COMBINACIONAL

module ALU (Op, A, B, Z);input [1:2] Op;input [0:1] A, B;output [0:1] Z;reg [0:1] Z;parameter ADD = 'b00,

SUB = 'b01,MUL = 'b10,AND = 'b11;

always @ (Op or A or B)begin

case (Op)ADD: Z = A + B;SUB: Z = A - B;MUL: Z = A * B;DIV: Z = A / B;

endcase

endmodule

A

Z

B

+/-

*

Op[1]Op[2]

00

01

10

11

Page 51: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

Selección

COMPORTAMIENTO COMBINACIONAL

module CaseExample (DayOfWeek, SleepTime);input [1:3] DayOfWeek;output [1:4] SleepTime;reg [1:4] SleepTime;parameter MON = 0, TUE = 1, WED = 2, THU = 3, FRI = 4, SAT = 5, SUN = 6;

always @ (DayOfWeek)begin

case (DayOfWeek)MON,TUE,WED,THU: SleepTime = 6;FRI : SleepTime = 8;SAT : SleepTime = 9;SUN : SleepTime = 7;default SlepTime = 10;

endcaseend

endmodule

000

001

010

011

100

101

110

111

DayOfWeek[1]DayOfWeek[2]DayOfWeek[3]

SleepTime[1]

SleepTime[2]

SleepTime[3]

SleepTime[4]

Page 52: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

Selección con ‘z’ como ‘don´t care’

COMPORTAMIENTO COMBINACIONAL

module CasezExample (ProgramCounter, DoCommand);input [0:3] ProgramCounter;output [0:1] DoCommand;reg [0:1] DoCommand;

always @ (ProgramCounter)begin

casez (ProgramCounter)4’bzzz1: DoCommand = 0;4’bzz10: DoCommand = 1;4’bz100: DoCommand = 2;4’b1000: DoCommand = 3;default DoCommand = 0;

endcaseend

endmodule

ProgramCounter[0]ProgramCounter[1]ProgramCounter[2]ProgramCounter[3]

DoCommand[0]

DoCommand[1]

Page 53: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

Selección con ‘z’ y ‘x’ como ‘don´t care’

COMPORTAMIENTO COMBINACIONAL

module CasexExample (ProgramCounter, DoCommand);input [0:3] ProgramCounter;output [0:1] DoCommand;reg [0:1] DoCommand;

always @ (ProgramCounter)begin

casex (ProgramCounter)4’bxxx1: DoCommand = 0;4’bzz10: DoCommand = 1;4’bz100: DoCommand = 2;4’b1000: DoCommand = 3;default DoCommand = 0;

endcaseend

endmodule

ProgramCounter[0]ProgramCounter[1]ProgramCounter[2]ProgramCounter[3]

DoCommand[0]

DoCommand[1]

Page 54: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

Orden de selección

COMPORTAMIENTO COMBINACIONAL

codificador de prioridad

module CasexExample (ProgramCounter, DoCommand);input [0:3] ProgramCounter;output [0:1] DoCommand;reg [0:1] DoCommand;

always @ (ProgramCounter)begin

casex (ProgramCounter)4’bxxx1: DoCommand = 0;4’bxx1x: DoCommand = 1;4’bx1xx: DoCommand = 2;4’b1xxx: DoCommand = 3;default DoCommand = 0;

endcaseend

endmoduleProgramCounter[0]

ProgramCounter[1]

DoCommand[0]

DoCommand[1]

ProgramCounter[2]

ProgramCounter[3]

Page 55: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

Orden de selección

COMPORTAMIENTO COMBINACIONAL

codificador de prioridad

module CasexExample (ProgramCounter, DoCommand);input [0:3] ProgramCounter;output [0:1] DoCommand;reg [0:1] DoCommand;

always @ (ProgramCounter)begin

if (ProgramCounter[3])DoCommand = 0;

else if (ProgramCounter[2])DoCommand = 1;

else if (ProgramCounter[1])DoCommand = 2;

else if (ProgramCounter[0])DoCommand = 3;

else DoCommand = 0;end

endmodule

ProgramCounter[0]

ProgramCounter[1]

DoCommand[0]

DoCommand[1]

ProgramCounter[2]

ProgramCounter[3]

Page 56: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

Lazos

COMPORTAMIENTO COMBINACIONAL

‘while’‘forever’‘repeat’

‘for’

no soportada en síntesis

no soportada en síntesis

no soportada en síntesis

Page 57: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

Lazos

COMPORTAMIENTO COMBINACIONAL

‘for’

module DeMultiplexer (Address, Data, Line);input [1:0] Address;input Data;output [3:0] Line;reg [3:0] Line;

integer J;

always @ (Address)for (J = 3; J >= 0; J = J – 1)

if (Address == J)Line[J] = Data;

elseLine[J] = 0;

endmodule

Address[1]Address[0] Line[3]

Line[2]

Line[1]

Line[0]Data

Page 58: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

Lazos

COMPORTAMIENTO COMBINACIONAL

‘for’

module DeMultiplexer (Address, Line);input [1:0] Address;output [3:0] Line;reg [3:0] Line;

integer J;

always @ (Address)if (Address == 3) Line[J] = Data; else Line[J] = 0;if (Address == 3) Line[J] = Data; else Line[J] = 0;if (Address == 3) Line[J] = Data; else Line[J] = 0;if (Address == 3) Line[J] = Data; else Line[J] = 0;

endmodule

Address[1]Address[0] Line[3]

Line[2]

Line[1]

Line[0]Data

Page 59: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

Condición

LÓGICA COMBINACIONAL

toda señal o variable o es asignada bajo cualquier condición de ejecución del proceso, o es utilizada después de ser asignada

module NonCombinationalLogic (A, B, C, Z);input A, B, C;output Z;reg Z;

always @ (A or B or C)begin: VAR_LABEL

reg D;

if (! A)Z = D;

elsebeginD = B & C;Z = 1;end

endendmodule

module NonCombinationalLogic (A, B, C, Z);input A, B, C;output Z;reg Z;

always @ (A or B or C)begin: VAR_LABEL

reg D;

D = B & C;if (! A)

Z = D;end

endmodule

Page 60: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

COMPORTAMIENTO COMBINACIONAL

module DeMultiplexer (Address, Data, Line);input [1:0] Address;input Data;output [3:0] Line;reg [3:0] Line;

integer J;

always @ (Address)for (J = 3; J >= 0; J = J – 1)

if (Address == J)Line[J] = Data;

endmodule

Condición

toda señal o variable o es asignada bajo cualquier condición de ejecución del proceso, o es utilizada después de ser asignada

Page 61: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

Condición

LÓGICA COMBINACIONAL

toda señal o variable o es asignada bajo cualquier condición de ejecución del proceso, o es utilizada después de ser asignada

module CombinationalLogic (A, B, C, Z);input A, B, C;output Z;reg Z;

always @ (A or B or C)begin: VAR_LABEL

reg D;

if (! A)Z = 1;

elsebeginD = B & C;Z = D;end

endendmodule

B

C

A

Z

Page 62: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

Condición

LÓGICA COMBINACIONAL

toda señal o variable o es asignada bajo cualquier condición de ejecución del proceso, o es utilizada después de ser asignada

module CombinationalLogic (A, B, C);input A, B, C;output Z;reg Z;

always @ (A or B or C)begin: VAR_LABEL

reg D;

D = B & C;if (! A)

Z = D;else

Z = 1;end

endmodule

B

C

A

Z

Page 63: Transpar Tema1a

UNIVERSIDAD DE CANTABRIA. GRUPO DE INGENIERÍA MICROELECTRÓNICA

Diseño y Verificación de Sistemas DigitalesIntroducción a Verilog

Tareas

LÓGICA COMBINACIONAL

encapsulado de lógica combinacional

module FunctionCall (XBC, DataIn);input [0:5] DataIn;output [0:2] XBC;reg [0:2] XBCTemp;

task CountOnes;input [0:5] A;output [0:2] B;integer K;begin

B = 0;for (K = 0; K <= 5; K = K+1)

if (A[K])B = B + 1;

end;endtask

always @ (DataIn)CountOnes(DataIn, XBCTemp);

assign XBC = XBCTemp;

endmodule+

+

+

DataIn[0]

DataIn[1]

DataIn[2]

DataIn[3]

DataIn[4]

DataIn[5]

XBC