Download VHDL Desarrollado para comparador de 3 Bits escalables

Document related concepts
no text concepts found
Transcript
E. T. TELECOMMUNICATIONS
Electronics I
F. J. Sànchez i Robert
03/19/2010
1BM-SDR
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
B[5..3]
Y[2..0]
EQ
LT
W1
W2
W3
CI1
A[2..0]
X[2..0]
GT
EQ
LT
Gi
Ei
Li
COMP3
GT
B[2..0]
Y[2..0]
EQ
LT
Gi
Ei
Li
Gi
Ei
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]
X>Y
X<Y
X=Y
Gi
x
x
1
0
0
Ei
x
x
0
1
0
Li
x
x
0
0
1
GT
1
0
1
0
0
EQ
0
0
0
1
0
LT
0
1
0
0
1
X is grater than Y
X is lesser than Y
GI input decides
EI input decides
LI input decides
Fig. 2 Function table for the cascadable 3-bit comparator COMP3 which is used as a basic component
Design Flow: metodología de trabajo Fig. 3
1
http://epsc.upc.edu/projectes/sed/SED/grups_classe/05-06_Q1/2AT4/COMPORTAMENT_INDIVIDUAL.pdf.
interview about the submitted work may be also requested
Student
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.
COMPARADOR DE 6 BITS
COMPARADOR
DE 3 BITS
Con el diagrama de bloques diseñado dividimos
en subbloques su funcionamiento para
simplificarlo. Esto nos permite desarrollar en grupo
el proyecto.
COMPARADOR
DE 3 BITS
COMPARADOR DE 6
BITS
Simulamos cada uno de los bloques para comprobar
que funcionan como hemos previsto. Si es así
juntaremos los subbloques en un nuevo bloque más
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
funcionamiento. Las simulaciones se
desarrollaran en un programa
determinado en función de las
necesidades (ispLever, Quartus...).
Simulación
Si no funciona volveremos al
principio del Design Flow
para encontrar el error.
No
funciona!
Sí funciona!
Escribiremos una memoria donde
aparezcan las conclusiones que
obtenemos.
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
funcionamiento de nuestro
circuito: TurthTable, Funciones
lógicas, Esquema en Visio...
Estudiaremos las especificaciones de
nuestro proyecto: Cuantas entradas, y
cuantas salidas tendrá, cual es la función que
tendrá..
Optimización y simplificación del
funcionamiento de nuestro sistema.
Desarrollo del código VHD a partir de
nuestras funciones lógicas, truthtable’s…
OPTIMIZADAS / SIMPLIFICADAS
Simulación
Si optamos por determinar el funcionamiento de
nuestro sistema con una truthtable necesitaremos
optimizarla, podemos realizar este paso
optimamente (y de forma rápida) gracias a
programas/aplicaciones como el programa Minilog.
Cuando tengamos escrito nuestro fichero VHDL
(extensión .VHD), utilizaremos el programa ispLever
para programar nuestro chip à GAL22V10
Programamos el chip GAL22V10
No funciona!
Sí funciona!
Si no funciona revisaremos
de nuevo la tabla de la
verdad y la volveremos a
escribir.
No podemos garantizar que el fallo haya sido
de la implementación del JED file,
estudiaremos el sistema desde el principio
revisando todos nuestros pasos.
No funciona!
Obtenemos
nuestro fichero
.jed
Simulación
en ISISProteus
Con este archivo programaremos
nuestro chip en ISIS-Proteus para
realizar las comprobaciones
pertinentes.
Comparamos los resultados que
obtengamos en la simulación de ISISProteus con la turthtable incial
Sí funciona!
Desarrollo de una memoria que
documente todo el proyecto para
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 ^^
-- [email protected] // no SPAM!
---------------------------------------------------
LIBRARY ieee;
USE IEEE.STD_LOGIC_1164.all;
ENTITY COMPARADOR_3BITS IS
PORT (
A,B
Gi,Ei,Li
Go,Eo,Lo
);
: IN STD_LOGIC_VECTOR(2 DOWNTO 0);
: IN STD_LOGIC;
: 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
011110
011111
100000
100001
100010
100011
100100
100101
100110
100111
101000
101001
101010
101011
101100
101101
101110
101111
110000
110001
110010
110011
110100
110101
110110
110111
111000
111001
111010
111011
111100
111101
111110
111111
010
010
010
100
001
100
100
001
010
010
010
100
100
100
100
100
001
010
010
100
100
100
100
100
100
001
010
100
100
100
100
100
100
100
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
funcionamiento de nuestro
circuito: TurthTable, Funciones
lógicas, Esquema en Visio...
Estudiaremos las especificaciones de
nuestro proyecto: Cuantas entradas, y
cuantas salidas tendrá, cual es la función que
tendrá..
Optimización y simplificación del
funcionamiento de nuestro sistema.
Desarrollo del código VHD a partir de
nuestras funciones lógicas, truthtable’s…
OPTIMIZADAS / SIMPLIFICADAS
Simulación
Si optamos por determinar el funcionamiento de
nuestro sistema con una truthtable necesitaremos
optimizarla, podemos realizar este paso
optimamente (y de forma rápida) gracias a
programas/aplicaciones como el programa Minilog.
Cuando tengamos escrito nuestro fichero VHDL
(extensión .VHD), utilizaremos el programa ispLever
para programar nuestro chip à MAX7128S
Programamos el chip MAX7128S
No funciona!
Sí funciona!
Si no funciona revisaremos
de nuevo la tabla de la
verdad y la volveremos a
escribir.
No podemos garantizar que el fallo haya sido
de la implementación del VHDL,
estudiaremos el sistema desde el principio
revisando todos nuestros pasos.
No funciona!
Obtenemos
nuestro fichero
.pof
Simulación
Altera
ModelSim
Con este archivo simularemos el
funcionamiento del sistema con el
programa ModelSim de la
compañía Altera.
Comparamos los resultados que
obtengamos en la simulación del Altera
ModelSim con la turthtable incial
Sí funciona!
Desarrollo de una memoria que
documente todo el proyecto para
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