Está en la página 1de 17

Scientia et Technica Año XVIII, No xx, Mesxx de Añoxx. Universidad Tecnológica de Pereira.

ISSN 0122-1701
1

Estudio de la lógica combinatoria y


desarrollo de una unidad aritmético lógica
(ALU) mediante System Verilog
Study of combinatorial logic and development of an arithmetic logic unit
(ALU) using System Verilog
Autor 1: Miguel Ángel López Fernández
Facultad de Ingenierías, Universidad Tecnológica de Pereira, Pereira-Risaralda, Colombia
Correo-e: miguel.lopez@utp.edu.co

Resumen— El análisis de la lógica combinatoria unidad aritmeticológica, y realizar bancos de pruebas


permitió el desarrollo de uno de los módulos más para corroborar su correcto funcionamiento.
importantes de un procesador (CPU), la ALU
(Arithmetic Logic Unit). Gracias al desarrollo tanto
El desarrollo de cada circuito se propone de la
teórico como virtual utilizando el lenguaje de
descripción de hardware Verilog se logró comprobar el
siguiente manera:
funcionamiento de los circuitos propuestos, así como  Parte de aplicación teórica, donde se
aumentar la experticia en la descripción de propone las formas en cómo se puede
componentes de hardware. expresar lógicamente un circuito, así como
las reglas que definen su funcionamiento en
caso de que sea un modelamiento
Palabras clave— ALU, circuitos, descripción de
hardware, lógica combinatoria, Verilog.
 Parte de implementación, en donde se usará
el lenguaje de Verilog para describir el
Abstract— The analysis of combinatorial logic allowed diseño del circuito a partir de los resultados
the development of one of the most important modules de la parte analítica, así como para generar
of a processor (CPU), the ALU (Arithmetic Logic Unit). pruebas que validen los resultados al
Thanks to both theoretical and virtual development momento de ejecución de los circuitos.
using the Verilog hardware description language, it was  Parte analítica, donde se observan los
possible to check the operation of the proposed circuits, bancos de prueba con los resultados que se
as well as to increase the expertise in the description of deben obtener, así como las indicaciones del
hardware components field.
contexto que permitan validar el circuito.
Key Word — ALU, circuits, hardware description, II. MÉTODOLOGÍA
combinatorial logic, Verilog
El desarrollo del estudio se lleva a cabo mediante la
I. INTRODUCCIÓN elaboración de un conjunto de circuitos lógicos. La
mayoría de estos constan de analizar de manera
sistemática el funcionamiento tanto de las entradas
Gracias a la lógica combinatoria, objetos como los como de las salidas, su representación por medio del
computadores, teléfonos, telecomunicaciones, entre algebra booleana y su equivalencia a nivel de
otros, se han concebido. Es por ello que en este expresiones lógicas como lo son mixterms (suma de
documento se analizarán un cierto número de productos) y maxterms (producto de sumas).
circuitos con el fin de que al final se pueda estudiar Posteriormente se desarrolló un diseño mediante el
su comportamiento, si la relación entre la descripción lenguaje de descripción de hardware System Verilog
teórica y la experimental; con ayuda de lenguajes de junto a un banco de pruebas respectivo el cual
descripción de hardware como Verilog; es permitió después el debido análisis. Otros de los
equivalentes. Se pretende también construir un circuitos se analizarán de una manera distinta, pero
primer módulo parte de un procesador (CPU), la
2 Scientia et Technica Año 2022, No 01, Mes 08 de 2022. Universidad
Tecnológica de Pereira.

conservarán los procedimientos en donde se usa Luego de encontrar una expresión booleana, se es
Verilog. necesario conocer si esta puede de alguna forma ser
reducida. Es aquí cuando se introducen los mapas de
A. Desarrollo de circuitos Karnaugh. El proceso de simplificación de (1) es el
que se muestra continuación:
 Circuito #1
Mapa de Karnaguh circuito #1
AB \ CD 00 01 11 10
Información 00 1 0 1 1
01 0 1 0 1
El circuito para analizar es el siguiente: 11 0 1 0 0
10 1 1 0 0

La expresión resultantes de aplicar procesos de


reducción en el mapa anterior es la siguiente:

S= A BC+ B C D+ A BC + A C D+ A B D
(1.2)

Implementación en código

La implementación se realizó por dos metodologías


diferentes, la primera consiste en usar la expresión
booleana general como la que se definió con la
formula (1) y la segunda consiste en usar el llamado
a módulos. La representación en cada una es la
siguiente:

Tabla de verdad circuito #1 Implementación por expresión booleana

Desarrollo En la figura anterior se muestra la definición de la


expresión definida en la ecuación (1.2), que
Primero se inició con el desarrollo de una función representa una expresión reducida equivalente del
lógica, para ello se recurrió al análisis del número de circuito, usando la sintaxis definida por el lenguaje
entradas respecto al número de salidas, determinando Verilog.
también si la representación sería con suma de
productos o producto de sumas. Para este caso se
decidió utilizar la primera opción. El resultado fue el
siguiente:

