OpenCores
URL https://opencores.org/ocsvn/phr/phr/trunk

Subversion Repositories phr

[/] [phr/] [trunk/] [doc/] [informe-tesis/] [phd-thesis-template-master/] [Chapter2/] [chapter2.tex] - Diff between revs 299 and 300

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 299 Rev 300
Line 371... Line 371...
 
 
La \emph{segunda} época de la programabilidad se encuentra marcada por las FPGAs. En la Figura \ref{fig:makimoto-wave}, Makimoto indica que el campo de la programabilidad se estandariza para su fabricación y la personalización del diseño se encuentra en la capa de aplicación de un desarrollo con las tecnologías mencionadas. Esto puede ser considerado como lo que ofrece la programabilidad de \textsl{hardware} en el dominio del \textsl{software} donde el \textsl{hardware} permanece fijo. Esto es un reto fundamental como la mayoría de las herramientas de programación de computadora que trabajan sobre el principio de una plataforma de \textsl{hardware} fijo, lo que permite realizar optimizaciones ya que hay una orientación clara sobre la manera de mejorar el rendimiento de una representación algorítmica. Con las FPGAs, el usuario tiene plena libertad para definir la arquitectura que mejor se adapte a la aplicación. Sin embargo, esto presenta un problema en el que cada solución debe ser \emph{hecha a mano} y todos los diseñadores de \textsl{hardware} conocen los problemas en el diseño y verificación.
La \emph{segunda} época de la programabilidad se encuentra marcada por las FPGAs. En la Figura \ref{fig:makimoto-wave}, Makimoto indica que el campo de la programabilidad se estandariza para su fabricación y la personalización del diseño se encuentra en la capa de aplicación de un desarrollo con las tecnologías mencionadas. Esto puede ser considerado como lo que ofrece la programabilidad de \textsl{hardware} en el dominio del \textsl{software} donde el \textsl{hardware} permanece fijo. Esto es un reto fundamental como la mayoría de las herramientas de programación de computadora que trabajan sobre el principio de una plataforma de \textsl{hardware} fijo, lo que permite realizar optimizaciones ya que hay una orientación clara sobre la manera de mejorar el rendimiento de una representación algorítmica. Con las FPGAs, el usuario tiene plena libertad para definir la arquitectura que mejor se adapte a la aplicación. Sin embargo, esto presenta un problema en el que cada solución debe ser \emph{hecha a mano} y todos los diseñadores de \textsl{hardware} conocen los problemas en el diseño y verificación.
 
 
Algunas de las tendencias en las dos épocas tienen similitudes. En los primeros días, el modo esquemático (\textsl{schematic capture}) fue usado para diseñar los primeros circuitos que era sinónimo con el nivel \textsl{assembly} en programación. Los lenguajes de descripción de \textsl{hardware} como el VHDL y Verilog emergieron ya que podrían ser utilizados para producir un nivel de abstracción más alto con el objetivo de contar con una herramienta basada en C como son SystemC y CataultC de Mentor Graphics como un entorno único de programación. Inicialmente como con los lenguajes de programación de \textsl{software}, había una desconfianza en la calidad de los resultados que producía el código con este nuevo enfoque. Sin embargo, con el fin de mejorar los costos de desarrollo, las herramientas de síntesis que eran equivalentes a la evolución de los compiladores de \textsl{software} eficientes para los lenguaje de alto-nivel, y también la evolución de las funciones de librería, estableció un alto grado de confianza que posteriormente llevó al uso de los lenguajes descriptivos de \textsl{hardware} (HDLs) sean comnues para la implementación en FPGA. En efecto, el surgimiento de los IP-cores refleja la evolución de librerías como son funciones programables de entradas/salidas para el flujo del \textsl{software} donde funciones comunes fueron reutilizadas donde los desarrolladores confiaban en la calidad de los resultados que producían estas librerías, especialmente en lo que las presiones para producir más código en el mismo lapso de tiempo crecieron con la evolución tecnológica. Los primeros IP-cores surgieron a partir de funciones de librerías básicas en el procesamiento de señales complejas y funciones de comunicación la mayoría de estos suministrados por los proveedores de FPGA y diversos repositorios web de IP-cores.
Algunas de las tendencias en las dos épocas tienen similitudes. En los primeros días, el modo esquemático (\textsl{schematic capture}) fue usado para diseñar los primeros circuitos que era sinónimo con el nivel \textsl{assembly} en programación. Los lenguajes de descripción de \textsl{hardware} como el VHDL y Verilog emergieron ya que podrían ser utilizados para producir un nivel de abstracción más alto con el objetivo de contar con una herramienta basada en C como son SystemC y CataultC de Mentor Graphics como un entorno único de programación. Inicialmente como con los lenguajes de programación de \textsl{software}, había una desconfianza en la calidad de los resultados que producía el código con este nuevo enfoque. Sin embargo, con el fin de mejorar los costos de desarrollo, las herramientas de síntesis que eran equivalentes a la evolución de los compiladores de \textsl{software} eficientes para los lenguaje de alto-nivel, y también la evolución de las funciones de librería, estableció un alto grado de confianza que posteriormente llevó al uso de los lenguajes descriptivos de \textsl{hardware} (HDLs) sean comnues para la implementación en FPGA. En efecto, el surgimiento de los IP-cores refleja la evolución de librerías como son funciones programables de entradas/salidas para el flujo del \textsl{software} donde funciones comunes fueron reutilizadas donde los desarrolladores confiaban en la calidad de los resultados que producían estas librerías, especialmente en lo que las presiones para producir más código en el mismo lapso de tiempo crecieron con la evolución tecnológica. Los primeros IP-cores surgieron a partir de funciones de librerías básicas en el procesamiento de señales complejas y funciones de comunicación la mayoría de estos suministrados por los proveedores de FPGA y diversos repositorios web de IP-cores.
 
 
 
