UNIVERSIDAD NACIONAL DE INGENIERÍA FACULTAD DE ELECTROTECNIA Y COMPUTACIÓN PROGRAMACION II
Título: LENGUAJES DE PROGRAMACION PARA LA SOLUCION DE PROBLEMAS EN LA INGENIERIA ELECTRONICA
Autores: Clara Patricia Centeno Rayo. Néstor Manuel Rivera Rivera Carrión. Carrión. Suyín Akira Bonilla Sánchez.
Aula: B-I-6
Grupo: 2M3-Eo
Tutor: Juan Francisco Francisco Gómez Gómez Flores. Msc. Ing. Juan
Managua, 15 de mayo de 2017
TABLA DE CONTENIDO Índice Introducción de la investigación………………………….…………………. Objetivos………………………………………………………………………...… Contenidos de la investigación………………………………………………. Conclusión………………………………………………………………………… Bibliografía………………………………………………………………………… Anexos (manual para el experto y manual ……………………………….
Páginas
Introducción de la investigación
Objetivos
Estudio de cinco compiladores para resolver, efectiva y eficientemente, problemas de la ingeniería electrónica, mediante metodologías de programación y aprender la sintaxis de un lenguaje de programación de computadora que se define como el conjunto de reglas que deben seguirse al escribir el código fuente de los programas para considerarse como correctos para ese lenguaje de programación.
Contenidos de la investigación MATLAB INTRODUCCION
Durante, mucho tiempo los ordenadores son utilizado en los cálculo científico y su uso cada vez se impone con más fuerza tanto en el terreno de la investigación como pedagógicodidáctico. Es por esto, que han salido al mercado distintos programas en los que aparecen implementados algunos de los métodos que utilizamos día a día en la resolución de nuestros problemas. Uno de estos programas es MATLAB (abreviatura de Matriz LABoratory, "laboratorio de matrices") es una herramienta de software matemático que ofrece un entorno de desarrollo integrado (IDE) con un lenguaje de programación propio (lenguaje M), aunque en las sucesivas versiones ha ido incorporando multitud de aplicaciones nuevas. Pero se trata sobre todo de familiarizarse con el entorno del programa y ponerse en situación de ir aprendiendo cosas nuevas conforme se vayan necesitando. Está disponible para las plataformas Unix, Windows, Mac OS X y GNU/Linux. MATLAB es destacado por su fácil aprendizaje, fácil utilización, gran Potencia y pocas exigencias de equipamiento informático. Naturalmente, esta buena “relación calidad- precio” hace que sea uno de los programas de software matemático más extendido. La potencia de MATLAB se manifiesta por dos características fundamentales: la Conjugación entre programación clásica y funcional y la gran variedad de problemas que es Capaz de resolver (Sistemas de Ecuaciones, Optimización, Ecuaciones diferenciales entre otros). Su Fácil uso y rápido aprendizaje están íntimamente relacionados con su carácter funcional. De esta forma, los datos en MATLAB son, casi exclusivamente, matrices y la resolución de un determinado problema se Lleva a cabo aplicando” a las matrices introducidas las “funciones” que MATLAB dispone (o Que el usuario ha definido previamente). MATLAB se presenta entonces como una herramienta eficaz y flexible en el Cálculo Numérico (sobre todo en el Cálculo Numérico Matricial) con excelente posibilidades gráficas. Entre sus prestaciones básicas que se hallan es la manipulación de matrices, la representación de datos y funciones, la implementación de algoritmos, la creación de interfaces de usuario (GUI) y la comunicación con programas en otros lenguajes y con otros dispositivos hardware. El paquete MATLAB dispone de dos herramientas adicionales que expanden sus prestaciones, a saber, Simulink (plataforma de simulación multidominio) y GUIDE (editor de interfaces de usuario - GUI). Además, se pueden ampliar las capacidades de MATLAB con las cajas de herramientas (toolboxes); y las de Simulink con los paquetes de bloques (blocksets).
Las aplicaciones de MATLAB se desarrollan en un lenguaje de programación propio. Este lenguaje es interpretado, y puede ejecutarse tanto en el entorno interactivo, como a través de un archivo de script (archivos *.m). Este lenguaje permite operaciones d e vectores y matrices, funciones, cálculo lambda, y programación orientada a objetos. Una de las características más destacables de MATLAB es su capacidad gráfica. Aunque en las sucesivas versiones ha ido incorporando multitud de aplicaciones nuevas, pero se trata sobre todo de familiarizarse con el entorno del programa y ponerse en situación d e ir aprendiendo cosas nuevas conforme se vayan necesitando. MATLAB es un programa orientado al cálculo con matrices, al que se reducen muchos de los algoritmos que resuelven problemas de Matemática Aplicada e Ingeniería. MATLAB ofrece un entorno interactivo sencillo mediante una ventana en la que podemos introducir órdenes en modo texto y en la que aparecen los resultados. Los gráficos se muestran en ventanas independientes. Cada ventana dispone de una barra de menú que controla su funcionalidad. Entonces sabemos que es un software muy usado en universidades y centros de investigación y desarrollo. En los últimos años ha aumentado el número de prestaciones, como la de programar directamente procesadores digitales de señal o crear código VHDL.MATLAB opera directamente con números complejos y con números reales como caso particular. Lo que distingue a MATLAB de otros sistemas de cálculo es su facilidad para trabajar con vectores y matrices. Las operaciones ordinarias, suma, producto, potencia, operan por d efecto sobre matrices, sin más restricción que la compatibilidad de tamaños en cada caso. Entes matemáticos como los polinomios son tratados por MATLAB como vectores, gracias al hecho de que se suman y multiplican por escalares de la misma forma que estos. La multiplicación y división entera de polinomios se afectan mediante órdenes especıficas, así como la evaluación o derivación de un polinomio. En conclusión MATLAB constituye actualmente un estándar dentro de las herramientas del análisis numérico, tanto por su gran capacidad y sencillez de manejo Como por su enorme versatilidad y difusión.
PIC COMPILER INTRODUCCIÓN Una de las ramas de las electrónica que ha tomado un mayor auge y desarrollo en la actualidad es la del estudio de micro controladores los mismos que presentan grandes ventajas al momento de desarrollar sistemas embebidos sobre todo al que se refiere al precio tamaño software de desarrollo. Los micro controladores PICmicro de Microchip han experimentado un importante aumento de presencia en el sector industrial, esto se debe, entre otros muchos factores, a la política de apertura que tiene Microchip, ya que facilita y potencia el desarrollo de herramientas por parte de otras compañías. En los micros controladores tradicionales todas las operaciones se realizan sobre el Acumulador. La salida del acumulador está conectada a una de las entradas de la Unidad Aritmética y Lógica (ALU), y por lo tanto éste es siempre uno de los dos operando de cualquier instrucción. En los micros controladores PIC, la salida de la Unidad Aritmética y Lógica (ALU) va al registro W y también a la memoria de datos, por lo tanto el resultado puede guardarse en cualquiera de los dos destinos. En las instrucciones de doble operando, uno de los dos datos siempre debe estar en el registro W, como ocurría en el modelo tradicional con el acumulador. En las instrucciones de simple operando el dato en este caso se toma de la memoria (también por convención). La gran ventaja de esta arquitectura es que permite un gran ahorro de instrucciones ya que el resultado de cualquier instrucción que opere con la memoria, ya sea de simple o doble operando, puede dejarse en la misma posición de memoria o en el registro W, según se seleccione con un bit de la misma instrucción. Las operaciones con constantes provenientes de la memoria de programa (literales) se realizan solo sobre el registro W. En la memoria de datos de los PIC’s se encuentran ubicados casi todos los registros de control del microprocesador y sus periféricos auto contenidos, y también las posiciones de memoria de usos generales. En el caso de los 16C5X, algunos registros especiales de solo escritura (TRIS y OPTION) no están accesibles den tro del bloque de memoria de datos, sino que solo se pueden cargar desde el registro W por medio de instrucciones especiales. En lenguajes de programación destacan los compiladores C para PIC de compañías como CCS Inc. El desarrollo de un lenguaje C específico para un micro controlador permite obtener el máximo rendimiento del micro. Los programas de simulación permiten depurar hasta casi la perfección el diseño, antes de ser montado en una placa. No hace falta explicar el ahorro de tiempo y coste que ello supone. Tal vez uno de los mejores simuladores para micro controladores es el ISIS de PROTEUS. Si queremos realizar la programación de los micro controladores PIC en un lenguaje como el C, es preciso utilizar un compilador de C.
Dicho compilador nos genera ficheros en formato Intel-hexadecimal, que es el necesario para programar (utilizando un programador de PIC) un micro controladores de 6, 8, 18 ó 40 patillas. El compilador de C que vamos a utilizar es el PCW de la casa CCS Inc. A su vez, el compilador lo integraremos en un entorno de desarrollo integrado (IDE) que nos va a permitir desarrollar todas y cada una de las fases que se compon e un proyecto, desde la edición hasta la compilación pasando por la depuración de errores. La última fase, a excepción de la depuración y retoques hardware finales, será programar el PIC. Al igual que el compilador de Turbo C, éste “traduce" el código C del archivo fuente (.C) a lenguaje máquina para los micro controladores PIC, generando así un archivo e n formato hexadecimal (.HEX).
EMULADOR EMU8086 INTRODUCCIÓN El lenguaje ensamblador continúa siendo imprescindible para implementar fragmentos de código donde la velocidad del ejecutable y/o su tamaño sean críticos. Afortunadamente, muchos compiladores permiten la inclusión directa en el código fuente de sentencias en ensamblador, de forma que ya no es necesario en la mayor parte de los casos el uso de ensambladores. Como ventaja adicional, no es necesario conocer las directivas de ensamblador, ya que pueden establecerse desde el entorno de desarrollo y van implícitas en las directivas del compilador, por ejemplo, el compilador Pascal de Borland o el compilador C/C++ de la misma compañía. Aun así, a muchos programadores les resulta difícil renunciar al control absoluto de la máquina que permite el lenguaje ensamblador. Este emulador EMU8086 porque posee una interfaz de usuario muy amistosa que permite familiarizarse con los fundamentos de la programación en lenguaje ensamblador de forma muy intuitiva, aparte de eso brinda una serie de recursos para ejecutar y depurar los programas. Este programa es sumamente útil para aquellos que quieran aprender lenguaje ensamblador (Assembler), ya que incorpora un editor avanzado, un ensamblador, una PC virtual y tutoriales paso a paso. También incluye dispositivos virtuales como impresoras, displays de LEDs, termómetros, etc. De esta manera, es posible ejecutar código fuente sobre un emulador 8086, siendo el código de máquina totalmente compatible con las generaciones siguientes de microprocesadores Intel. El 8086 dispone de ocho registros de propósito general, que podemos considerar como memorias implementadas sobre la misma CPU de acceso muy rápido. Estos registros reciben los nombres de AX, BX, CX, DX, SI, DI, BP, SP. Existe también un registro IP (Instruction Pointer) que apunta a la siguiente instrucción a ejecutar, formando su dirección junto con el registro CS, que citaremos a continuación. Aparte de los registros generales y de IP, existen registros de segmento, llamados CS, DS, SS, ES y un registro de flags, cuyos bits no son accesibles directamente y que reflejan los resultados de distintas operaciones. Cualquiera de los registros de propósito general puede usarse para escribir a/desde memoria, realizar operaciones, como punteros o contadores, pero cada uno tiene una personalidad especial, y es una buena práctica de programación usarlos para lo que fueron principalmente concebidos.
ARDUINO INTRODUCCIÓN Arduino es una plataforma de prototipos electrónica de código abierto basada en hard ware y software flexibles y fáciles de usar. Está pensado para artistas, diseñadores, como hobby y para cualquiera interesado en crear objetos o entornos interactivos. Arduino puede sentir el entorno mediante la recepción de entradas desde una variedad de sensores y puede afectar a su alrededor mediante el control de luces, motores y otros artefactos. Arduino se enfoca en acercar y facilitar el uso de la electrónica y programación de sistemas embebidos en proyectos multidisciplinarios. Toda la plataforma, tanto para sus componentes de hardware como de software, son liberados con licencia de código abierto que permite libertad de acceso a ellos. El hardware consiste en una placa de circuito impreso con un micro controlador, usualmente Atmel AVR, puertos digitales y analógicos de entrada/salida, los cuales pueden conectarse a placas de expansión, que amplían las características de funcionamiento de la placa Arduino. Asimismo, posee un puerto de conexión USB desde donde se puede alimentar la placa y establecer comunicación con el computador. Arduino se puede utilizar para desarrollar objetos interactivos autónomos o puede ser conectado a software tal como Adobe Flash, Processing, Max/MSP, Pure Data, etc. Una tendencia tecnológica es utilizar Arduino como tarjeta de adquisición de datos desarrollando interfaces en software como JAVA, Visual Basic y LabVIEW. Las placas se pueden montar a mano o adquirirse. El entorno de desarrollo integrado libre se puede descargar gratuitamente.
VHDL INTRODUCCIÓN VHDL es un lenguaje definido por el IEEE (Institute of Electrical and Electronics Engineers) (ANSI/IEEE 1076-1993). Es un acrónimo que representa la combinación de VHSIC (Very High Speed Integrated) y HDL (Hardware Description Language). Este lenguaje es usado por ingenieros y científicos para describir circuitos digitales, modelar fenómenos científicos, simular sistemas desde un alto nivel de abstracción hasta el nivel más bajo (puertas, biestables). Actualmente se usa también para síntesis. Este lenguaje es compatible con la mayoría de las herramientas de diseño, nos permite la comunicación entre distintos diseñadores disminuyendo los errores y problemas de compatibilidad, también admite el diseño jerárquico. Los sistemas de prueba pueden escribirse en el mismo lenguaje y usarse para comprobar distintos modelos, permite al diseñador concentrase en la funcionalidad del diseño sin tener que preocuparse en otros factores. VHDL se caracteriza por ser un lenguaje muy sencillo pero a su vez muy poderoso y también muy distinto al Lenguaje C ya que cuando se define un bucle en C el código da vueltas y vueltas mientras que en VHDL en realidad podríamos estar diciendo que genera muchos bloques idénticos de lógica y que todos ellos procesen los datos en un ciclo de clock.
Orígenes del lenguaje VHDL A mediados de los años setenta se produce una fuerte evolución en los procesos de fabricación de los circuitos integrados, y junto a las tecnologías bipolares, surge la tecnología MOS (metal oxide semiconductor ). En aquellas épocas, el esfuerzo de diseño se concentraba en los niveles eléctricos para establecer características e interconexiones entre los componentes básicos a nivel de transistor. El proceso de diseño era altamente manual y tan solo se empleaban herramientas como el PSPICE para simular esquemas eléctricos con modelos previamente personalizados a las distintas tecnologías. En ese momento (finales de los años setenta) se constata el enorme desfase que existe entre tecnología y diseño. La considerable complejidad de los chips que se pueden fabricar, implica unos riesgos y costes de diseño desmesurados e imposibles de asumir por las empresas. Es entonces, cuando diversos grupos de investigadores empiezan a crear y desarrollar los llamados "lenguajes de descripción de hardware" cada uno con sus peculiaridades. Empresas tales como IBM con su IDL, el TI - HDL de Texas Instruments, ZEUS de General Electric, etc., así como los primeros prototipos empleados en las universidades, empezaron a desarrollarse buscando una solución a los problemas que presentaba el diseño de los sistemas complejos. Sin embargo, estos lenguajes nunca alcanzaron el nivel de difusión y consolidación necesarias por motivos distintos. Alrededor de 1981 el Departamento de Defensa de los Estados Unidos desarrolla un proyecto llamado VHSIC (Very High Speed Integrated Circuit) su objetivo era rentabilizar las inversiones en hardware haciendo más sencillo su mantenimiento. Se pretendía con ello resolver el problema de modificar el hardware diseñado en un proyecto para utilizarlo en otro, lo que no era posible hasta entonces porque no existía una herramienta adecuada que armonizase y normalizase dicha tarea, era el momento de los HDL's. En 1983, IBM, Intermetrics y Texas Instruments empezaron a trabajar en el desarrollo de un lenguaje de diseño que permitiera la estandarización, facilitando con ello, el mantenimiento de los diseños y la depuración de los algoritmos, para ello el IEEE propuso su estándar en 1984. Tras varias versiones llevadas a cabo con la colaboración de la industria y de las universidades, que constituyeron a posteriori etapas intermedias en el desarrollo del lenguaje, el IEEE publicó en diciembre de 1987 el estándar IEEE std 1076-1987 que constituyó el punto firme de partida de lo que después de cinco años sería ratificado como VHDL. Esta doble influencia, tanto de la empresa como de la universidad, hizo que el estándar asumido fuera un compromiso intermedio entre los lenguajes que ya habían desarrollado previamente los fabricantes, de manera que éste quedó como ensamblado y por consiguiente un tanto limitado en su facilidad de utilización haciendo d ificultosa su total comprensión. Este hecho se ha visto incluso ahondado en su revisión de 1993. Pero esta deficiencia se ve altamente recompensada por la disponibilidad pública, y la seguridad que le otorga el verse revisada y sometida a mantenimiento por el IEEE. La independencia en la metodología de diseño, su capacidad descriptiva en múltiples dominios y niveles de abstracción, su versatilidad para la descripción de sistemas complejos, su posibilidad de reutilización y en definitiva la independencia de que goza con respecto de los fabricantes, han hecho que VHDL se convierta con el paso del tiempo en el lenguaje de descripción de hardware por excelencia
Conclusión Bibliografía Anexos