f. segura-quijano - c. quintero peña —— biblioteca de ... · c.la búsqueda e identificación...

45
F. Segura-Quijano - C. Quintero Peña —— BIBLIOTECA DE COMPONENTES

Upload: others

Post on 24-Aug-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: F. Segura-Quijano - C. Quintero Peña —— BIBLIOTECA DE ... · c.La búsqueda e identificación de contextos en donde se utiliza dicho componente es clara. d.El lenguaje disciplinar

F. Segura-Quijano - C. Quintero Peña——

BIBLIOTECA DE COMPONENTES

Page 2: F. Segura-Quijano - C. Quintero Peña —— BIBLIOTECA DE ... · c.La búsqueda e identificación de contextos en donde se utiliza dicho componente es clara. d.El lenguaje disciplinar

PUBLISHED BY UNIVERSIDAD DE LOS ANDES - COLOMBIA

This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives4.0 International License.February 12, 2019

Page 3: F. Segura-Quijano - C. Quintero Peña —— BIBLIOTECA DE ... · c.La búsqueda e identificación de contextos en donde se utiliza dicho componente es clara. d.El lenguaje disciplinar

Contenido

1 Introducción. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.1 Licenciamiento 5

1.2 Elementos de la biblioteca 5

1.3 Estructura directorio de trabajo 6

1.4 Nombre de señales 6

2 COMPONENTE COMBINACIONAL. Compuerta lógica AND. . . . . . 9

2.1 Compuerta lógica: AND (1) 92.1.1 Descripción del componente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.1.2 Símbolo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.1.3 Diagrama caja negra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.1.4 Funcionalidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.1.5 HDL: Caja negra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.1.6 Definición vectores de prueba . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.1.7 HDL: Vectores de prueba . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.1.8 Diagrama caja blanca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.1.9 HDL: Caja blanca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.1.10 HDL: bloques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.1.11 Simulación temporal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.1.12 Diagramas QUARTUS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.1.13 Resultados y lecciones aprendidas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

2.2 Compuerta lógica: AND (2) 16

3 COMPONENTE COMBINACIONAL. Sumador de 1 bit o FULLADDER.19

3.1 Sumador de 1 bit: FULLADDER (1) 193.1.1 Descripción del componente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

Page 4: F. Segura-Quijano - C. Quintero Peña —— BIBLIOTECA DE ... · c.La búsqueda e identificación de contextos en donde se utiliza dicho componente es clara. d.El lenguaje disciplinar

3.1.2 Símbolo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203.1.3 Diagrama caja negra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203.1.4 Funcionalidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203.1.5 HDL: Caja negra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213.1.6 Definición vectores de prueba . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213.1.7 HDL: Vectores de prueba . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223.1.8 Diagrama caja blanca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223.1.9 HDL: Caja blanca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233.1.10 HDL: bloques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243.1.11 Simulación temporal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243.1.12 Diagramas QUARTUS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243.1.13 Resultados y lecciones aprendidas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

3.2 Sumador de 1 bit: FULLADDER (2) 24

3.3 Sumador de 1 bit: FULLADDER (3) 26

3.4 Sumador de 1 bit: FULLADDER (4) 27

3.5 Sumador de 1 bit: FULLADDER (5) 29

4 Componentes combinacionales: bloques. . . . . . . . . . . . . . . . . . . . 31

4.1 MUX41 (1) 314.1.1 Descripción del componente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314.1.2 Símbolo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324.1.3 Diagrama caja negra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324.1.4 Funcionalidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324.1.5 HDL: Caja negra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334.1.6 Definición vectores de prueba . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344.1.7 HDL: Vectores de prueba . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344.1.8 Diagrama caja blanca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354.1.9 HDL: Caja blanca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354.1.10 HDL: bloques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354.1.11 Simulación temporal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364.1.12 Diagramas QUARTUS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364.1.13 Resultados y lecciones aprendidas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

4.2 MUX41 (2) 36

4.3 MUX41 (3) 37

4.4 MUX41 (4) 38

4.5 MUX41 (5) 38

4.6 MUX41 (6) 39

4.7 MUX41 (7) 40

4.8 MUX41 (8) 41

5 Componentes secuenciales: bloques. . . . . . . . . . . . . . . . . . . . . . . . 43

6 Sistemas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

F.Segura-Quijano y C.Quintero Peña

Page 5: F. Segura-Quijano - C. Quintero Peña —— BIBLIOTECA DE ... · c.La búsqueda e identificación de contextos en donde se utiliza dicho componente es clara. d.El lenguaje disciplinar

LicenciamientoElementos de la bibliotecaEstructura directorio de trabajoNombre de señales

1. Introducción.

ALBERT EINSTEIN

La formulación de un problema es másimportante que la solución.

En este capítulo se presentan algunas generalidades del lenguaje y de la metodología detrabajo.

1.1 LicenciamientoTodos los códigos desarrollados en Verilog para soportar esta librería de componentes están bajolicencia:

1 / * ######################################################################2 / / # G0B1T : HDL EXAMPLES. 2018 .3 / /######################################################################4 / / # C o p y r i g h t (C) 2018 . F . E . Segura−Qui j ano ( FES ) f s e g u r a @ u n i a n d e s . edu . co5 / / #6 / / # Th i s program i s f r e e s o f t w a r e : you can r e d i s t r i b u t e i t and / o r modify7 / / # i t unde r t h e t e r m s of t h e GNU G e n e r a l P u b l i c L i c e n s e as p u b l i s h e d by8 / / # t h e F ree S o f t w a r e Founda t ion , v e r s i o n 3 of t h e L i c e n s e .9 / / #

10 / / # Th i s program i s d i s t r i b u t e d i n t h e hope t h a t i t w i l l be u s e f u l ,11 / / # b u t WITHOUT ANY WARRANTY; w i t h o u t even t h e i m p l i e d w a r r a n t y o f12 / / # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See t h e13 / / # GNU G e n e r a l P u b l i c L i c e n s e f o r more d e t a i l s .14 / / #15 / / # You s h o u l d have r e c e i v e d a copy of t h e GNU G e n e r a l P u b l i c L i c e n s e16 / / # a l o n g wi th t h i s program . I f not , s e e < h t t p : / / www. gnu . o rg / l i c e n s e s / >17 / /#################################################################### * /

Todo el contenido de este trabajo está bajo licencia:

This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives4.0 International License.

1.2 Elementos de la bibliotecaPara la presentación de cada componente que conforma esta biblioteca se utiliza una plantillaque permite tener una documentación completa y estructurada de cada uno de ellos. El objetivo

Page 6: F. Segura-Quijano - C. Quintero Peña —— BIBLIOTECA DE ... · c.La búsqueda e identificación de contextos en donde se utiliza dicho componente es clara. d.El lenguaje disciplinar

Capítulo 1. Introducción.

final de esta biblioteca de componentes es identificar componentes genéricos que puedan serutilizados mas adelante en proyectos mas complejos. Los elementos que conforman la plantillason:

• Descripción del componente. Presenta restricciones, especificaciones y búsqueda eidentificación de contextos en donde se utiliza dicho componente.

• Símbolo. Presenta un símbolo para representar el componente y se basa en símbolos denaturaleza similar presentados en la literatura de componentes electrónicos.

• Diagrama de caja negra. Presenta un diagrama con todas las señales de entrada y salidacon sus correspondientes nombres estructurados (In/Out) y tamaños (bit/bus).

• Funcionalidad. Presenta una ecuación y/o Tabla de Verdad y/o macro-algoritmo segúnfuncionalidad del componente.

• HDL: Caja negra. Presenta códigos fuente.• Definición de vectores de prueba. Presenta una estrategia explícita y claramente definida

para la selección de vectores de prueba. Estos vectores permiten comprobar totalmente lafuncionalidad del componente.

• HDL: Vectores de prueba. Presenta códigos fuente.• Diagrama caja blanca. Presenta un diagrama de sub-componentes, señales e interconex-

iones.• HDL: Caja blanca. Presenta códigos fuente.• HDL: bloques. Presenta códigos fuente.• Simulación temporal. Presenta resultados de simulación para el componente.• Diagramas QUARTUS. Presenta diagramas obtenidos en la herramienta seleccionada:

Quartus.• Resultados y lecciones aprendidas. Presenta resultados o lecciones aprendidas para el

componente correspondiente.

1.3 Estructura directorio de trabajoPara la organización de los componentes se han creado cuatro directorios de trabajo así:

• 0COMBINATIONALGATES: Directorio que contiene componentes básicos basados encompuertas lógicas.

• 0COMBINATIONALBLOCKS: Directorio que contiene componentes combinacionales(FULLADDER, ADDER, MUX)

• 0SEQUENTIALBLOCKS: Directorio que contiene componentes secuenciales (Register,ShiftRegister)

• 0SYSTEMS: Directorio que contiene componentes o sistemas mas complejos (Multiplier,Parrallel2Serial, StonePaperScissors, WalkinhMeter)

Cada directorio de trabajo internamente tiene una estructura de la siguiente manera:• ./simulation/modelsim/TB_SYSTEM.vt: Archivo Verilog con vectores de prueba.• ./simulation/modelsim/TB_SYSTEM.do: Script para visualización de señales en el simu-

lador.• ./BB_SYSTEM.v: Archivo Verilog que contiene la caja negra del componente.• ./rtl/CC_ADDER.v: Archivo Verilog, CC representa que es un bloque combinacional.• ./rtl/SC_STATEMACHINE.v: Archivo Verilog, SC representa que es un bloque secuencial.

1.4 Nombre de señalesEn general todos los componentes buscan tener una estructura similar para nombrar sus señales,de manera que la identificación de posibles errores se hace más sencilla. Para señales donde se

F.Segura-Quijano y C.Quintero Peña

Page 7: F. Segura-Quijano - C. Quintero Peña —— BIBLIOTECA DE ... · c.La búsqueda e identificación de contextos en donde se utiliza dicho componente es clara. d.El lenguaje disciplinar

7

pueda identificar si su activación es altiva alta o baja se propone usar el siguiente sufijo: InLoW,InHigh, OutLow, OutHigh. (In corresponde a entradas, Out a salidas).

Algunos ejemplos de como se nombran señales se presentan a continuación:

Señales de control.• TB_SYSTEM_RESET_InHigh: Señal de vector de prueba (TB: test bench), entrada,

activa alta.• TB_SYSTEM_som_InLow: Señal de vector de prueba, entrada, activa baja.

Buses de datos.• CC_BLOQUE_nombreseñal_OutBUS• CC_BLOQUE_nombreseñal_InBUS

Señales generales con buses.• SC_BLOQUE_nombreseñal_OutBUS• CC_BLOQUE_nombreseñal_InBUS

Señales internas.• CC_ADDER_data_BUS_wire

F.Segura-Quijano y C.Quintero Peña

Page 8: F. Segura-Quijano - C. Quintero Peña —— BIBLIOTECA DE ... · c.La búsqueda e identificación de contextos en donde se utiliza dicho componente es clara. d.El lenguaje disciplinar
Page 9: F. Segura-Quijano - C. Quintero Peña —— BIBLIOTECA DE ... · c.La búsqueda e identificación de contextos en donde se utiliza dicho componente es clara. d.El lenguaje disciplinar

Compuerta lógica: AND (1)Descripción del componenteSímboloDiagrama caja negraFuncionalidadHDL: Caja negraDefinición vectores de pruebaHDL: Vectores de pruebaDiagrama caja blancaHDL: Caja blancaHDL: bloquesSimulación temporalDiagramas QUARTUSResultados y lecciones aprendidas

Compuerta lógica: AND (2)

2. COMPONENTE COMBINACIONAL. Compuerta lógica AND.

HENRY FORD

Si le hubiera preguntado a la gente lo queellos querían, ellos habrían dicho caballos

más rápidos.

En este capítulo se presenta la implementación en lenguaje HDL de la compuerta lógicaAND. Se presentan diferentes formas de implementación ya sea a partir de la ecuación lógica o apartir de una implementación funcional usando elementos del lenguaje como sentencias if, else.

2.1 Compuerta lógica: AND (1)

A continuación se presenta el componente combinacional Compuerta Lógica AND mostrandosu descripción con ecuación lógica.

2.1.1 Descripción del componentePRODUCTO DE CALIDAD:

OBJETIVO PEDAGÓGICO: El estudiante comprende y propone especificaciones y restricciones del producto.ENTREGABLES: Contiene máximo dos párrafos (claros, precisos y coherentes) que explican: restricciones, especifica-ciones y búsqueda e identificación de contextos en donde se utiliza dicho componente.

a. La descripción del componente está redactada en palabras propias de los estudiantes, organizada lógica y clara-mente.

b. Las especificaciones y restricciones responden totalmente al componente solicitado, demostrando originalidad yaportes propios.

c. La búsqueda e identificación de contextos en donde se utiliza dicho componente es clara.d. El lenguaje disciplinar es preciso y adecuado, las frases son gramaticalmente correctas y no hay errores ortográ-

ficos.