S= ABCD+ AB C D+ A B C D+ A B C D+ A BCD+ A BC D+ AB C D
(1)

La expresión (1) se obtuvo a partir de la recolección


de aquellas combinaciones de entradas las cuales su
salida fuese el número 1. Para generar cada termino
solo se escriben los valores que componen a la
Implementación por llamado a compuertas circuito
combinación de entradas teniendo en cuenta una
#1
condición, aquella que indica que, si la entrada es 0,
dicha entrada se niega, caso contrario se reescribe tal
cual. El llamado a compuertas describe un funcionamiento
similar al uso de funciones en cualquier otro lenguaje
d programación, consta de entregar tres parámetros,
Scientia
3 et Technica Año 2022, No 01, Mes 08 de 2022. Universidad Tecnológica de Pereira.

el primero uno de ellos será la variable en donde se 1 1 1 1 0 1


almacena el resultado de una operación y los dos 1 1 1 1 1 0
restantes serán las variables que contienen los valores
a operar. Para un ejemplo concreto observe el caso
del primer and (línea 15), la variable p0 almacenará Desarrollo
la operación lógica and entre a y B, es decir, a & B.
Primero se inició con el desarrollo de una función
Cabe resaltar que la compuerta not es la única lógica, para este caso se decidió utilizar la suma de
excepción en cuanto la acción descrita anteriormente, productos. El resultado fue el siguiente:
esta solo toma como parámetros dos elementos, una
variable de almacenamiento del resultado de la S= ABCD E+ ABC D E+ ABC DE + AB C D E+ ABC D E+ A B
operación a realizar y la variable que contiene el (2)
valor a negar (función de la compuerta not).
La expresión (2) se obtuvo a partir de la recolección
 Circuito #2 de aquellas combinaciones de entradas las cuales su
salida fuese el número 1. Su funcionamiento es igual
Información al explicado el circuito #1.

El circuito para analizar es el siguiente: Luego de encontrar una expresión booleana, se es


necesario conocer si esta puede de alguna forma ser
reducida. Es aquí cuando se introducen los mapas de
Karnaugh. El proceso de simplificación de (2) es el
Tabla de verdad circuito #2 que se muestra continuación:
A B C D E
0 0 0 0 0 Mapa de Karnaugh circuito #2 (1)
0 0 0 0 1 ~A(CB \ 00 01 11 10
0 0 0 1 0 DE)
0 0 0 1 1 00 1 0 1 1
0 0 1 0 0 01 1 1 0 0
0 0 1 0 1 11 0 0 0
0 0 1 1 0 10 1 1 0 1
0 0 1 1 1
0 1 0 0 0 Mapa de Karnaugh circuito #2 (2)
0 1 0 0 1 A(CB \ 00 01 11 10
0 1 0 1 0 DE)
0 1 0 1 1 00 0 1 0 0
0 1 1 0 0 01 1 0 0 0
0 1 1 0 1 11 1 0 0 1
0 1 1 1 0 10 1 0 0 1
0 1 1 1 1
1 0 0 0 0 La expresión resultantes de aplicar procesos de
1 0 0 0 1 reducción en el mapa anterior es la siguiente:
1 0 0 1 0
1 0 0 1 1 S= ABCDE + ABC D+ AB C D+ A BC D+ A B C D E+ A BC DE
1 0 1 0 0 (2.2)
1 0 1 0 1
1 0 1 1 0
1 0 1 1 1 Implementación en código
1 1 0 0 0
1 1 0 0 1 La implementación se realizó por dos metodologías
1 1 0 1 0 diferentes, la primera consiste en usar la expresión
1 1 0 1 1 booleana general como la que se definió con la
1 1 1 0 0 formula (2) y la segunda consiste en usar el llamado
1 1 1 0 1 a módulos. La representación en cada una es la
siguiente:

____________________________
4 Scientia et Technica Año 2022, No 01, Mes 08 de 2022. Universidad
Tecnológica de Pereira.

Implementación por expresión booleana circuito #2

En la figura anterior se muestra la definición de la


expresión definida en la ecuación (1.2), que
representa una expresión reducida equivalente del
circuito, usando la sintaxis definida por el lenguaje
Verilog.

Representación circuito #3
Desarrollo

Primero se inició con el desarrollo de una función


lógica, para este caso se decidió utilizar la suma de
productos. El resultado fue el siguiente:

S=( A+ B)⊕ (CD).(E+ F)⊕(GH )(3)

Particularmente se necesitaba presentar esta


expresión en sus compuertas básicas. El resultado de
ello fue:

Implementación por llamado a compuertas circuito


#2

El funcionamiento del llamado a compuertas es el


