Top Banner
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)
63

Transpar Tema1a

Jun 10, 2015

Download

Technology

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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