La compuerta lógica AND es uno de los elementos más simples de la electrónica digital.Una compuerta AND de 2 entradas toma a la salida un valor de uno (1-lógico, nivel alto) cuandolas dos entradas están en valor de uno. Así mismo, las compuertas AND pueden tener más dedos entradas en donde la salida toma un valor de 1-lógico si todas las entradas tiene valor de1-lógico en cualquier otro caso la salida toma un valor de 0-lógico.

Page 10: F. Segura-Quijano - C. Quintero Peña —— BIBLIOTECA DE ... · c.La búsqueda e identificación de contextos en donde se utiliza dicho componente es clara. d.El lenguaje disciplinar

Capítulo 2. COMPONENTE COMBINACIONAL. Compuerta lógica AND.

Una compuerta AND así como todas las compuertas básicas forman parte de cualquier cir-cuito digital, sin embargo, una compuerta AND no es un componente funcionalmente completo,lo que quiere decir que solo con compuertas AND no se puede construir toda la electrónicadigital, porque con la compuerta AND no se pueden implementar las demás compuertas.

2.1.2 SímboloPRODUCTO DE CALIDAD:

OBJETIVO PEDAGÓGICO: El estudiante relaciona su componente con un símbolo genérico usable en un diagramaarquitectural.ENTREGABLES: Diagrama correcto y completo.

a. El símbolo propuesto para representar el componente se basa en símbolos de naturaleza similar presentados en laliteratura de componentes electrónicos.

CC_GateAND_z_OutCC_GateAND_a_In

CC_GateAND_b_In

2.1.3 Diagrama caja negraPRODUCTO DE CALIDAD:

OBJETIVO PEDAGÓGICO: El estudiante identifica señales de entrada/salida para el producto.ENTREGABLES: Diagrama correcto y completo.

a. Hay total correspondencia entre el diagrama de caja negra y la funcionalidad del componente solicitado.b. El diagrama de caja negra muestra todas las señales de entrada y salida con sus correspondientes nombres estruc-

turados (In/Out) y tamaños (bit/bus).c. El diagrama de caja negra relaciona dicho componente con el diagrama de caracterización (test-bench).

2.1.4 FuncionalidadPRODUCTO DE CALIDAD:

OBJETIVO PEDAGÓGICO: El estudiante descompone el problema en un conjunto de pasos que responden a la fun-cionalidad esperada.ENTREGABLES: Ecuación / Tabla de Verdad / Macro-algoritmo correcto y completo según funcionalidad del compo-nente.

a. a. La ecuación caracteríestica y/o tabla de verdad y/o macro-algoritmo de solución describe correctamente lafuncionalidad del componente y se representa adecuadamente con una explicación detallada en donde cada pasoes menos complejo que el componente solicitado.

, Ecuación característica

F.Segura-Quijano y C.Quintero Peña

Page 11: F. Segura-Quijano - C. Quintero Peña —— BIBLIOTECA DE ... · c.La búsqueda e identificación de contextos en donde se utiliza dicho componente es clara. d.El lenguaje disciplinar

11

CC_GateAND_z_Out <= CC_GateAND_a_In and CC_GateAND_a_In;

, Tabla de verdad

INPUTS OUTPUTSCC_GateAND_a_In CC_GateAND_b_In CC_GateAND_z_Out

0 0 00 1 01 0 01 1 1

, Macro algoritmo

Algorithm 1: Compuerta lógica ANDData: CC_GateAND_a_In, CC_GateAND_b_In (0, 1)Result: CC_GateAND_z_Out (0, 1)CC_GateAND_z_Out = CC_GateAND_a_In and CC_GateAND_b_In

2.1.5 HDL: Caja negraPRODUCTO DE CALIDAD:

OBJETIVO PEDAGÓGICO: El estudiante identifica los elementos básicos de un proyecto en la herramienta al igual quelos elementos básicos del lenguaje HDL.ENTREGABLES: Códigos fuente.

a. La descripción en lenguajes hardware es correcta y corresponde al componente solicitado.b. Se incluye documentación completa para estructurar y/o entender el código claramente (indentación y sintaxis de

los lenguajes), nombrando correcta y adecuadamente todas las señales, variables y demás elementos relevantes.

3 / / =======================================================4 / / MODULE D e f i n i t i o n5 / / =======================================================6 module BB_SYSTEM (7 / / / / / / / / / / / / OUTPUTS / / / / / / / / / /8 BB_SYSTEM_z_Out ,9 / / / / / / / / / / / / INPUTS / / / / / / / / / /

10 BB_SYSTEM_a_In ,11 BB_SYSTEM_b_In12 ) ;13 / / =======================================================14 / / PARAMETER d e c l a r a t i o n s15 / / =======================================================16 / / =======================================================

F.Segura-Quijano y C.Quintero Peña

Page 12: F. Segura-Quijano - C. Quintero Peña —— BIBLIOTECA DE ... · c.La búsqueda e identificación de contextos en donde se utiliza dicho componente es clara. d.El lenguaje disciplinar

Capítulo 2. COMPONENTE COMBINACIONAL. Compuerta lógica AND.

17 / / PORT d e c l a r a t i o n s18 / / =======================================================19 o u t p u t BB_SYSTEM_z_Out ;20 i n p u t BB_SYSTEM_a_In ;21 i n p u t BB_SYSTEM_b_In ;22 / / =======================================================23 / / REG/ WIRE d e c l a r a t i o n s24 / / =======================================================

26 / / =======================================================27 / / S t r u c t u r a l co d i ng28 / / =======================================================29 CC_GateAND CC_GateAND_u0 (30 / / p o r t map − c o n n e c t i o n between m a s t e r p o r t s and s i g n a l s / r e g i s t e r s31 . CC_GateAND_z_Out ( BB_SYSTEM_z_Out ) ,32 . CC_GateAND_a_In ( BB_SYSTEM_a_In ) ,33 . CC_GateAND_b_In ( BB_SYSTEM_b_In )34 ) ;35 endmodule

Archivo 2.1: BB_SYSTEM.v

2.1.6 Definición vectores de pruebaPRODUCTO DE CALIDAD:

OBJETIVO PEDAGÓGICO:El estudiante propone una estrategia para validar la funcionalidad del producto.ENTREGABLES: Estrategias claras de selección. Explicación clara de funcionamiento.

a. Los vectores de prueba se seleccionan describiendo en un párrafo una estrategia explícita y claramente definida yestos vectores permiten comprobar totalmente la funcionalidad.

En este caso como son pocas entradas se debe validar toda la tabla de verdad. Los vectoresde prueba corresponden entonces a dichas combinaciones así:

INPUTS OUTPUTSCC_GateAND_a_In CC_GateAND_b_In CC_GateAND_z_Out

0 0 ?0 1 ?1 0 ?1 1 ?

2.1.7 HDL: Vectores de pruebaPRODUCTO DE CALIDAD:

OBJETIVO PEDAGÓGICO: El estudiante identifica los elementos básicos de un proyecto en la herramienta al igual quelos elementos básicos del lenguaje HDL.ENTREGABLES: Códigos fuente.

a. La descripción en lenguajes hardware es correcta y corresponde al componente solicitado.b. Se incluye documentación completa para estructurar y/o entender el código claramente (indentación y sintaxis de

los lenguajes), nombrando correcta y adecuadamente todas las señales, variables y demás elementos relevantes.

3 ‘ t i m e s c a l e 1 ns / 1 ns4 module TB_SYSTEM ( ) ;5 / / c o n s t a n t s6 / / ============================================7 / / P a r a m e t e r ( may d i f f e r f o r p h y s i c a l s y n t h e s i s )8 / / ============================================9 / / g e n e r a l p u r p o s e r e g i s t e r s

10 r e g eachvec ;

12 / / t e s t v e c t o r i n p u t r e g i s t e r s13 / / ============================================14 / / INTERNAL WIRE AND REG DECLARATIONS15 / / ============================================16 / / w i r e s (OUTPUTS)17 wi r e TB_SYSTEM_z_Out ;18 / / r e g ( INPUTS )19 r e g TB_SYSTEM_a_In ;20 r e g TB_SYSTEM_b_In ;

22 / / a s s i g n s t a t e m e n t s ( i f any )

F.Segura-Quijano y C.Quintero Peña

Page 13: F. Segura-Quijano - C. Quintero Peña —— BIBLIOTECA DE ... · c.La búsqueda e identificación de contextos en donde se utiliza dicho componente es clara. d.El lenguaje disciplinar

13

23 BB_SYSTEM BB_SYSTEM_u0 (24 / / p o r t map − c o n n e c t i o n between m a s t e r p o r t s and s i g n a l s / r e g i s t e r s25 . BB_SYSTEM_z_Out ( TB_SYSTEM_z_Out ) ,26 . BB_SYSTEM_a_In ( TB_SYSTEM_a_In ) ,27 . BB_SYSTEM_b_In ( TB_SYSTEM_b_In )28 ) ;29 i n i t i a l30 b e g i n31 / / code t h a t e x e c u t e s on ly once32 / / i n s e r t code h e r e −−> b e g i n

34 / / −−> end35 $ d i s p l a y ( " Running t e s t b e n c h " ) ;36 end37 a lways38 / / o p t i o n a l s e n s i t i v i t y l i s t39 / / @( e v e n t 1 o r e v e n t 2 o r . . . . e v e n t n )

41 b e g i n42 / / code e x e c u t e s f o r e v e r y e v e n t on s e n s i t i v i t y l i s t43 / / i n s e r t code h e r e −−> b e g i n44 #0 TB_SYSTEM_a_In <= 0 ; TB_SYSTEM_b_In <= 0 ;45 $ d i s p l a y ( " Time : %2d TB_SYSTEM_a_In : %2d , TB_SYSTEM_b_In : %2d , TB_SYSTEM_z_Out : %2d " , $t ime , TB_SYSTEM_a_In ,

TB_SYSTEM_b_In , TB_SYSTEM_z_Out ) ;46 #100000 TB_SYSTEM_a_In <= 0 ; TB_SYSTEM_b_In <= 1 ;47 $ d i s p l a y ( " Time : %2d TB_SYSTEM_a_In : %2d , TB_SYSTEM_b_In : %2d , TB_SYSTEM_z_Out : %2d " , $t ime , TB_SYSTEM_a_In ,

TB_SYSTEM_b_In , TB_SYSTEM_z_Out ) ;48 #100000 TB_SYSTEM_a_In <= 1 ; TB_SYSTEM_b_In <= 0 ;49 $ d i s p l a y ( " Time : %2d TB_SYSTEM_a_In : %2d , TB_SYSTEM_b_In : %2d , TB_SYSTEM_z_Out : %2d " , $t ime , TB_SYSTEM_a_In ,

TB_SYSTEM_b_In , TB_SYSTEM_z_Out ) ;50 #100000 TB_SYSTEM_a_In <= 1 ; TB_SYSTEM_b_In <= 1 ;51 $ d i s p l a y ( " Time : %2d TB_SYSTEM_a_In : %2d , TB_SYSTEM_b_In : %2d , TB_SYSTEM_z_Out : %2d " , $t ime , TB_SYSTEM_a_In ,

TB_SYSTEM_b_In , TB_SYSTEM_z_Out ) ;52 #100000 TB_SYSTEM_a_In <= 0 ; TB_SYSTEM_b_In <= 0 ;53 $ d i s p l a y ( " Time : %2d TB_SYSTEM_a_In : %2d , TB_SYSTEM_b_In : %2d , TB_SYSTEM_z_Out : %2d " , $t ime , TB_SYSTEM_a_In ,

TB_SYSTEM_b_In , TB_SYSTEM_z_Out ) ;54 #100000 TB_SYSTEM_a_In <= 0 ; TB_SYSTEM_b_In <= 1 ;55 $ d i s p l a y ( " Time : %2d TB_SYSTEM_a_In : %2d , TB_SYSTEM_b_In : %2d , TB_SYSTEM_z_Out : %2d " , $t ime , TB_SYSTEM_a_In ,

TB_SYSTEM_b_In , TB_SYSTEM_z_Out ) ;56 #100000 TB_SYSTEM_a_In <= 1 ; TB_SYSTEM_b_In <= 0 ;57 $ d i s p l a y ( " Time : %2d TB_SYSTEM_a_In : %2d , TB_SYSTEM_b_In : %2d , TB_SYSTEM_z_Out : %2d " , $t ime , TB_SYSTEM_a_In ,

TB_SYSTEM_b_In , TB_SYSTEM_z_Out ) ;58 #100000 TB_SYSTEM_a_In <= 1 ; TB_SYSTEM_b_In <= 1 ;59 $ d i s p l a y ( " Time : %2d TB_SYSTEM_a_In : %2d , TB_SYSTEM_b_In : %2d , TB_SYSTEM_z_Out : %2d " , $t ime , TB_SYSTEM_a_In ,

TB_SYSTEM_b_In , TB_SYSTEM_z_Out ) ;60 #100000 TB_SYSTEM_a_In <= 0 ; TB_SYSTEM_b_In <= 0 ;61 $ d i s p l a y ( " Time : %2d TB_SYSTEM_a_In : %2d , TB_SYSTEM_b_In : %2d , TB_SYSTEM_z_Out : %2d " , $t ime , TB_SYSTEM_a_In ,