mismo definido en el circuito #1.

 Circuito #3

Información
Procedimiento de expresión en compuertas básicas
El circuito para analizar es el siguiente:
circuito #3

S=(( A +B)(CD )+ ( A +B ) . ( CD )) . ¿(3.2)

Ambas de las expresiones (3 y 3.2) se obtuvieron a


partir de la formulación de la salida con base en el
resultado de otras entradas dentro del diseño de
circuito propuesto. Por ejemplo, la primera parte con
las compuertas A y B se puede deducir como una
operación A | B (A or B) y que aquello servirá de
entrada para una compuerta xnor más adelante.
Scientia
5 et Technica Año 2022, No 01, Mes 08 de 2022. Universidad Tecnológica de Pereira.

Implementación en código A B C S
0 0 0 1
La implementación se realizó por dos metodologías 0 0 1 1
diferentes, la primera consiste en usar la expresión 0 1 0 1
booleana general como la que se definió con la 0 1 1 0
formula (2) y la segunda consiste en usar el llamado 1 0 0 1
a módulos. La representación en cada una es la 1 0 1 0
siguiente: 1 1 0 1
1 1 1 1

Implementación por expresión booleana circuito #3 S= ( A +B+ C ) .( A+ B+C) (4)

En la figura anterior se muestra la definición de la Para el desarrollo de esta expresión lógica se decidió
expresión definida en la ecuación (1.2), que usa el método de producto de sumas debido a que el
representa una expresión reducida equivalente del número de salidas que eran cero es mucho menor
circuito, usando la sintaxis definida por el lenguaje comparado con aquellas que con 1. Usar esta
Verilog. condición de parada a la hora de escoger una
metodología de desarrollo permite ser mucho más
ágil durante el desarrollo.

Implementación en código

La implementación se realizó por dos metodologías


diferentes, la primera consiste en usar la expresión
booleana general como la que se definió con la
formula (2) y la segunda consiste en usar el llamado
a módulos. La representación en cada una es la
siguiente:

Implementación por llamado a compuertas circuito


#3
Implementación por expresión booleana circuito #4
El funcionamiento del llamado a compuertas es el
mismo definido en el circuito #1. En la figura anterior se muestra la definición de la
expresión definida en la ecuación (1.2), que
 Circuito #4 representa una expresión reducida equivalente del
circuito, usando la sintaxis definida por el lenguaje
Información Verilog.

El circuito para analizar es el siguiente:

Representación del circuito #4


Desarrollo

Primero se inició con el desarrollo de una función


lógica, para este caso se decidió utilizar la suma de
productos. El resultado fue el siguiente:

Tabla de verdad circuito #4

____________________________
6 Scientia et Technica Año 2022, No 01, Mes 08 de 2022. Universidad
Tecnológica de Pereira.

puesto que a nivel de hardware solo podemos


manejar números binarios). Las acciones del robot en
forma de entradas binarias serían:

Acción ninguna: 000


Girar a la derecha: 001
Girar a la Izquierda: 010
Avanzar: 011
Retroceder: 100
Detenerse: 101
Elevar manos: 110
Bajar manos: 111

Ahora bien, se mencionó que las salidas serían una


cadena de bits con posiciones representativas, ello se
podría presentar de la siguiente forma:

Codificación y asignación de salidas según entradas


circuito #4
Implementación por llamado a compuertas circuito
Señal en binario Salida
#4
000 0000000
001 0000001
El funcionamiento del llamado a compuertas es el
010 0000010
mismo definido en el circuito #1.
011 0000100
100 0001000
 Circuito #5
101 0010000
En este apartado se solicita la creación-modelación 110 0100000
del funcionamiento de un robot con ciertas acciones 111 1000000
como avanzar, retroceder, parar, elevar las manos,
bajar las manos, entre otras, mediante un circuito Implementación en código
lógico. Una condición de presentación es que debe de
usar el concepto de decodificación al momento de Para este circuito se usó una forma distinta de diseño
retornar las salidas. en system Verilog. Esta constó de usar una estructura
de control llamada case que permite escoger de entre
Desarrollo un conjunto de posibles valores, básicamente
representar la asignación valores dadas en la tabla de
Se puede analizar este caso como un problema de codificación y asignación de salidas según entradas.
caja negra. Supóngase que se tiene lo siguiente:
Con lo anterior, el código resultante fue el siguiente:

ROBOT

Al querer entender que información recibe y retorna


lo que se conoce como robot se definen los siguientes
parámetros:

Entradas = {señal en forma de identificador binario}


Salidas = {cadena de bits de posiciones
representativas}

Cabe resaltar que se tiene que pasar por un proceso


