You are on page 1of 12

E. T.

TELECOMMUNICATIONS Electronics I

1BM-SDR 03/19/2010 F. J. Sànchez i Robert

Developed by:
Alex Murillo Ruiz (nota proposada  7,5)
- First minimum control: deadline: March 23rd 19:00. Grades will be available on March, 26th.
- Questions about the exam: Monday 12:00-14:00; Tuesday 15:00-16:00, 18:00-19:00 ; Thursday 10:00-12:00
- VERY IMPORTANT: Follow general instructions1 to solve the problem

Minimum 1: Designing an 6-bit comparator using VHDL


The idea is to develop and

CI2
A[5..3]
X[2..0]
GT
GT
B[5..3] EQ
Y[2..0] EQ
LT
LT

Gi
Ei
CI1 Li

W1
W2
W3
A[2..0] COMP3
X[2..0]
GT
B[2..0]
Y[2..0] EQ

LT
Gi
Gi
Ei
Ei
Li
Li

COMP3

a) b)
Fig. 1 a) Entity for the 6-bit expandable comparator. b) Example of an internal architecture based on a structure of
smaller elements of the same kind.
X[2..0] Y[2..0] Gi Ei Li GT EQ LT
X>Y x x x 1 0 0 X is grater than Y
X<Y x x x 0 0 1 X is lesser than Y
1 0 0 1 0 0 GI input decides
X=Y 0 1 0 0 1 0 EI input decides
0 0 1 0 0 1 LI input decides

Fig. 2 Function table for the cascadable 3-bit comparator COMP3 which is used as a basic component

1
http://epsc.upc.edu/projectes/sed/SED/grups_classe/05-06_Q1/2AT4/COMPORTAMENT_INDIVIDUAL.pdf. Student interview
about the submitted work may be also requested
Design Flow: metodología de trabajo Fig. 3
Desing Flow
Estudiamos las especificaciones de nuestro
proyecto: Cuantas entradas, y cuantas
salidas tendrá, cual debe ser su
funcionamiento..

Una vez solventadas las dudas y preguntas


que nos hacemos a la hora de diseñar
nuestro circuito, realizamos un diagrama de
bloques que represente su funcionamiento.

Con el diagrama de bloques diseñado dividimos


COMPARADOR DE 6 BITS en subbloques su funcionamiento para
simplificarlo. Esto nos permite desarrollar en grupo
el proyecto.

Simulamos cada uno de los bloques para comprobar


que funcionan como hemos previsto. Si es así
COMPARADOR COMPARADOR juntaremos los subbloques en un nuevo bloque más
DE 3 BITS DE 3 BITS grande. Si no funcionan volveremos a estudiar el
problema desde el inicio y comprobaremos que se ha
implementado correctamente todo.

Una vez unidos los subbloques


realizamos las pertinentes simulaciones
para comprobar su correcto
COMPARADOR DE 6 funcionamiento. Las simulaciones se
BITS desarrollaran en un programa
determinado en función de las
necesidades (ispLever, Quartus...).

Simulación

Escribiremos una memoria donde


Si no funciona volveremos al No aparezcan las conclusiones que
principio del Design Flow Sí funciona!
funciona! obtenemos.
para encontrar el error.

Fig. 3 Design Flow del desarrollo real de un proyecto general.


Part A: Implementation of a behavioural
design in a sPLD
1. Explain the design flow you will follow to produce your circuit using IspLEVER Classic  Fig. 4

Desing Flow
Project with ispLever

Determinaremos el Estudiaremos las especificaciones de


funcionamiento de nuestro nuestro proyecto: Cuantas entradas, y
circuito: TurthTable, Funciones cuantas salidas tendrá, cual es la función que
lógicas, Esquema en Visio... tendrá..

Si optamos por determinar el funcionamiento de


Optimización y simplificación del nuestro sistema con una truthtable necesitaremos
funcionamiento de nuestro sistema. optimizarla, podemos realizar este paso
optimamente (y de forma rápida) gracias a
programas/aplicaciones como el programa Minilog.

Desarrollo del código VHD a partir de Cuando tengamos escrito nuestro fichero VHDL
nuestras funciones lógicas, truthtable’s… (extensión .VHD), utilizaremos el programa ispLever
OPTIMIZADAS / SIMPLIFICADAS para programar nuestro chip GAL22V10

Simulación Programamos el chip GAL22V10

No funciona!

Sí funciona!
Si no funciona revisaremos
de nuevo la tabla de la
Con este archivo programaremos
verdad y la volveremos a Obtenemos
nuestro chip en ISIS-Proteus para
escribir. nuestro fichero
realizar las comprobaciones
.jed
pertinentes.

Simulación
No podemos garantizar que el fallo haya sido en ISIS- Comparamos los resultados que
de la implementación del JED file, Proteus obtengamos en la simulación de ISIS-
estudiaremos el sistema desde el principio Proteus con la turthtable incial
revisando todos nuestros pasos.

Desarrollo de una memoria que


documente todo el proyecto para
No funciona! Sí funciona! poder implementarlo en un chip
real.