TB_SYSTEM_b_In , TB_SYSTEM_z_Out ) ;62 @eachvec ;63 $ f i n i s h ;64 / / −−> end65 end66 endmodule

Archivo 2.2: TB_SYSTEM.vt

2.1.8 Diagrama caja blanca

PRODUCTO DE CALIDAD:

OBJETIVO PEDAGÓGICO: El estudiante realiza un diagrama de sub-componentes, señales e interconexiones y haceuna descripción de cada sub-componente.ENTREGABLES: Diagrama de sub-componentes, señales e interconexiones, descripción de componente o componentea componente.

a. El diagrama de caja blanca es correcto y corresponde con el componente solicitado.b. Se muestran todas las señales de entrada/salida e internas con sus correspondientes nombres estructurados (In-

/Out) y tamaños (Bit/Bus) para todos los componentes internos del sistema.c. El diagrama de caja blanca corresponde a una solución eficiente en cuanto a recursos, número de bloques y

elementos y algoritmo de solución. Los componentes internos son menos complejos que los de mayor jerarquía.d. Se presenta una descripción (qué es y cómo funciona) de cada uno de los componentes constitutivos del compo-

nente solicitado, describiendo sus señales.

En este caso el diagrama corresponde solamente a la compuerta.

F.Segura-Quijano y C.Quintero Peña

Page 14: F. Segura-Quijano - C. Quintero Peña —— BIBLIOTECA DE ... · c.La búsqueda e identificación de contextos en donde se utiliza dicho componente es clara. d.El lenguaje disciplinar

Capítulo 2. COMPONENTE COMBINACIONAL. Compuerta lógica AND.

2.1.9 HDL: Caja blancaPRODUCTO DE CALIDAD:

OBJETIVO PEDAGÓGICO: El estudiante identifica los elementos básicos de un proyecto en la herramienta al igual quelos elementos básicos del lenguaje HDL.ENTREGABLES: Códigos fuente.

a. La descripción en lenguajes hardware es correcta y corresponde al componente solicitado.b. Se incluye documentación completa para estructurar y/o entender el código claramente (indentación y sintaxis de

los lenguajes), nombrando correcta y adecuadamente todas las señales, variables y demás elementos relevantes.

3 / / =======================================================4 / / MODULE D e f i n i t i o n5 / / =======================================================6 module CC_GateAND (7 / / / / / / / / / / / / OUTPUTS / / / / / / / / / /8 CC_GateAND_z_Out ,9 / / / / / / / / / / / / INPUTS / / / / / / / / / /

10 CC_GateAND_a_In ,11 CC_GateAND_b_In12 ) ;13 / / =======================================================14 / / PARAMETER d e c l a r a t i o n s15 / / =======================================================

17 / / =======================================================18 / / PORT d e c l a r a t i o n s19 / / =======================================================20 o u t p u t CC_GateAND_z_Out ;21 i n p u t CC_GateAND_a_In ;22 i n p u t CC_GateAND_b_In ;23 / / =======================================================24 / / REG/ WIRE d e c l a r a t i o n s25 / / =======================================================

27 / / =======================================================28 / / S t r u c t u r a l co d i ng29 / / =======================================================30 a s s i g n CC_GateAND_z_Out = CC_GateAND_a_In & CC_GateAND_b_In ;

32 endmodule

Archivo 2.3: WB_SYSTEM.v

2.1.10 HDL: bloquesPRODUCTO DE CALIDAD:

OBJETIVO PEDAGÓGICO: El estudiante identifica los elementos básicos de un proyecto en la herramienta al igual quelos elementos básicos del lenguaje HDL.ENTREGABLES: Códigos fuente.

a. La descripción en lenguajes hardware es correcta y corresponde al componente solicitado.b. Se incluye documentación completa para estructurar y/o entender el código claramente (indentación y sintaxis de

los lenguajes), nombrando correcta y adecuadamente todas las señales, variables y demás elementos relevantes.

En este caso no hay componentes de menor jerarquía para el diseño.

F.Segura-Quijano y C.Quintero Peña

Page 15: F. Segura-Quijano - C. Quintero Peña —— BIBLIOTECA DE ... · c.La búsqueda e identificación de contextos en donde se utiliza dicho componente es clara. d.El lenguaje disciplinar

15

2.1.11 Simulación temporal

PRODUCTO DE CALIDAD:

OBJETIVO PEDAGÓGICO: El estudiante relaciona la funcionalidad según las especificaciones propuestas con diversostipos de pruebas.ENTREGABLES: Funcionalidad según las especificaciones propuestas y en diversos tipos de pruebas.

a. Se presentan resultados de simulación para el producto solicitado, explicando tres o más casos de funcionamientosobre el diagrama de simulación. La simulación contiene marcadores en la gráfica que señalan situaciones es-pecíficas del prototipo.

A continuación se presenta un diagrama de lo que se espera obtener del sistema. En estecaso que es sencillo se puede hacer un diagrama de tiempos inicial para ver el comportamientoesperado.

t0 t1 t2 t3 t4 t5 t6 t7 t8 t9

CC_GateAND_a_In

CC_GateAND_b_In

CC_GateAND_z_Out

Por otro lado, se presenta el diagrama de tiempos obtenido en la herramienta Quartus deAltera. En este caso podemos ver como coincide con lo esperado. Es muy importante resaltar loscasos de simulación, marcando los vectores de prueba en los resultados de simulación.

se repite0 1 2 3

2.1.12 Diagramas QUARTUS

PRODUCTO DE CALIDAD:

OBJETIVO PEDAGÓGICO: El estudiante identifica elementos de la Herramienta Quartus que pueden ayudar el procesode diseño.ENTREGABLES: Diagramas obtenidos en la herramienta.

a. Se presentan diagramas obtenidos por QUARTUS.

CC_GateAND:CC_GateAND_u0

CC_GateAND_a_In

CC_GateAND_b_InCC_GateAND_z_Out

BB_SYSTEM_b_InBB_SYSTEM_z_Out

CC_GateAND_z_Out

BB_SYSTEM_a_In

F.Segura-Quijano y C.Quintero Peña

Page 16: F. Segura-Quijano - C. Quintero Peña —— BIBLIOTECA DE ... · c.La búsqueda e identificación de contextos en donde se utiliza dicho componente es clara. d.El lenguaje disciplinar

Capítulo 2. COMPONENTE COMBINACIONAL. Compuerta lógica AND.

2.1.13 Resultados y lecciones aprendidasPRODUCTO DE CALIDAD:

OBJETIVO PEDAGÓGICO: El estudiante discute el proceso de diseño identificando opciones de mejora y trabajo futuro.ENTREGABLES: Contiene máximo dos párrafos (claros, precisos y coherentes).

a. Se proponen nuevas especificaciones y aplicaciones del trabajo realizado (ejemplo: mayores niveles de compleji-dad y usos en otros contextos).

b. En caso de no lograr el item de funcionamiento global; identifica y argumenta las razones principales del nofuncionamiento.

c. El lenguaje disciplinar es preciso y adecuado, haciendo uso de frases gramaticalmente correctas, sin erroresortográficos.

La compuerta lógica AND es uno de los elementos más simples de la electrónica digitaly se pude implementar a partir de su ecuación lógica. Además, se pueden realizar unadescripción a nivel funcional como se va presentar en la siguiente sección.

2.2 Compuerta lógica: AND (2)

A continuación se presenta el componente combinacional Compuerta Lógica AND mostrandosu descripción de manera funcional. Solo se muestra la descripción del bloque que implementala compuerta, dado que toda la demás documentación se mantiene igual. Nótese como se usansentencias if/else para hacer la descripción.

Funcionalidad

, Macro algoritmo

Algorithm 2: Compuerta lógica ANDData: CC_GateAND_a_In, CC_GateAND_b_In (0, 1)Result: CC_GateAND_z_Out (0, 1)if (CC_GateAND_a_In == 1) && (CC_GateAND_b_In == 1) then

CC_GateAND_z_Out = 1else

CC_GateAND_z_Out = 0end

F.Segura-Quijano y C.Quintero Peña

Page 17: F. Segura-Quijano - C. Quintero Peña —— BIBLIOTECA DE ... · c.La búsqueda e identificación de contextos en donde se utiliza dicho componente es clara. d.El lenguaje disciplinar

17

HDL: Caja blanca

3 / / =======================================================4 / / MODULE D e f i n i t i o n5 / / =======================================================6 module CC_GateAND (7 / / / / / / / / / / / / OUTPUTS / / / / / / / / / /8 CC_GateAND_z_Out ,9 / / / / / / / / / / / / INPUTS / / / / / / / / / /

10 CC_GateAND_a_In ,11 CC_GateAND_b_In12 ) ;13 / / =======================================================14 / / PARAMETER d e c l a r a t i o n s15 / / =======================================================

17 / / =======================================================18 / / PORT d e c l a r a t i o n s19 / / =======================================================20 o u t p u t r e g CC_GateAND_z_Out ;21 i n p u t CC_GateAND_a_In ;22 i n p u t CC_GateAND_b_In ;23 / / =======================================================24 / / REG/ WIRE d e c l a r a t i o n s25 / / =======================================================

27 / / =======================================================28 / / S t r u c t u r a l co d i ng29 / / =======================================================30 a lways @( * )31 b e g i n32 i f ( ( CC_GateAND_a_In == 1 ’ b1 ) && ( CC_GateAND_b_In == 1 ’ b1 ) )33 CC_GateAND_z_Out = 1 ’ b1 ;34 e l s e35 CC_GateAND_z_Out = 1 ’ b0 ;36 end37 endmodule

Archivo 2.4: WB_SYSTEM.v

F.Segura-Quijano y C.Quintero Peña

Page 18: F. Segura-Quijano - C. Quintero Peña —— BIBLIOTECA DE ... · c.La búsqueda e identificación de contextos en donde se utiliza dicho componente es clara. d.El lenguaje disciplinar
Page 19: F. Segura-Quijano - C. Quintero Peña —— BIBLIOTECA DE ... · c.La búsqueda e identificación de contextos en donde se utiliza dicho componente es clara. d.El lenguaje disciplinar

Sumador de 1 bit: FULLADDER (1)Descripción del componenteSímboloDiagrama caja negraFuncionalidadHDL: Caja negraDefinición vectores de pruebaHDL: Vectores de pruebaDiagrama caja blancaHDL: Caja blancaHDL: bloquesSimulación temporalDiagramas QUARTUSResultados y lecciones aprendidas

Sumador de 1 bit: FULLADDER (2)Sumador de 1 bit: FULLADDER (3)Sumador de 1 bit: FULLADDER (4)Sumador de 1 bit: FULLADDER (5)

3. COMPONENTE COMBINACIONAL. Sumador de 1 bit o FULLADDER.

THOMAS ALVA EDISON

No fracasé, sólo descubrí 999 maneras decómo no hacer una bombilla.

En este capítulo se presentan el diseño de un sumador completo de un bit o llamado FUL-LADDER. Se plantean diferentes tipos de descripción para poder hacer una comparación de laspotencialidades del lenguaje.

3.1 Sumador de 1 bit: FULLADDER (1)

A continuación se presenta el componente combinacional Sumador de 1 bit: FULLADDERmostrando una primera descripción a partir de las ecuaciones simplificadas.

3.1.1 Descripción del componente

Un sumador de un bit o FULLADDER es un circuito digital que realiza la suma de números.Este componente se utiliza en todos los procesadores que utilizan sumadores de varios bits enlas unidades aritmético lógicas. También se puede utilizar en otras partes del procesador pararealizar cálculo de direcciones, índices de tablas, incrementos, decrementos entre otros.

Un sumador completo o FULLADDER suma números binarios con las cantidades de acarreo,en donde el acarreo corresponde de una etapa previa de suma Para implemetar un sumadorde 8 bits por ejemplo, podemos colocar en cascada 8 sumadores completos o FULLADDERdebidamente conectados.

Page 20: F. Segura-Quijano - C. Quintero Peña —— BIBLIOTECA DE ... · c.La búsqueda e identificación de contextos en donde se utiliza dicho componente es clara. d.El lenguaje disciplinar

Capítulo 3. COMPONENTE COMBINACIONAL. Sumador de 1 bit oFULLADDER.

3.1.2 SímboloCC_FULLADDER_a_In CC_FULLADDER_b_In

CC_FULLADDER_cin_In CC_FULLADDER_cout_Out

CC_FULLADDER_sum_Out

3.1.3 Diagrama caja negra

3.1.4 Funcionalidad

, Ecuación característica

CC_FULLADDER_cout_Out,CC_FULLADDER_sum_Out <= CC_FULLADDER_cin_In +CC_FULLADDER_a_In + CC_FULLADDER_b_In;

, Tabla de verdad

INPUTS OUTPUTSCC_FULLADDER_cin_In CC_FULLADDER_a_In CC_FULLADDER_b_In CC_FULLADDER_cout_Out CC_FULLADDER_sum_Out

