Documentos de Académico
Documentos de Profesional
Documentos de Cultura
FACULTAD DE INGENIERIA
Práctica No.: Tema: Duración (horas) No. Grupos No. Estudiantes (por
SISTEMAS DE ALTA VELOCIDAD Grupo)
4 4 8
4
Objetivos de la Práctica:
PC
Software apio
Marco Teórico:
La necesidad de construir circuitos digitales cada vez más complejos es patente día a día. Ya en el siglo XXI
somos capaces de construir microprocesadores de muy altas prestaciones que están compuestos por millones de
unidades funcionales (transistores) que realizan tareas de gran responsabilidad en la sociedad. Por ejemplo, un
sistema de control de transacciones económicas de una bolsa de valores ha de ser un sistema informático
extraordinariamente rápido y resistente, ya que un fallo en la transferencia de información acarrearía un sinfín de
problemas con los inversores. Otro ejemplo, la electrónica de control de un avión supersónico tiene igualmente
una responsabilidad extrema, tanto en aportar la información necesaria al piloto para determinar su rumbo como
para asistirle en sus tareas de pilotaje y combate. (Aguirre, 2005)
Los lenguajes de descripción de hardware, HDL’s, realizan aquello para lo que están diseñados, describir un
hardware: Describen un comportamiento propio de un circuito en sentido amplio y por tanto no existen
precedencia entre la activación de una parte del mismo u otra. Representan un comportamiento inherentemente
paralelo. Esto tiene un conjunto de implicaciones que han de tenerse en cuenta a la hora de elaborar el diseño que
particularizaremos al caso del VHDL. La primera implicación es la relación entre el lenguaje y la plataforma de
desarrollo, que es una computadora y tiene el comportamiento descrito en el párrafo anterior.
Por tanto, simulación y síntesis han de estar provistas de mecanismos o artificios que emulen el paralelismo y
que inciden directamente en la formulación del código. La segunda implicación es en un cambio de mentalidad
en el diseñador a la hora de elaborar la descripción del diseño, estando habituado a realizar programas software.
El mencionado ahorro en este caso exige une cuidadosa planificación del diseño previa a su elaboración. Existen
usos típicos del programador de software que están absolutamente prohibidos en la formulación de un diseño
hardware.
Lenguaje de descripción de hardware
Un lenguaje de descripción de hardware (HDL, hardware description language) es un lenguaje de programación
especializado que se utiliza para definir la estructura, diseño y operación de circuitos electrónicos, y más
comúnmente, de circuitos electrónicos digitales, como el convertidor analógico-digital o cualquier antena
satelital. Así, los lenguajes de descripción de hardware hacen posible una descripción formal de un circuito
electrónico, y posibilitan su análisis automático y su simulación.
Los lenguajes de descripción de hardware se parecen mucho a otros lenguajes de programación de ordenadores
tales como el C o Java: básicamente consisten en una descripción textual con expresiones, declaraciones y
estructuras de control. Sin embargo, una importante diferencia entre los HDL y otros lenguajes de programación
está en que el HDL incluye explícitamente la noción de tiempo.
Los HDL’s en la metodología de diseño.
Metodología clásica
La secuencia de herramientas informáticas que procesan un diseño desde su descripción en un lenguaje fácilmente
comprensible por el hombre hasta la información final, útil para la fabricación del dispositivo se llama flujo de
diseño. La figura representa un flujo típico en el que se han introducido las derivaciones debidas a las
comprobaciones necesarias para verificar la correcta introducción del diseño.
a) Generación de un código basado en el lenguaje elegido (C, C++, PASCAL, Fortran, ...)
b) Análisis sintáctico para detección de errores e inconsistencias del programa.
c) Elaboración de los códigos objeto reubicables o imagen binaria de los módulos componentes.
d) Montaje del programa por parte del montador de enlaces y detección de errores en la relación entre los
módulos.
Durante la ejecución del programa se ejecutan una tras otra las instrucciones siguiendo un esquema secuencial
definido por la arquitectura de la CPU, que es la llamada máquina de Turing. Existen típicamente dos soluciones:
la arquitectura Harvard y la arquitectura Von Newman. En ambos casos la estructura del programa es una
secuencia de instrucciones, accesos a memoria y saltos en la secuencia de ejecución. En particular una subrutina
puede ser accedida mediante un mecanismo de saltos tantas veces como se precise, resultando un ahorro en
términos de memoria de programa.
Lenguajes HDL
Existen varios lenguajes HDL’s la mayoría de ellos con un propósito limitado. Los más conocidos son:
• ABEL: Lenguaje promovido por XILINX para la introducción de módulos de carácter específico, como
máquinas de estados finitos.
• AHDL: Lenguaje promovido por ALTERA para facilitar la introducción de diseños en sus FPGA’s.
• EDIF, XNF, ...: No son lenguajes propiamente dichos, en el sentido de no ser fácilmente comprensibles por el
usuario, pero se utilizan cómo medios para transferir netlist entre herramientas.
Python
Es un lenguaje de scripting independiente de plataforma y orientado a objetos, preparado para realizar cualquier
tipo de programa, desde aplicaciones Windows a servidores de red o incluso, páginas web. Es un lenguaje
interpretado, lo que significa que no se necesita compilar el código fuente para poder ejecutarlo, lo que ofrece
ventajas como la rapidez de desarrollo e inconvenientes como una menor velocidad. En los últimos años el
lenguaje se ha hecho muy popular, gracias a varias razones como:
La cantidad de librerías que contiene, tipos de datos y funciones incorporadas en el propio lenguaje, que
ayudan a realizar muchas tareas habituales sin necesidad de tener que programarlas desde cero.
La sencillez y velocidad con la que se crean los programas. Un programa en Python puede tener de 3 a 5 líneas
de código menos que su equivalente en Java o C.
La cantidad de plataformas en las que podemos desarrollar, como Unix, Windows, OS/2, Mac, Amiga y otros.
Además, Python es gratuito, incluso para propósitos empresariales. (desarrollo web.com, 2003)
Procedimiento:
3. Abrir la ventana de comandos e instalar las herramientas de software de la TinyFpga con los siguientes
comandos:
a. pip install -U apio
4. Una vez instalado, abrimos una consola. Ejecutamos este comando para comprobar que está correctamente
instalado
a. apio –version
Figura 4. Comando apio –version para ver que versión tengo instalada.
5. Ejecutamos este otro para instalar el resto de dependencias de apio
a. apio install –a
Figura 8. Comprobamos que se haya instalado correctamente las herramientas con el comando sasm -h
9. Descargue el siguiente archivo y descomprímalo https://github.com/Obijuan/simplez-
fpga/archive/master.zip
10. Abrir la ventana de comandos y navegar hasta el directorio /simplez-fpga-master/src ubicado en la carpeta
anterior usando
a. “CD pathTOfolder/simplez-fpga-mastersrc”
Figura 10. Con cd ingresamos a la ubicación de la carpeta del fichero que descargamos.
a. sasm ../asm/leds_on.asm
a. type prog.list
Figura 12. Con el comando type visualizamos la memoria del fichero prog.list
13. Simular el sistema con el comando:
a. apio sim
Figura 13. Con el comando sim procedemos a la simulación de nuestro archivo leds_on.asm
14.1. Como podemos observar al ejecutar el comando sim se nos abre automáticamente el archivo de
configuración de leds_on.asm, en el cual podemos realizar cualquier modificación o cambio.
14.2. Como podemos observar en la figura 11, nuestro simulador contiene ciclos de reloj, memoria ROM,
timers, estados, y funciones para transmisión y recepción de la señal de leds.
14.3. Podemos apreciar una simulación en esquemático de los ciclos de los leds.
Figura 15. Al cerrar el programa de simulación podemos ver en cmd como concluye la respectiva simulación y
modificación del archivo.
15. Ensamblar uno de los ejemplos del directorio ../asm/ simular y describir el resultado. Realice una
modificación al código y repita el proceso.
15.1. Primero, escogimos el archivo sec.asm.
15.2. Abrimos nuestro cmd
15.3. Con el comando cd, ingresamos a la ruta del archivo sec.asm
15.4. Luego con el comando sasm
Figura 16. Con el comando sasm y la ruta del archivo sec.asm, lo ensamblamos.
15.5. Ahora, procedemos a visualizar la memoria del fichero con el comando type prog.list
Figura 17. Con el comando type prog.list visualizamos la memoria del fichero sec.asm
Figura 18. Con el comando apio sim procedemos a la simulación del archivo.
15.8. Primero insertamos un archivo en blanco dentro de nuestro escenario como indica la figura 16.
15.9. Añadimos un nombre a nuestro archivo en blanco.
15.10. Procedemos a cerrar, para poder verificar si se realizó cambios en nuestro archivo.
15.11. Ahora procedemos a abrir otra vez nuestro archivo para verificar si se guardaron cambios,
mediante el comando apio sym.
Figura 22. Con el comando apio sim procedemos a la simulación del archivo.
15.15. Podemos observar que en el escenario se agregaron correctamente los clk y rstn=1.
15.16. Para poder guardar y que se guarden las modificaciones que realizamos en la parte superior
izquiera en File le damos click en Write Safe file, y procedemos a cerrar nuestro programa.
Figura 25. Podemos observar los cambios hechos y añadidos en el escenario con un nuevo clk y un nuevo rstn=1.
Figura 26. Para guardar los cambios en File: Writesave file y cerramos.
15.17. Podemos ver que ahora si se guardaron las modificaciones en cmd.
15.18. Procedemos a abrir de nuevo nuestro archivo para verificar si están hechas nuestras
modificaciones con el comando apio sym.
Figura 28. Observamos que las modificaciones fueron hechas a nuestro archivo sec.asm
Resultados:
Al realizar esta práctica los estudiantes aprenderán a diseñar e implementar sistemas en chip usando
lenguaje de descripción de hardware.
El acceso a archivos no solo se limita a la lectura de patrones de prueba, sino también al almacenamiento
de los resultados de la simulación en un archivo. Esto último puede resultar útil en caso de que se deseen
comparar dos archivos con resultados para validar el funcionamiento de un circuito.
Al instalar phyton y luego en nuestro código de sistema de Windows instalamos TinyFpga, nos damos
cuenta que al ejecutar cualquier archivo y ensamblarlo mediante cmd, podemos especificar para cada
diseño en concreto que implementación de una entidad se utiliza y visualizarla, también ayuda a tener
mejor velocidad en las tareas que se ejecutan.
Anexos:
Referencias bibliográficas:
_____________________ __________________