loading...

domingo, 19 de junio de 2011

Diseño de sistemas embebidos. Consideraciones previas. Las tres (03) restricciones que se deben cumplir.

Los Sistemas de computación empotrados debe cumplir con los costos ajustados, el consumo de energía, y las limitaciones de rendimiento. Si uno de los requisitos de diseño dominado, la vida sería mucho más fácil para los diseñadores de sistemas embebidos, que podrían utilizar arquitecturas  estándares con los modelos de programación fácil.

Pero debido a que las tres restricciones se deben cumplir al mismo tiempo, los diseñadores de sistemas embebidos, tienen que moldear arquitecturas de hardware y software para adaptarlo a las necesidades de las aplicaciones. El Hardware especializado ayuda a cumplir con los requisitos de rendimiento, para un menor consumo energético y menor costo de lo que sería posible, en un sistema de propósito general.

Como hemos visto, los sistemas informáticos incorporados a menudo son multiprocesadores heterogéneos con múltiples CPUs, y los elementos de cableado de procesamiento (PE). En co-diseño, el cableado PEs, son generalmente conocidas como aceleradores. En contraste, un co-procesador es controlado por la unidad de ejecución de una CPU.

Hardware / software de co-diseño, es un conjunto de técnicas que los diseñadores utilizan para ayudarles, a crear eficientes sistemas de aplicaciones específicas.

Si usted no sabe nada acerca de las características de la aplicación, entonces es difícil saber cómo ajustar el diseño del sistema. Pero si usted sabe de la aplicación, como el diseñador, no sólo se puede agregar características a la de hardware y software, que hacen correr más rápido usando menos energía.

Pero también puede eliminar los elementos de hardware y software, que no ayudan con la aplicación en cuestión. La Eliminación de componentes en exceso suele ser tan importantes, como la adición de nuevas características.

Como su nombre indica, hardware / software de co-diseño, de los medios en forma conjunta el diseño de arquitecturas de hardware y software para cumplir con el rendimiento, costos y objetivos de la energía. El Co-diseño, es una metodología radicalmente diferente a las abstracciones de capas utilizadas en la computación de propósito general.

Debido a que el co-diseño, intenta optimizar distintas partes del sistema, al mismo tiempo, se hace un uso extensivo de herramientas de análisis de diseño y optimización.

Cada vez más, hardware / software de co-diseño, está siendo utilizados para el diseño de sistemas empotrados en si. Por ejemplo, los servidores, se pueden mejorar con implementaciones especializadas de algunas de las funciones de su pila de software. El Co-diseño se puede aplicar a alojamiento web con la misma facilidad, ya que puede ser aplicada a multimedia.

En esta serie, en primer lugar se llevará una breve mirada a algunas plataformas de hardware, que pueden ser utilizados como objetivos de hardware / software de co-diseño, seguido de un examen de análisis de rendimiento, difícil de hardware / software de co-síntesis y, por último, cosimulación del  hardware / software.

Plataformas de diseño


El Hardware / software de co-diseño, puede ser utilizado para diseñar sistemas desde cero o crear sistemas, para ser implementados en una plataforma existente. La arquitectura de CPU + acelerador, es un común al co-diseño de la plataforma. Una variedad de diferentes CPUs, se pueden utilizar para albergar el acelerador.

El acelerador puede implementar muchas funciones diferentes, y además, utilizando cualquier de las tecnologías de la lógica de varios. Estas decisiones influyen en el tiempo de diseño, el consumo de energía, y otras características importantes del sistema.

La plataforma de co-diseño, puede ser implementado en cualquiera de las diversas tecnologías de diseño muy diferente.

1) Un sistema basado en PC, con el acelerador situado en un tablero conectado en el bus del PC. El Plug-in, puede utilizar un chip o un Field Programmable Gate Array (FPGA), para implementar el acelerador. Este tipo de sistema es relativamente voluminoso, y es la más utilizada para el desarrollo de aplicaciones o muy bajo volumen.

2) Una placa de circuito impreso personalizado, utilizando una FPGA o un circuito integrado de encargo para el acelerador. El consejo personalizado requiere más trabajo de diseño de un sistema basado en PC, pero los resultados en un menor costo, bajo consumo de energía del sistema.

3) Una plataforma FPGA que incluye una CPU y una tela de FPGA en un solo chip. Estos chips son más caros que los chips, sino proporcionar una implementación de un solo chip con uno o más CPUs, y una gran cantidad de lógica personalizada.

4) Un circuito integrado de encargo, por lo que el acelerador implementa una función en un área menor y con menor consumo de energía. Muchos sistemas integrados en chips (SoC), hacer uso de aceleradores para determinadas funciones.

La combinación de una CPU más aceleradores de uno o más es la forma más simple de plataformas heterogéneas, hardware / software de partición de los objetivos de dichas plataformas. La CPU se conoce como el anfitrión. Las conversaciones de la CPU, en el acelerador a través de los datos y registros de control en ella. Estos registros permiten a la CPU, para controlar el funcionamiento del acelerador y darle órdenes.

La CPU y el acelerador, también puede comunicarse a través de memoria compartida. Si el acelerador necesita para operar en un gran volumen de datos, por lo general es más eficiente dejar los datos en la memoria,  que el acelerador de lectura y escritura de memoria directamente, en lugar de tener los datos de transporte de la CPU, de la memoria a los registros de aceleración y la espalda.La CPU, y el acelerador de sincronizar sus acciones.

Las Plataformas más generales también son posibles. Podemos utilizar varias CPU, en contraste con el procesador conectado a los aceleradores. Podemos generalizar el sistema de interconexión de un autobús a las estructuras más generales.

Además, podemos crear un sistema de memoria más complejo que ofrece diferentes tipos de acceso a diferentes partes del sistema. El Co-diseño de estos tipos de sistemas es más difícil, sobre todo cuando no hacemos suposiciones sobre la estructura de la plataforma.

Los Tres ejemplos siguientes, se describen varios de los diseños diferentes de las  co-plataformas que utilizan FPGAs, de diferentes maneras.

Ejemplo 7-1.

El Xiilnx Virtex-4 FX Plataforma FPGA Familia