0 0 0 0 00 0 1 0 10 1 0 0 10 1 1 1 01 0 0 0 11 0 1 1 01 1 0 1 01 1 1 1 1

, Macro algoritmo

Algorithm 3: FULLADDERData: CC_FULLADDER_cin_In, CC_FULLADDER_a_In, CC_FULLADDER_b_In (0, 1)Result: CC_FULLADDER_cout_Out, CC_FULLADDER_sum_Out (0, 1)CC_FULLADDER_sum_Out = CC_FULLADDER_a_In xor CC_FULLADDER_b_In xor CC_FULLADDER_cin_In;CC_FULLADDER_cout_Out = (CC_FULLADDER_cin_In and CC_FULLADDER_a_In) or

(CC_FULLADDER_cin_In and CC_FULLADDER_b_In) or (CC_FULLADDER_a_In and CC_FULLADDER_b_In);

F.Segura-Quijano y C.Quintero Peña

Page 21: F. Segura-Quijano - C. Quintero Peña —— BIBLIOTECA DE ... · c.La búsqueda e identificación de contextos en donde se utiliza dicho componente es clara. d.El lenguaje disciplinar

21

3.1.5 HDL: Caja negra

3 / / =======================================================4 / / MODULE D e f i n i t i o n5 / / =======================================================6 module BB_SYSTEM (7 / / / / / / / / / / / / OUTPUTS / / / / / / / / / /8 BB_SYSTEM_cout_Out ,9 BB_SYSTEM_sum_Out ,

10 / / / / / / / / / / / / INPUTS / / / / / / / / / /11 BB_SYSTEM_a_In ,12 BB_SYSTEM_b_In ,13 BB_SYSTEM_cin_In14 ) ;15 / / =======================================================16 / / PARAMETER d e c l a r a t i o n s17 / / =======================================================18 / / =======================================================19 / / PORT d e c l a r a t i o n s20 / / =======================================================21 o u t p u t BB_SYSTEM_cout_Out ;22 o u t p u t BB_SYSTEM_sum_Out ;23 i n p u t BB_SYSTEM_a_In ;24 i n p u t BB_SYSTEM_b_In ;25 i n p u t BB_SYSTEM_cin_In ;26 / / =======================================================27 / / REG/ WIRE d e c l a r a t i o n s28 / / =======================================================

30 / / =======================================================31 / / S t r u c t u r a l co d i ng32 / / =======================================================33 CC_FULLADDER CC_FULLADDER_u0 (34 / / p o r t map − c o n n e c t i o n between m a s t e r p o r t s and s i g n a l s / r e g i s t e r s35 . CC_FULLADDER_cout_Out ( BB_SYSTEM_cout_Out ) ,36 . CC_FULLADDER_sum_Out ( BB_SYSTEM_sum_Out ) ,37 . CC_FULLADDER_a_In ( BB_SYSTEM_a_In ) ,38 . CC_FULLADDER_b_In ( BB_SYSTEM_b_In ) ,39 . CC_FULLADDER_cin_In ( BB_SYSTEM_cin_In )40 ) ;41 endmodule

Archivo 3.1: BB_SYSTEM.v

3.1.6 Definición vectores de pruebaEn este caso como son pocas entradas se debe validar toda la tabla de verdad. Los vectores deprueba corresponden entonces a dichas combinaciones así:

INPUTS OUTPUTSCC_FULLADDER_cin_In CC_FULLADDER_a_In CC_FULLADDER_b_In CC_FULLADDER_cout_Out CC_FULLADDER_sum_Out

0 0 0 ? ?0 0 1 ? ?0 1 0 ? ?0 1 1 ? ?1 0 0 ? ?1 0 1 ? ?1 1 0 ? ?1 1 1 ? ?

F.Segura-Quijano y C.Quintero Peña

Page 22: F. Segura-Quijano - C. Quintero Peña —— BIBLIOTECA DE ... · c.La búsqueda e identificación de contextos en donde se utiliza dicho componente es clara. d.El lenguaje disciplinar

Capítulo 3. COMPONENTE COMBINACIONAL. Sumador de 1 bit oFULLADDER.

3.1.7 HDL: Vectores de prueba

3 ‘ t i m e s c a l e 1 ns / 1 ns4 module TB_SYSTEM ( ) ;5 / / c o n s t a n t s6 / / ============================================7 / / P a r a m e t e r ( may d i f f e r f o r p h y s i c a l s y n t h e s i s )8 / / ============================================9 / / g e n e r a l p u r p o s e r e g i s t e r s

10 r e g eachvec ;

12 / / t e s t v e c t o r i n p u t r e g i s t e r s13 / / ============================================14 / / INTERNAL WIRE AND REG DECLARATIONS15 / / ============================================16 / / w i r e s (OUTPUTS)17 wi r e TB_SYSTEM_cout_Out ;18 wi r e TB_SYSTEM_sum_Out ;19 / / r e g ( INPUTS )20 r e g TB_SYSTEM_a_In ;21 r e g TB_SYSTEM_b_In ;22 r e g TB_SYSTEM_cin_In ;

24 / / a s s i g n s t a t e m e n t s ( i f any )25 BB_SYSTEM BB_SYSTEM_u0 (26 / / p o r t map − c o n n e c t i o n between m a s t e r p o r t s and s i g n a l s / r e g i s t e r s27 . BB_SYSTEM_cout_Out ( TB_SYSTEM_cout_Out ) ,28 . BB_SYSTEM_sum_Out ( TB_SYSTEM_sum_Out ) ,29 . BB_SYSTEM_a_In ( TB_SYSTEM_a_In ) ,30 . BB_SYSTEM_b_In ( TB_SYSTEM_b_In ) ,31 . BB_SYSTEM_cin_In ( TB_SYSTEM_cin_In )32 ) ;33 i n i t i a l34 b e g i n35 / / code t h a t e x e c u t e s on ly once36 / / i n s e r t code h e r e −−> b e g i n

38 / / −−> end39 $ d i s p l a y ( " Running t e s t b e n c h " ) ;40 end41 a lways42 / / o p t i o n a l s e n s i t i v i t y l i s t43 / / @( e v e n t 1 o r e v e n t 2 o r . . . . e v e n t n )

45 b e g i n46 / / code e x e c u t e s f o r e v e r y e v e n t on s e n s i t i v i t y l i s t47 / / i n s e r t code h e r e −−> b e g i n48 #10000 $ m o n i t o r ( " TB_SYSTEM_cin_In = %b " , TB_SYSTEM_cin_In , " | TB_SYSTEM_a_In = " , TB_SYSTEM_a_In , " |

TB_SYSTEM_b_In = " , TB_SYSTEM_b_In , " | TB_SYSTEM_cout_Out = " , TB_SYSTEM_cout_Out , " | TB_SYSTEM_sum_Out= " , TB_SYSTEM_sum_Out ) ;

49 #0 TB_SYSTEM_cin_In <= 0 ; TB_SYSTEM_a_In <= 0 ; TB_SYSTEM_b_In <= 0 ;50 #20000 TB_SYSTEM_cin_In <= 0 ; TB_SYSTEM_a_In <= 0 ; TB_SYSTEM_b_In <= 1 ;51 #20000 TB_SYSTEM_cin_In <= 0 ; TB_SYSTEM_a_In <= 1 ; TB_SYSTEM_b_In <= 0 ;52 #20000 TB_SYSTEM_cin_In <= 0 ; TB_SYSTEM_a_In <= 1 ; TB_SYSTEM_b_In <= 1 ;53 #20000 TB_SYSTEM_cin_In <= 1 ; TB_SYSTEM_a_In <= 0 ; TB_SYSTEM_b_In <= 0 ;54 #20000 TB_SYSTEM_cin_In <= 1 ; TB_SYSTEM_a_In <= 0 ; TB_SYSTEM_b_In <= 1 ;55 #20000 TB_SYSTEM_cin_In <= 1 ; TB_SYSTEM_a_In <= 1 ; TB_SYSTEM_b_In <= 0 ;56 #20000 TB_SYSTEM_cin_In <= 1 ; TB_SYSTEM_a_In <= 1 ; TB_SYSTEM_b_In <= 1 ;57 #20000 TB_SYSTEM_cin_In <= 0 ; TB_SYSTEM_a_In <= 0 ; TB_SYSTEM_b_In <= 0 ;58 #20000 TB_SYSTEM_cin_In <= 0 ; TB_SYSTEM_a_In <= 0 ; TB_SYSTEM_b_In <= 1 ;59 #20000 TB_SYSTEM_cin_In <= 0 ; TB_SYSTEM_a_In <= 1 ; TB_SYSTEM_b_In <= 0 ;60 #20000 TB_SYSTEM_cin_In <= 0 ; TB_SYSTEM_a_In <= 1 ; TB_SYSTEM_b_In <= 1 ;61 #20000 TB_SYSTEM_cin_In <= 1 ; TB_SYSTEM_a_In <= 0 ; TB_SYSTEM_b_In <= 0 ;62 #20000 TB_SYSTEM_cin_In <= 1 ; TB_SYSTEM_a_In <= 0 ; TB_SYSTEM_b_In <= 1 ;63 #20000 TB_SYSTEM_cin_In <= 1 ; TB_SYSTEM_a_In <= 1 ; TB_SYSTEM_b_In <= 0 ;64 #20000 TB_SYSTEM_cin_In <= 1 ; TB_SYSTEM_a_In <= 1 ; TB_SYSTEM_b_In <= 1 ;65 #20000 TB_SYSTEM_cin_In <= 0 ; TB_SYSTEM_a_In <= 0 ; TB_SYSTEM_b_In <= 0 ;66 @eachvec ;67 $ f i n i s h ;68 / / −−> end69 end70 endmodule

Archivo 3.2: TB_SYSTEM.vt

3.1.8 Diagrama caja blanca

Inicialmente se puede dibujar los bloques manteniendo su jerarquía.

F.Segura-Quijano y C.Quintero Peña

Page 23: F. Segura-Quijano - C. Quintero Peña —— BIBLIOTECA DE ... · c.La búsqueda e identificación de contextos en donde se utiliza dicho componente es clara. d.El lenguaje disciplinar

23

Posteriormente si entramos en la implementación funcional del sumador de 1 bit. En estecaso el diagrama corresponde a las ecuaciones simplificadas para las salidas del sumador de unbit.

CC_FULLADDER_a_In

CC_FULLADDER_cout_Out

CC_FULLADDER_b_In

CC_FULLADDER_cin_In

CC_FULLADDER_sum_Out

3.1.9 HDL: Caja blanca

3 / / =======================================================4 / / MODULE D e f i n i t i o n5 / / =======================================================6 module CC_FULLADDER (7 / / / / / / / / / / / / OUTPUTS / / / / / / / / / /8 CC_FULLADDER_cout_Out ,9 CC_FULLADDER_sum_Out ,

10 / / / / / / / / / / / / INPUTS / / / / / / / / / /11 CC_FULLADDER_a_In ,12 CC_FULLADDER_b_In ,13 CC_FULLADDER_cin_In14 ) ;15 / / =======================================================16 / / PARAMETER d e c l a r a t i o n s17 / / =======================================================

19 / / =======================================================20 / / PORT d e c l a r a t i o n s21 / / =======================================================22 o u t p u t CC_FULLADDER_cout_Out ;23 o u t p u t CC_FULLADDER_sum_Out ;24 i n p u t CC_FULLADDER_a_In ;25 i n p u t CC_FULLADDER_b_In ;26 i n p u t CC_FULLADDER_cin_In ;27 / / =======================================================28 / / REG/ WIRE d e c l a r a t i o n s29 / / =======================================================

31 / / =======================================================32 / / S t r u c t u r a l co d i ng33 / / =======================================================34 / / SIMPLIFIED EQUATIONS35 a s s i g n CC_FULLADDER_sum_Out = CC_FULLADDER_a_In ^ CC_FULLADDER_b_In ^ CC_FULLADDER_cin_In ;36 a s s i g n CC_FULLADDER_cout_Out = ( CC_FULLADDER_cin_In & CC_FULLADDER_a_In ) | ( CC_FULLADDER_cin_In & CC_FULLADDER_b_In

) | ( CC_FULLADDER_a_In & CC_FULLADDER_b_In ) ;37 endmodule

Archivo 3.3: CC_FULLADDER.v

F.Segura-Quijano y C.Quintero Peña

Page 24: F. Segura-Quijano - C. Quintero Peña —— BIBLIOTECA DE ... · c.La búsqueda e identificación de contextos en donde se utiliza dicho componente es clara. d.El lenguaje disciplinar

Capítulo 3. COMPONENTE COMBINACIONAL. Sumador de 1 bit oFULLADDER.

3.1.10 HDL: bloquesEn este caso no hay componentes de menor jerarquía para el diseño.

3.1.11 Simulación temporalt0 t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17

CC_FULLADDER_a_In

CC_FULLADDER_b_In

CC_FULLADDER_cin_In

CC_FULLADDER_cout_Out

CC_FULLADDER_sum_Out

