Está en la página 1de 59

ELO211: Sistemas Digitales Toms Arredondo Vidal 1er Semestre 2006

Este material est basado en: textos y material de apoyo: Contemporary Logic Design 1st / 2nd edition. Gaetano Borriello and Randy Katz. Prentice Hall, 1994, 2005 material del curso ELO211 del Prof. Leopoldo Silva material en el sitio http://es.wikipedia.org
7: Combinacionales

7-Sistemas Combinacionales
7.1 Introduccin 7.2 Multiplexores, Demultiplexores, Decodificador 7.3 PLAs, PALs, ROMs 7.4 FPGAs 7.5 HDLs

7: Combinacionales

Introduccin: Componentes bsicos


Transistores se integraron en compuertas (1960s) Catlogos de compuertas comunes (1970s)
TI Logic Data Book listas de los tpicos paquetes de chips y sus caracterizaciones (retardos, consumo) paquetes tpicos en chips de 14 pins
6 inversores, 4 compuertas NANDS, 4 compuertas XOR

Cambios (rediseos) a estos diseos son difciles de hacer


Hay que reconectar partes o puede necesitar mas componentes se diseaba con compuertas extras en cada placa por si fuera necesario usarlas
7: Combinacionales 3

Introduccin: Bloques multi-uso


Hoy muy pocos de estas chips se utilizan Pero, bibliotecas de estas compuertas se usan para disear nuevos chips
se reutilizan las compuertas ya caracterizadas las compuertas no existen en inventario se crean a medida que se van necesitando

Hoy se usan componentes de lgica programable


se gana en flexibilidad tiempos mas cortos de diseo mas difcil de analizar en trminos de compuertas especificas se analiza usando bloques multi-uso mas grandes
7: Combinacionales 4

7-Sistemas Combinacionales
7.1 Introduccin 7.2 Multiplexores, Demultiplexores, Decodificadores 7.3 PLAs, PALs, ROMs 7.4 FPGAs 7.5 HDLs

7: Combinacionales

Mux/Demux
Se usan para conectar y rutear

Y Z

Muchos inputs a un output - multiplexor Un input a muchos outputs demultiplexor Se pueden usan para conectar entre diferentes fuentes y destinos
control control

multiplexor

demultiplexor

switch 4x4
7: Combinacionales 6