El Xilinx Virtex-4 de la familia [Xi105], es una plataforma FPGA que viene en diferentes configuraciones. La familia de alta gama FX incluye uno o dos procesadores PowerPC, múltiples MACS Ethernet, memoria RAM de bloque, y grandes conjuntos de lógica reconfigurable.

El PowerPC, es de alto rendimiento con 32-bit RISC Machine, dispone de una gama de cinco etapas, 32 registros de propósito general, y la instrucción por separado y los cachés de datos. La tela de FPGA, se basa en bloques de lógica configurables (CLB) que utilizan las tablas de búsqueda y una variedad de otra lógica.

El más grande Virtex-4 proporciona hasta 200.000 células de la lógica. El CLB, se pueden utilizar para implementar sumadores de alta velocidad. Un conjunto separado de los bloques incluye 18 x 18 multiplicadores, sumadores uno, y un acumulador de 48 bits, para las operaciones de DSP. El chip incluye una serie de bloques de memoria RAM que se puede configurar para una variedad de configuraciones de profundidad y anchura.

El PowerPC, y el tejido FPGA puede ser perfectamente integrado. La tela de FPGA, se pueden utilizar para construir basado en bus. Una unidad de procesador auxiliar permite costumbre instrucciones PowerPC a implementar en el tejido FPGA.

Además, los núcleos del procesador también puede ser aplicado en el tejido FPGA, para construir multiprocesadores heterogéneos. Xilinx proporciona el núcleo del procesador MicroBlaze y otros núcleos se puede utilizar también.

El MicroBlaze es un procesador soft core diseñados para Xilinx FPGA de Xilinx .Como un procesador soft-core, MicroBlaze se lleva a cabo en su totalidad en la memoria de uso general y el tejido de la lógica FPGA de Xilinx.

Ejemplo 7-2.

El integrador de ARM módulo lógico

image
El integrador de ARM, es una serie de placas de evaluación para el procesador ARM. El módulo lógico Integrador [ARM00], es una tarjeta aceleradora de FPGA, que se conecta a la placa base Integrador de ARM.

El módulo lógico proporciona una FPGA Xilinx, para la lógica reconfigurable. Las interfaces FPGA con el bus ARM AMBA. La placa del módulo de la lógica no contiene la SRAM, la propia FPGA puede usar el bus AMBA para conectarse a la SRAM y los dispositivos de E / S que figuran en otros foros.

 

Ejemplo 7-3.

La Annapolis Micro Systems Wildstar II Pro

