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 244 and 249

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

Rev 244 Rev 249
Line 311... Line 311...
 
 
 
 
\section{Lenguajes Descriptivos de \textsl{Hardware}}
\section{Lenguajes Descriptivos de \textsl{Hardware}}
\label{sec:fund-hdl}
\label{sec:fund-hdl}
 
 
 
La forma tradicional de diseñar circuitos digitales es dibujar diagramas lógicos que contengan compuertas (SSI) y funciones lógicos (MSI). Sin embargo, a fines de 1980s y comienzo de 1990s este proceso de diseño presentaba limitaciones como así algunos problemas. \emph{¿Como se puede dibujar diagramas esquemáticos que contienen cientos de miles o millones de compuertas?} Con la disponibilidad de los dispositivos lógicos programables para reemplazar sistemas donde se utilizaban integrados como los TTL, un nuevo enfoque para el diseño digital fue necesario. Las herramientas asistidas por computadoras son esenciales para diseñar circuitos digitales en la actualidad. Es claro que en las últimas décadas los ingenieros digitales de hoy diseñan sistemas digitales mediante la utilización de \textsl{software}! Esto es un importante cambio de paradigma del tradicional método empleado para el diseño de sistemas digitales.
 
 
 
Actualmente los diseñadores digitales usan \emph{Lenguajes Descriptivos de \textsl{Hardware}} (HDLs) para diseñar sistemas digitales. Los lenguajes más utilizados son \emph{VHDL} y \emph{Verilog}. Ambos lenguajes descriptivos permiten al usuario diseñar sistemas digitales mediante la escritura de código que describen el comportamiento de un circuito digital. Este código puede ser utilizado tanto para \emph{simular} la operación del circuito y \emph{sintetizar} también implementarse dicho circuito en un CPLD, una FPGA o en un circuito integrado de aplicaciones específica (ASCI).
 
 
 
\subsection{VHDL}
 
\label{sec:fund-hdl-vhdl}
 
 
 
 
 
 
 
\subsection{Verilog}
 
\label{sec:fund-hdl-verilog}
 
 
 
\nomenclature[z-ssi]{SSI}{\textsl{Small Scale Integration}}         % first letter Z is for Acronyms
 
\nomenclature[z-msi]{MSI}{\textsl{Medium Scale Integration}}         % first letter Z is for Acronyms
 
 
\section{Diseño de sistemas digitales}
\section{Diseño de sistemas digitales}
\label{sec:fund-sist-digitales}
\label{sec:fund-sist-digitales}
 
 
\section{Influencia de la Programabilidad}
\section{Influencia de la Programabilidad}
\label{sec:infl-program}
\label{sec:infl-program}
Line 330... Line 345...
 
 
Se podría considerar la existencia de dos épocas de la \emph{programabilidad} donde la \emph{primera} época ocurre con la aparición del microprocesador en la década de 1970s, donde los programadores desarrollan soluciones programables basados sobre estos \textsl{hardware} fijos. El gran reto en esta época fue en entorno de \textsl{software}; los desarrolladores trabajaban con lenguajes \textsl{assembly} e incluso cuando los compiladores y ensambladores surgieron para el lenguaje C, pues se obtenían mejores rendimientos con la codificación manual. Se comenzaron a obtener librerías que proporcionaban funciones básicas, permitiendo al diseñador concentrarse en la programación de la aplicación. Estas funciones actualmente son fácilmente accedidas desde los compiladores y ensambladores comerciales/libres. Actualmente hay una gran demanda de lenguajes de programación de alto-nivel como C y Java. Tal es así la abstracción del lenguaje que incluso entornos de desarrollos de alto nivel como UML están siendo implementados.
Se podría considerar la existencia de dos épocas de la \emph{programabilidad} donde la \emph{primera} época ocurre con la aparición del microprocesador en la década de 1970s, donde los programadores desarrollan soluciones programables basados sobre estos \textsl{hardware} fijos. El gran reto en esta época fue en entorno de \textsl{software}; los desarrolladores trabajaban con lenguajes \textsl{assembly} e incluso cuando los compiladores y ensambladores surgieron para el lenguaje C, pues se obtenían mejores rendimientos con la codificación manual. Se comenzaron a obtener librerías que proporcionaban funciones básicas, permitiendo al diseñador concentrarse en la programación de la aplicación. Estas funciones actualmente son fácilmente accedidas desde los compiladores y ensambladores comerciales/libres. Actualmente hay una gran demanda de lenguajes de programación de alto-nivel como C y Java. Tal es así la abstracción del lenguaje que incluso entornos de desarrollos de alto nivel como UML están siendo implementados.
 
 
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.
 
 
% 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}

powered by: WebSVN 2.1.0

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