\section{Actualización tecnológica de los recursos educativos}
 
\label{sec:act-tec-rec-edu}
 
 
 
Los anteriores conceptos alientan a la búsqueda, por parte de las instituciones académicas, de nuevas herramientas y materiales educativos que permitan a los estudiantes manipular nuevas tecnologías. Esto demanda por parte de las autoridades académicas que permitan la incorporación/modificación de las cátedras a fines. En la publicación \emph{``Actualización de la currícula - Incorporación de la lógica programable en ingenieria''} se plantea este reto \cite{PaperCayuela}. En esta publicación se propone modificar ligeramente el contenido de ciertas materias de las carreras de Ingeniería Electrónica e Ingeniería en Sistemas de Información, de la Universidad Tecnológica Nacional, para adecuarlas a la renovación tecnológica de la electrónica de consumo actual, que si bien aún no ha inundado Argentina, al punto de hacer absolutamente obsoletas las técnicas digitales discreta y de integración moderada, y las metodologías de diseño de sistemas, no va a pasar demasiado antes de que sea necesario un cambio radical en la industria, en el mercado de consumo masivo, y si seguimos a este ritmo, en última instancia en la educación técnica y tecnológica de nivel terciario-universitario.
 
 
 
\subsection{Análisis de contenidos en Ingeniería Electrónica e Ingeniería en Sistemas de Información }
 
 
 
En Ingeniería Electrónica, se introduce a
 
los alumnos a las tecnologías digitales de
 
procesamiento de información en materias
 
dictadas desde el primer año de cursado, a
 
saber: Informática I y II, Técnicas Digitales I, II y III.
 
 
 
El programa de Informática I de 1er año,
 
comienza por un pequeño despliegue de
 
conocimientos someros de arquitectura de
 
computadoras modernas, y continúa con la
 
enseñanza de la resolución algorítmica más
 
básica en programación, eligiendo primero
 
los diagramas de flujo, luego el
 
pseudocódigo, y por último el muy popular
 
lenguaje C, de medio y bajo nivel, por lo
 
que se pierde una gran cantidad de tiempo,
 
dada la repetición de temas con distintas
 
herramientas. Durante el 2o año en
 
Informática II, los alcances determinan una
 
ampliación de habilidades en C, tales como
 
las estructuras de datos entre otros temas, y
 
por último un corto (de vista) repaso de
 
conceptos de orientación a objetos, que no
 
llega a concretarse en mucha práctica con
 
C++.
 
 
 
En Técnicas Digitales I, de 3er año, se ven
 
los principios de lógica digital hasta diseño
 
secuencial, y se emplea en la parte práctica,
 
tecnología de baja escala de integración, los
 
muy conocidos y populares, TTL línea
 
7400 y CMOS línea 4000.
 
 
 
En Técnicas Digitales II, de 4o año, se
 
estudia no con mucho detalle, la clásica
 
arquitectura Intel X86.
 
 
 
En Técnicas Digitales III, de 5o año, se
 
tocan de oído los temas referidos al
 
desarrollo de sistemas de procesamiento
 
digital de señales, mediante programación
 
en C/C++ y Matlab® sobre DSPs
 
integrados o PCs con plataformas X86s.
 
 
 
En Ingeniería en Sistemas de Información,
 
debe tenerse en cuenta que la orientación no
 
es precisamente técnica, sino más bien
 
gerencial-administrativa; sin embargo, en
 
su base presenta suficientes materias de
 
contacto con Ingeniería Electrónica, y
 
sobre ellas discutiremos.
 
 
 
En Ingeniería en Sistemas de Información,
 