image
El Wildstar II Pro (http://Www.annapmicro.com), es una tarjeta de bus PCI que proporciona la lógica FPGA, en el bus de un PC o un dispositivo PCI. La tarjeta recibe uno o dos FPGAs Virtex II, Pro que pueden conectarse directamente al bus PCI.

También tiene capacidad para 96 ​​MB de SRAM y 256 MB de SDRAM. La tarjeta está organizado como se muestra en la figura. Un entorno de desarrollo simplifica el diseño del sistema de la junta.

Análisis de rendimiento


Durante la co-síntesis, tenemos que evaluar como el hardware están diseñando. El Alto nivel de síntesis ha sido desarrollado para aumentar el nivel de abstracción, para los diseñadores de hardware, pero también es útil como una herramienta de estimación de co-síntesis.

En esta sección se examinan algunos algoritmos de síntesis de alto nivel, para proporcionar una mejor comprensión de los costos de hardware y algoritmos rápidos de la zona y la estimación del rendimiento.También tenemos en cuenta las técnicas desarrolladas específicamente para estimar los costos, de los aceleradores en multiprocesadores heterogéneos.

Alto nivel de la síntesis.

El Alto nivel de síntesis, se inicia a partir de una descripción del comportamiento de hardware, y crea un diseño de trasferencia entre registros. El Alto nivel de la síntesis de los horarios y asignar las operaciones en el comportamiento, así como los mapas de las operaciones en las bibliotecas de componentes.

Figura 1.7 Un ejemplo de especificación de la conducta y la aplicación de trasferencia entre registros.

Figura 7-1 arriba muestra un ejemplo sencillo de una especificación de alto nivel y una posible implementación de trasferencia entre registros. Los bordes de la dependencia de los datos transportan valores de las variables de una operación o de las entradas principales a otro.

La transferencia de registros, la ejecución de los pasos que deben tomarse a su vez, la especificación de alto nivel, si se administra en forma de texto o un gráfico de flujo de datos, en una aplicación de registro de la transferencia:

Las operaciones se han programado para ocurrir en un ciclo de reloj en particular. Las Variables han sido asignadas a los registros. Las operaciones se han asignado a las unidades de función. Algunas conexiones se han multiplexado para salvar a los cables.

En este caso, se ha supuesto que se puede ejecutar una sola operación por ciclo de reloj. Un ciclo de reloj a menudo se llama una medida de control o de paso de tiempo en la síntesis de alto nivel.

Utilizamos un modelo más grueso de tiempo de alto nivel de síntesis, que se utiliza en la síntesis de la lógica. Debido a que estamos más lejos de la ejecución, las demoras no se puede predecir con la mayor precisión, modelos de tiempos tan detallados no son de mucha utilidad, en el alto nivel de síntesis. La Abstracción de tiempo para el período de reloj o una fracción, de lo que hace la combinatoria de programación tratable.

La asignación de variables a los registros deben hacerse con cuidado. Dos variables pueden compartir un registro si sus valores no son necesarios en el momento, para el mismo ejemplo, si un valor de entrada se utiliza únicamente al principio de una secuencia de cálculos y se define otra variable sólo al final de la secuencia.

Pero si las dos variables se necesitan al mismo tiempo, que deben asignarse a registros distintos. Compartir o registros o unidades funcionales requiere la adición de multiplexores en el diseño.

Por ejemplo, si dos adiciones en el gráfico de flujo de datos se asignan a la unidad de víbora, en la  misma ejecución, se utiliza para alimentar a los multiplexores con operandos propios de la víbora.

Los multiplexores son controlados por un control FSM, que suministra las señales de seleccionar a los muxes. (En la mayoría de los casos, no necesitamos de-multiplexores en las salidas de las unidades compartidas, ya que el hardware, es generalmente diseñado para ignorar los valores, que no se utilizan en cualquier ciclo de reloj.) Debemos añadir multiplexores de tres tipos de costos, de la aplicación:

1. Delay, que puede prolongarse el ciclo de reloj del sistema.
2. Logic, que consume la zona en el chip.
3 .Cableado, lo que se requiere para alcanzar el multiplexor, también se requiere un área.

El Compartir hardware no es siempre una victoria. Por ejemplo, en algunas tecnologías, las víboras son lo suficientemente pequeñas que se gana tanto en el área y la demora por no compartir una víbora. Parte de la información necesaria para tomar buenas decisiones de aplicación debe provenir de una biblioteca de la tecnología, lo que da a la zona y los costos de demora de algunos componentes.

Otros datos, como las estimaciones de costos de cableado, se puede hacer mediante algoritmos. La capacidad de un programa para medir con precisión los costos de implementación de un gran número de implementaciones candidato, es uno de los puntos fuertes de los algoritmos de síntesis de alto nivel.

Durante la búsqueda de un buen horario, el que-pronto-como-posible (ASAP) ,y como a fines de los posible (ALAP), cuáles son los límites de la longitud útil programa.

Una heurística muy simple que puede manejar las limitaciones es el primero que llega-firstserved (FCFS), de programación. FCFS camina a través de la gráfica de flujo de datos desde sus fuentes hasta sus sumideros.

Tan pronto como encuentra un nuevo nodo, se trata de programar la operación en el horario actual del reloj, y si todos los recursos están ocupados, se inicia otro paso de control de horarios y la operación allí.

Los Horarios FCFS, generalmente manejan los nodos de la fuente al sumidero, pero los nodos que aparecen en la misma profundidad en el gráfico, se pueden programar en un orden arbitrario. La calidad de la programación, según lo medido por su longitud, puede variar enormemente dependiendo exactamente de qué orden de los nodos a una determinada profundidad se consideran.

FCFS, ya que elige a los nodos de profundidad igual forma arbitraria, puede retrasar una operación crítica. Una mejora evidente es un algoritmo de planificación de la ruta crítica, que las operaciones de los horarios en la ruta crítica en primer lugar.

La programación de la lista, es una heurística eficaz que trata de mejorar en la programación de la ruta crítica, mediante una consideración más equilibrada de fuera de la crítica de la ruta los nodos.

En lugar de tratar a todos los nodos que están fuera de la ruta crítica como igualmente importantes, la programación de la lista estima que tan cerca de un nodo es ser crítico, mediante la medición de D, el número de los descendientes del nodo, en el gráfico de flujo de datos. Un nodo con los descendientes de unos pocos es menos probable que se convierta importante, que otro nodo a la misma profundidad que tiene más descendientes.

La programación de la lista también atraviesa el gráfico de flujo de datos desde las fuentes a los sumideros, pero cuando se tiene varios nodos a la misma profundidad que compiten por la atención, que siempre elige el nodo con la mayoría de los descendientes.

En nuestro modelo de tiempo simple, donde todos los nodos de la misma cantidad de tiempo, un nodo crítico siempre tendrá más descendientes que cualquier nodo crítico. La heurística toma su nombre de la lista de nodos en la actualidad a la espera de ser programadas.

La fuerza dirigida por la programación de [Pau89], es un algoritmo de programación bien conocido que trata de minimizar el costo del hardware, para cumplir con una meta de desempeño particular por equilibrar el uso de unidades funcionales a través de los ciclos. El algoritmo selecciona una operación de programación con las fuerzas (ver la Figura 7-2 a continuación ).

Se asigna entonces una medida de control para la operación. Una vez que la operación ha sido programada, no se mueve, por lo que bucle exterior del algoritmo, se ejecuta una vez para cada operación en el gráfico de flujo de datos.

Figura 7.2.

Cómo las fuerzas de la programación de guía del operador


Para calcular las fuerzas ejercidas sobre los operadores, primero tenemos que encontrar la distribución de las diversas operaciones en el gráfico de flujo de datos, como se representa en un gráfico de distribución.

La ASAP y horarios ALAP, nos dice que la serie de medidas de control en el que puede ser cada operación programada. Suponemos que cada operación tiene una probabilidad uniforme de ser asignada a cualquier medida de control posible.

Un gráfico muestra la distribución del valor esperado, del número de operadores de un determinado tipo de ser asignado a cada paso de control, como se muestra en la Figura 7-3 a continuación.

El gráfico de distribución nos da una visión probabilística del número de unidades de la función de un determinado tipo (víbora en este caso), que serán necesarios en cada etapa de control. En este ejemplo, hay tres incorporaciones, pero no todo puede ocurrir en el mismo ciclo.

Figura 7.3.Ejemplo gráfico de distribución de la fuerza dirigida por la programación


Si calculamos la ASAP y horarios de ALAP, nos encontramos con que + 1 debe ocurrir en el paso de control en primer lugar, + 3 en el pasado, y + 2 Además puede ocurrir en cualquiera de las medidas de control de las dos primeras.

La distribución gráfica de la Dirección General + (t) muestra el número esperado de las adiciones en función de la etapa de control, el valor esperado en cada etapa de control se calcula suponiendo que cada operación es igualmente probable en cada paso de control legal.

Construimos una distribución para cada tipo de unidad de la función que le asignen. El número total de unidades funcionales requeridas para la ruta de datos es la cantidad máxima necesaria para cualquier medida de control. Así que, por lo que minimiza los requisitos de hardware requiere la elección de un programa que equilibra la necesidad de una unidad determinada función a lo largo toda la programación.

Los gráficos de distribución se actualizan cada vez que se programa, cuando una operación de una operación se le asigna a un paso de control, la probabilidad de que la medida de control se convierte en 1 y 0 en cualquier etapa de control.

A medida que la forma de la gráfica de distribución de una función cambia la unidad, la fuerza dirigida por la programación trata de seleccionar las medidas de control para el resto de las operaciones, lo que mantiene la distribución equilibrada del operador.

La fuerza dirigida por la programación calcula fuerzas, como las ejercidas por resortes para ayudar a equilibrar la utilización de los operadores. Las fuerzas de la primavera son una función lineal de desplazamiento, dada por la Ley de Hooke:

F (x) = kx, (EQ 01/07) 

donde x es el desplazamiento y la k es la constante del resorte, lo que representa la rigidez del resorte.

Cuando las fuerzas de la informática, en el operador que estamos tratando de programar, lo primero al elegir un horario candidato para el operador, a continuación, calcular las fuerzas de evaluar los efectos de que la elección de la programación de la asignación.

Hay dos tipos de fuerzas aplicadas por los operadores y: las fuerzas de uno mismo y predecesor / sucesor de fuerzas. Las fuerzas de auto están diseñados para igualar la utilización de las unidades de función a través de todas las medidas de control.

Ya que estamos seleccionando un calendario para una operación a la vez, tenemos que tener en cuenta la forma en que la fijación de la operación en el tiempo afectará a otras operaciones, ya sea tirando de las operaciones forward antes o haciendo retroceder los siguientes.

Cuando se elige un candidato a la vez que el operador está previsto, se aplican restricciones a los rangos factibles, de sus inmediatos predecesores y sucesores. (De hecho, los efectos de una opción de programación pueden recorrer toda la gráfica de flujo de datos entera, pero esta aproximación ignora los efectos a distancia.)

El predecesor / sucesor de fuerzas, P o (t) y X(T), son las impuestas a las operaciones predecesor / sucesor. La elección de la programación se evalúa sobre la base de las fuerzas totales en el sistema que ejerce esta opción de programación: las fuerzas de auto, las fuerzas antecesor y el sucesor de las fuerzas de todos se suman.

Es decir, los operadores predecesor y sucesor no directamente ejercen fuerzas sobre el operador de estar programado, pero las fuerzas ejercidas sobre ellos por que la elección de la programación de ayudar a determinar la calidad de la asignación.

En cada paso, se elige la operación con la menor fuerza total de horario y lugar que en la etapa de control en el que se siente la menor fuerza total.

El Camino de la planificación basada en [Cam91], es otro algoritmo de programación conocido por alto nivel de síntesis. A diferencia de los métodos anteriores, la programación basada en rutas está diseñada para minimizar el número de estados de control necesarios en el controlador de la aplicación, las limitaciones en los recursos dada la ruta de datos.

Los horarios de cada algoritmo de ruta de forma independiente, utilizando un algoritmo que garantiza el número mínimo de estados de control en cada ruta. El algoritmo combina de manera óptima los horarios de ruta en un horario del sistema.

El horario para cada ruta se encuentra con camarilla que comprenda al menos, este paso se le conoce por el nombre como rápido-como-posible (AFAP) de programación.

Estimación del acelerador


Estimar los costos de hardware del acelerador de forma heterogénea multiprocesador, requiere una precisión de equilibrio y la eficiencia. Las estimaciones deben ser lo suficientemente buenas para evitar desorientar el proceso de síntesis global.

Sin embargo, las estimaciones se debe generar la suficiente rapidez que los compañeros de síntesis se puede explorar un gran número de diseños candidato. Métodos de estimación para la co-síntesis general, evitar estimaciones muy detallada de las características físicas, como podrían ser generados por la colocación y el enrutamiento. En su lugar, confían en la programación y asignación de medir el tiempo de ejecución y el tamaño del hardware.

Hermann et al.[Her94] utiliza métodos numéricos para estimar los costos del acelerador en COSYMA. Señalaron que como capas adicionales de un nido de bucle, se pelan para su aplicación en el acelerador, el costo de la modificación del acelerador no es igual a la suma del costo de las piezas nuevas y adicionales.

Por ejemplo, si una función se describe en tres bloques, a continuación, ocho términos que sean necesarias para describir el costo del acelerador que implemente los tres bloques.Utilizaron técnicas numéricas para estimar los costos del acelerador como elementos nuevos fueron agregados al acelerador.

Henkel y Ernst [Hen95; Hen01] desarrollaron un algoritmo para calcular de forma rápida y con precisión el funcionamiento del acelerador, y el costo dado un CDFG. Que utilizan la programación basada en rutas para calcular la longitud de la programación y los recursos necesarios para ser asignados.

Para reducir el tiempo de ejecución de las AFAP, y la superposición de medidas de planificación basada en rutas, que se descomponen los CDFG, y el horario de cada subgrafo de forma independiente, esta técnica es conocida como la ruta basada en la estimación. Ellos utilizar tres reglas para guiar la selección de los puntos de corte.

En primer lugar

Corte en los nodos con un número de iteraciones menor, ya que cualquier penalidad incurrida por el corte de la gráfica se multiplicará por el número de tritones.

En segundo lugar

Corte en los nodos donde se encuentran senderos al unirse, por lo general generados por el final de un ámbito en el lenguaje.

En tercer lugar

Tratar de cortar el gráfico en trozos más o menos del mismo tamaño. El número total de los trozos es posible que puede ser controlado por el diseñador.

Su algoritmo de estimación, incluida la creación de perfiles, lo que genera, y la conversión del CDFG, cortar el CDFG, y la superposición de los horarios se muestra en la Figura 7-4 a continuación.

Vahid y Gajski [Vah95] desarrollaron un algoritmo para la estimación rápida incremental de la ruta de datos y los costos de control. Que modelo de costos de hardware como una suma

C H = k FU S FU + k SU S SU + k M S M + k SR S SR + k C S C = k W S W (EQ 02/07)

donde S x es el tamaño de un determinado tipo de elemento de hardware y k x es la proporción de tamaño-costo de ese tipo. En esta fórmula, FU es función de las unidades. SU son las unidades de almacenamiento. M es multiplexores. SR se registra el estado. C es la lógica de control. W es el cableado.

Figura 4.7 Un algoritmo para la ruta basada en la estimación.
Se calcula a partir de estos parámetros más directos, tales como el número de estados en el controlador, las fuentes de los operandos de las operaciones, y así sucesivamente. Vahid y Gajski preprocesar el diseño para calcular una variedad de información para cada procedimiento en el programa.

1) Un conjunto de entradas de ruta de datos y un conjunto de salidas de ruta de datos.
2) El conjunto de funciones y unidades de almacenamiento.Cada unidad se describe por su tamaño y el número de líneas de control que acepta.
3) Un conjunto de objetos funcionales se describe por el número de estados posibles de control para el objeto y los destinos a los que el objeto puede escribir. Cada destino es descrito a sí mismo con un identificador, el número de estados en los que el destino está activo para este objeto, y las fuentes que el objeto se puede asignar a este destino.