Fig. 4 Diagrama de bloques con la especificación de los pasos para desarrollar un proyecto en ispLever
2. Write down the high level or behavioural VHDL code directly as a single block as in Fig. 1a planning
writing first an algorithm or a flowchart.

Hemos desarrollado en código VHDL (Fig. 5) directamente el bloque representado en Fig. 1 como bloque
comparador de 9 Bits de entrada y 3 de salida, repartidos de la siguiente forma:

 Inputs
o A[2..0]  Bus de datos de 3 cables.
o B[2..0]  Bus de datos de 3 cables.
o Gi  Indicación de que A > B (ambos buses contienen número en binario natural)
o Ei  Indicación de que A = B
o Li  Indicación de que A < B
 Outputs
o Go  Indicación de que A > B
o Eo Indicación de que A = B
o Lo  Indicación de que A < B

Código .VHD Comparador 3 Bits  Tested on: ispLever, Quartus, ModelSim, ISIS-Proteus
---------------------------------------------------
-- VHDL Comparator_3Bits_Escalable By Murillo ^^
-- alex@murilloruiz.com // no SPAM!
---------------------------------------------------

LIBRARY ieee;
USE IEEE.STD_LOGIC_1164.all;

ENTITY COMPARADOR_3BITS IS

PORT (
A,B : IN STD_LOGIC_VECTOR(2 DOWNTO 0);
Gi,Ei,Li : IN STD_LOGIC;
Go,Eo,Lo : OUT STD_LOGIC
);

END COMPARADOR_3BITS;

ARCHITECTURE Comportamiento OF COMPARADOR_3BITS IS

BEGIN -- architecture

PROCESS(A,B,Gi,Ei,Li) BEGIN -- empezamos el process

-- estdiamos condiciones impuestas por las entradas Gi Ei Li


IF ((Gi = '1') OR (Ei = '1') OR (Li = '1')) THEN
IF (Gi = '1') THEN
Go <= '1';
Eo <= '0';
Lo <= '0';
END IF;
IF (Li = '1') THEN
Go <= '0';
Eo <= '0';
Lo <= '1';
END IF;
-- si imponemos empate del bloque anterior, estudiamos el
-- resultado actual de comparar A con B
IF (Ei = '1') THEN
IF (A > B) THEN
Go <= '1';
Eo <= '0';
Lo <= '0';
ELSIF (A < B) THEN
Go <= '0';
Eo <= '0';
Lo <= '1';
ELSIF (A = B) THEN
Go <= '0';
Eo <= '1';
Lo <= '0';
END IF;
END IF;
END IF;
-- ninguna condicion inicial, la salida vendrá condicionada
-- por la comparación de A con B
IF ((Gi = '0') AND (Ei = '0') AND (Li = '0')) THEN
IF (A > B) THEN
Go <= '1';
Eo <= '0';
Lo <= '0';
ELSIF (A < B) THEN
Go <= '0';
Eo <= '0';
Lo <= '1';
ELSE
Go <= '0';
Eo <= '1';
Lo <= '0';
END IF;
END IF;

END PROCESS;

END Comportamiento;

Fig. 5 Código VHDL Comparador de 3 Bits escalable.


3. Create a single-file VHDL project in ispLEVER Classic for a simple programmable logic device (sPLD)
GAL22V10 (24 pins). Test/simulate your design using Proteus and its EasyHDL scripting language. In
case of the circuit does not fit, implement a COMP5 instead of the COMP6.

Definiremos en primer lugar ¿Qué es un circuito combinacional comparador?

Un circuito comparador combinatorio compara dos entradas binarias (A y B de n bits) para indicar la relación
de igualdad o desigualdad entre ellas. Compara las entradas utilizando las relaciones siguientes: A igual B, A
mayor que B y A menor que B. Cada una de estas relaciones se activara solo cuando la relación a la que
corresponde sea verdadera, es decir, su salida será 1 y las otras dos producirán una salida igual a cero.

Para desarrollar dicho circuito, primero necesitaremos definir su funcionamiento, en nuestro caso hemos
elegido desarrollar una truthtable (Fig. 6) que nos permita determinar su funcionamiento.

TruthTable  Comparador de 2 variables de 3bits cada una


# Desarrollado por Jefferson Ortiz
table exercici1
input a2 a1 a0 b2 b1 b0
output s0 s1 s2
# a2 a1 a0 b2 b1 b0| s0(a>b) s1(a<b) s2(a=b)
# esto es un comentario
000000 001
000001 010
000010 010
000011 010
000100 010
000101 010
000110 010
000111 010
001000 100
001001 001
001010 001
001011 010
001100 010
001101 010
001110 010
001111 010
010000 100
010001 100
010010 001
010011 010
010100 010
010101 010
010110 010
010111 010
011000 100
011001 001
011010 100
011011 001
011100 010
011101 010
011110 010
011111 010
100000 100
100001 001
100010 100
100011 100
100100 001
100101 010
100110 010
100111 010
101000 100
101001 100
101010 100
101011 100
101100 100
101101 001
101110 010
101111 010
110000 100
110001 100
110010 100
110011 100
110100 100
110101 100
110110 001
110111 010
111000 100
111001 100
111010 100
111011 100
111100 100
111101 100
111110 100
111111 100

