8 votos

¿Cómo funcionan las señales Active High y Active Low en los sistemas embebidos?

Se trata de cómo funcionan los microcontroladores en general..

La programación que hacemos es convertida en 1's y 0's por el compilador y estos códigos comprensibles por la máquina se cargan en el microcontrolador..

¿Cómo responde el microcontrolador a esto.. Me refiero a si estos 1's y 0's son convertidos en el correspondiente voltaje lógico (5v y 0) por el DAC? Si es así, ¿cómo decide este pequeño pedazo de silicio qué hacer con estas diversas combinaciones de 5v y 0v?

Tengo entendido que cada CI está compuesto por puertas lógicas y estas puertas están compuestas por transistores.. Entonces, ¿cómo responden estos transistores a varias combinaciones de 5v y 0v?

¿Qué les hace buscar estas lógicas .. Me refiero a cómo controlan estas instrucciones cuando están encendidas.

Así que ciertamente tiene que haber un sistema operativo cargado en la mcu que le dice que procese y cómo procesar estas instrucciones, ¿no?

Lo siguiente es.. considerar un temporizador.. es simplemente un registro que se incrementa en uno después de cada ciclo de reloj.. ¿No es el sistema operativo de nuevo que instruye a la mcu para aumentar después de cada reloj? ¿Estoy en lo cierto? En ese caso, ¿en qué lenguaje se escribe todo el código de un sistema operativo?

Puedo continuar mi trabajo con la programación de la mcu para diferentes tareas, pero hoy estaba interesado en saber cómo mi código es entendido por esta máquina..

Siento que mi pregunta sea larga de leer.. por favor ayúdame a aprender estas cosas básicas..

Gracias de antemano

0 votos

Supongo que la gente tendrá este tipo de preguntas durante el inicio de su carrera..

0 votos

Mensaje borrado se sintió mal

6voto

Blair Conrad Puntos 56195

Conseguir el libro "Código: El lenguaje oculto del hardware y el software informático", de Charles Petzold . Es impresionante, fácil de leer, y responderá a muchas de esas preguntas.

Si no puede permitirse el libro de Petzold, consulte "Cómo funcionan los ordenadores" de Roger Young . Abarca gran parte de los mismos temas, y las versiones HTML y PDF son gratuitas.

0 votos

También un buen libro sería The Elements of Computing systems.

6voto

SQLMenace Puntos 68670

No es necesario utilizar un DAC. Los voltajes se utilizan para representar 1 y 0 por la convención de que todo lo que esté por debajo de 0,8V (alias "bajo") es un cero, y todo lo que esté por encima de 2,4V (alias "alto") es un uno. Es relativamente sencillo construir circuitos que ejecuten la lógica con estos voltajes representativos.

Por ejemplo, un circuito puede dar salida a algo en el rango de 2,4V a 5V para representar "1" si cualquiera de las entradas es superior a 2,4V, o algo inferior a 0,8V en caso contrario, y tienes una puerta OR. Si requiere ambos entradas que representan 1 para dar salida a 2,4V, tienes una puerta AND. Un inversor sólo emite un alto cuando la entrada es baja, y viceversa. Se pueden construir puertas sencillas como éstas con muy pocos transistores, y realizar una lógica booleana combinatoria. Utilizando grupos de bits para representar números, puedes incluso construir circuitos para sumar números con lógica combinatoria, sin necesidad de software.

Una vez que se trabaja con puertas, se pueden construir flip flops, y a partir de ellos, registros y contadores. Los flip-flops te permiten almacenar 1's y 0's de un punto en el tiempo y utilizarlos más tarde. Los registros y contadores son circuitos que realizan funciones sobre grupos de bits que representan números. Un registro mantiene un número hasta que se carga un nuevo número en él. Un contador es como un registro, pero tiene otra entrada que hace que el número almacenado se incremente. (También es posible el decremento). Esto te sitúa en el ámbito de las máquinas de estado y la lógica secuencial, aún así, no se requiere software.

Los sistemas de memoria son una forma de almacenar un gran número de bits. A nivel de componentes, algunas memorias se construyen como una enorme colección de flip-flops, pero lo más habitual es que exista otra tecnología (DRAM) que, aunque no es exactamente un flip flop, hace lo mismo.

Como un paso más, puedes construir un sistema de lógica secuencial y combinatoria que pueda realizar operaciones en función de los bits almacenados en un sistema de memoria, incluyendo la escritura de nuevos valores en ese sistema de memoria. Ahora has llegado al nivel del procesador, y todo lo que hace el procesador, es sólo hardware que lleva a cabo un montón de tareas simples. (a pesar de los núcleos microprogramados). En este punto, las combinaciones particulares de bits que pones en el sistema de memoria pueden considerarse software de lenguaje de máquina.

0 votos

Ahora he entendido que los transistores son la base sobre la que se crean los procesadores, es decir, con una puerta como nand, podemos crear flipflops, registros, contadores, alu y todos estos juntos hacen el sistema de computación. La entrada de los transistores puede ser alta o baja (más de 2,4v o menos de 0,8v). Mi pregunta es, ¿cuál es el dispositivo que interpreta el 1 y el 0 del Compilador como lógica correspondiente a estos transistores si no se utiliza DAC?

0 votos