Figura 7-5 Información preprocesado utilizado para la estimación de costos.
Una forma de tabla de esta información se muestra en la Figura 7-5 arriba. Esta información puede ser usada para calcular algunos valores intermedios como se muestra en la Figura 7-6 a continuación. Estos valores, a su vez puede ser utilizado para determinar los parámetros en ( EQ ​​07/02) .

Vahid y Gajski utilizar un algoritmo de actualización dado un cambio en la configuración de hardware. Dado un objeto de diseño, lo primero hay agregar el objeto al diseño, si todavía no existe. A continuación, actualizar las fuentes de multiplexor y tamaños y actualización de estados de la línea de control activo para este destino.

Figura 7-6 Representación tabular de los recursos de hardware.( Para ver la imagen grande, haga click aquí )

Por último, actualizar el número de estados del controlador. Su algoritmo de actualización se ejecuta en tiempo constante si el número de destinos por objeto es aproximadamente constante.

Siguiente en la parte 2: Hardware / software de síntesis de co-algoritmos

Esta serie de dos artículos se basa en el material impreso con el permiso de Morgan Kaufmann, una división de Elsevier, Copyright 2007 de "computación de alto rendimiento integrado "por Wayne Wolf. Para obtener más información acerca de este título y otros libros similares, por favor visite www.elsevierdirect.com .