durante el último cuatrimestre del 1er año,
 
se dicta con mucho éxito la materia
 
Algoritmos y Estructuras de Datos (con
 
C/Java), que en contenido y extensión,
 
abarca prácticamente el total de las dos
 
Informáticas de Ingeniería Electrónica.
 
También en este cuatrimestre, se dicta la
 
materia Arquitectura de Computadoras, en
 
la que se ven temas varios de su correcto
 
nombre, sin pasar más abajo del nivel de
 
lógica digital y llegando hasta la
 
arquitectura de microprocesadores interna y
 
externa. En el 2o año, en la materia
 
Paradigmas de la Programación, se llegan
 
a ver entre otros, los paradigmas
 
concurrentes (con Ada), orientado a objetos
 
(Java/C++), funcional (Scheme/Lisp) y
 
lógico (Prolog).
 
 
 
\subsection{Propuesta de modificación de contenido}
 
 
 
Lo primero que se propone en este caso, es
 
unificar contenidos entre las materias de
 
programación de los primeros años de
 
ambas ingenierías, mas no tal vez su
 
dictado conjunto, para poder hacer énfasis
 
individuales sobre las especializaciones de
 
estos temas en cada carrera por aparte.
 
 
 
Así, nos quedaría una primera materia
 
Informática I dentro de Ingeniería
 
Electrónica, equivalente a Algoritmos y
 
Estructuras de Datos de Ingeniería en
 
Sistemas de Información, pero de duración
 
anual, lo cual puede ser una ventaja para la
 
maduración de los temas, aunque de carga
 
horaria equivalente similar, la mitad por
 
semana dado su doble extensión temporal
 
anual.
 
 
 
En el 2do. año en Ingeniería Electrónica, la
 
materia Informática II, también anual,
 
tendría tiempo suficiente para incluir
 
extensamente el paradigma orientado a
 
objetos con C++, muy importante para la
 
formación del ingeniero electrónico, y tan
 
importante como el anterior, incluir el
 
paradigma concurrente, enseñado mediante
 
ejemplos en VHDL con simuladores, para
 
de esta forma, preparar al alumno para las
 
técnicas digitales sobre FPGAs, sin tener
 
que comenzar desde cero con un lenguaje
 
de descripción de hardware, en el 3er año.
 
 
 
En cuanto a Ingeniería en Sistemas de
 
Información, en la materia Arquitectura de
 
Computadoras, se podría introducir
 
descripciones de microprocesadores y otros
 
circuitos en VHDL con simuladores,
 
facilitando la ampliación del paradigma
 
concurrente en VHDL/Ada del siguiente
 
año. Ya en Paradigmas de la
 
Programación del 2o año, podría emplearse
 
el lenguaje VHDL junto al Ada (dado que
 
este último es un antecesor del primero),
 
para unificar temas entre materias de los
 
dos niveles y compartir contenidos por un
 
lado, y por otro, para mostrar a los alumnos
 
plataformas de hardware (y no solo las
 
X86s) que se programan directamente con
 
ese paradigma, a la cual algunos tal vez
 
podrían dedicar esfuerzos en el futuro,
 
siendo también una forma de entablar
 
algunos puentes de unión entre estas dos
 
carreras parientes, aunque no cercanos.
 
 
 
Como segundo paso, convendría la
 
incorporación temprana en Técnicas
 
Digitales I, de temas de lógica
 
reconfigurable, y dado que VHDL ya se
 
habría visto con mediana intensidad durante
 
el año anterior, se puede concentrar la
 
atención en el diseño de hardware, y en la
 
descripción del mismo mediante estas
 
técnicas, algo ajenas al diseño discreto
 
convencional, del que se puede ver un poco,
 
tan solo para no dejar de lado, que aun hoy
 
una buena parte de la industria tiene
 
implantados con esta tecnología mucho de
 
su infraestructura, a la cual sin duda deberá
 
darse mantenimiento; sin embargo el
 
siguiente paso es la modernización de esa
 
misma infraestructura con estas nuevas
 
herramientas, para lo cual este cambio sería
 
instrumental.
 
 
 
Luego en Técnicas Digitales II, se puede
 
ver no solo la arquitectura X86, sino otras
 
variantes tan importantes en la industria
 
como ella, directamente en VHDL con
 
implementación sobre placas de trabajo
 
construidas      alrededor       de    lógica
 
programable, con lo cual no se queda en
 
teoría el diseño ni de microprocesadores
 
(irrealizable con electrónica discreta salvo
 
en simulación) ni de arquitectura externa al
 
micro.
 
 
 
Finalmente en Técnicas Digitales III, todo
 
los temas referidos al procesamiento digital
 
de señales, se pueden aprender con VHDL
 
