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 ^^ -- alex@murilloruiz.com // 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