Wayne Lobo es actualmente el Georgia Research Scholar Alianza Eminentes la celebración de la Resa "Ray" S. Farmer, Jr., Presidente Distinguido de sistemas informáticos integrados en la Escuela de Tecnología de Georgia de Ingeniería Eléctrica y Computación (ECE).Anteriormente, un profesor de ingeniería eléctrica en la Universidad de Princeton, trabajó en AT & T Bell Laboratories.Se ha desempeñado como editor en jefe de las transacciones de ACM en Embedded Computing y de automatización de diseño para sistemas embebidos .

Vía:

http://www.eetimes.com/design/embedded/4217070/Down---dirty-with-HW-SW-co-design--Part-1---Reviewing-the-fundamentals-?pageNumber=4

martes, 14 de junio de 2011

Usando PIC18F4550, y el uso del ADC en MCC18, Sensores de adquirir datos

¿Ques es un ADC?

Una -a-digital convertidor de analógico (abreviado ADC , A / D o la A a la D ) es un dispositivo que convierte una cantidad continua de un tiempo discreto digital de representación. Un ADC también puede proporcionar una medida aislada. La operación inversa se ​​realiza por una -a-analógico convertidor de señal digital ( DAC ).

Típicamente, un ADC es un dispositivo electrónico que convierte una entrada analógica de tensión o de corriente a un número digital proporcional a la magnitud de la tensión o corriente. Sin embargo, algunos no electrónicos o sólo parcialmente los dispositivos electrónicos, tales como codificadores rotativos , también se puede considerar ADC.

La salida digital puede utilizar diferentes esquemas de codificación. Normalmente la salida digital será un complemento a dos el número binario que es proporcional a la entrada, pero hay otras posibilidades. Un codificador, por ejemplo, podría salir un código Gray .

 

El ADC es de vital importancia, ya que la mayoría de los sensores para adquirir datos de manera analógica. Así, por el microcontrolador para procesar, estos datos deben ser convertidos a formato digital. En PIC18F4550, el período de ADC desde el puerto de A a B puerto dando al desarrollador de 13 canales de ADC. Figura 1 y 2 muestra los registros relacionados. En este sentido, se centraría en el registro ADCON1.

Using PIC18F4550 ADC in MCC18

Figura 1: Los registros relacionados con el puerto A

Using PIC18F4550 ADC in MCC18

Figura 2: Registros relacionados con el puerto B

Vamos a comenzar con el registro ADCON0. Este registro se utiliza para seleccionar el canal para el ADC del canal 0 a 12 canales mediante el control de CHS3: CHS0. ADON se utilizará para encendido / apagado del módulo ADC, mientras que para determinar si la conversión ADC ha completado, GO / DONE "se puede comprobar. Cuando GO / DONE '= 1, la conversión ADC se ha completado. A la inversa, cuando GO / DONE '= 0, esto significa que la conversión A / C se completa y ociosa.

PIC18F4550 ADC in MCC18

Figura 3: registros de control ADCON0

Otro registro importante que debe tenerse cuidado cuando se utiliza ADC es ADCON1. Este registro permite establecer si el canal de entrada será digital o analógica utilizando PCFG3: PCFG0, que es el bit 0 en el bit bit 3 de ADCON1. VCFG1 y VCFG2 le permite tener una referencia de tensión externa.

PIC18F4550 ADC ic

Figura 4: registros de control ADCON1

Al establecer ADCON0 y ADCON1, ADCON2 tiene que ajustarse también. Este registro se utiliza para controlar el formato y el A / D tiempo de la adquisición. Además, también se utiliza para seleccionar el A / D del reloj de conversión. Al referirse a la Figura 6 y 7, el momento de adquisición mínimo se calcula y la fuente de AD reloj se elige en función de la frecuencia de reloj del PIC. Después de hacerlo, entonces, la configuración adecuada se pueden establecer.

PIC18F4550 ADC

Figura 5: control de registros ADCON2

PIC18F4550 icFigura 6: Las ecuaciones para calcular el tiempo de adquisición mínimo

PIC18F4550 ic programming

Figura 7: AD configuración de fuente de reloj

La figura 8 muestra la A / D diagrama de bloques. A partir de aquí, debemos notar que ADC de este dispositivo tiene algunas limitaciones. Es decir, sólo un canal puede estar activo a la vez mediante el control de CHS3: CHS0. Por lo tanto, la adquisición simultánea de datos de más de un canal es imposible, pero en paralelo IC ADC se puede agregar a realizar esta tarea.

PIC18F4550 ic programming

Figura 8: Diagrama / D

Pasos para configurar ADC