end

Fig. 6 TruthTable que define el funcionamiento de nuestro circuito adaptado para Minilog.exe

Una vez simplificada la truthtable (Fig. 7) podemos pasar a adaptar nuestras salidas a un archivo VHDL y
compilar este mismo en ispLever para poder adaptar el archivo .JED (jed file) de salida del compilador en
nuestro chip simulado en ISIS-Proteus.

Debido a las limitaciones del GAL22V10  solo 22 entradas, implementaremos un comparador de 3 bits y
lo escalaremos para obtener el de 6 Bits usando nuestro VHDL programado anteriormente (véase Fig. 5)
Fig. 7 Archivo de salida de Minilog.exe con las funciones simplificadas.

A continuación compilamos nuestro VHDL (Fig. 5) en ispLever obteniendo un .JED como archivo de salida
(véase Fig. 8), gracias al cual podremos programar nuestro chip GAL22V10 y simularlo para comprobar su
funcionamiento.

Finalmente solo nos queda testear el GAL22V10 implementado en ISIS-Proteus y programado con nuestro
archivo .JED, comprobamos que efectivamente funciona correctamente, tal y como determinamos que debería
funcionar Fig. 9.
Fig. 8 JED File resultado de nuestro comparador de 3 Bits.

Fig. 9 Comprobación del funcionamiento en ISIS-Proteus.


Part B: Implementation of a structural design
in a CPLD
4. Explain the design flow you will follow to produce your circuit using Altera Quartus-II  Fig. 10

Desing Flow
Project with Altera Quartus

Determinaremos el Estudiaremos las especificaciones de


funcionamiento de nuestro nuestro proyecto: Cuantas entradas, y
circuito: TurthTable, Funciones cuantas salidas tendrá, cual es la función que
lógicas, Esquema en Visio... tendrá..

Si optamos por determinar el funcionamiento de


Optimización y simplificación del nuestro sistema con una truthtable necesitaremos
funcionamiento de nuestro sistema. optimizarla, podemos realizar este paso
optimamente (y de forma rápida) gracias a
programas/aplicaciones como el programa Minilog.

Desarrollo del código VHD a partir de Cuando tengamos escrito nuestro fichero VHDL
nuestras funciones lógicas, truthtable’s… (extensión .VHD), utilizaremos el programa ispLever
OPTIMIZADAS / SIMPLIFICADAS para programar nuestro chip MAX7128S

Simulación Programamos el chip MAX7128S

No funciona!

Sí funciona!
Si no funciona revisaremos
de nuevo la tabla de la
Con este archivo simularemos el
verdad y la volveremos a Obtenemos
funcionamiento del sistema con el
escribir. nuestro fichero
programa ModelSim de la
.pof
compañía Altera.

Simulación
No podemos garantizar que el fallo haya sido Altera Comparamos los resultados que
de la implementación del VHDL, ModelSim obtengamos en la simulación del Altera
estudiaremos el sistema desde el principio ModelSim con la turthtable incial
revisando todos nuestros pasos.

Desarrollo de una memoria que


documente todo el proyecto para
No funciona! Sí funciona! poder implementarlo en un chip
real.

Fig. 10 Diagrama de bloques que representa la implementación de nuestro poyecto para Quartus + ModelSim.
5. Write down a structured design as in Fig. 1b using several components. For instance, Fig. 2 shows the
truth table for a 3-bit cascadable comparator  Fig. 11.

Fig. 11 Representación de la implementación de un comparador de 6 bits a partir de 2 de 3 bits.

6. Implement the elemental COMP1 using the logic equations derived from Minilog (single output mode,
sum of products, table output format). Verify your equations using WolframAlpha.

Hemos desarrollado directamente el comparador de 3 Bits  Información detallada apartado 3.

7. Create a multiple-file VHDL-based project in Quartus-II for the MAX EPM7128SLC84-7 CPLD. Test
and simulate your design using ModelSim and a do macro written in TCL language.

VHDL Desarrollado para comparador de 3 Bits escalables (ampliable)  Apartado 2.

8. Print the RTL netlist so that your synthesised circuit can be compared to the initial block diagram proposed
in 5)  Fig. 12.
Fig. 12 Salida del Wave al simulador con Altera ModelSim nuestro VHDL

9. Assign pins and generate the output configurations files if the circuit has to be prototyped into a UP2
board.

 Pendiente

10. Document your design using the same quality standards and templates for other course exercises. Upload
to your web portfolio your “docx” solution and the other project files and drawings before the due date.

Create a comments section bellow the solution of your exercise, and use it to annotate all commentaries or
problems found during the design process. And finally, if each one of the ten sections in this problem has to be
assessed with a mark of 1 point, suggest your own final mark.

Some references to start with:


- http://epsc.upc.edu/projectes/sed/ED/unitats/unitat_1_11/Unitat_1_11.htm
- http://epsc.upc.edu/projectes/ed/components/combinacionals/arithmetic/74F85.pdf
- http://epsc.upc.edu/projectes/sed/SED/grups_classe/07-08_Q1/2AT4/07-08-Q1-2AT4.htm