de codificación de las acciones que se realizan (esto
Scientia
7 et Technica Año 2022, No 01, Mes 08 de 2022. Universidad Tecnológica de Pereira.

 Circuito #6

Este circuito se dispone de la siguiente manera:

“Creación de una ALU de dos operandos (A y B


tamaño de 32 bits), un ALUOp (tamaño de 4 bits)
que asigna una operación y devuelve el resultado
(tamaño de 32 bits).”

Es de recordar que una ALU son las siglas para


Arithmetic Logic Unit o Unidad Aritmético Lógica.
Este circuito se encuentra dentro del procesador y es
el encargado de realizar algunas de las operaciones
aritméticas como sumas, restas, lo que se conoce
como corrimientos de bits, operaciones lógicas, entre
Diseño de circuito de Robot en Verilog otras.

La definición del diseño consta de usar las entradas Una representación es la siguiente:
indicadas anteriormente, en este caso el identificador
binario estaría dado por order la cual es una entrada
de 3 bits (puede verse en la definición del tamaño
[2:0], similar a la definición de arreglos) y para la
cadena de bits en posiciones representativas se tiene
la salida response con un tamaño de 7 bits (puede
verse en la definición [7:0]). Cabe resaltar que estos
tamaños se escogieron según el número de posibles
distintas entradas que se podrían obtener; este
número este dado por las 8 posibilidades que se
describen en la tabla codificación y asignación de
Modulo ALU (Arithmetic Logic Unit)
salidas según entradas.
Desarrollo
Nótese que también se podría utilizar como salida la
El Desarrollo está dado por la figura anterior. Su
misma entrada, esto debido a que ya se conoce la
funcionamiento consta de recibir cuatro entradas, dos
forma de la entrada, sin embargo, allí no se tendría la
de ellas serán los números a operar, siendo cada
aplicación del concepto de codificación solicitado,
número representado por un registro de 32 bits, una
como ya sucede en la actual asignación de valores.
tercera entrada llamada ALUOp que hace referencia
Recordemos que al hablar de decodificación se hace
al selector de operaciones y una cuarta que será clk
referencia al proceso de codificar una nueva salida a
(igual funcionamiento que en el circuito #5).
partir de una entrada dada, como por ejemplo el
funcionamiento de un display 7 segmentos.
Implementación en código
Aparece también una nueva entrada, clk, esta será
El código resultante fue el siguiente:
conocida como la señal de control, aquella que
permite dar la orden en un momento determinado al
resto del diseño de que se puede evaluar la entrada
ingresada.

La estructura always @(posedge clk) es un bloque


iterativo que realizara las instrucciones definidas
dentro de este siempre y cuando la variable clk sea
posedge, esto es el flanco positivo de una señal
discreta. En el apartado de resultados y análisis se
abarcará un poco más este aspecto.

____________________________
8 Scientia et Technica Año 2022, No 01, Mes 08 de 2022. Universidad
Tecnológica de Pereira.

suma. Otro ejemplo sucedió con el robot desarrollado


anteriormente, su acción por default es hacer ninguna
acción.

B. Resultados y análisis

Para cada test se mostraraá su respectivo testbench,


tambi;en conocido como banco de pruebas. En este
se debe hacer claridad sobre ciertas generalidades:

1. Todo test bench usa una nomenclatura


específica para llamar a cada diseño, dicha
nomenclatura es:

Modulo ALU en diseño de Verilog nombreDelDiseño nombreDeInstancia


(argumentos)
Las entradas descritas en la figura del circuito se argumento: .argumento1(argumentoEnTest
definen por las variables operation_code (ALUOp), Bench) o argumentoEnTestBench
input_register_a (entrada a) , input_register_b
(entrada b), output_response (ALUres). Observe que Los argumentos pueden ir ya sea haciendo
en su mayoría, menos clk, son variables con un referencia a los argumentos del diseño
tamaño de bits definido, por otra parte, se decidió .argumento1(argumentoEnTestBench) o
manejar entradas de números con signos ya que una bien proporcionando valores a estos según
de las operaciones de la ALU es el corrimiento su posición en el diseño (argumento1,
aritmético, aquel que se basa en el signo de cada argumento2, …).
número a operar.
2. Cada test bench tendrá un sección específica
Se utiliza nuevamente la estructura de iteración en donde se utilizan herramientas necesarias
always con ayuda de clk, esta permitirá que en ciertos para la correcta ejecución de las pruebas.
momentos se evalúen los valores ingresado a la Esta herramientas son:
ALU. $dumpfile(“dump.vcd”);
$dumpvars;
Es aquí entonces cuando se debe de hacer la #tiempo $finish;
descripción de las operaciones que el módulo va a
realizar: Se mantendrán igual durante todos los test
presentados en cada circuito, con la
Asignación de códigos de operación para la ALU diferencia que lo único que irá cambiando
ALUOp Operación será el tiempo total de ejecución el cual lo
0000 Adición proporciona el tiempo antepuesto a la
1000 Substracción variable $finish.
0001 Corrimiento lógico a la
izquierda 3. Habrá un bloque dedicado a la asignación
0100 XOR lógico de valores al módulo llamado con
0101 Corrimiento lógico a la anterioridad. Este bloque funcionará con un
derecha ciclo for el cual permite iterar el número de
0110 OR lógico veces necesario para lograr el total de
0111 AND lógico posibilidades que indican el total de
1101 Corrimiento aritmético entradas para un circuito arbitrario, y
mediante la propia sintaxis de Verilog se
Aunque no se especifica, al usar case se es logra la correcta asignación de valores a
recomendable indicar una opción por default para cada entrada respectivamente.
casos no especificados, es decir, si la entrada 4. Se mostrarán instrucciones que permiten
analizada no coincide con ninguna de las imprimir los resultados en pantalla de cada
definiciones previas, la operación definida por el simulación.
default será ejecutada. Para este casó se definió la
Scientia
9 et Technica Año 2022, No 01, Mes 08 de 2022. Universidad Tecnológica de Pereira.

A=0,B=1,C=0,D=1, sBooleanEcuation=1,
sModulesCallstb=1
A=0,B=1,C=1,D=0, sBooleanEcuation=1,
sModulesCallstb=1
 Circuito #1 A=0,B=1,C=1,D=1, sBooleanEcuation=0,
sModulesCallstb=0
Testbench A=1,B=0,C=0,D=0, sBooleanEcuation=1,
sModulesCallstb=1
El banco de pruebas definido para el circuito #1 fue A=1,B=0,C=0,D=1, sBooleanEcuation=1,
el siguiente: sModulesCallstb=1
A=1,B=0,C=1,D=0, sBooleanEcuation=0,
sModulesCallstb=0
A=1,B=0,C=1,D=1, sBooleanEcuation=0,
sModulesCallstb=0
A=1,B=1,C=0,D=0, sBooleanEcuation=0,
sModulesCallstb=0
A=1,B=1,C=0,D=1, sBooleanEcuation=1,
sModulesCallstb=1
A=1,B=1,C=1,D=0, sBooleanEcuation=0,
sModulesCallstb=0
A=1,B=1,C=1,D=1, sBooleanEcuation=0,
sModulesCallstb=0
A=0,B=0,C=0,D=0, sBooleanEcuation=1,
sModulesCallstb=1
Testbench circuito #1
A primera vista se puede observar dos tipos de
salidas (sBooleanEcuation y sModulesCasllstb), esto
Como se observa en la figura se definieron las
es por los dos formas distintas en que se expresó el
mismas variables que se usan en el módulo diseñado
circuito, una por medio de expresiones booleanas y
para el circuito analizado, que en este caso dicho
otra por medio de compuertas.
modulo se hace llamar excerciseONE.
Se puede ver que los valores para ambas salidas son
En el código restante se le asigna el tiempo total de
los mismos, lo que indica que ambas formas de
ejecución el cúal será 160 microsegundos
expresión son equivalentes. Por otra parte, dichos
correspondientes a 16 posibilidades de ingreso
valores son iguales a los que indica la tabla de verdad
distintas y se procede a la asignación automática de
propuesta, por ende podemos concluir que el diseño
valores por medio de un ciclo for. Es de recalcar que
del circuito es válido.
el tiempo de ejecución tanto en este como en el resto
de circuitos será en estas escalas debido a que casi
 Circuito #2
siempre se usará un delay de #10 microsegundos.
Testbench
Resultados y análisis
El banco de pruebas definido para el circuito #2 fue
Los resultados obtenidos de la ejecución son:
el siguiente:
A=0, B=0,C=0,D=0,sBooleanEcuation=1,
sModulesCallstb=1
A=0,B=0,C=0,D=1, sBooleanEcuation=0,
sModulesCallstb=0
A=0,B=0,C=1,D=0, sBooleanEcuation=1,
sModulesCallstb=1
A=0,B=0,C=1,D=1, sBooleanEcuation=1,
sModulesCallstb=1
A=0,B=1,C=0,D=0, sBooleanEcuation=0,
sModulesCallstb=0

____________________________
10 Scientia et Technica Año 2022, No 01, Mes 08 de 2022. Universidad
Tecnológica de Pereira.

Testbench circuito #2 sModulesCalls=0


A=1,B=0,C=1,D=1,E=0,sBooleanEcuation=0,
En la figura anterior se observa la correcta definición sModulesCalls=0
del módulo de testeo para el diseño del circuito A=1,B=0,C=1,D=1,E=1,sBooleanEcuation=0,
analizado. sModulesCalls=0
A=1,B=1,C=0,D=0,E=0,sBooleanEcuation=1,
Se propone allí como tiempo de ejecución y número sModulesCalls=1
total de iteraciones como 320 y 32 debido a que A=1,B=1,C=0,D=0,E=1,sBooleanEcuation=0,
corresponden al total de posibilidades para un sModulesCalls=0
circuito de 5 entradas contando con un delay entre A=1,B=1,C=0,D=1,E=0,sBooleanEcuation=1,
opción de ingreso #10 microsegundos. sModulesCalls=1
A=1,B=1,C=0,D=1,E=1,sBooleanEcuation=0,
Resultados y análisis sModulesCalls=0
A=0,B=0,C=0,D=0,E=0,sBooleanEcuation=1, A=1,B=1,C=1,D=0,E=0,sBooleanEcuation=1,
sModulesCalls=1 sModulesCalls=1
A=0,B=0,C=0,D=0,E=1,sBooleanEcuation=0, A=1,B=1,C=1,D=0,E=1,sBooleanEcuation=0,
sModulesCalls=0 sModulesCalls=0
A=0,B=0,C=0,D=1,E=0,sBooleanEcuation=1, A=1,B=1,C=1,D=1,E=0,sBooleanEcuation=1,
sModulesCalls=1 sModulesCalls=1
A=0,B=0,C=0,D=1,E=1,sBooleanEcuation=1, A=1,B=1,C=1,D=1,E=1,sBooleanEcuation=0,
sModulesCalls=1 sModulesCalls=0
A=0,B=0,C=1,D=0,E=0,sBooleanEcuation=1, A=0,B=0,C=0,D=0,E=0,sBooleanEcuation=1,
sModulesCalls=1 sModulesCalls=1
A=0,B=0,C=1,D=0,E=1,sBooleanEcuation=1,
sModulesCalls=1 A primera vista se observan los dos tipos de salidas
A=0,B=0,C=1,D=1,E=0,sBooleanEcuation=0, indicados en el desarrollo del circuito los cuales están
sModulesCalls=0 dados por sBooleanEcuation y sModulesCasllstb
A=0,B=0,C=1,D=1,E=1,sBooleanEcuation=0, junto a los valores de ingreso que generaron dicha
sModulesCalls=0 salida.
A=0,B=1,C=0,D=0,E=0,sBooleanEcuation=1,
sModulesCalls=1 Se tiene entonces que ambas salidas son equivalentes
A=0,B=1,C=0,D=0,E=1,sBooleanEcuation=1, debido a que sus valores son iguales, lo que da a
sModulesCalls=1 entender entonces que ambas expresiones del circuito
A=0,B=1,C=0,D=1,E=0,sBooleanEcuation=1, son válidas. Por otra parte se puede corroborar el
sModulesCalls=1 hecho de que estos resultados son iguales a los
A=0,B=1,C=0,D=1,E=1,sBooleanEcuation=0, planteados en la tabla de verdad.
sModulesCalls=0
A=0,B=1,C=1,D=0,E=0,sBooleanEcuation=0, De lo anterior, se puede indicar entonces que el
sModulesCalls=0 diseño del circuito es válido.
A=0,B=1,C=1,D=0,E=1,sBooleanEcuation=0,
sModulesCalls=0  Circuito #3
A=0,B=1,C=1,D=1,E=0,sBooleanEcuation=0,
sModulesCalls=0 Testbench
A=0,B=1,C=1,D=1,E=1,sBooleanEcuation=0,
sModulesCalls=0 El banco de pruebas definido para el circuito #3 fue
A=1,B=0,C=0,D=0,E=0,sBooleanEcuation=0, el siguiente:
sModulesCalls=0
A=1,B=0,C=0,D=0,E=1,sBooleanEcuation=1,
sModulesCalls=1
A=1,B=0,C=0,D=1,E=0,sBooleanEcuation=0,
sModulesCalls=0
A=1,B=0,C=0,D=1,E=1,sBooleanEcuation=0,
sModulesCalls=0
A=1,B=0,C=1,D=0,E=0,sBooleanEcuation=1,
sModulesCalls=1
A=1,B=0,C=1,D=0,E=1,sBooleanEcuation=0,
Scientia
11 et Technica Año 2022, No 01, Mes 08 de 2022. Universidad Tecnológica de Pereira.

Tramo #2 del circuito número 3


Testbench circuito #3
Tramo #3
En la figura anterior se muestra un proceso de
definición similar a los circuitos ya estudiados, con la
diferencia que aquí se manejan más posibilidades de
entrada y por consiguiente más tiempo de ejecución.

Resultados y análisis

Debido a que en este circuito se usaron 8 entradas y


que por ende la cantidad de posibilidades evaluadas
fueron 28, por conveniencia se mostrará solo la
EPWave generada por tramos.

Tramo #1 Tramo #3 del circuito número 3

Tamo #4

Tramo #1 del circuito de numero 3

Tramo #2

Tramo #4 del circuito número 2

Los gráficos como las señales discretas permiten una


mejor visualización del comportamiento de los
circuitos.

Cada trama de la EPWave generada para el circuito


de 8 entradas se compone de sus entradas (dadas por
las letras desde la a hasta la h concatenadas con el

____________________________
12 Scientia et Technica Año 2022, No 01, Mes 08 de 2022. Universidad
Tecnológica de Pereira.

sufijo tb) y los dos tipos de representación del Testbench circuito #4


circuito (sBooleanEcuation y sModulesCallstb).
En la figura anterior se muestra la definición del
Las líneas en verde que conforman rectángulos se módulo de testeo para el circuito que ejemplifica una
conocen como flancos de subida o positive Edge en bombilla. Aquí también se matiene los procesos de
inglés. Las líneas de color azul que se forman al definición de variables, llamado a modulos, uso de
terminar un rectángulo se conocen como flancos de variables para correcta ejecución y asignación de
bajada o negative Edge. Un flanco de subida indica valores.
una salida de 1, un flanco de bajada indica una salida
de cero. Resultados y análisis

Hasta el momento el diseño de los circuitos se ha A=0, B=0, C=0, sModulesCalls=1, sModulesCalls=1
validado comparando sus dos tipos de salida entre sí A=0, B=0, C=1, sModulesCalls=1, sModulesCalls=1
y con respecto a una tabla de verdad. En esta testeo A=0, B=1, C=0, sModulesCalls=1, sModulesCalls=1
se podrá validar el diseño del circuito únicamente si A=0, B=1, C=1, sModulesCalls=0, sModulesCalls=0
las ondas de cada salida son exactamente iguales. A=1, B=0, C=0, sModulesCalls=1, sModulesCalls=1
A=1, B=0, C=1, sModulesCalls=0, sModulesCalls=0
Ahora bien, observe que a partir que el circuito al A=1, B=1, C=0, sModulesCalls=1, sModulesCalls=1
inicio se comporta de manera tal que muchas A=1, B=1, C=1, sModulesCalls=1, sModulesCalls=1
entradas producen excitación en el mismo, mientras A=0, B=0, C=0, sModulesCalls=1, sModulesCalls=1
que en dos ocasiones después de esto sucede que el
circuito no produce ningún tipo de salida excitatoria Del resultado de la ejecución, al observar las dos
(salida uno), más sin embargo, en medio de estas dos salidas se puede decir que ambas formas de
ocasiones pasan pequeños fragmentos en donde se expresión son equivalentes. Por otra parte, se puede
tiene cierta actividad. ver que los resultados corroboran con la tabla de
verdad generada del análisis realizado al circuito, por
Al revisar toda la onda formada se puede observar ende se puede indicar que el diseño del circuito es
que ambas salidas corresponden en sus valores, es válido.
decir, son equivalentes. Es entonces que podemos
afirmar que el diseño del circuito por ambos métodos  Circuito #5
es válido.
Testbench
Se dará por sentado que las expresiones por sí
mismas están correctas. El banco de pruebas definido para el circuito #5 fue
el siguiente:
 Circuito #4

Testbench

El banco de pruebas definido para el circuito #4 fue


el siguiente:

Testbench circuito #5
Scientia
13 et Technica Año 2022, No 01, Mes 08 de 2022. Universidad Tecnológica de Pereira.

En la figura anterior se presenta la definición del


módulo de testeo para el diseño del circuito de un
Robot.

Resultados y análisis

CLK=0, ORDER=000, RESPONSE=xxxxxxx


CLK=1, ORDER=000, RESPONSE=0000000
CLK=0, ORDER=001, RESPONSE=0000000
CLK=1, ORDER=001, RESPONSE=0000001
CLK=0, ORDER=010, RESPONSE=0000001
CLK=1, ORDER=010, RESPONSE=0000010
CLK=0, ORDER=011, RESPONSE=0000010
CLK=1, ORDER=011, RESPONSE=0000100
CLK=0, ORDER=100, RESPONSE=0000100
CLK=1, ORDER=100, RESPONSE=0001000
CLK=0, ORDER=101, RESPONSE=0001000
CLK=1, ORDER=101, RESPONSE=0010000
CLK=0, ORDER=110, RESPONSE=0010000
CLK=1, ORDER=110, RESPONSE=0100000
CLK=0, ORDER=111, RESPONSE=0100000
CLK=1, ORDER=111, RESPONSE=1000000
Testbench circuito #6
CLK=0, ORDER=000, RESPONSE=1000000
La figura anterior describe el módulo de testeo para
De los resultados entregados, al someterlos a
el diseño de la ALU.
comparación con la tabla Codificación y asignación
de salidas según entradas se tiene que todos los
Luego de definir los procesos necesarios para una
valores coinciden, es decir, las representaciones de
correcta ejecución, se determinan los valores a operar
cada señal son correctas, por ende, se puede indicar
y el conjunto de operaciones a realizar.
que el circuito es válido.
La asignación de valores debe hacerse directamente
 Circuito #6
antes de entrar al ciclo for el cual servirá para
asignarle valores al operation_code, es decir,
Testbench
ALUOp.
Resultados y análisis
El banco de pruebas definido para el circuito #6 fue
el siguiente:
Debido a la gran cantidad de caracteres a presentar
solo se mostraran aquellos resultados que
corresponden a la evaluación de la ALU en el
momento en que clk lo permite:

Suma

CLK = 1, ALU_OPRATION= 0000,


A=00000000000000000000000000001010,
B=00000000000000000000000000000101,
OUTPUT= 00000000000000000000000000001111

Resta

CLK = 1, ALU_OPRATION= 1000,


A=00000000000000000000000000001010,
B=00000000000000000000000000000101,
OUTPUT= 00000000000000000000000000000101

____________________________
14 Scientia et Technica Año 2022, No 01, Mes 08 de 2022. Universidad
Tecnológica de Pereira.

Corrimiento lógico a la izquierda CLK = 1, ALU_OPRATION= 1010,


A=10000000000000000000000001100100,
CLK = 1, ALU_OPRATION= 0001, B=00000000000000000000000000101101,OUTPUT
A=00000000000000000000000000001010, = 10000000000000000000000010010001
B=00000000000000000000000000000101,OUTPUT
= 00000000000000000000000000001010 Como se puede observar en la información
presentada, todas las operaciones definidas funcionan
con normalidad, haciendo énfasis en los corrimientos
como el aritmético; retorna un nuevo registro de 32
XOR lógico bits compuesto por 1 gracias a que ese es el valor
asignado a la última posición y es aquel usado por
CLK = 1, ALU_OPRATION= 0100, este corrimiento para el relleno del registro.
A=00000000000000000000000000001010,
B=00000000000000000000000000000101,OUTPUT Se puede realizar una rápida comprobación entre
= 00000000000000000000000000001111 operaciones gracias a que los números usados fueron
pequeños. Por ende, se puede indicar que el circuito
Corrimiento lógico a la derecha es válido.
CLK = 1, ALU_OPRATION= 0101,
A=00000000000000000000000000001010,
B=00000000000000000000000000000101,OUTPUT
= 00000000000000000000000000001010

OR lógico

CLK = 1, ALU_OPRATION= 0110,


A=00000000000000000000000000001010,
B=00000000000000000000000000000101,OUTPUT
= 00000000000000000000000000001111

AND lógico

CLK = 1, ALU_OPRATION= 0111,


A=00000000000000000000000000001010,
B=00000000000000000000000000000101,OUTPUT
= 00000000000000000000000000000000

Corrimiento aritmético con cero

CLK = 1, ALU_OPRATION= 1101,


A=00000000000000000000000000001010,
B=00000000000000000000000000000101,OUTPUT
= 00000000000000000000000000000000

Corrimiento aritmético con uno

CLK = 1, ALU_OPRATION= 1101,


A=10000000000000000000000001100100,
B=00000000000000000000000000101101,OUTPUT
= 11111111111111111111111111111111

Default
Scientia
15 et Technica Año 2022, No 01, Mes 08 de 2022. Universidad Tecnológica de Pereira.

C. Anexo de graficas EPWave

A continuación se disponen las gráficas generas en edaplayground:

EPWave Circuito #1

EPWave Circuito #2

EPWave Circuito #3

____________________________
16 Scientia et Technica Año 2022, No 01, Mes 08 de 2022. Universidad Tecnológica de Pereira.

EPWave Circuito #4

EPWave Circuito #5

EPWave Circuito #6
Scientia
17 et Technica Año 2022, No 01, Mes 08 de 2022. Universidad Tecnológica de Pereira.

III. CONCLUSIONES

Del desarrollo de este documento se concluye que:

- La importancia de conocer un lenguaje de


descripción trasciende más a fondo a la ingeniería de
Sistemas
- El conocer y usar la lógica combinatoria en el
modelado de sistemas permite abrir vías para su
materialización
- El trabajo de los procesadores debe de ser conocido
de tal manera que la complejidad con la que ejecuten
sus operaciones sea fácil de entender
- El desarrollo de actividades previas permite preparar
de manera más integra la solución de una actividad
más compleja.

Con respecto a los análisis de los circuitos:


- Se pudo validar correctamente el funcionamiento de
todos los circuitos
- Las pruebas realizadas abarcaron todas las opciones
posibles según el número de entradas por circuito.
- La descripción usando el lenguaje de Verilog fue
clara y concreta
- Es más eficiente a nivel de implementación y
comprensión el uso de expresiones booleanas,
preferiblemente reducidas en lugar del uso de
compuertas lógicas.

REFERENCIAS

[1]. L. F. Miguel. (2022, Aug.).LABORATORIO #1


ARQUITECTURA DE COMPUTADORAS.
[Online]. Available:
https://www.edaplayground.com/x/hhgL

____________________________

También podría gustarte