1. Configurar ADC:
a. Configuración de pines analógicos, referencias de voltaje, así como E / S digital a través de un ADCON
b. La serie A / D a través de canal de entrada ADCON0 (12 canales, pero sólo uno puede ser seleccionada a la vez)
c. Seleccione una hora D tiempo de la adquisición y el reloj de conversión a través de dos ADCON
d. Encienda el ADC a través ADCON0
2. Si la interrupción se adquiere, se puede establecer por:
a. ADIF = 0
b. ADIE = 1
c. GIE = ​​1
3. Espere a que el tiempo de adquisición si se adquiere
4. Inicio de conversión mediante el establecimiento de poco GO / DONE "en el ADCON0
5. Espere a que el ADC para completar por:
a. Comprobación de la GO / DONE "granito de arena para ser limpiado
b. Espere a que la interrupción del ADC
6. Lea el A / D Resultados de Registro (ADRESH: ADRESL) ADIF = 0 si la interrupción se utiliza
7. Ir al paso 1 para volver a configurar otro número de identificación para la adquisición de datos o continuar yendo al paso 3-5.
8. La conversión A / D por poco se define como TAD. Antes de la siguiente adquisición se puede hacer, un mínimo de 3 TAD se requiere.

Ejemplo de codificación

sample coding pic chip

sample coding pic chip

El código de ejemplo anterior adquiere datos de An0 o canal 0 y mostrarlos a la PC usando serie. Esto es para verificar que los datos de muestreo es el correcto.
Conclusión
Configuración del ADC correctamente es importante asegurarse de que adquirimos los datos correctos.

http://www.bestelectronicarticles.com/other-electronic-topics/pic-microcontrollers/using-pic18f4550-adc-in-mcc18.html

jueves, 9 de junio de 2011

Simulador de PIC Oshonsoft PIC18 IDE

Aquí, Oshonsoft PIC18 IDE se utiliza. Este software posee una gran cantidad de periféricos que los desarrolladores pueden utilizar para simular su sistema en Herramientas.

Oshonsoft to simulate PIC18 circuits

Figura 1: PIC18 Oshonsoft interfaz IDE

La configuración de
1. Establezca la frecuencia de reloj por: doble clic sobre el 20MHz. A continuación, la Figura 2 se muestran. Aquí, su frecuencia de entrada deseada y haga clic en Aceptar.

Oshonsoft to simulate PIC18 circuits

Figura 2: Ajuste de frecuencia de reloj de PIC18F

2. A continuación, establezca la serie PIC18F a simular un clic en la serie después de microcontrolador PIC18F.

Oshonsoft to simulate PIC18 circuits

Figura 3: Selección de modelo PIC18F

3. Antes de cargar el programa para la simulación, ajuste la velocidad de la simulación: Velocidad -> Ultimate (para el más rápido de simulación).
4. Para cargar el programa, Archivo - Programa de carga>


Oshonsoft to simulate PIC18 load program

Figura 4: Simulación con diferente velocidad

5. En las herramientas, puede llevar a cabo los periféricos que necesita que se encuentran en su sistema para simular virtualmente.

Oshonsoft to simulate PIC18 load program

Figura 5: Herramientas e instrumentos periféricos que se proporcionan

6. Opciones le permiten ajustar los periféricos, diseño de IDE, y el microcontrolador para cumplir con la especificación de las piezas de hardware que se utilizará.

Oshonsoft to simulate PIC18 load program

Figura 6: Cambiar la configuración de los periféricos, IDE y otros regímenes

Ejemplo
Uso de PIC18F Oshonsoft IDE Simulator, un programa a la luz de un LED en PORTD, 0 cuando una lógica 1 se detecta en el PORTE, 1.

Oshonsoft to simulate PIC18 load program

Figura 7: Ejemplo para detectar una lógica 1



Si le gusto el articulo visite a uno de nuestros patrocinadores para mantenimiento del Blog
dando click en las Letras subrayadas con doble raya y de color azul, dentro del texto del artículo

lunes, 6 de junio de 2011

Microntroladores. Configurando los osciladores

pic microcontroller ic

Algunas funciones, tales como ADC, contador de tiempo, la interrupción, I2C, SPI, USB, CAN y la serie se deben a que el oscilador se establece por primera vez, como la configuración de estas funciones depende de la frecuencia del oscilador.
Hay dos modos de configuración de oscilador: Primaria oscilador y el oscilador secundario.
La frecuencia que el PIC está oscilando generalmente se equivoca al tomar el oscilador de cristal directamente. En cambio, la frecuencia debe ser la frecuencia medida en el CPU o periféricos después de que el multiplexor.
Pasos en la creación de oscilador
1. Seleccione la frecuencia que desee para ejecutar el PIC. En Baja frecuencia se da más de ahorro de energía, mientras que la mayor frecuencia se da un mejor rendimiento.
2. Si la comunicación serial se utiliza, revise  la mejor frecuencia para que usted elija para reducir al mínimo el error de velocidad de transmisión. Esto reducirá los rangos de frecuencias que puede elegir.
3. Para mayor precisión, el oscilador de cristal externo debe ser utilizado.
4. El oscilador de cristal externo es elegido por la selección de la mejor combinación que se puede encontrar a través de la configuración de PLLDIV y CPUDIV.
5. El puerto USB por lo general requiere de 48MHz. Por lo tanto, este es proporcionado por dividir la frecuencia de 96MHz el PLL por 2 o 48MHz ,se pueden suministrar directamente a través del oscilador de cristal. También se puede proporcionar al dividir el reloj principal por 4. registros adicionales que tiene que ser configurado son USBDIV, FSEN y FSOC3: FSOC0
 
6. Utilice PLLDIV y CPUDIV con HSPLL, ECPLL, XTPLL, ECPIO o XT, CE SA y ECIO para llegar a la frecuencia prevista lo más cerca posible.
7. Un simple código alternar LED se utiliza para verificar la frecuencia de la CPU.
Ejemplos de uso de compiladores diferentes

1. MCC18
Información de las definiciones de los registros del oscilador se pueden encontrar en los archivos de cabecera PIC o directamente en MPLAB.
pic chip
Configuración MCC18 oscilador
Esta configuración utiliza oscilador de cristal externo directamente.
Muestra LED alternar programa basado en MCC18
pic programming
LED Programa de Conmutación
2. HiTech C
Información de las definiciones de los registros del oscilador se pueden encontrar en los archivos de cabecera de CFP.

pic ic
Hi Tech Configuración C oscilador

La misma configuración de ajuste como se muestra usando MCC18
Muestra LED alternar programa basado en HiTech C
pic chip programming