Por otro lado, se presenta el diagrama de tiempos obtenido en la herramienta Quartus deAltera. En este caso podemos ver como coincide con lo esperado. Es muy importante resaltar loscasos de simulación, marcando los vectores de prueba en los resultados de simulación.

se repitetodas las posibles combinaciones

3.1.12 Diagramas QUARTUSCC_FULLADDER:CC_FULLADDER_u0

CC_FULLADDER_a_In

CC_FULLADDER_b_In

CC_FULLADDER_cin_In

CC_FULLADDER_cout_Out

CC_FULLADDER_sum_Out

BB_SYSTEM_b_InBB_SYSTEM_cin_In

BB_SYSTEM_cout_OutBB_SYSTEM_sum_Out

CC_FULLADDER_sum_Out

CC_FULLADDER_cout_Out~0

CC_FULLADDER_cout_Out~1

CC_FULLADDER_cout_Out~2

CC_FULLADDER_cout_Out~3

BB_SYSTEM_a_In

3.1.13 Resultados y lecciones aprendidas

Un sumador de un bit es uno de los elementos más simples de la electrónica digital y apartir de la unión de varios sumadores de un bit se puede formar un sumador mas grande.Su implementación se puede realizar de diferentes maneras como se presenta en lassiguientes secciones.

3.2 Sumador de 1 bit: FULLADDER (2)

A continuación se presenta el componente combinacional Sumador de 1 bit: FullAddermostrando otra forma de descripción.

F.Segura-Quijano y C.Quintero Peña

Page 25: F. Segura-Quijano - C. Quintero Peña —— BIBLIOTECA DE ... · c.La búsqueda e identificación de contextos en donde se utiliza dicho componente es clara. d.El lenguaje disciplinar

25

Diagrama caja blancaEn este caso el diagrama corresponde a la función expresada con todos los minitérminos sinsimplificar.

CC_FULLADDER_a_In

CC_FULLADDER_cout_Out

CC_FULLADDER_b_In

CC_FULLADDER_cin_In

CC_FULLADDER_sum_Out

HDL: Caja blanca

3 / / =======================================================4 / / MODULE D e f i n i t i o n5 / / =======================================================6 module CC_FULLADDER (7 / / / / / / / / / / / / OUTPUTS / / / / / / / / / /8 CC_FULLADDER_cout_Out ,9 CC_FULLADDER_sum_Out ,

10 / / / / / / / / / / / / INPUTS / / / / / / / / / /11 CC_FULLADDER_a_In ,12 CC_FULLADDER_b_In ,13 CC_FULLADDER_cin_In14 ) ;15 / / =======================================================16 / / PARAMETER d e c l a r a t i o n s17 / / =======================================================

19 / / =======================================================20 / / PORT d e c l a r a t i o n s21 / / =======================================================22 o u t p u t CC_FULLADDER_cout_Out ;23 o u t p u t CC_FULLADDER_sum_Out ;24 i n p u t CC_FULLADDER_a_In ;25 i n p u t CC_FULLADDER_b_In ;26 i n p u t CC_FULLADDER_cin_In ;27 / / =======================================================28 / / REG/ WIRE d e c l a r a t i o n s29 / / =======================================================

31 / / =======================================================32 / / S t r u c t u r a l co d i ng33 / / =======================================================34 / / MINTERMS35 a s s i g n CC_FULLADDER_sum_Out = (~CC_FULLADDER_a_In & ~CC_FULLADDER_b_In & CC_FULLADDER_cin_In ) | (~CC_FULLADDER_a_In

& CC_FULLADDER_b_In & ~CC_FULLADDER_cin_In ) | ( CC_FULLADDER_a_In & ~CC_FULLADDER_b_In & ~CC_FULLADDER_cin_In) | ( CC_FULLADDER_a_In & CC_FULLADDER_b_In & CC_FULLADDER_cin_In ) ;

36 a s s i g n CC_FULLADDER_cout_Out = (~CC_FULLADDER_a_In & CC_FULLADDER_b_In & CC_FULLADDER_cin_In ) | ( CC_FULLADDER_a_In& ~CC_FULLADDER_b_In & CC_FULLADDER_cin_In ) | ( CC_FULLADDER_a_In & CC_FULLADDER_b_In & ~CC_FULLADDER_cin_In )| ( CC_FULLADDER_a_In & CC_FULLADDER_b_In & CC_FULLADDER_cin_In ) ;

37 endmodule

Archivo 3.4: CC_FULLADDER.v

F.Segura-Quijano y C.Quintero Peña

Page 26: F. Segura-Quijano - C. Quintero Peña —— BIBLIOTECA DE ... · c.La búsqueda e identificación de contextos en donde se utiliza dicho componente es clara. d.El lenguaje disciplinar

Capítulo 3. COMPONENTE COMBINACIONAL. Sumador de 1 bit oFULLADDER.

Diagramas QUARTUSCC_FULLADDER:CC_FULLADDER_u0

CC_FULLADDER_a_In

CC_FULLADDER_b_In

CC_FULLADDER_cin_In

CC_FULLADDER_cout_Out

CC_FULLADDER_sum_Out

BB_SYSTEM_b_InBB_SYSTEM_cin_In

BB_SYSTEM_cout_OutBB_SYSTEM_sum_Out

CC_FULLADDER_sum_Out~3

CC_FULLADDER_cout_Out~0

CC_FULLADDER_cout_Out~1

CC_FULLADDER_cout_Out~2

CC_FULLADDER_cout_Out~3

CC_FULLADDER_cout_Out~4

CC_FULLADDER_cout_Out~5

CC_FULLADDER_cout_Out~6

CC_FULLADDER_cout_Out~7

CC_FULLADDER_sum_Out~0

CC_FULLADDER_sum_Out~1

CC_FULLADDER_sum_Out~2

BB_SYSTEM_a_In

3.3 Sumador de 1 bit: FULLADDER (3)

A continuación se presenta el componente combinacional Sumador de 1 bit: FullAddermostrando otra forma de descripción.

Diagrama caja blancaEn este caso el diagrama corresponde a una implementación con codificador.

CC_FULLADDER_a_In

CC_FULLADDER_b_In

CC_FULLADDER_cin_InCC_FULLADDER_sum_Out

CC_FULLADDER_cout_Out

HDL: Caja blanca

3 / / =======================================================4 / / MODULE D e f i n i t i o n5 / / =======================================================6 module CC_FULLADDER (7 / / / / / / / / / / / / OUTPUTS / / / / / / / / / /8 CC_FULLADDER_cout_Out ,9 CC_FULLADDER_sum_Out ,

10 / / / / / / / / / / / / INPUTS / / / / / / / / / /11 CC_FULLADDER_a_In ,12 CC_FULLADDER_b_In ,13 CC_FULLADDER_cin_In14 ) ;15 / / =======================================================16 / / PARAMETER d e c l a r a t i o n s17 / / =======================================================

19 / / =======================================================20 / / PORT d e c l a r a t i o n s21 / / =======================================================22 o u t p u t r e g CC_FULLADDER_cout_Out ;23 o u t p u t r e g CC_FULLADDER_sum_Out ;24 i n p u t CC_FULLADDER_a_In ;25 i n p u t CC_FULLADDER_b_In ;26 i n p u t CC_FULLADDER_cin_In ;27 / / =======================================================28 / / REG/ WIRE d e c l a r a t i o n s29 / / =======================================================30 wi re [ 2 : 0 ] CC_FULLADDER_q_node ;31 / / =======================================================

F.Segura-Quijano y C.Quintero Peña

Page 27: F. Segura-Quijano - C. Quintero Peña —— BIBLIOTECA DE ... · c.La búsqueda e identificación de contextos en donde se utiliza dicho componente es clara. d.El lenguaje disciplinar

27

32 / / S t r u c t u r a l co d i ng33 / / =======================================================34 / / CASE FORMAT (MUX)35 a s s i g n CC_FULLADDER_q_node = {CC_FULLADDER_cin_In , CC_FULLADDER_a_In , CC_FULLADDER_b_In } ;36 a lways @( * )37 c a s e ( CC_FULLADDER_q_node )38 0 : CC_FULLADDER_sum_Out = 0 ;39 1 : CC_FULLADDER_sum_Out = 1 ;40 2 : CC_FULLADDER_sum_Out = 1 ;41 3 : CC_FULLADDER_sum_Out = 0 ;42 4 : CC_FULLADDER_sum_Out = 1 ;43 5 : CC_FULLADDER_sum_Out = 0 ;44 6 : CC_FULLADDER_sum_Out = 0 ;45 7 : CC_FULLADDER_sum_Out = 1 ;46 d e f a u l t : CC_FULLADDER_sum_Out = 0 ;47 e n d c a s e48 a lways @( * )49 c a s e ( CC_FULLADDER_q_node )50 3 ’ b011 : CC_FULLADDER_cout_Out = 1 ;51 3 ’ b101 : CC_FULLADDER_cout_Out = 1 ;52 3 ’ b110 : CC_FULLADDER_cout_Out = 1 ;53 3 ’ b111 : CC_FULLADDER_cout_Out = 1 ;54 d e f a u l t : CC_FULLADDER_cout_Out = 0 ;55 e n d c a s e56 endmodule

Archivo 3.5: CC_FULLADDER.v

Diagramas QUARTUSCC_FULLADDER:CC_FULLADDER_u0

CC_FULLADDER_a_In

CC_FULLADDER_b_In

CC_FULLADDER_cin_In

CC_FULLADDER_cout_Out

CC_FULLADDER_sum_Out

BB_SYSTEM_b_InBB_SYSTEM_cin_In

BB_SYSTEM_cout_OutBB_SYSTEM_sum_Out

WideOr1Decoder0

IN[2..0] OUT[7..0]

WideOr0

BB_SYSTEM_a_In

7

6

5

3

4

2

1

7

3.4 Sumador de 1 bit: FULLADDER (4)A continuación se presenta el componente combinacional Sumador de 1 bit: FullAddermostrando otra forma de descripción.

Diagrama caja blancaEn este caso el diagrama corresponde a una implementación con bloques de menor jerarquía.

HDL: Caja blanca

3 / / =======================================================4 / / MODULE D e f i n i t i o n5 / / =======================================================6 module CC_FULLADDER (7 / / / / / / / / / / / / OUTPUTS / / / / / / / / / /8 CC_FULLADDER_cout_Out ,9 CC_FULLADDER_sum_Out ,

10 / / / / / / / / / / / / INPUTS / / / / / / / / / /11 CC_FULLADDER_a_In ,12 CC_FULLADDER_b_In ,

F.Segura-Quijano y C.Quintero Peña

Page 28: F. Segura-Quijano - C. Quintero Peña —— BIBLIOTECA DE ... · c.La búsqueda e identificación de contextos en donde se utiliza dicho componente es clara. d.El lenguaje disciplinar

Capítulo 3. COMPONENTE COMBINACIONAL. Sumador de 1 bit oFULLADDER.

13 CC_FULLADDER_cin_In14 ) ;15 / / =======================================================16 / / PARAMETER d e c l a r a t i o n s17 / / =======================================================

19 / / =======================================================20 / / PORT d e c l a r a t i o n s21 / / =======================================================22 o u t p u t CC_FULLADDER_cout_Out ;23 o u t p u t CC_FULLADDER_sum_Out ;24 i n p u t CC_FULLADDER_a_In ;25 i n p u t CC_FULLADDER_b_In ;26 i n p u t CC_FULLADDER_cin_In ;27 / / =======================================================28 / / REG/ WIRE d e c l a r a t i o n s29 / / =======================================================30 wi re HALFADDER_2_HALFADDER_node1 ;31 wi r e HALFADDER_2_GateOR_node2 ;32 wi r e HALFADDER_2_GateOR_node3 ;33 / / =======================================================34 / / S t r u c t u r a l co d i ng35 / / =======================================================36 / / STRUCTURAL37 CC_HALFADDER CC_HALFADDER_u0 (38 / / p o r t map − c o n n e c t i o n between m a s t e r p o r t s and s i g n a l s / r e g i s t e r s39 . CC_HALFADDER_cout_Out ( HALFADDER_2_GateOR_node3 ) ,40 . CC_HALFADDER_sum_Out (HALFADDER_2_HALFADDER_node1) ,41 . CC_HALFADDER_a_In ( CC_FULLADDER_a_In ) ,42 . CC_HALFADDER_b_In ( CC_FULLADDER_b_In )43 ) ;44 CC_HALFADDER CC_HALFADDER_u2 (45 / / p o r t map − c o n n e c t i o n between m a s t e r p o r t s and s i g n a l s / r e g i s t e r s46 . CC_HALFADDER_cout_Out ( HALFADDER_2_GateOR_node2 ) ,47 . CC_HALFADDER_sum_Out ( CC_FULLADDER_sum_Out ) ,48 . CC_HALFADDER_a_In (HALFADDER_2_HALFADDER_node1) ,49 . CC_HALFADDER_b_In ( CC_FULLADDER_cin_In )50 ) ;51 a s s i g n CC_FULLADDER_cout_Out = HALFADDER_2_GateOR_node2 | HALFADDER_2_GateOR_node3 ;52 endmodule