Mux y demux (cont'd)


Uso de multiplexor/demultiplexor en conexiones multi-punto (como en este sumador)
A0 Sa A1 MUX B0 B1 Sb mltiples fuentes de input

MUX

A Sum Ss

DEMUX S0 S1

mltiple destinos de output

7: Combinacionales

Multiplexores
Multiplexores: concepto general 2n data inputs, n inputs de control inputs, 1 output se usan para conectar 2n puntos a un de punto salida patrn de control binario indexa cual input se conecta al output I1 I0 A Z A Z
Z = A' I0 + A I1 0 1 I0 I1 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 0 1 0 0 1 1 1

forma funcional forma lgica dos formas alternativas para una tabla de verdad Mux 2:1

7: Combinacionales

Multiplexores (cont'd)
2:1 mux: 4:1 mux: 8:1 mux: Z = A'I0 + AI1 Z = A'B'I0 + A'BI1 + AB'I2 + ABI3 Z = A'B'C'I0 + A'B'CI1 + A'BC'I2 + A'BCI3 + AB'C'I4 + AB'CI5 + ABC'I6 + ABCI7
2 n -1 k=0

En general: Z =

(mkIk)

sumatoria de minterms para un 2n:1 Mux


I0 I1 I2 I3 4:1 mux A B Z

I0 I1

2:1 mux A

I0 I1 I2 I3 I4 I5 I6 I7

8:1 mux

A B C
7: Combinacionales

Implementacin de multiplexores usando compuertas


2:1 mux

4:1 mux

7: Combinacionales

10

Multiplexores en cascada
Se pueden implementar multiplexores mas grandes usando multiplexores mas pequeos en cascada
I0 I1 I2 I3 I4 I5 I6 I7 4:1 mux 8:1 mux 2:1 mux 4:1 mux Z implementacin alternativa I0 I1 I2 I3 A I4 I5 2:1 mux 2:1 mux 2:1 mux 2:1 mux C
7: Combinacionales

8:1 mux

B C

4:1 mux

seales de control B y C simultneamente seleccionan I6 una de I0, I1, I2, I3 y una de I4, I5, I6, I7 I7 seal de control A elige cual de los outputs de los muxs se envia a Z

A B

11

Multiplexores para implementar funciones


Un multiplexor 2n:1 puede implementar cualquiera funcin de n variables con las variables usadas como inputs de control y los inputs de datos con 0 o 1 bsicamente, una tabla de referencia Ejemplo: F(A,B,C) = m0 + m2 + m6 + m7 = A'B'C' + A'BC' + ABC' + ABC = A'B'C'(1) + A'B'C(0) + A'BC'(1) + A'BC(0) + AB'C'(0) + AB'C(0) + ABC'(1) + ABC(1)
1 0 1 0 0 0 1 1 0 1 2 3 4 8:1 MUX 5 6 7 S2 S1 S0 A B

Z F

Z = A'B'C'I0 + A'B'CI1 + A'BC'I2 + A'BCI3 + AB'C'I4 + AB'CI5 + ABC'I6 + ABCI7

7: Combinacionales

12

Multiplexores para implementar funciones


Un multiplexor 2n-1:1 puede implementar cualquier funcin de n variables con n-1 variables usadas como inputs de control y los inputs de datos con la ultima variable o su complemento Ejemplo: F(A,B,C) = m0 + m2 + m6 + m7 = A'B'C' + A'BC' + ABC' + ABC = A'B'(C') + A'B(C') + AB'(0) + AB(1)
1 0 1 0 0 0 1 1 0 1 2 3 4 8:1 MUX 5 6 7 S2 S1 S0 A B A 0 0 0 0 1 1 1 1 B 0 0 1 1 0 0 1 1 C 0 1 0 1 0 1 0 1 F 1 0 1 0 0 0 1 1

C' C' 0 1

C' C' 0 1

0 1 4:1 MUX 2 3 S1 S0 A B

7: Combinacionales

13

Multiplexores para implementar funciones


Generalizacin
n-1 variables de control una variable de datos I0 . . I1 . . . . . In-1 In . . . . 0 1 0 0 0
1 D 0 1 D' D D D A B C 14 7: Combinacionales 1 D 0 1 D D D D 0 1 2 3 4 8:1 MUX 5 6 7 S2 S1 S0

F 0 1 In 1 0 In' 1 1 1

cuatro posibles configuraciones de filas de la tabla de verdad se pueden expresar como una funcin de In

Ejemplo: G(A,B,C,D) se puede realizar con un MUX 8:1


elegir A,B,C como variables de control

A 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1

B 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1

C 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1

D 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

G 1 1 0 1 0 0 1 1 1 0 0 1 1 0 1 0

Actividad
Realizar F = BCD + ABC con un 4:1 multiplexor y un minimo numero de compuertas:
A 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 B 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 C 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 D 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 Z 0 0 1 0 0 0 0 0 0 0 1 0 1 1 0 0

0 when BC

D when BC A when BC 0 when BC

0 D A 0

0 1 4:1 MUX 2 3 S1 S0 B C

Z = BC(0) + BC(D) + BC(A) + BC(0)


7: Combinacionales

15

Demultiplexor/decodificador
Decodificador/demultiplexor: concepto general un input de datos, n inputs de control, 2n outputs inputs de control (llamado selects (S)) representan index binario de cual output se conecta el input input de datos tpicamente se llama enable (G)
1:2 Decoder: O0 = G S O1 = G S 2:4 Decoder: O0 = G S1 O1 = G S1 O2 = G S1 O3 = G S1 S0 S0 S0 S0 O0 O1 O2 O3 O4 O5 O6 O7 3:8 Decoder: = G S2 S1 S0 = G S2 S1 S0 = G S2 S1 S0 = G S2 S1 S0 = G S2 S1 S0 = G S2 S1 S0 = G S2 S1 S0 = G S2 S1 S0
7: Combinacionales 16

Implementacin de demultiplexores
decodificador 1:2
active-high enable G S O1 O0 active-low enable \G S O1 O0

decodificador 2:4
G active-high enable O0 O1 O2 O3 \G active-low enable O0 O1 O2 O3

S1 S0

S1 S0

7: Combinacionales

17

Demultiplexores para implementar funciones


Un decoder n:2n puede implementar cualquier funcin de n variables con las variables usadas como inputs de control los inputs de enable conectados a 1 los minterms sumados para formar la funcin
0 1 2 3 3:8 DEC 4 5 6 7 S2 S1 S0 A B C
7: Combinacionales 18

A'B'C' A'B'C A'BC' A'BC AB'C' AB'C ABC' ABC

demultiplexor genra minterms apropiados basados en las seales de control ("decodifica" seales de control)

Demultiplexores para implementar funciones


F1 = A'BC'D + A'B'CD + ABCD F2 = ABC'D' + ABC F3 = (A' + B' + C' + D')
0 1 2 3 4 5 6 4:16 7 DEC 8 9 10 11 12 13 14 15 A B C D A'B'C'D' A'B'C'D A'B'CD' A'B'CD A'BC'D' A'BC'D A'BCD' A'BCD AB'C'D' AB'C'D AB'CD' AB'CD ABC'D' ABC'D ABCD' ABCD

F1

Enable

F2

F3

7: Combinacionales

19

Decodificadores en cascada
decodificador 5:32 decodificador 1x2:4 decodificador 4x3:8
0 1 2 3:8 DEC3 4 5 6 7 S2 S1 S0 A'B'C'D'E' 0 1 2 3:8 DEC 3 4 5 6 7 S2 S1 S0 A'BC'DE'

0 2:4 DEC 1 2 S1 S0 3 A B

0 1 2 3:8 DEC3 4 5 6 7 S2 S1 S0 C D E

ABCDE

0 1 2 3:8 DEC 3 4 5 6 7 S2 S1 S0 C D E

AB'C'D'E'

AB'CDE

7: Combinacionales

20

7-Sistemas Combinacionales
7.1 Introduccin 7.2 Multiplexores, Demultiplexores, Decodificador 7.3 PLAs, PALs, ROMs 7.4 FPGAs 7.5 HDLs

7: Combinacionales

21

Programmable logic arrays


Bloque constructivo de lgica de muchas compuertas AND/OR en realidad se usan NOR o NAND "personalizado" al hacer/romper conexiones entre las compuertas diagrama de PLA para forma suma de productos
inputs

AND array

product terms

OR array

outputs
7: Combinacionales 22

PLAs: Concepto que permite implementacin


Trminos de productos son compartidos entre los outputs
ejemplo: F0 F1 F2 F3 = = = = A + A C' B' C' B' C B' C' + AB + AB + A input side: 1 = uncomplemented in term 0 = complemented in term = does not participate F2 1 0 0 1 0 F3 0 1 0 0 1 output side: 1 = term connected to output 0 = no connection to output reuso de terminos
7: Combinacionales 23

personality matrix product term AB B'C AC' B'C' A inputs A B 1 1 0 1 0 1 outputs F0 F1 0 1 0 0 0 1 1 0 1 0

C 1 0 0

Antes de programar
Todas las conexiones posibles estn disponibles antes de programar
en realidad, todas las AND y ORs son NANDs

7: Combinacionales

24

Durante programacin
Conexiones no deseadas se eliminan fuse (normalmente conectadas, se rompen esas no deseadas) anti-fuse (normalmente desconectadas, se hacen conexiones deseadas)
A B C

AB B'C AC' B'C' A

F0

F1

F2

F3

7: Combinacionales

25

Representaciones alternativas

Mas corta para no tener que dibujar todos los cable significa conexin esta presente y seal perpendicular es input a una compuerta
ejemplo: F0 = A B + A' B' F1 = C D' + C' D A B C D AB A'B' CD' C'D

AB+A'B' CD'+C'D
7: Combinacionales 26

PLA: ejemplo
Mltiples funciones usando A, B, C F1 = A B C full decoder as for memory address F2 = A + B + C bits stored in memory A B C F3 = A' B' C' A'B'C' F4 = A' + B' + C' A'B'C F5 = A xor B xor C A'BC' F6 = A xnor B xnor C
A'BC AB'C ABC' ABC A 0 0 0 0 1 1 1 1 B 0 0 1 1 0 0 1 1 C 0 1 0 1 0 1 0 1 F1 F2 0 0 0 1 0 1 0 1 0 1 0 1 0 1 1 1 F3 F4 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 F5 F6 0 0 1 1 1 1 0 0 1 1 0 0 0 0 1 1 AB'C'

F1 F2 F3 F4 F5 F6 7: Combinacionales

27

PALs y PLAs
Programmable logic array (PLA) lo que hemos visto hasta ahora arreglos AND y OR generales, sin restricciones Programmable array logic (PAL) topologa del arreglo OR es restringida (eg. 8, 4, 2 ORs, numero de inputs fijo para cada OR) plano de ORs es mas rpido y pequeo todos los trminos de los productos no se comparten entre los ouputs

una columna del arreglo OR solo tiene acceso a un subconjunto del los posibles productos

7: Combinacionales

28

Ejemplo: PALs y PLAs


Conversor de cdigo BCD a Gray
A 0 0 0 0 0 0 0 0 1 1 1 1 B 0 0 0 0 1 1 1 1 0 0 0 1 C 0 0 1 1 0 0 1 1 0 0 1 D 0 1 0 1 0 1 0 1 0 1 W 0 0 0 0 0 1 1 1 1 1 X 0 0 0 0 1 1 0 0 0 0 Y 0 0 1 1 1 1 1 1 0 0 Z 0 1 1 0 0 0 0 1 1 0

funciones minimizadas: W = A + BD + BC X = BC' Y=B+C Z = A'B'C'D + BCD + AD' + B'CD'

7: Combinacionales

29

Ejemplo: PALs y PLAs (cont)


Conversor de cdigo: PLA
funciones minimizadas:
A B C D A BD BC BC' B C A'B'C'D BCD AD' BCD' W X Y Z

W = A + BD + BC X = B C' Y=B+C Z = A'B'C'D + BCD + AD' + B'CD'

no es un buen candidato para implementacin en PLA ya que los trminos no son compartidos entre los outputs pero la implementacin es mucho mas compacta y regular que usando compuertas AND y OR discretas

7: Combinacionales

30

Ejemplo: PALs y PLAs (cont)


Conversor de cdigo: PAL
A B C D A BD BC 0 BC' 0 0 0 B C 0 0 A'B'C'D BCD AD' B'CD' W X Y Z 31

4 trminos de productos por cada compuerta OR

7: Combinacionales

Ejemplo: PALs y PLAs (cont)


Conversor de cdigo: implementacin con compuertas individuales NAND se pierde regularidad, mas difcil de entender mas difcil hacer cambios
A B D B C B C X W D B C D A \D \B C \D A B C

Y 7: Combinacionales

32

Ejemplo2: PALs y PLAs


Comparador AB vs CD
A 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 B 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 C 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 D 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 EQ 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 NE 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0 LT 0 1 1 1 0 0 1 1 0 0 0 1 0 0 0 0 GT 0 0 0 0 1 0 0 0 1 1 0 0 1 1 1 0 NE = AC + AC + BD + BD GT = AC + ABC + BCD 7: Combinacionales
EQ NE LT GT 33 A B C D A'B'C'D' A'BC'D ABCD AB'CD' AC' A'C B'D BD' A'B'D B'CD ABC BC'D'

funciones minimizadas: EQ = ABCD + ABCD + ABCD + ABCD LT = AC + ABD + BCD

Actividad
Mapear las funciones a un PLA: W = AB + AC + BC X = ABC + AB + AB Y = ABC + BC + BC
A B C

Y
34

7: Combinacionales

Actividad (cont)
9 trminos no caben en PLA de 7 trminos se puede usar teorema de consenso A B C a W para simplificar a: W = AB + AC 8 trminos no caben en PLA de 7 trminos observe que AB = ABC + ABC reescribir W para reutilizar trminos: W = ABC + ABC + AC Ahora cabe W = ABC + ABC + AC X = ABC + AB + AB Y = ABC + BC + BC Esto es mapeo de tecnologa manipular funciones lgicas para poder usar recursos disponibles

W = AB + AC + BC X = ABC + AB + AB Y = ABC + BC + BC

ABC ABC AC AB AB BC BC

Y
35

7: Combinacionales

Read-only memories (ROM)


Arreglo bidimensional de 1s y 0s entrada (fila) se llama palabra ("word) ancho de fila = word-size ndice es direccin ("address) direccin es input palabra seleccionada es output
n 2 -1 i ROM: organizacion interna decoder j 0 0 n-1 Address lineas de bits (normalmente subido a 1 a travs de resistor selectivamente conectado a zero por los switches controlados por las palabras) 7: Combinacionales 36 word[i] = 0011 word[j] = 1010 1 1 1 1 lneas de palabras (solo unas es activa decoder se usa por eso)

ROMs y lgica combinacional


Implementando lgica combinacional con un ROM (forma cannica de dos niveles)
F0 = A' B' C + A B' C' + A B' C F1 = A' B' C + A' B C' + A B C F2 = A' B' C' + A' B' C + A B' C' F3 = A' B C + A B' C' + A B C' A 0 0 0 0 1 1 1 1 B 0 0 1 1 0 0 1 1 C 0 1 0 1 0 1 0 1 F0 0 1 0 0 1 1 0 0 F1 0 1 1 0 0 0 0 1 F2 1 1 0 0 1 0 0 0 F3 0 0 0 1 1 0 1 0 ROM 8 words x 4 bits/word

A B C F0F1F2F3 address outputs block diagram


7: Combinacionales 37

truth table

Estructura de ROM
Similar a PLA pero con un arreglo AND completamente decodificado
Arreglo OR completamente flexible
n address lines inputs

decoder

2n word lines

memory array (2n words by m bits)


outputs m data lines
7: Combinacionales 38

ROM vs. PLA


ROM ventajoso cuando tiempo de diseo es corto (no hay que minimizar funciones de output) la mayora de combinaciones de input se necesitan (e.g., conversores de cdigo) no se comparten los productos problemas ROM tamao se duplica para cada input adicional no se pueden utilizar don't cares PLA ventajoso cuando hay herramientas para multi-output minimizacin hay pocas combinaciones nica de minterms muchos minterms son compartidos entre las funciones de output problemas PAL restricciones de fan-ins en plano OR

7: Combinacionales

39

Estructuras lgicas: ROM, PAL, PLA


ROM plano AND completo, plano OR general
barato (componente de alto volumen) puede implementar cualquiera funcin de n inputs velocidad media

PAL plano AND programable, plano OR fijo


costo intermedio puede implementar funciones con numero de trminos limitados alta velocidad (solo un plano programable)

PLA planos AND y OR programmables


mas caro (complejo en diseo, herramientas mas sofisticadas) puede implementar cualquiera funcin has un limite de trminos lento (dos planos programables)
7: Combinacionales 40

Estructuras lgicas: ROM, PAL, PLA


Difcil lograr una estructura regular (celda o cell) para la conexin arbitraria para conexiones entre diferentes tipos de compuertas requerimientos de eficiencia/velocidad field programmable gate arrays (FPGAs) usan ese tipo de estructuras programables multi-nivel multiplexores programables para conexiones tablas de referencia para funciones lgicas celdas multi-uso (utilizacin es lo importante) Se pueden usar mltiples niveles de PALs/PLAs/ROMs output es resultado intermedio se hace un input para ser usado en otra lgica
7: Combinacionales 41

7-Sistemas Combinacionales
7.1 Introduccin 7.2 Multiplexores, Demultiplexores, Decodificador 7.3 PLAs, PALs, ROMs 7.4 FPGAs 7.5 HDLs

7: Combinacionales

42

FPGA (Field Programmable Gate Arrays)


Dispositivos basados en arreglos bidimensionales de bloques lgicos y flip-flops Interconexiones entre bloques, funciones lgicas y de control son programables usando HDL Algunos tienen memoria y procesadores incorporados Algunos fabricantes proporcionan el cdigo HDL de microprocesadores de 16 y 32 bits, unidades multiplicacin y acumulacin para implementar diferentes aplicaciones (e.g. filtros digitales) Diferentes opciones para los bloques lgicos incluyen: pares de transistores, compuertas NAND de dos entradas, compuertas AND y XOR, multiplexores y tablas de bsqueda 7: Combinacionales

43

FPGA (Field Programmable Gate Arrays)


Ejemplo: celda basada en multiplexores

Esta celda es de 8 entradas y una salida implementa: f = (s0 + s1)(sAA0+sAA1)(s0 + s1)(sBB0+sBB1) Esta celda puede implementar todas las funciones de dos variables, todas las de tres con al menos unas sin 7: Combinacionales 44 complementar, muchas de cuatro y hasta algunas de ocho

FPGA (Field Programmable Gate Arrays)


Ejemplo: celda basada en tabla de bsqueda (LUT)

Esta celda es de 4 entradas y puede implementar cualquier funcin de cuatro variables Para su funcionamiento primero se graba la tabla de bsqueda con la tabla de verdad de la funcin, se direcciona usando el decodificador Una ves configurada, se usa el multiplexor con la combinacin de las 7: Combinacionales 45 variables de entrada y en la salida se obtiene el bit almacenado

FPGA (Field Programmable Gate Arrays)


Ejemplo: implementacin de funcin de cuatro variables usando celdas LUT de 3 variables: f = x2x3 + x1x2x3 + x2x3x4 + x1x2x4 Usando el Teorema de Shannon:

Finalmente:

7: Combinacionales

46

FPGA: Etapas de trabajo


Para trabajar con FPGAs es necesario ingresar el diseo usando esquemticos o usando un lenguaje HDL como Verilog o VHDL. Esta etapa es codificacin. Luego se compila y simula el diseo de la cual se puede verificar el diseo lgico y el flujo de datos Luego se ejecuta la fase de sntesis, que implementa el diseo en compuertas bsicas, minimizando las ecuaciones La prxima fase el mapeo tecnolgico, que implementa las ecuaciones con los elementos lgicos disponibles. Tambin se hacen las localicaciones de los componentes y los enrutamientos y conexiones entre los componentes (place and route) Se ejecutan simulaciones temporales usando el diseo final Finalmente se genera un archivo binario el cual se graba en el dispositivo.

7: Combinacionales

47

7-Sistemas Combinacionales
7.1 Introduccin 7.2 Multiplexores, Demultiplexores, Decodificador 7.3 PLAs, PALs, ROMs 7.4 FPGAs 7.5 HDLs

7: Combinacionales

48

HDLs (Hardware description languages)


Describen hardware en diferentes niveles de abstraccin Descripcin estructural

Descripcin de Comportamiento y Funcional

reemplazo textual para una esquemtica composicin jerrquica de mdulos desde elementos primitivos describe lo que hace un modulo no los componentes especficos la etapa de sntesis genera el circuito para el modulo circuito de prueba

Requerimientos para la simulacin

7: Combinacionales

49

HDLs

Abel (circa 1983) desarrollado por Data-I/O usado para PLUs principalmente para maquinas de estados ISP (circa 1977) proyecto de CMU simulacin, pero no sntesis Verilog (circa 1985) desarrollado por Gateway (absorvido por Cadence) similar a Pascal y C eficiente y facil de usar standard de IEEE VHDL (circa 1987) desarrollado por DoD de USA similar a Ada muy general pero complejo standard de IEEE
7: Combinacionales

50

Verilog
Permite descripcin estructurales y de comportamiento Estructural estructura explicita del circuito e.g., cada compuerta es instanciada y conectada a otras Comportamiento programa describe input/output del circuito pueden haber muchas implementaciones del mismo comportamiento e.g., diferentes implementaciones de una funcin Booleana

7: Combinacionales

51

Modelo Estructural
module xor_gate (out, a, b); input a, b; output out; wire abar, bbar, t1, t2; inverter inverter and_gate and_gate or_gate endmodule invA (abar, a); invB (bbar, b); and1 (t1, a, bbar); and2 (t2, b, abar); or1 (out, t1, t2);

7: Combinacionales

52

Modelo simple de comportamiento


Asignacin continua
module xor_gate input output reg (out, a, b); a, b; out; out;

registro de simulacin contiene valor de senal

assign #6 out = a ^ b; endmodule


retardo desde cambio en input hasta cambio en output

7: Combinacionales

53

Modelo simple de comportamiento


bloque always
module xor_gate input output reg (out, a, b); a, b; out; out;

always @(a or b) begin #6 out = a ^ b; end endmodule


especifica cuando se ejecuta el bloque ie. determinado por que seales

7: Combinacionales

54

Activando la simulacin usando un banco de prueba (testbench)


module testbench (x, y); output x, y; reg [1:0] cnt;
vector de 2-bits bloque inicial se ejecuta initial begin una vez al inicio de la cnt = 0; simulacin repeat (4) begin #10 cnt = cnt + 1; $display ("@ time=%d, x=%b, y=%b, cnt=%b", $time, x, y, cnt); end #10 $finish; imprimir a consola end

assign x = cnt[1]; assign y = cnt[0]; endmodule

directiva de detener simulacin


7: Combinacionales 55

Simulacin completa
Instanciar componente de estimulo y componente para probar circuito
x y a b z

test-bench

7: Combinacionales

56

Ejemplo comparador
module Compare1 (Equal, Alarger, Blarger, A, B); input A, B; output Equal, Alarger, Blarger; assign #5 Equal = (A & B) | (~A & ~B); assign #3 Alarger = (A & ~B); assign #3 Blarger = (~A & B); endmodule

7: Combinacionales

57

Modelo de comportamiento mas complejo


module life input output reg reg [7:0] reg [3:0] reg [3:0] (n0, n1, n2, n3, n4, n5, n6, n7, self, out); n0, n1, n2, n3, n4, n5, n6, n7, self; out; out; neighbors; count; i;

assign neighbors = {n7, n6, n5, n4, n3, n2, n1, n0}; always @(neighbors or self) begin count = 0; for (i = 0; i < 8; i = i+1) count = count + neighbors[i]; out = (count == 3); out = out | ((self == 1) & (count == 2)); end endmodule
7: Combinacionales 58

HDL vs lenguajes de programacin


Estructura de programa
instanciar mltiples componentes al mismo tiempo especifican interconexin de mdulos va esquemtica jerarqua de mdulos encapsulan bloques funcionales asignacin continua (lgica siempre calcula) retardos de propagacin (computacin toma tiempo) efectos temporales de seales es importante tamao explcitamente especificado - no hay estructuras dinmicas no hay punteros hardware es naturalmente paralelo asignaciones pueden ocurrir en paralelo (no solo secuencialmente) 7: Combinacionales

Asignacin

Estructuras de datos

Paralelismo

59

También podría gustarte