Ejemplo de Programa Basado en HiTech C
Conclusión
Marco configuración de oscilador de cualquier microcontrolador es muy importante para asegurar que nuestros programas que se ejecutan correctamente. Aquí, PIC18F4550 es elegido como ejemplo, pero la configuración de la mayoría de los microcontroladores son los mismos.
Fuente:



Si le gusto el articulo visite a uno de nuestros patrocinadores para mantenimiento del Blog
dando click en las Letras subrayadas con doble raya y de color azul, dentro del texto del artículo

domingo, 5 de junio de 2011

¿Sabe usted la diferencia entre un archivo de paginación (archivo de intercambio) y un archivo de volcado de memoria?

Se trata de un archivo dinámico que el sistema operativo, utiliza para almacenar datos cuando la cantidad de memoria física, se supera con los programas y los datos que los programas que utiliza.

Supongamos que tiene 256 megas de RAM, de tu computador. Ahora bien, si usted abre su correo electrónico, un procesador de textos y navegador de un computador, entonces usted simplemente funciona junto con normalidad. Digamos que tiene una hoja de cálculo y tien un peso de veinticinco megas de tamaño, al abrir el programa de la hoja de cálculo, y a continuación el archivo  va a aumentar de tamaño a casi 100 Meg.

Con todos los programas, datos y archivos del sistema operativo, que acaba de superar el máximo de memoria física, y el ordenador o se bloquee, o se congele. ¿Cómo solucionar este dilema?

Una forma es utilizar un archivo para almacenar los programas de inactividad y los datos, un archivo llamado pagefile.sys. Ahora el sistema operativo, utilizará el archivo de intercambio. Se llevará a cualquier programa de inactividad, y los datos de ese programa, los coloca en el archivo de intercambio, hasta que se active el programa de nuevo, que es cuando se pasa de un programa a otro.

Así que usted tiene su hoja de cálculo abierta y están trabajando a lo largo, a continuación, usted decide que no dispone de suficiente información. Usted necesita preguntar a un compañero de trabajo para obtener más información, al hacer clic en su programa de correo electrónico y tendrá que esperar, y esperar. Lo que ocurre es que el sistema operativo, esta ocupado con los datos del programa de intercambio de la hoja de cálculo, y los datos para el programa de correo electrónico y más datos. Este es uno de los respaldos sorteados por un computador, con el mínimo recomendado de memoria instalada. La única manera de evitar esto, es para aumentar la memoria física del equipo. Cuando un número suficiente de los datos de hoja de cálculo se ha movido, de la memoria física para el archivo de intercambio, entonces se trae de vuelta los datos de correo electrónico. A continuación, puede enviar su correo electrónico. Su otra opción en un caso como el presente, es cerrar todos los programas, a continuación, abra el programa de hoja de cálculo. Incluso entonces, puede tener que cambiar partes de los datos de la hoja de cálculo, por lo que es un proceso lento para completar una tarea cuando la memoria física es baja.

Sin embargo en un sistema que tiene memoria suficiente o excesiva  el archivo de intercambio (odel archivo de paginación) puede ser tan grande, que se hace pesado y tarda mucho tiempo para cargar y descargar grandes cantidades de datos(vera la led del disco duro iluminada, y casi no se nota parpadear).

Microsoft recomienda un archivo de intercambio (o archivo de paginación) para  el tamaño de la memoria física, más 1,5 veces esa cantidad. Así que si tienes un ordenador con 512 de memoria, que Mega archivo de paginación sería 512 + 768 al total de 1280 Meg.

Esto está bien, pero hay que tener en cuenta a alguien con una computadora más nueva con la memoria mínima. Usted diría que el archivo de intercambio debe ser de 2 + 3 giga de la memoria, haciendo que el archivo de intercambio de cinco giga. Este es un archivo muy grande, y Microsoft no recomienda un archivo de intercambio más grande de los 2 giga, y usted tiene todo listo con la memoria física por sí sola. Entonces, ¿qué puede hacer usted? Bien solo hay  una cosa que podría hace, dividir el archivo de intercambio para arriba, que es hacer tres archivos de intercambio, dos 2 giga y un uno de 1 giga.

 

Ahora usted tiene un problema. El problema que es el archivo de intercambio, debe tener un nombre seguro: pagefile.sys, este es un archivo de sistema que se encuentra en la raíz de la unidad, y se oculta (si usted sabe cómo cambiar atributos de archivo, se puede ver el archivo). Además, sólo puede haber un archivo actual con este nombre, en cualquier momento en la raíz de la unidad, no se puede dar un nombre al archivo, tales como: pagefile2.sys, esto no funcionará porque el sistema operativo tiene el nombre pagefile.sys escrito en el código.

Así que para evitar este problema tiene dos opciones:

La primera opción hará lenta su computadora a una pre-verbal rastreo - Hacer un archivo de intercambio de 5 gigas y colocarlo en la unidad C:. Esta es la forma, en que se hace cuando se instala el sistema operativo, principalmente porque el programa de instalación tiene la norma escrita en el código, y nove por los demás volúmenes por lo que tiene este pagefile.sys gigantesco, grabado en la unidad C: y cuando el sistema operativo tiene que intercambiar algunos datos es muy lenta.

La segunda opción, requiere que haya más de un volumen en el disco duro. Eso es lo que tiene otras unidades visible en Mi PC, una unidad D: y, posiblemente,  unidad E, a: aún necesitará una mayor unidad: F:

¿Por qué tres unidades?

Bueno, no, pero si quieres que su computadora sea lo más rápida posible (con las unidades nuevas que vienen en línea que puede ser una cosa del pasado, sino que no están aquí todavía), para hacer lo que se desea eliminar el pagefile.sys, de la unidad del sistema operativo donde está instalado. Así que con un 5 giga  de intercambio, lo ideal sería necesitan 3 unidades para  dividir el pagefile.sys.

Tales como:

D: – 2 gig pagefile.sys

E – 2 gig pagefile.sys

F: – un gig pagefile.sys

Esta es la forma ideal para administrar  un archivo de intercambio de gran tamaño. O usted puede ir con dos archivos de intercambio, de 2 gig cada uno y sólo tiene que tener un volumen más, para colocar el pagefile.sys en D: si usted opta por tener el pagefile.sys, por primera vez en la unidad C:, esto no cumplirá con los criterios de Microsoft de la memoria física, más 1,5 cinco veces la memoria física, pero no funciona, he utilizado este método en los servidores en el pasado.