Archivo 3.6: CC_FULLADDER.v

HDL: bloques

3 / / =======================================================4 / / MODULE D e f i n i t i o n5 / / =======================================================6 module CC_HALFADDER (7 / / / / / / / / / / / / OUTPUTS / / / / / / / / / /8 CC_HALFADDER_cout_Out ,9 CC_HALFADDER_sum_Out ,

10 / / / / / / / / / / / / INPUTS / / / / / / / / / /11 CC_HALFADDER_a_In ,12 CC_HALFADDER_b_In13 ) ;14 / / =======================================================15 / / PARAMETER d e c l a r a t i o n s16 / / =======================================================

18 / / =======================================================19 / / PORT d e c l a r a t i o n s20 / / =======================================================21 o u t p u t CC_HALFADDER_cout_Out ;22 o u t p u t CC_HALFADDER_sum_Out ;23 i n p u t CC_HALFADDER_a_In ;24 i n p u t CC_HALFADDER_b_In ;25 / / =======================================================26 / / REG/ WIRE d e c l a r a t i o n s27 / / =======================================================

29 / / =======================================================30 / / S t r u c t u r a l co d i ng31 / / =======================================================32 a s s i g n CC_HALFADDER_sum_Out = CC_HALFADDER_a_In ^ CC_HALFADDER_b_In ;33 a s s i g n CC_HALFADDER_cout_Out = CC_HALFADDER_a_In & CC_HALFADDER_b_In ;34 endmodule

Archivo 3.7: CC_HALFADDER.v

Diagramas QUARTUSCC_FULLADDER:CC_FULLADDER_u0

CC_FULLADDER_a_In

CC_FULLADDER_b_In

CC_FULLADDER_cin_In

CC_FULLADDER_cout_Out

CC_FULLADDER_sum_Out

CC_HALFADDER:CC_HALFADDER_u2

CC_HALFADDER_a_In

CC_HALFADDER_b_InCC_HALFADDER_cout_Out

CC_HALFADDER_sum_Out

BB_SYSTEM_cin_In

BB_SYSTEM_cout_OutBB_SYSTEM_sum_Out

CC_HALFADDER_sum_Out

CC_FULLADDER_cout_Out

CC_HALFADDER:CC_HALFADDER_u0

CC_HALFADDER_a_In

CC_HALFADDER_b_In

CC_HALFADDER_cout_Out

CC_HALFADDER_sum_Out

CC_HALFADDER_cout_Out

BB_SYSTEM_b_InBB_SYSTEM_a_In

F.Segura-Quijano y C.Quintero Peña

Page 29: F. Segura-Quijano - C. Quintero Peña —— BIBLIOTECA DE ... · c.La búsqueda e identificación de contextos en donde se utiliza dicho componente es clara. d.El lenguaje disciplinar

29

3.5 Sumador de 1 bit: FULLADDER (5)A continuación se presenta el componente combinacional Sumador de 1 bit: FullAddermostrando otra forma de descripción.

Diagrama caja blancaEn este caso el diagrama corresponde a una implementación con codificador, pero es la her-ramienta quartus quien decide obtener el circuito simplificado, dado que solo escribimos laecuación del sistema.

HDL: Caja blanca

3 / / =======================================================4 / / MODULE D e f i n i t i o n5 / / =======================================================6 module CC_FULLADDER (7 / / / / / / / / / / / / OUTPUTS / / / / / / / / / /8 CC_FULLADDER_cout_Out ,9 CC_FULLADDER_sum_Out ,

10 / / / / / / / / / / / / INPUTS / / / / / / / / / /11 CC_FULLADDER_a_In ,12 CC_FULLADDER_b_In ,13 CC_FULLADDER_cin_In14 ) ;15 / / =======================================================16 / / PARAMETER d e c l a r a t i o n s17 / / =======================================================

19 / / =======================================================20 / / PORT d e c l a r a t i o n s21 / / =======================================================22 o u t p u t CC_FULLADDER_cout_Out ;23 o u t p u t CC_FULLADDER_sum_Out ;24 i n p u t CC_FULLADDER_a_In ;25 i n p u t CC_FULLADDER_b_In ;26 i n p u t CC_FULLADDER_cin_In ;27 / / =======================================================28 / / REG/ WIRE d e c l a r a t i o n s29 / / =======================================================

31 / / =======================================================32 / / S t r u c t u r a l co d i ng33 / / =======================================================34 / / SIMPLIFIED EQUATIONS35 a s s i g n {CC_FULLADDER_cout_Out , CC_FULLADDER_sum_Out} = CC_FULLADDER_a_In + CC_FULLADDER_b_In + CC_FULLADDER_cin_In ;36 endmodule

Archivo 3.8: CC_FULLADDER.v

Diagramas QUARTUSCC_FULLADDER:CC_FULLADDER_u0

CC_FULLADDER_a_In

CC_FULLADDER_b_In

CC_FULLADDER_cin_In

CC_FULLADDER_cout_Out

CC_FULLADDER_sum_Out

BB_SYSTEM_b_InBB_SYSTEM_cin_In

BB_SYSTEM_cout_OutBB_SYSTEM_sum_Out

+

Add1CIN1'h0A[1..0]

B[1..0]

OUT[1..0]

+

Add0CIN1'h0A[1..0]

B[1..0]

OUT[1..0]

BB_SYSTEM_a_In

1

0

F.Segura-Quijano y C.Quintero Peña

Page 30: F. Segura-Quijano - C. Quintero Peña —— BIBLIOTECA DE ... · c.La búsqueda e identificación de contextos en donde se utiliza dicho componente es clara. d.El lenguaje disciplinar
Page 31: F. Segura-Quijano - C. Quintero Peña —— BIBLIOTECA DE ... · c.La búsqueda e identificación de contextos en donde se utiliza dicho componente es clara. d.El lenguaje disciplinar

MUX41 (1)Descripción del componenteSímboloDiagrama caja negraFuncionalidadHDL: Caja negraDefinición vectores de pruebaHDL: Vectores de pruebaDiagrama caja blancaHDL: Caja blancaHDL: bloquesSimulación temporalDiagramas QUARTUSResultados y lecciones aprendidas

MUX41 (2)MUX41 (3)MUX41 (4)MUX41 (5)MUX41 (6)MUX41 (7)MUX41 (8)

4. Componentes combinacionales: bloques.

THOMAS ALVA EDISON

No fracasé, sólo descubrí 999 maneras decómo no hacer una bombilla.

En este capítulo se presentan el diseño de un multiplexor de 4 a 1 o MUX41. Se planteandiferentes tipos de descripción para poder hacer una comparación de las potencialidades dellenguaje.

4.1 MUX41 (1)

A continuación se presenta el componente combinacional Multiplexor 4 a 1: MUX41 mostrandouna primera descripción a partir de la funcionalidad del componente.

4.1.1 Descripción del componente

Un multiplexor es un circuito con varias entradas y una única salida de datos. Tiene entradaspara poder seleccionar una y solo una de las entradas de los datos para permitir llevar los datosde la entrada seleccionada a dicha salida. Los multiplexores funcionan como conmutadoresque accionan rápidamente para gestionar varias líneas de entrada llamadas canales, los cualesconectan solo uno de esos canales a la salida.

Un multiplexor se puede utilizar por ejemplo como un serializador, es decir un sistemaque puede convertir datos de forma paralela a forma serial. Otro campo de utilización delos multiplexores es en la transmisión multiplexada, en donde utilizando las mismas líneasde conexión se transmiten diferentes datos de distinta procedencia. Adicionalmente con unmultiplexor se pueden implementar cualquier función lógica.

Page 32: F. Segura-Quijano - C. Quintero Peña —— BIBLIOTECA DE ... · c.La búsqueda e identificación de contextos en donde se utiliza dicho componente es clara. d.El lenguaje disciplinar

Capítulo 4. Componentes combinacionales: bloques.

4.1.2 Símbolo

CC_MUX41_data_InBUS[0]

CC_MUX41_select_InBUS[0]

CC_MUX41_z_Out

CC_MUX41_data_InBUS[1]

CC_MUX41_data_InBUS[2]

CC_MUX41_data_InBUS[3]

CC_MUX41_select_InBUS[1]

4.1.3 Diagrama caja negra

4.1.4 Funcionalidad

, Ecuación característica

CC_MUX41_z_Out <= CC_MUX41_data_InBUS[CC_MUX41_select_InBUS] ;

, Tabla de verdad

Dada la cantidad de variables, hacer una tabla de verdad ya no resulta interesante ni eficiente. Poresta razón procedemos a hacer mejor el Macro algoritmo que nos permite ver el funcionamientodel componente.

, Macro algoritmo

Algorithm 4: Multiplexor 4:1Data: CC_MUX41_data_InBUS, CC_MUX41_select_InBUS (0, 1)Result: CC_MUX41_z_Out (0, 1)if (CC_MUX41_select_InBUS == 0) then

CC_GateAND_z_Out =CC_MUX41_data_InBUS[0]else if (CC_MUX41_select_InBUS == 1) then

CC_GateAND_z_Out =CC_MUX41_data_InBUS[1]else if (CC_MUX41_select_InBUS == 2) then

CC_GateAND_z_Out =CC_MUX41_data_InBUS[2]else

CC_GateAND_z_Out =CC_MUX41_data_InBUS[3]

F.Segura-Quijano y C.Quintero Peña

Page 33: F. Segura-Quijano - C. Quintero Peña —— BIBLIOTECA DE ... · c.La búsqueda e identificación de contextos en donde se utiliza dicho componente es clara. d.El lenguaje disciplinar

33

4.1.5 HDL: Caja negra

3 / / =======================================================4 / / MODULE D e f i n i t i o n5 / / =======================================================6 module BB_SYSTEM (7 / / / / / / / / / / / / OUTPUTS / / / / / / / / / /8 BB_SYSTEM_z_Out ,9 / / / / / / / / / / / / INPUTS / / / / / / / / / /

10 BB_SYSTEM_select_InBUS ,11 BB_SYSTEM_data_InBUS12 ) ;13 / / =======================================================14 / / PARAMETER d e c l a r a t i o n s15 / / =======================================================16 p a r a m e t e r MUX41_SELECTWIDTH = 2 ;17 p a r a m e t e r MUX41_DATAWIDTH = 4 ;18 / / =======================================================19 / / PORT d e c l a r a t i o n s20 / / =======================================================21 o u t p u t BB_SYSTEM_z_Out ;22 i n p u t [MUX41_SELECTWIDTH−1:0 ] BB_SYSTEM_select_InBUS ;23 i n p u t [MUX41_DATAWIDTH−1:0 ] BB_SYSTEM_data_InBUS ;24 / / =======================================================25 / / REG/ WIRE d e c l a r a t i o n s26 / / =======================================================

28 / / =======================================================29 / / S t r u c t u r a l co d i ng30 / / =======================================================31 CC_MUX41 # ( . MUX41_SELECTWIDTH(MUX41_SELECTWIDTH) , .MUX41_DATAWIDTH(MUX41_DATAWIDTH) ) CC_MUX41_u0 (32 / / p o r t map − c o n n e c t i o n between m a s t e r p o r t s and s i g n a l s / r e g i s t e r s33 . CC_MUX41_z_Out ( BB_SYSTEM_z_Out ) ,34 . CC_MUX41_select_InBUS ( BB_SYSTEM_select_InBUS ) ,35 . CC_MUX41_data_InBUS ( BB_SYSTEM_data_InBUS )36 ) ;37 endmodule

Archivo 4.1: BB_SYSTEM.v

F.Segura-Quijano y C.Quintero Peña

Page 34: F. Segura-Quijano - C. Quintero Peña —— BIBLIOTECA DE ... · c.La búsqueda e identificación de contextos en donde se utiliza dicho componente es clara. d.El lenguaje disciplinar

Capítulo 4. Componentes combinacionales: bloques.

4.1.6 Definición vectores de pruebaPara el caso del multiplexor de 4 a 1, con un total de 6 entradas sería poco eficiente hacertoda la tabla de verdad. Se pueden plantear alternativas para generación de vectores de pruebade forma automática a través de programación y/o se pueden identificar algunos casos quepermitan validar el comportamiento de la mayoría de posibles combinaciones. En este caso sepropone tener un contador de 4 bits de de 0 a 15 conectado al bus de entrada de datos; y en cadatiempo de simulación se hace una selección de cada entrada correspondiente del multiplexor(por medio de la señal de selección) para tener dicho valor en binario a la salida. En la siguientedescripción podemos ver como se generan los vectores de prueba usando sentencias for. Estetipo de sentencias no es recomendada para describir funcionalmente el comportamiento de uncomponente, pero si es muy útil en la definición de los vectores de prueba. Para descripcionesfuncionales la sentencia for es útil solamente para concatenación de bloques/componentes.

4.1.7 HDL: Vectores de prueba