@Vicky Rao - Creo que lo que te confunde es que estás mezclando niveles de abstracción. No es necesario convertir la salida del compilador en niveles lógicos para los transistores, porque los 1 y 0 del software, y los 1 y 0 del hardware, no son más que vistas diferentes de la misma realidad física. Lo que en un nivel parece millones de transistores cambiando de estado, en otro nivel parece un procesador ejecutando software.

5voto

hromanko Puntos 548

Consideremos un BJT NPN; un transistor. Uno de los primeros descubiertos.

Ahora lo conectas de tal manera que el colector está conectado a una entrada lógica variable, y el emisor está conectado a otra entrada lógica, con una resistencia en serie. Luego, una resistencia del emisor a tierra.

               logic
                 |
         10k   |/
logic --/\/\/--|  NPN
               |>
                 +-- output
                 |
                 /
                 \ 10k
                 /
                 |
                ---
                 -

Acabas de construir una puerta AND. La salida sólo es alta cuando ambas entradas son altas. No es perfecta ni mucho menos, ya que depende de la entrada al colector, y porque no se abre en abanico, pero te da una idea de cómo se pueden utilizar los transistores para calcular una función.

Entonces, también puedes construir una puerta NOT;

                5V
                 |
                 /
                 \  10k
                 /
                 +-- output
                 |
         10k   |/
logic --/\/\/--|  NPN
               |>
                 |
                ---
                 -

Añadiendo esto a la salida de la puerta AND que acabamos de construir tenemos una puerta NAND, y ya sabes que con una puerta NAND puedes construir cualquier forma de lógica. Además, tiene la ventaja de que la señal está amortiguada, lo que aumenta la capacidad de abanico y de encadenamiento.

Los procesadores reales rara vez utilizan BJT, sino lógica CMOS, pero se aplican los mismos principios.

0 votos

Podrías utilizar FETs en lugar de NPNs :)

0 votos

Por eso he añadido esto: "Los procesadores reales rara vez utilizan BJT, sino lógica CMOS, pero se aplican los mismos principios". Los n-JFET y los n-MOSFET probablemente funcionarían tan bien como otras formas más estóricas como las válvulas.

0 votos

También puedes usar un PNP para hacer un NOT de la misma manera que el AND con el NPN

3voto

Avner Puntos 2065

Tal vez debas buscar algunas referencias de sistemas digitales o investigar cosas como el VHDL. Una MCU se diseña básicamente con bloques de construcción, que pueden ser una variedad de puertas lógicas y bloques de construcción (más pequeños). En última instancia, todo se reduce a puertas lógicas que, efectivamente, están compuestas por transistores. Una típica MCU simple como un PIC18F o algo así no ejecuta un sistema operativo. El programa que cargas en él es un montón de instrucciones de máquina que el PIC ejecuta continuamente. Todo el proceso se realiza por hardware.

Un procesador general suele tener una ALU (que calcula el resultado de una determinada instrucción) y otros bloques a su alrededor que cargan las instrucciones, gestionan la pila y la memoria. El procesador tiene algunos registros para trabajar con él, principalmente para cargar las entradas y almacenar los resultados. Puede que no veas mucho de esto en C o en otro lenguaje, pero sí mucho en ensamblador.

La ALU maneja instrucciones con determinados códigos de operación y entradas. Por ejemplo, una instrucción típica podría ser ADD 12 1 , lo que significa 12+1 = 13. El resultado se almacena en un registro del propio procesador.

Dependiendo de la arquitectura, la ALU tiene, por ejemplo, 8 bits de ancho. Un sumador simple de 8 bits puede estar hecho de 8x sumadores de 1 bit atados juntos (usando bloques para construir un bloque más grande). Un sumador de 1 bit puede ser fácilmente escrito en puertas lógicas usando álgebra booleana. Escribir manualmente un sumador completo de 8 bits utilizando sólo puertas lógicas sería una cantidad de trabajo insana. Es como escribir un programa sin poder utilizar ninguna función o subrutina.

Para que los sistemas digitales funcionen correctamente, la mayoría de los bloques están diseñados a base de relojes. Todo sistema digital necesita un cierto tiempo para alcanzar su estado final. Esto se debe a los retrasos de conmutación en los transistores y a los estados que influyen en otros estados. La señal de reloj es algo con lo que deberías estar familiarizado, la velocidad a la que funciona el procesador. Un temporizador podría ser un dispositivo muy simple que tiene un pequeño bloque sumador y se incrementa en 1 cada vez que recibe una señal de reloj.

2voto

JProgrammer Puntos 1345

No es necesario saber estas cosas a no ser que vayas a diseñar tú mismo las CPUs, pero todo se reduce a un enorme estado-máquina implementado en hardware.

El mayor problema de este tipo de preguntas es que la respuesta es enorme y ocupa varios años de cursos universitarios, por lo que cualquier respuesta que se obtenga aquí sólo va a arañar la superficie.

Si realmente quieres saber lo que entra en una CPU echa un vistazo al código fuente vhdl/verilog en: http://opencores.org/projects

Aprender vhdl y verilog va a ser una gran tarea por sí sola, así que te espera una larga lectura:)

0 votos

"enorme máquina escénica" - eso suena como una producción de Broadway.

0 votos

Afortunadamente, las respuestas que estas personas habían dado no me hacen rascar la superficie como usted mencionó, en su lugar lo hizo claro como el cristal.. De todos modos, gracias amigo

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X