Así que para obtener el mejor rendimiento de su equipo, el archivo de intercambio debe ser del tamaño adecuado, y se debe encontrar en una unidad o unidades, que no sea la unidad C:. Para obtener más información sobre cómo cambiar el archivo de intercambio verla memoria virtual en esta página,

 

Memoria de archivo de descarga:

Cuando se carga de Microsoft Windows el sistema operativo a partir de Windows 3.1, el programa de instalación carga una opción para la depuración y el aislamiento de error por parte de Microsoft. Para obtener la información necesaria cuando 'Stop', se produjo un error de un procedimiento que está escrito en el código del sistema operativo quede escrito en el disco de la memoria física. Esto se conoce como un archivo de volcado.

Nota: Este archivo de volcado sólo se escribirá si el sistema operativo, completa las cargas antes del error. Si el SO es Blue detección, antes que se cargue el sistema operativo del archivo de volcado no se puede escribir.

Ahora bien, esto está muy bueno para los desarrolladores y probadores, ¿pero es bueno para usted?

Si y esta es una muy grande, ¿si?, usted tiene un software y / o conflicto de hardware o fallo que hacer que su computador, se apague, y  usted quiere saber cómo arreglarlo, ¿correcto?. Pero  si el error es intermitente, o sólo se produce cuando se tiene un determinado programa en ejecución?

¿Qué puede hacer?. Puede configurar el archivo de volcado, para ejecutarse cuando el sistema operativo detecta el error, y tiene el archivo de hecho antes de que el sistema operativo reinicie el equipo.

Ahora bien, este viene con un par de granos de sal: Sólo Microsoft o los vendedores de Microsoft Certified, tienen el programa para leer el archivo de volcado, que es el formato de los datos en bruto, es decir, los bytes que componen la memoria en el momento del error, o conflicto que causó el sistema operativo para reiniciar.

Debido a que este es un volcado de datos, en bruto de la memoria, es la memoria física completa y la memoria en la caché del procesador, va a ser bastante grandes (especialmente si tiene más de un giga de la memoria), o si se establece que puede tener un vertedero de la memoria del núcleo solo (esta es la memoria utilizada por el procesador, y la memoria caché sólo), entonces será un máximo de cinco megas.

Otra cosa a tener en cuenta es, con un volcado de memoria completa es si el vertedero se puede completar en la unidad que ha seleccionado para el archivo de volcado, por ejemplo, si selecciona la opción predeterminada, será la unidad de sistema operativo (normalmente C:) y que no sabía que el archivo sería de dos giga en tamaño, cuando se hizo, y no pensaba en el equipo, que tiene un problema, por lo que no han asignado el espacio adicional para el archivo, y para colmo la unidad C: sólo tiene un giga de espacio libre. Ahora el problema ha aumentado proporcionalmente, hasta un punto donde no se puede mantener el equipo, para que se  ejecute el tiempo suficiente para limpiar el espacio suficiente para el archivo de volcado.

Si tiene problemas con la obtención de suficiente espacio para crear el archivo de volcado, tome en cuenta  la escritura a otra unidad, en el "archivo de descarga", el cuadro se puede especificar una unidad diferente y un nombre para el archivo de volcado, si la casilla de verificación "Sobrescribir los existentes archivo”, se comprueba que  va a escribir cualquier archivo de volcado anterior, si desea una historia (a veces el apoyo de un proveedor de software le gustaría tener más de un archivo) y luego desmarque esta casilla, y el proceso va a escribir los ficheros de volcado de memoria, tales como: la memoria. DMP, MEMORY1.DMP, MEMORY2.DMP. Esto es útil para una historia de un problema. Sólo asegúrese de que la unidad que está escrito, tiene espacio suficiente para todos estos archivos. Y Microsoft no enseña esto en sus programas de certificación.

Así que cuando la configuración de su archivo de volcado, si opta por hacer a fin de considerar las ramificaciones del tamaño del archivo de dos maneras: El tiempo necesario para escribir en el disco y el espacio necesario para contener el archivo cuando se escribe. (Ver esta página acerca dela optimización)

Los diferentes tipos de archivos de descarga:

Usted puede tener:

  • (Ninguno)
  • volcado de memoria pequeña (64 Kb)
  • Volcado de memoria del kernel
  • volcado de memoria completa

Tenga en cuenta  si selecciona ninguno, se obtiene ninguno, pero hay una compensación - que utiliza menos recursos del sistema.

Si selecciona un "volcado de memoria pequeña (64 KB) o" volcado de memoria del núcleo ", entonces el vendedor o Microsoft no puede ser capaces  de aislar el problema. Si usted tiene un problema que desea pagar a Microsoft para diagnosticar y darle una solución para que se solicite un "volcado de memoria completa", y te cobran por hora al analizar el archivo, a menos que tenga un contrato de mantenimiento que incluye la depuración de un archivo de volcado de memoria. La mayoría de las grandes empresas, tienen este tipo de contacto. No vale la pena para una persona o un negocio pequeño, como para tener este tipo de contrato, ya que se ejecuta en cinco o seis cifras por año.

Para las operaciones normales que pueden salirse con la suya, sin tener un archivo de volcado. A menos que sea un servidor que la mayoría de sistemas de instalación, ya que ninguno, y eliminar las casillas de verificación de la 'Escribe un evento del registro del sistema" y Enviar una alerta administrativa. La razón es que al menos que esté haciendo el desarrollo o la depuración de software, el usuario normal no se le  colgará un sistema con suficiente frecuencia para justificar pensar de que esta opción se suma a los recursos del sistema.

Si usted tiene un problema siempre se puede desactivar la opción de archivo de volcado, sobre y obtener el archivo de volcado, sólo asegurar su unidad tiene el espacio para el archivo. Algunos vendedores le solicite el archivo si tiene un problema con su software y abrir un ticket de soporte.

Mi consejo? Apágalo, si usted tiene un problema a continuación, seleccione el tipo de archivo del soporte técnico está pidiendo.

Read more:http://www.diy-computer-repair.com/paging-file-or-Memory-dump-file.html#ixzz1OQHiqTPQ