3 ‘ t i m e s c a l e 1 ns / 1 ns4 module TB_SYSTEM ( ) ;5 / / c o n s t a n t s6 / / ============================================7 / / P a r a m e t e r ( may d i f f e r f o r p h y s i c a l s y n t h e s i s )8 / / ============================================9 p a r a m e t e r MUX41_SELECTWIDTH = 2 ;

10 p a r a m e t e r MUX41_DATAWIDTH = 4 ;11 i n t e g e r i i =0 ;

13 / / g e n e r a l p u r p o s e r e g i s t e r s14 r e g eachvec ;

16 / / t e s t v e c t o r i n p u t r e g i s t e r s17 / / ============================================18 / / INTERNAL WIRE AND REG DECLARATIONS19 / / ============================================20 / / w i r e s (OUTPUTS)21 wi r e TB_SYSTEM_z_Out ;22 / / r e g ( INPUTS )23 r e g [MUX41_SELECTWIDTH−1:0 ] TB_SYSTEM_select_InBUS ;24 r e g [MUX41_DATAWIDTH−1:0 ] TB_SYSTEM_data_InBUS ;

26 / / a s s i g n s t a t e m e n t s ( i f any )27 BB_SYSTEM BB_SYSTEM_u0 (28 / / p o r t map − c o n n e c t i o n between m a s t e r p o r t s and s i g n a l s / r e g i s t e r s29 . BB_SYSTEM_z_Out ( TB_SYSTEM_z_Out ) ,30 . BB_SYSTEM_select_InBUS ( TB_SYSTEM_select_InBUS ) ,31 . BB_SYSTEM_data_InBUS ( TB_SYSTEM_data_InBUS )32 ) ;33 i n i t i a l34 b e g i n35 / / code t h a t e x e c u t e s on ly once36 / / i n s e r t code h e r e −−> b e g i n

38 / / −−> end39 $ d i s p l a y ( " Running t e s t b e n c h " ) ;40 end41 a lways42 / / o p t i o n a l s e n s i t i v i t y l i s t43 / / @( e v e n t 1 o r e v e n t 2 o r . . . . e v e n t n )

45 b e g i n46 / / code e x e c u t e s f o r e v e r y e v e n t on s e n s i t i v i t y l i s t47 / / i n s e r t code h e r e −−> b e g i n48 #10000 $ m o n i t o r ( " TB_SYSTEM_data_InBUS = %b " , TB_SYSTEM_data_InBUS , " | TB_SYSTEM_select_InBUS = " ,

TB_SYSTEM_select_InBUS , " | TB_SYSTEM_z_Out = " , TB_SYSTEM_z_Out ) ;49 f o r ( i i = 0 ; i i <= 1 5 ; i i = i i + 1 )50 b e g i n51 TB_SYSTEM_data_InBUS = i i ;52 TB_SYSTEM_select_InBUS = 0 ; #10000;53 TB_SYSTEM_select_InBUS = 1 ; #10000;54 TB_SYSTEM_select_InBUS = 2 ; #10000;55 TB_SYSTEM_select_InBUS = 3 ; #10000;56 $ d i s p l a y ( "−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−" ) ;57 end58 @eachvec ;59 $ f i n i s h ;60 / / −−> end61 end62 endmodule

Archivo 4.2: TB_SYSTEM.vt

F.Segura-Quijano y C.Quintero Peña

Page 35: F. Segura-Quijano - C. Quintero Peña —— BIBLIOTECA DE ... · c.La búsqueda e identificación de contextos en donde se utiliza dicho componente es clara. d.El lenguaje disciplinar

35

4.1.8 Diagrama caja blanca

En este caso vamos a graficar el diagrama correspondiente con todos los niveles de jerarquíadel componente. Como su implementación interna empieza a tener diagramas de compuertasextensos, no vale la pena mostrarlos. Para ello dejamos que el sintetizador de la herramientaQuartus se encargue de hacer las simplificaciones y los circuitos. De ahora en adelante dejaremoseste diagrama de caja negra para representar componentes o sistemas compuestos por varioscomponentes de librería.

4.1.9 HDL: Caja blanca

En este caso se presenta una descripción funcional basada en sentencias if/else.

3 / / =======================================================4 / / MODULE D e f i n i t i o n5 / / =======================================================6 module CC_MUX41 #( p a r a m e t e r MUX41_SELECTWIDTH=2 , p a r a m e t e r MUX41_DATAWIDTH=4) (7 / / / / / / / / / / / / OUTPUTS / / / / / / / / / /8 CC_MUX41_z_Out ,9 / / / / / / / / / / / / INPUTS / / / / / / / / / /

10 CC_MUX41_select_InBUS ,11 CC_MUX41_data_InBUS12 ) ;13 / / =======================================================14 / / PARAMETER d e c l a r a t i o n s15 / / =======================================================

17 / / =======================================================18 / / PORT d e c l a r a t i o n s19 / / =======================================================20 o u t p u t r e g CC_MUX41_z_Out ;21 i n p u t [MUX41_SELECTWIDTH−1:0 ] CC_MUX41_select_InBUS ;22 i n p u t [MUX41_DATAWIDTH−1:0 ] CC_MUX41_data_InBUS ;23 / / =======================================================24 / / REG/ WIRE d e c l a r a t i o n s25 / / =======================================================

27 / / =======================================================28 / / S t r u c t u r a l co d i ng29 / / =======================================================30 a lways @( CC_MUX41_data_InBUS or CC_MUX41_select_InBUS )31 b e g i n32 i f ( CC_MUX41_select_InBUS == 0)33 CC_MUX41_z_Out = CC_MUX41_data_InBUS [ 0 ] ;34 e l s e i f ( CC_MUX41_select_InBUS == 1)35 CC_MUX41_z_Out = CC_MUX41_data_InBUS [ 1 ] ;36 e l s e i f ( CC_MUX41_select_InBUS == 2)37 CC_MUX41_z_Out = CC_MUX41_data_InBUS [ 2 ] ;38 e l s e39 CC_MUX41_z_Out = CC_MUX41_data_InBUS [ 3 ] ;40 end

42 endmodule

Archivo 4.3: CC_MUX41.v

4.1.10 HDL: bloques

En este caso no hay componentes de menor jerarquía para el diseño.

F.Segura-Quijano y C.Quintero Peña

Page 36: F. Segura-Quijano - C. Quintero Peña —— BIBLIOTECA DE ... · c.La búsqueda e identificación de contextos en donde se utiliza dicho componente es clara. d.El lenguaje disciplinar

Capítulo 4. Componentes combinacionales: bloques.

4.1.11 Simulación temporalDado que conocemos la funcionalidad del componente y sabiendo la complejidad que em-piezan a tener los mismos; dejamos la presentación de la simulación temporal posterior a laimplementación de la herramienta Quartus y presentamos los resultados de simulación.

0 2 5Se recorren todas las entradas

con el selector. La salida toma

el valor correspondiente.

4.1.12 Diagramas QUARTUS

4.1.13 Resultados y lecciones aprendidas

Un multiplexor es uno de los elementos más simples de la electrónica digital. Es demucha utilizad para poder seleccionar una de entre varias señales. Su implementación sepuede realizar de diferentes maneras como se presenta en las siguientes secciones. Esimportante revisar todos los tipos de implementación lo cual nos ayuda a comprendermejor el lenguaje.

4.2 MUX41 (2)A continuación se presenta el componente combinacional Multiplexor 4 a 1 mostrando otraforma de descripción.

HDL: Caja blanca

3 / / =======================================================4 / / MODULE D e f i n i t i o n5 / / =======================================================6 module CC_MUX41 #( p a r a m e t e r MUX41_SELECTWIDTH=2 , p a r a m e t e r MUX41_DATAWIDTH=4) (7 / / / / / / / / / / / / OUTPUTS / / / / / / / / / /8 CC_MUX41_z_Out ,9 / / / / / / / / / / / / INPUTS / / / / / / / / / /

10 CC_MUX41_select_InBUS ,11 CC_MUX41_data_InBUS12 ) ;13 / / =======================================================14 / / PARAMETER d e c l a r a t i o n s15 / / =======================================================

17 / / =======================================================18 / / PORT d e c l a r a t i o n s19 / / =======================================================20 o u t p u t r e g CC_MUX41_z_Out ;21 i n p u t [MUX41_SELECTWIDTH−1:0 ] CC_MUX41_select_InBUS ;

F.Segura-Quijano y C.Quintero Peña

Page 37: F. Segura-Quijano - C. Quintero Peña —— BIBLIOTECA DE ... · c.La búsqueda e identificación de contextos en donde se utiliza dicho componente es clara. d.El lenguaje disciplinar

37

22 i n p u t [MUX41_DATAWIDTH−1:0 ] CC_MUX41_data_InBUS ;23 / / =======================================================24 / / REG/ WIRE d e c l a r a t i o n s25 / / =======================================================

27 / / =======================================================28 / / S t r u c t u r a l co d i ng29 / / =======================================================30 a lways @( CC_MUX41_data_InBUS or CC_MUX41_select_InBUS )31 CC_MUX41_z_Out = CC_MUX41_data_InBUS [ CC_MUX41_select_InBUS ] ;

33 endmodule

Archivo 4.4: CC_MUX41.v

Diagramas QUARTUS

4.3 MUX41 (3)

A continuación se presenta el componente combinacional Multiplexor 4 a 1 mostrando otraforma de descripción.

HDL: Caja blanca

3 / / =======================================================4 / / MODULE D e f i n i t i o n5 / / =======================================================6 module CC_MUX41 #( p a r a m e t e r MUX41_SELECTWIDTH=2 , p a r a m e t e r MUX41_DATAWIDTH=4) (7 / / / / / / / / / / / / OUTPUTS / / / / / / / / / /8 CC_MUX41_z_Out ,9 / / / / / / / / / / / / INPUTS / / / / / / / / / /

10 CC_MUX41_select_InBUS ,11 CC_MUX41_data_InBUS12 ) ;13 / / =======================================================14 / / PARAMETER d e c l a r a t i o n s15 / / =======================================================

17 / / =======================================================18 / / PORT d e c l a r a t i o n s19 / / =======================================================20 o u t p u t CC_MUX41_z_Out ;21 i n p u t [MUX41_SELECTWIDTH−1:0 ] CC_MUX41_select_InBUS ;22 i n p u t [MUX41_DATAWIDTH−1:0 ] CC_MUX41_data_InBUS ;23 / / =======================================================24 / / REG/ WIRE d e c l a r a t i o n s25 / / =======================================================

27 / / =======================================================28 / / S t r u c t u r a l co d i ng29 / / =======================================================30 a s s i g n CC_MUX41_z_Out = CC_MUX41_data_InBUS [ CC_MUX41_select_InBUS ] ;

32 endmodule

Archivo 4.5: CC_MUX41.v

Diagramas QUARTUS

F.Segura-Quijano y C.Quintero Peña

Page 38: F. Segura-Quijano - C. Quintero Peña —— BIBLIOTECA DE ... · c.La búsqueda e identificación de contextos en donde se utiliza dicho componente es clara. d.El lenguaje disciplinar

Capítulo 4. Componentes combinacionales: bloques.

4.4 MUX41 (4)A continuación se presenta el componente combinacional Multiplexor 4 a 1 mostrando otraforma de descripción.

HDL: Caja blanca

3 / / =======================================================4 / / MODULE D e f i n i t i o n5 / / =======================================================6 module CC_MUX41 #( p a r a m e t e r MUX41_SELECTWIDTH=2 , p a r a m e t e r MUX41_DATAWIDTH=4) (7 / / / / / / / / / / / / OUTPUTS / / / / / / / / / /8 CC_MUX41_z_Out ,9 / / / / / / / / / / / / INPUTS / / / / / / / / / /

10 CC_MUX41_select_InBUS ,11 CC_MUX41_data_InBUS12 ) ;13 / / =======================================================14 / / PARAMETER d e c l a r a t i o n s15 / / =======================================================

17 / / =======================================================18 / / PORT d e c l a r a t i o n s19 / / =======================================================20 o u t p u t r e g CC_MUX41_z_Out ;21 i n p u t [MUX41_SELECTWIDTH−1:0 ] CC_MUX41_select_InBUS ;22 i n p u t [MUX41_DATAWIDTH−1:0 ] CC_MUX41_data_InBUS ;23 / / =======================================================24 / / REG/ WIRE d e c l a r a t i o n s25 / / =======================================================

27 / / =======================================================28 / / S t r u c t u r a l co d i ng29 / / =======================================================30 a lways @( CC_MUX41_data_InBUS or CC_MUX41_select_InBUS )31 b e g i n32 c a s e ( CC_MUX41_select_InBUS )33 0 : CC_MUX41_z_Out = CC_MUX41_data_InBUS [ 0 ] ;34 1 : CC_MUX41_z_Out = CC_MUX41_data_InBUS [ 1 ] ;35 2 : CC_MUX41_z_Out = CC_MUX41_data_InBUS [ 2 ] ;36 3 : CC_MUX41_z_Out = CC_MUX41_data_InBUS [ 3 ] ;37 d e f a u l t : CC_MUX41_z_Out = CC_MUX41_data_InBUS [ 3 ] ;38 e n d c a s e39 end