y arquitecturas construidas en FPGAs, dado
 
que son en muchos casos la elección
 
prioritaria,     complementándolas       con
 
tecnología DSP integrada o embebida en
 
FPGAs.
 
 
 
En la Figura \ref{fig:actualizacion-tecnicas}, podemos ver un esquema
 
sintético de la propuesta.
 
 
 
\begin{figure}
 
  \centering
 
  \includegraphics[width=0.8\textwidth]{actualizacioncurricula}
 
  \caption{Propuesta de modificación de contenido a las carreras de Ingeniería Electrónica e Ingeniería en Sistemas de Información.}
 
  \label{fig:actualizacion-tecnicas}
 
\end{figure}
 
 
 
\subsection{Un atisbo de cambio en nuestra carrera}
 
 
 
En el CUDAR (Centro Universitario de
 
Desarrollo en Automación y Robótica),
 
decidimos colaborar con la incorporación
 
de estas modificaciones, en principio,
 
limitados a las materias de Técnicas
 
Digitales de Ingeniería Electrónica.
 
 
 
Se lo propusimos a los profesores titulares
 
de cada materia, sin la necesidad de
 
cambiar los programas, pero incorporando
 
las herramientas y el lenguaje VHDL en
 
las tres. Estuvieron de acuerdo y
 
propusieron un cambio mayor en los
 
contenidos, a lo que nosotros dimos
 
nuestro apoyo.
 
 
 
Para ello, el secretario de Ciencia y
 
Técnica de la Facultad Regional Córdoba,
 
instrumentaría un presupuesto, cuando sea
 
posible, para el equipamiento de
 
laboratorios con tecnología de lógica
 
programable, es decir con placas
 
experimentales y estaciones de trabajo con
 
software adecuado.
 
 
 
Además, para poder realizar esta
 
renovación, puede recurrirse a los
 
programas universitarios de empresas
 
como Xilinx \cite{XilinxUni} y Altera \cite{AlteraUni}, que donan
 
hardware y disponen de entornos de
 
desarrollo y simuladores gratuito.
 
 
 
Otra alternativa que evaluamos fue el
 
diseño en casa, de pequeñas placas de
 
trabajo construidas con CPLDs, aunque
 
nos topamos con la dificultad de la falta de
 
proveedores adecuados. Finalmente las
 
diseñamos y probamos, pero nos
 
encontramos que al querer conseguir
 
CPLDs y FPGAs de bajo precio nominal,
 
los distribuidores para Argentina de Xilinx
 
y Altera no dan gran importancia a los
 
programas universitarios de esas empresas,
 
generando además sobreprecios, aún
 
cuando      los    precios    sean    bajos
 
originalmente, con detalles como compra
 
de una cantidad mínima por componente,
 
gastos de envío entre Buenos Aires y el
 
interior con valores de transporte
 
internacional, etc.
 
 
 
\subsection{Resultados}
 
 
 
A partir del año 2006, colaboramos
 
activamente en la incorporación de temas
 
de lógica programable en el dictado de la
 
materia Técnicas Digitales I, a través del
 
titular de la cátedra y un profesor de
 
trabajos prácticos, ambos integrantes del
 
CUDAR, a los que asistimos con material
 
de lectura, prácticos y exposiciones
 
preparadas en filminas sobre la tecnología
 
interna de los dispositivos programables.
 
 
 
También hemos terminado con las etapas
 
de diseño y pruebas de un Kit de desarrollo
 
educativo con CPLD \cite{PaperKitCPLD}, que dejamos
 
disponible libremente para su construcción
 
por parte de los alumnos, y a partir de este
 
año se utilizará en la materia Técnicas
 
Digitales I como herramienta de trabajos
 
prácticos. Asimismo, el departamento
 
Ingeniería Electrónica ha dispuesto
 
incorporar este kit en el Laboratorio de
 
Técnicas Digitales, esfuerzo que está
 
siendo coordinado por nosotros desde el
 
CUDAR.
 
 
 
A propuesta nuestra también, a partir de
 
2007, dictaremos la materia electiva del 6to.
 
año de Ingeniería Electrónica, dedicada a
 
la lógica programable, y bautizada como
 
Técnicas Digitales IV.
 
 
% Aquí se podría poner algo sobre el paper "The Role of the Laboratory in Undergraduate Engineering Education".
% Aquí se podría poner algo sobre el paper "The Role of the Laboratory in Undergraduate Engineering Education".
 
 
 
 
%\begin{landscape}
%\begin{landscape}
 
 
Line 391... Line 664...
% \end{figure}
% \end{figure}
 
 
 
 
% \end{landscape}
% \end{landscape}
 
 
 No newline at end of file
 No newline at end of file
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 No newline at end of file
 No newline at end of file

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.