41 endmodule

Archivo 4.6: CC_MUX41.v

Diagramas QUARTUS

4.5 MUX41 (5)A continuación se presenta el componente combinacional Multiplexor 4 a 1 mostrando otraforma de descripción.

HDL: Caja blanca

3 / / =======================================================4 / / MODULE D e f i n i t i o n5 / / =======================================================6 module CC_MUX41 #( p a r a m e t e r MUX41_SELECTWIDTH=2 , p a r a m e t e r MUX41_DATAWIDTH=4) (7 / / / / / / / / / / / / OUTPUTS / / / / / / / / / /8 CC_MUX41_z_Out ,9 / / / / / / / / / / / / INPUTS / / / / / / / / / /

10 CC_MUX41_select_InBUS ,11 CC_MUX41_data_InBUS12 ) ;13 / / =======================================================14 / / PARAMETER d e c l a r a t i o n s15 / / =======================================================

F.Segura-Quijano y C.Quintero Peña

Page 39: F. Segura-Quijano - C. Quintero Peña —— BIBLIOTECA DE ... · c.La búsqueda e identificación de contextos en donde se utiliza dicho componente es clara. d.El lenguaje disciplinar

39

17 / / =======================================================18 / / PORT d e c l a r a t i o n s19 / / =======================================================20 o u t p u t CC_MUX41_z_Out ;21 i n p u t [MUX41_SELECTWIDTH−1:0 ] CC_MUX41_select_InBUS ;22 i n p u t [MUX41_DATAWIDTH−1:0 ] CC_MUX41_data_InBUS ;23 / / =======================================================24 / / REG/ WIRE d e c l a r a t i o n s25 / / =======================================================

27 / / =======================================================28 / / S t r u c t u r a l co d i ng29 / / =======================================================30 a s s i g n CC_MUX41_z_Out = ( CC_MUX41_select_InBUS == 0 ) ? CC_MUX41_data_InBUS [ 0 ] : ( CC_MUX41_select_InBUS == 1 ) ?

CC_MUX41_data_InBUS [ 1 ] : ( CC_MUX41_select_InBUS == 2 ) ? CC_MUX41_data_InBUS [ 2 ] : CC_MUX41_data_InBUS [ 3 ] ;

32 endmodule

Archivo 4.7: CC_MUX41.v

Diagramas QUARTUS

4.6 MUX41 (6)

A continuación se presenta el componente combinacional Multiplexor 4 a 1 mostrando otraforma de descripción.

HDL: Caja blanca

3 / / =======================================================4 / / MODULE D e f i n i t i o n5 / / =======================================================6 module CC_MUX41 #( p a r a m e t e r MUX41_SELECTWIDTH=2 , p a r a m e t e r MUX41_DATAWIDTH=4) (7 / / / / / / / / / / / / OUTPUTS / / / / / / / / / /8 CC_MUX41_z_Out ,9 / / / / / / / / / / / / INPUTS / / / / / / / / / /

10 CC_MUX41_select_InBUS ,11 CC_MUX41_data_InBUS12 ) ;13 / / =======================================================14 / / PARAMETER d e c l a r a t i o n s15 / / =======================================================

17 / / =======================================================18 / / PORT d e c l a r a t i o n s19 / / =======================================================20 o u t p u t r e g CC_MUX41_z_Out ;21 i n p u t [MUX41_SELECTWIDTH−1:0 ] CC_MUX41_select_InBUS ;22 i n p u t [MUX41_DATAWIDTH−1:0 ] CC_MUX41_data_InBUS ;23 / / =======================================================24 / / REG/ WIRE d e c l a r a t i o n s25 / / =======================================================

27 / / =======================================================28 / / S t r u c t u r a l co d i ng29 / / =======================================================30 a lways @( CC_MUX41_select_InBUS or CC_MUX41_data_InBUS )31 b e g i n32 CC_MUX41_z_Out = ( ~CC_MUX41_select_InBUS [ 0 ] & ~CC_MUX41_select_InBUS [ 1 ] & CC_MUX41_data_InBUS [ 0 ] )33 | ( CC_MUX41_select_InBUS [ 0 ] & ~CC_MUX41_select_InBUS [ 1 ] & CC_MUX41_data_InBUS [ 1 ] )34 | ( ~CC_MUX41_select_InBUS [ 0 ] & CC_MUX41_select_InBUS [ 1 ] & CC_MUX41_data_InBUS [ 2 ] )35 | ( CC_MUX41_select_InBUS [ 0 ] & CC_MUX41_select_InBUS [ 1 ] & CC_MUX41_data_InBUS [ 3 ] ) ;36 end

38 endmodule

Archivo 4.8: CC_MUX41.v

F.Segura-Quijano y C.Quintero Peña

Page 40: F. Segura-Quijano - C. Quintero Peña —— BIBLIOTECA DE ... · c.La búsqueda e identificación de contextos en donde se utiliza dicho componente es clara. d.El lenguaje disciplinar

Capítulo 4. Componentes combinacionales: bloques.

Diagramas QUARTUS

4.7 MUX41 (7)

A continuación se presenta el componente combinacional Multiplexor 4 a 1 mostrando otraforma de descripción.

HDL: Caja blanca

3 / / =======================================================4 / / MODULE D e f i n i t i o n5 / / =======================================================6 module CC_MUX41 #( p a r a m e t e r MUX41_SELECTWIDTH=2 , p a r a m e t e r MUX41_DATAWIDTH=4) (7 / / / / / / / / / / / / OUTPUTS / / / / / / / / / /8 CC_MUX41_z_Out ,9 / / / / / / / / / / / / INPUTS / / / / / / / / / /

10 CC_MUX41_select_InBUS ,11 CC_MUX41_data_InBUS12 ) ;13 / / =======================================================14 / / PARAMETER d e c l a r a t i o n s15 / / =======================================================

17 / / =======================================================18 / / PORT d e c l a r a t i o n s19 / / =======================================================20 o u t p u t CC_MUX41_z_Out ;21 i n p u t [MUX41_SELECTWIDTH−1:0 ] CC_MUX41_select_InBUS ;22 i n p u t [MUX41_DATAWIDTH−1:0 ] CC_MUX41_data_InBUS ;23 / / =======================================================24 / / REG/ WIRE d e c l a r a t i o n s25 / / =======================================================26 wi re CC_MUX41_q1_node , CC_MUX41_q2_node , CC_MUX41_q3_node , CC_MUX41_q4_node , CC_MUX41_NOTselect0_node ,

CC_MUX41_NOTselect1_node ;27 wi r e [MUX41_SELECTWIDTH−1:0 ] CC_MUX41_NOTSelect_BUS_node ;28 / / =======================================================29 / / S t r u c t u r a l co d i ng30 / / =======================================================31 a s s i g n CC_MUX41_NOTSelect_BUS_node [ 0 ] = ~CC_MUX41_select_InBUS [ 0 ] ;32 a s s i g n CC_MUX41_NOTSelect_BUS_node [ 1 ] = ~CC_MUX41_select_InBUS [ 1 ] ;

34 a s s i g n CC_MUX41_q1_node = CC_MUX41_NOTSelect_BUS_node [ 0 ] & CC_MUX41_NOTSelect_BUS_node [ 1 ] &CC_MUX41_data_InBUS [ 0 ] ;

35 a s s i g n CC_MUX41_q2_node = CC_MUX41_select_InBUS [ 0 ] & CC_MUX41_NOTSelect_BUS_node [ 1 ] & CC_MUX41_data_InBUS[ 1 ] ;

36 a s s i g n CC_MUX41_q3_node = CC_MUX41_NOTSelect_BUS_node [ 0 ] & CC_MUX41_select_InBUS [ 1 ] & CC_MUX41_data_InBUS[ 2 ] ;

37 a s s i g n CC_MUX41_q4_node = CC_MUX41_select_InBUS [ 0 ] & CC_MUX41_select_InBUS [ 1 ] & CC_MUX41_data_InBUS[ 3 ] ;

39 a s s i g n CC_MUX41_z_Out = CC_MUX41_q4_node | CC_MUX41_q3_node | CC_MUX41_q2_node | CC_MUX41_q1_node ;

42 endmodule

Archivo 4.9: CC_MUX41.v

F.Segura-Quijano y C.Quintero Peña

Page 41: F. Segura-Quijano - C. Quintero Peña —— BIBLIOTECA DE ... · c.La búsqueda e identificación de contextos en donde se utiliza dicho componente es clara. d.El lenguaje disciplinar

41

Diagramas QUARTUS

4.8 MUX41 (8)

A continuación se presenta el componente combinacional Multiplexor 4 a 1 mostrando otraforma de descripción la cual es NO RECOMENDADA debido a que se usan una sentenciaif incompleta en vez de sentencias if/else. Adicionalmente Se debe completar siempre el ifcon la sentencia default al final para que le sintetizador pueda reconocer la lógica en cadauno de los casos que se quieren seleccionar. Nótese que luego de realizar la compilación delcódigo aparece el siguiente mensaje: Warning (10240): Verilog HDL Always Construct warningat CC_MUX41.v(45): inferring latch(es) for variable CC_MUX41_z_Out, which holds itsprevious value in one or more paths through the always construct. La presencia de un latch escompletamente indeseada como lo veremos en clase mas adelante.

HDL: Caja blanca

3 / / =======================================================4 / / MODULE D e f i n i t i o n5 / / =======================================================6 module CC_MUX41 #( p a r a m e t e r MUX41_SELECTWIDTH=2 , p a r a m e t e r MUX41_DATAWIDTH=4) (7 / / / / / / / / / / / / OUTPUTS / / / / / / / / / /8 CC_MUX41_z_Out ,9 / / / / / / / / / / / / INPUTS / / / / / / / / / /

10 CC_MUX41_select_InBUS ,11 CC_MUX41_data_InBUS12 ) ;13 / / =======================================================14 / / PARAMETER d e c l a r a t i o n s15 / / =======================================================

17 / / =======================================================18 / / PORT d e c l a r a t i o n s19 / / =======================================================20 o u t p u t r e g CC_MUX41_z_Out ;21 i n p u t [MUX41_SELECTWIDTH−1:0 ] CC_MUX41_select_InBUS ;22 i n p u t [MUX41_DATAWIDTH−1:0 ] CC_MUX41_data_InBUS ;23 / / =======================================================24 / / REG/ WIRE d e c l a r a t i o n s25 / / =======================================================

27 / / =======================================================28 / / S t r u c t u r a l co d i ng29 / / =======================================================30 a lways @( CC_MUX41_data_InBUS or CC_MUX41_select_InBUS )31 b e g i n32 / / LATCH GENERATED. VIEW RTL VIEWER . VERY BAD DESCRIPTION33 i f ( CC_MUX41_select_InBUS == 0)34 CC_MUX41_z_Out = CC_MUX41_data_InBUS [ 0 ] ;35 i f ( CC_MUX41_select_InBUS == 1)36 CC_MUX41_z_Out = CC_MUX41_data_InBUS [ 1 ] ;37 i f ( CC_MUX41_select_InBUS == 2)38 CC_MUX41_z_Out = CC_MUX41_data_InBUS [ 2 ] ;39 i f ( CC_MUX41_select_InBUS == 3)40 CC_MUX41_z_Out = CC_MUX41_data_InBUS [ 3 ] ;41 end

43 endmodule

Archivo 4.10: CC_MUX41.v

F.Segura-Quijano y C.Quintero Peña

Page 42: F. Segura-Quijano - C. Quintero Peña —— BIBLIOTECA DE ... · c.La búsqueda e identificación de contextos en donde se utiliza dicho componente es clara. d.El lenguaje disciplinar

Capítulo 4. Componentes combinacionales: bloques.

Diagramas QUARTUS

F.Segura-Quijano y C.Quintero Peña

Page 43: F. Segura-Quijano - C. Quintero Peña —— BIBLIOTECA DE ... · c.La búsqueda e identificación de contextos en donde se utiliza dicho componente es clara. d.El lenguaje disciplinar

5. Componentes secuenciales: bloques.

THOMAS ALVA EDISON

Muchos fracasos ocurren en personas que nose dieron cuenta lo cerca del éxito que

estuvieron.

En este capítulo se presentan diferentes bloques secuenciales. Se plantea siempre un mecan-ismo de control del bloque usando una máquina de estados para validar su funcionamiento encondiciones reales.

Page 44: F. Segura-Quijano - C. Quintero Peña —— BIBLIOTECA DE ... · c.La búsqueda e identificación de contextos en donde se utiliza dicho componente es clara. d.El lenguaje disciplinar
Page 45: F. Segura-Quijano - C. Quintero Peña —— BIBLIOTECA DE ... · c.La búsqueda e identificación de contextos en donde se utiliza dicho componente es clara. d.El lenguaje disciplinar

6. Sistemas.

THOMAS ALVA EDISON

El genio es un uno por ciento de inspiración yun noventa y nueve por ciento de

transpiración.

En este capítulo se presentan diferentes sistemas digitales como ejemplos de diseño.