[Serie] ¡Después de más de diez años de desarrollo electrónico, miraré hacia atrás y veré a través de la MCU con todos!

1f4dd5b556310bcf8c4550191d65f45a.jpeg

"Después de más de diez años de desarrollo de microcomputadoras de un solo chip, miro las microcomputadoras de un solo chip de un lado a otro desde mi altura actual, lo que se puede decir que no tiene remedio".

Lo que Zhennan quiere presentar a continuación es el "modelo de arquitectura de microcomputadora de un solo chip", que se separa de cualquier tipo específico de chip de microcomputadora de un solo chip ( 我感觉我要成仙), y tiene una fuerte universalidad. Casi todos los microcontroladores, o ARM, DSP y procesadores de gama alta siguen este modelo. En otras palabras, se requieren varios elementos principales en este modelo.

Ver a través de MCU

modelo de CPU

La CPU, es decir, la unidad central de procesamiento, "es el núcleo del sistema informático, ocupa la posición suprema y tiene derechos absolutos de gestión y control", como se muestra en la Figura 1.6.

208ac1544ba620a943931aafb0326bf2.png

Figura 1.6 La CPU ocupa la posición central en el sistema informático

Las tareas principales de la CPU son 执行指令, por ejemplo, calcular la suma de dos números, leer y escribir registros, operar el bus para leer y escribir en la memoria, etc. 每一个CPU都有自己事先设计好的一套指令集, o sistema de instrucciones, cada instrucción completa una operación y función específica. Pero los conjuntos de instrucciones no existen en el vacío 每条指令必然都对应着一套电路. Cuando la CPU ejecuta una instrucción, el circuito correspondiente está realmente funcionando. Por lo tanto, si el rendimiento de una CPU es excelente depende en parte de si el conjunto de instrucciones es rico, si la función de instrucción es potente y si el circuito de instrucción es potente y eficiente.

En términos de complejidad, los conjuntos de instrucciones de la CPU se dividen principalmente en dos tipos: 复杂指令集(CISC)与精简指令集(RISC). La mayoría de las CPU integradas son RISC, lo que se refleja en la cantidad de instrucciones: menos instrucciones, menos circuitos correspondientes, lo que puede reducir en gran medida la dificultad del diseño de la CPU y reducir el consumo de energía; por un lado, se manifiesta en el nivel de función del instrucción: la instrucción en sí generalmente no es adecuada para implementar funciones demasiado complejas, lo que hace que la eficiencia de ejecución de la instrucción sea relativamente alta. CISC es diferente (x86 es el conjunto de instrucciones CISC más clásico), tiene una gran cantidad de instrucciones (hay unas 300 como mínimo, e incluso más de 500, mientras que RISC no suele pasar de 100), y las funciones de las instrucciones son relativamente poderosos. Esto significa que la CPU que utiliza el conjunto de instrucciones CISC es muy difícil en el diseño de circuitos y el ciclo de desarrollo es relativamente largo. Pero está fuera del alcance de RISC en términos de función y rendimiento (el trabajo realizado por una instrucción CISC puede requerir varias instrucciones RISC para completarse). "Es por eso que las CPU de instrucción CISC se utilizan principalmente en sistemas informáticos como grandes servidores y estaciones de trabajo".

b5c372458d65bbeb9c01053c5e99704a.jpeg

De hecho, CISC y RISC solo se producen para satisfacer necesidades diferentes, no se oponen entre sí, sino para promoverse y aprender unos de otros. Se han comenzado a agregar algunas instrucciones RISC a CISC, y también han aparecido algunas CPU con instrucciones CISC en el campo incorporado. La tendencia de desarrollo futuro será un nuevo tipo de CPU que combine conjuntos de instrucciones duales CISC y RISC.

Lo anterior es una breve introducción de Zhennan al conjunto de instrucciones de la CPU. De hecho, existen algunas tecnologías clave estrechamente relacionadas con el conjunto de instrucciones, como canalización, búsqueda previa de instrucciones, ejecución fuera de orden, etc., que hacen que el rendimiento de la CPU mejoró más (Zhennan trabajó en Intel China Research Institute en los primeros días, principalmente investigando esta tecnología, por lo que se conmovió profundamente). Sin embargo, Zhennan no lo explicará aquí y los lectores interesados ​​pueden estudiarlo por sí mismos.

Hasta ahora, muchas personas todavía me preguntan sobre los principios básicos de la computadora, la arquitectura del sistema, la composición del hardware, etc. No solo respondo, sino que también les pregunto: "Estás tan interesado en los conceptos básicos de la computadora, ¿por qué no aprenderlo al principio?" ¿Qué pasa con las especializaciones en computación?" De hecho, entiendo que muchas personas están un poco ciegas cuando solicitan el examen de ingreso a la universidad.

¿Cuál es la esencia de la orden? ¿Es a=0 en lenguaje C? es MOV en lenguaje ensamblador? No, las declaraciones que ve son solo una expresión de instrucciones. "La instrucción es esencialmente una secuencia binaria con una cierta longitud (como 0101111010101010 o 1011010111011011, etc.)". Después de que la CPU recibe la instrucción , "primero, el circuito de decodificación de instrucciones separa el código de operación y el operando", como se muestra en Figura 1.7 (Tome la instrucción MOV de 51 como ejemplo para ilustración).

0669efc247808253143ed8643e65a307.png

Figura 1.7 Decodificación de códigos de instrucción

01110100 es la instrucción 74H, y su función es transferir el siguiente operando (00010000, es decir, 10H) al registro A (acumulador en la CPU 51). Si esta instrucción se expresa en lenguaje ensamblador, es MOV A, #10H. Después de que el ensamblador la traduce, es el código de instrucción de 16 bits de la figura anterior. "La propuesta del lenguaje ensamblador es solo para encapsular la mayoría Instrucciones binarias de CPU primitivas Use algunas etiquetas fáciles de recordar, como MOV, ADD, INC, etc. ejecución."

Zhennan a menudo imagina cómo las personas ingresaban instrucciones a la CPU en los primeros días de la CPU: "cinta de papel perforada", como se muestra en la Figura 1.8.

07831e7984c626a5478639822a8b0912.png

Figura 1.8 Las personas usan cinta de papel para perforar agujeros para ingresar instrucciones a la CPU

Antes de la generación del lenguaje ensamblador, la preparación de las instrucciones del programa se hacía completamente de forma manual. 人们将编好的若干条指令通过纸带打孔方式输入到CPU中,让它可以依次执行,最终完成整个计算任务(Los 'agujeros' y los 'sólidos' en la cinta representan 1 y 0). En cierto sentido, la "cinta de papel" es el lenguaje de programación de primera generación y el "lenguaje ensamblador" es el lenguaje de programación de segunda generación. Todos son lenguajes más cercanos a las instrucciones de la CPU, por lo que los llamamos "lenguajes de bajo nivel". Finalmente, se produjo el lenguaje C, que está muy cerca del lenguaje natural (inglés) que usamos los humanos todos los días, lo que significa que está lejos de las instrucciones de la CPU. Requiere un compilador especial para preprocesamiento, análisis semántico, compilación, etc. para generar código intermedio (ensamblado), y luego más ensamblaje, conexión, etc. para obtener el código de instrucción que puede ejecutar la CPU. entonces,C语言被称为“高级语言”。

En resumen, 我们可以认为CPU就是一个取指令执行的机器esta es la principal función y trabajo de la CPU. Pero la arquitectura de la CPU no es tan simple, 如何协调取指令的过程,防止出错?指令存储在哪里?CPU如何从存储器中取出指令?debemos tener una comprensión profunda de estos problemas, de lo contrario, el lenguaje C y las microcomputadoras de un solo chip no pueden ser realmente competentes.

modelo de memoria

La memoria es crucial para todo el sistema informático: "Instrucciones de programa para la ejecución de la CPU, variables y datos durante la ejecución del programa..." , todos utilizan la memoria como soporte. Por lo tanto, en la aplicación y el desarrollo reales, la gente siempre espera que la capacidad de RAM y ROM del chip de microcomputadora de un solo chip pueda ser lo más grande posible. De esta forma, se pueden almacenar más instrucciones de código y se pueden ejecutar programas más grandes y complejos. Además, la velocidad de lectura y escritura de la propia memoria se ha convertido en uno de los mayores cuellos de botella del rendimiento de la CPU. Una descripción más vívida se muestra en la Figura 1.9.

664e439d9dbf194d87f842f3af6e848d.png

Figura 1.9 La CPU obtiene instrucciones de la memoria y almacena variables y datos

ROM, es decir, memoria de solo lectura, “es decir, el contenido almacenado en ella no puede ser modificado directamente por la CPU ” . (Por lo general, solo se puede usar un programador dedicado para modificar los datos en él, pero ahora algunos chips de microcomputadora de un solo chip nuevos ya pueden modificar los datos de la ROM durante la operación de la CPU, esta tecnología se llama "IAP") Por lo tanto, la ROM generalmente se usa para solidificar y almacenar códigos de instrucciones del programa y algunos datos que no necesitan ser modificados, como fuentes, fuentes, constantes, etc.

A diferencia de la ROM, la RAM se puede leer y escribir, por lo que se denomina memoria aleatoria de lectura y escritura. Durante el proceso de ejecución de la CPU, cualquier dato en la RAM se puede leer, escribir y modificar. Esta es la base física para la implementación subyacente de declaraciones de asignación en lenguaje C, como "int a; a=0", lo que significa escribir un valor de 0 en una determinada unidad de almacenamiento en RAM. Pero si es "código int a; a=0", se informará un error al compilar. (La palabra clave code se usa en el lenguaje C de la microcomputadora de un solo chip 51 para indicar que la ubicación de la "variable" está en la ROM. La misma definición usa const en el ARM). Además, la velocidad de lectura y escritura de La RAM es mucho más rápida que la ROM (este 所以CPU在运行程序的时候,通常都会把一些代码指令拷贝到RAM中来,尤其是那些会被频繁执行的部分es el segmento de texto en lenguaje C, es decir, el segmento de código). Pero la RAM suele ser mucho más cara que la ROM (debe tener una percepción macroscópica de este punto, un disco de 16G U cuesta solo 10 yuanes, pero las tarjetas de memoria de la computadora cuestan cientos), razón por la cual los fabricantes usan chips de microcomputadora de un solo chip. la proporción de RAM es muy tacaña y la proporción de ROM es ligeramente generosa.

Para explicar mejor el siguiente contenido, todos deben tener claro la memoria, que también es de sentido común: está compuesta por muchas unidades de almacenamiento con direcciones consecutivas, como se muestra en la Figura 1.10.

c2a7c0c249724a80ff00eef3598c5fc8.png

Figura 1.10 La memoria está compuesta por unidades de almacenamiento con direcciones consecutivas

En términos generales, "la memoria es un contenedor de instrucciones y datos, y es interdependiente con la CPU" , lo que permite que todo el sistema informático funcione con normalidad. En este momento, surge una pregunta extremadamente importante: "¿Cómo obtiene la CPU con precisión instrucciones y datos de la memoria, y cómo escribe datos en la memoria?" Esta pregunta es fácil de decir, pero es una tecnología clave extendida: "autobús"!

modelo de autobús

Si se considera a la CPU como una "capital imperial" y a la memoria como una "Acrópolis", si quieren comunicarse entre sí, se deben construir caminos, y este camino puede continuar extendiéndose y conectando muchas ciudades en serie. . De esta manera, "es posible pasar entre dos ciudades. ¡Esta "carretera" es el autobús!", como se muestra en la Figura 1.11. (Estas "ciudades" conectadas son como los "periféricos de la CPU" de los que Zhennan hablará más adelante).

ed0c5e3a0cfc32a4bcee47d0ce6f554f.png

Figura 1.11 Modelo estructural del bus

Bueno, ahora existe este camino entre la CPU y la memoria. En este momento, si la CPU quiere leer un byte en la dirección addr en la memoria, ¿qué debe hacer? Este proceso se divide principalmente en tres pasos: (¿Pensó en "¿cuántos pasos hay para poner un elefante en un refrigerador?")

  1. La CPU primero le dice a la memoria la dirección para leer;

  2. Espere a que la memoria busque los datos en la dirección correspondiente;

  3. La CPU obtiene los datos.

be4c6a1ace305f56d8b8bb294f4b9d81.jpeg

Una ilustración más vívida se muestra en la Figura 1.12.

1486aa5750c0449236211648b4283460.png

Figura 1.12 El proceso principal de acceso a la memoria de la CPU

Si lo piensas bien, la realización de este proceso en realidad involucra varias cuestiones: CPU如何将地址给存储器? CPU如何知道存储器已将数据准备好? CPU又如何将数据取走?... En resumen, es principalmente la transmisión de direcciones y datos, así como la coordinación y control entre ellos. Para solucionar este problema, proponemos este modelo, ver Figura 1.13.

9ebf30e1321ada1c6e30edbba1294654.png

Figura 1.13 Modelo de bus entre CPU y memoria (leer datos)

El cableado que se ve en la imagen es el cable real que se usa para transmitir señales binarias (0 o 1). La CPU primero envía la dirección al bus de direcciones (obviamente, la cantidad de líneas de dirección determina el rango de espacio que la CPU puede direccionar) y luego establece la señal RD en 0 (RD suele ser 1), (la cantidad de líneas de datos determina el 告诉存储器地址已经给出,请准备好数据并将其输出到数据总线上rendimiento de datos de la CPU, que también es una medida del número de bits de la CPU, 51单片机是8位单片机,则它每次只能读到一个字节的数据,ARM是32位的,所以它可以一次性读取一个字). La CPU lee el bus de datos y luego establece la señal RD en 1, y se completa todo el proceso.

¿Cómo escribe la CPU datos en la memoria? De hecho, la razón es la misma, como se muestra en la Figura 1.14.

fd29fcf38fcb4b644fcdf481fd762f0c.png

Figura 1.14 Modelo de bus entre CPU y memoria (escribir datos)

Todavía es la CPU la que da la dirección primero, luego da los datos que se escribirán en el bus de datos y luego establece la señal WR en 0, diciéndole a la memoria que la dirección y los datos están listos, procéselos. Finalmente, establezca la señal WR en 1. En resumen, hay tres buses principales en la CPU: bus de direcciones, bus de datos y bus de control. Este modelo termina como se muestra en la Figura 1.15.

e984e54ed1ddc47868ee959577e44f7d.png

Figura 1.15 Modelo de bus entre CPU y memoria

Si dibujamos un diagrama esquemático del nivel de cada señal de bus que cambia con el tiempo durante el proceso de acceso a la CPU, se verá así, como se muestra en la Figura 1.16.

85c1d1702c9cba78eb2f3613f92444c7.png

Figura 1.16 Diagrama de temporización del funcionamiento del bus de la CPU

La figura anterior es el diagrama de temporización (Digrama de temporización) de la operación del bus de la CPU. Es la forma más intuitiva para describir protocolos de señal y temporización de interfaz. "Comprender el diagrama de tiempo es la base fundamental para que aprendamos la electrónica y la tecnología de un solo chip, y usemos el lenguaje C para escribir correctamente el controlador subyacente".

dfacd11bb3d7f4716e39c82d7e6bd8da.jpeg

modelo periférico

Ya sabemos cómo la CPU lee y escribe la memoria a través del bus. También sabemos que el ancho del bus de direcciones determina el espacio de direccionamiento de la CPU, y el ancho del bus de datos determina el número de bits de la CPU (el cantidad de datos que se pueden leer y escribir a la vez). El bus de control afecta la velocidad de acceso a la memoria hasta cierto punto (cuanto más corto sea el tiempo cuando WR y RD son 0, más rápida será la velocidad de acceso a la memoria y, por supuesto, la memoria). la velocidad debe mantenerse al día). Con la CPU y la memoria, y el bus que los conecta, eso es suficiente para hacer un sistema informático completo y funcional. "Podemos ponerle algunos algoritmos para que se ejecute, pero la microcomputadora de un solo chip (procesador integrado) no solo se usa para el cálculo, sino que su función principal es controlar" (así que la abreviatura en inglés de microcomputadora de un solo chip es MCU, que es decir, unidad de microcontrolador, unidad de microcontrol). IO es la interfaz de control más directa y comúnmente utilizada. Podemos configurarlo en 1 o borrarlo para que emita un nivel alto o bajo, para realizar el control de circuitos o mecanismos externos.

Explique la confusión de Zhennan desde un nivel más básico: "¿Cómo tiene el lenguaje C un impacto en el mundo físico?"

En la Figura 1.6, con la CPU como núcleo, además de la memoria (RAM y ROM), hay muchos controladores a su alrededor, como controladores IO, controladores de puerto serie, etc. Estos son los llamados "periféricos de la CPU". Los periféricos son en realidad algunos circuitos, que se utilizan para lograr una función específica. Estos circuitos deben ser controlados por la CPU, por lo que se reserva una interfaz especial (registro) en el diseño del circuito. La lectura y escritura de esta interfaz está en línea con el tiempo del bus de la CPU, por lo que puede conectarse directamente al bus de la CPU y coexistir con la memoria y otros periféricos (pero pertenecen a diferentes rangos de direcciones, y la CPU lee y escribe datos a estas direcciones (diferentes funciones del circuito). Vea la Figura 1.17 para una ilustración más vívida.

7d4dd61a836c7a2619a0ab55c6c9f704.png

Figura 1.17 Modelo estructural de periféricos de CPU

Obviamente, "Todo el espacio de direccionamiento de la CPU (su tamaño está determinado por el ancho del bus de direcciones) no está ocupado exclusivamente por la memoria. La memoria solo ocupa una cierta sección de ella, y otros espacios de direcciones se asignan a varios periféricos , y More puede reservarse para uso inactivo". Alguien puede preguntar: "Si este es el caso, entonces podemos conectar el circuito que hicimos al bus de la CPU para expandir los periféricos de la CPU". el chip de la CPU pasa el bus Cuando se abren los pines externos, podemos conectar nuestro propio circuito y dejar que la CPU acceda directamente al control, como conectar una pantalla LCD con una interfaz 8080. (Xdata de 51 y FMC de STM32 son ejemplos del núcleo de la CPU que abre el bus al mundo exterior, y más adelante verá algunos ejemplos de aplicaciones inteligentes del bus externo de la microcomputadora de un solo chip).

MCU se ejecuta

"Está bien, con la CPU, la memoria, el bus y los periféricos, los empaquetamos orgánicamente y luego sacamos las señales de cada periférico, bus y fuente de alimentación y las conectamos a tierra a través de los pines. Esta es una microcomputadora completa de un solo chip. Chip Espera, ¿parece que falta algo para hacer funcionar el microcontrolador? ¡Sí, hay un reloj!"

sistema de reloj

Si los mencionados anteriormente son solo la carcasa del chip de microcomputadora de un solo chip, entonces 时钟就是在其中流动的血液和跳动的脉搏. El reloj es crucial para el microcontrolador, es el incentivo de todo el sistema. 它是否稳定、是否精确、是否高速都直接影响了单片机中所有电路的运作, incluyendo CPU, bus, periféricos, etc. Un reloj es esencialmente una señal de onda cuadrada, como se muestra en la figura 1.18.

5bcf73e8a0a0ba9edfb84f27b7d8ec09.png

Figura 1.18 El reloj juega un papel vital en el microcontrolador

Algunas personas dicen: "Dado que la velocidad del reloj determina la velocidad de la microcomputadora de un solo chip, siempre que la frecuencia del reloj aumente tanto como sea posible, ¡se puede mejorar el rendimiento de la microcomputadora de un solo chip!" En principio, esto es cierto, pero debido a muchos factores, como las características de los materiales semiconductores, el proceso de fabricación del chip, etc., la frecuencia del reloj no se puede aumentar sin límite (una señal de reloj de frecuencia excesivamente alta hará que el circuito del chip único microcomputadora funcione de manera anormal, y el problema ocurre principalmente en la integridad de la señal). Vea la Figura 1.19 para una explicación de esto.

96e3f65a0b3b2f7eb7c0cc68ee2bfe5a.png

Figura 1.19 Una frecuencia de reloj demasiado alta comprometerá la integridad de la señal

Para decirlo más vívidamente, es como si 人的心跳不能太快, de lo contrario, la sangre hubiera muerto antes de que pudiera enviar oxígeno y nutrientes a varios tejidos. Al mismo tiempo, los vasos sanguíneos no pueden transportar una presión arterial y una velocidad de la sangre tan altas, lo que eventualmente conduce al trastorno de la función general del cuerpo humano. Por el contrario, el latido del corazón no puede ser demasiado lento, de lo contrario la sangre tampoco podrá completar el trabajo de transporte de suministros ( 单片机的时钟过慢可能无法满足我们的应用需求,所以实际应用过程中,选取一个合适的工作时钟是非常重要的).

Pero, de nuevo, muchas veces realmente esperamos que el microcontrolador funcione lo más rápido posible, como algunos algoritmos en tiempo real con muchos cálculos, adquisición de señales, grabación y reproducción de audio y video, etc. Por lo tanto, innumerables ingenieros y científicos están trabajando para mejorar el rendimiento del hardware, aumentar la frecuencia del reloj, mejorar el nivel de tecnología de procesamiento e incluso probar nuevos materiales semiconductores o mejorar la estructura del circuito. Pero a pesar de ello, la frecuencia del reloj seguirá teniendo un techo infranqueable. Y se encuentra que cuanto más rápido es el reloj, mayor es el consumo de energía cuando el circuito está funcionando. Estos dilemas y la búsqueda constante de alto rendimiento y bajo consumo de energía han llevado al desarrollo de chips de CPU en la dirección de multinúcleo (la frecuencia del reloj ya no aumenta, pero el rendimiento general mejora al aumentar la cantidad de núcleos de CPU en la ficha).

Zhennan dijo anteriormente que cuanto más rápido es el reloj, mayor es el consumo de energía. No es difícil entender que el consumo de energía debe ser mínimo cuando el circuito no está funcionando, una vez que comienza a funcionar con un reloj, el consumo de energía debe aumentar. Este principio es la base fundamental para lograr un bajo consumo de energía en muchos chips de microcomputadoras de un solo chip. "El diseñador de la microcomputadora de un solo chip configura un interruptor de reloj para cada circuito periférico" (estos interruptores también son algunos registros de funciones especiales conectados al bus de la CPU, por lo que pueden ser controlados directamente por la CPU), para que los periféricos puedan ser controlado para detener o trabajar. Esto reduce en gran medida el consumo total de energía del microcontrolador. Este es un concepto nuevo en algunos microcontroladores avanzados: configuración de reloj (CC). En realidad, puede ser más potente, "no solo puede apagar el suministro de reloj de un periférico, sino que también puede ajustar la frecuencia del reloj para que el periférico pueda funcionar con el nivel de consumo de energía más apropiado".

binario

"Binario" se saca como una sección separada porque es un concepto extremadamente básico. Sin embargo, muchas personas no tienen una comprensión visual del binario, e incluso algunas personas que ya han comenzado y tienen un poco de experiencia en desarrollo todavía tienen una comprensión vaga del mismo. Por lo tanto, Zhennan cree que es necesario enfocarse en elaborarlo de una manera más vívida, popular y profunda, a fin de sentar una base sólida para nuestro estudio futuro.

Los humanos venimos usando un método de conteo que se considera muy natural desde la antigüedad, es decir, el sistema decimal. Su principio es muy simple, es decir, "uno decimal completo" (por qué es decimal, la causa principal es que tenemos diez dedos). Si "XY" es un número decimal de 2 dígitos, entonces pueden aparecer diez números del 0 al 9 en cada uno de sus dígitos. Un determinado bit actualmente es 9, si es +1, volverá a 0, y al mismo tiempo, será 1 a su bit más alto. Así es como funciona el conteo (independientemente de la base).

Dado que los humanos están acostumbrados a usar decimales, ¿por qué usar binarios en microcontroladores? ¿No es malo diseñarlo como decimal? En los primeros días del advenimiento de las computadoras, o entre algunos fanáticos técnicos, algunas personas intentaron crear computadoras de otras bases. Pero no importa qué sistema base se use, se deben seguir e implementar los diversos contenidos básicos del sistema de CPU introducidos anteriormente por Zhennan, como la búsqueda y ejecución de instrucciones, la operación del bus, etc. Bueno, Na Zhennan tomará un enlace en la operación del bus: "la CPU le da al bus de direcciones la dirección de la unidad de almacenamiento en la memoria para acceder" como ejemplo, y lo implementará en decimal.

Suponga que la dirección a la que se accede es (3456) 10, consulte la Figura 1.20.

cb4cc21325e9476f50f9a63b65312af3.png

Figura 1.20 La CPU genera direcciones a la memoria en decimal

Obviamente, para transmitir el valor 3456 en decimal, necesitamos usar 4 líneas de dirección, y cada línea de dirección transmite los cuatro números 3, 4, 5 y 6 respectivamente. Atrévete a preguntarles a todos, ¿cómo se debe transmitir esto? ¿Cómo puede una línea expresar los diez números del 0 al 9? Alguien dijo: "¡Sí! Divido 5V en 10 partes, 0V ~ 0.5V representa 0, 0.5V ~ 1V representa 1, y así sucesivamente, 4.5V ~ 5V representa 9. Sí, muy inteligente, esta es la leyenda El " enfoque de computadora análoga" en Su línea de señal transmite señales de voltaje analógicas en lugar de señales digitales.

Si bien el enfoque anterior es posible, hay muchos factores que impiden que las personas lo hagan:

  • La realización del circuito es relativamente difícil y el diseño del circuito analógico es mucho más complicado que el circuito lógico de datos;

  • La velocidad de transmisión no es alta y la generación, recopilación y recepción de señales analógicas son más lentas que las señales digitales;

  • La estabilidad y la capacidad antiinterferencias son relativamente débiles, y el valor de transmisión está determinado solo por la diferencia de voltaje de 0,5 V, que es propensa a errores;

  • El consumo de energía es difícil de reducir, la complejidad y la escala del circuito analógico y otros factores condenan su consumo de energía a ser relativamente grande.

……

Con respecto al Artículo 3, alguien planteó una vez una pregunta: "Puedo aumentar el voltaje. ¿Puedo definir 5 V como 10 V o 20 V, por lo que la diferencia de voltaje se ampliará? " Inteligente, pero ¿ha considerado la pregunta sobre el consumo de energía?

Implementémoslo en modo binario. (3456)10 convertido a binario es (110110000000)2, consulte la Figura 1.21.

1db6908c94bd1086a5260999ad5aa5b4.png

Figura 1.21 La CPU genera direcciones a la memoria en modo binario

Binario es binario completo, convertir un valor decimal en binario aumentará la cantidad de dígitos, por lo que necesitamos más líneas de dirección. Cada bit de un número binario solo puede representar los dos números 0 y 1, lo que corresponde al uso de dos niveles en la línea de dirección, como 0V y 5V (en realidad, puede ser 0V~2.xV significa 0, 2 .xV~5V significa 1). Los beneficios de hacer esto son obvios, la dificultad del diseño del circuito ha disminuido mucho y la capacidad antiinterferencias es relativamente fuerte. Lo que es más importante, la velocidad de transmisión de la señal puede hacerse relativamente alta y, finalmente, puede mejorarse el rendimiento general del sistema informático. Además, el binario también hace que el consumo de energía del chip se pueda reducir considerablemente, ya que podemos definir el nivel alto como 3,3 V, 1,8 V o incluso 1,2 V. (Cuanto más bajo se define el voltaje de alto nivel, más rápido sube la señal del microcontrolador de nivel bajo a nivel alto 因此,降低电平电压将有利于时钟频率的提高。) .

En resumen, todos deberían tener una comprensión más profunda de la importancia del uso de binarios en los sistemas informáticos. Binary es la base de la computadora y la base para la implementación del hardware de la CPU subyacente y muchos circuitos relacionados. Por lo tanto, en muchos trabajos de desarrollo e investigación relacionados con las microcomputadoras de un solo chip, estarán involucrados muchos conceptos y aplicaciones binarios.

mecanismo de interrupción

El mecanismo de interrupción es el más importante en los sistemas integrados y de un solo chip, y debemos entenderlo profundamente. En primer lugar, tenemos que entender una cosa: CPU执行指令代码,并非一直顺序地逐条执行,而是可能突然跳到某段代码上去的. Debido a que la prioridad de este código es más alta, o es más urgente, la CPU debe suspender temporalmente el trabajo en cuestión y ejecutarlo de inmediato, de lo contrario, puede tener consecuencias adversas o incluso accidentes graves. Este "salto repentino" a veces es predecible o intencional por parte del diseñador, pero a veces es aleatorio y el momento específico de su ocurrencia no se puede determinar de antemano. Esta es la expresión más popular de "interrupción", como se muestra en la Figura 1.22.

6356536e3a29ae65c42e9abd01bcdac4.png

Figura 1.22 Expresión de "mecanismo de interrupción"

Algunas personas dicen: "La interrupción parece estar jugando con la CPU. Siempre interrumpe la ejecución normal del programa. "Sí, pero no se puede decir que sea "problemático", porque la existencia de interrupciones es razonable y es para resolver problemas reales derivados del problema. Por ejemplo, una microcomputadora de un solo chip funciona normalmente y también necesita recibir datos del puerto serie al mismo tiempo, pero no sabe cuándo llegarán los datos. Para resolver este problema, podemos usar el sondeo de la CPU método, es decir, comprobar constantemente si están llegando nuevos datos, si es así, recibirlos. El mayor problema de hacer esto es desperdiciar el tiempo de ejecución de la CPU, lo que puede afectar la eficiencia de ejecución de otras tareas. "Si se usa el método de interrupción, la CPU se liberará y podrá hacer otro trabajo con tranquilidad antes de que no llegue ningún dato" . Según el circuito de control de interrupción especial y la fuente de interrupción de la CPU), la CPU salta inmediatamente al código de procesamiento prediseñado (ISR, rutina de servicio de interrupción) para ejecutar y completa la recepción y el procesamiento de datos. Finalmente, regrese al "punto de interrupción" original y continúe completando el trabajo en cuestión.

Con respecto a las interrupciones, en realidad contiene mucho contenido, como mantenimiento en el sitio, vectores de interrupción, prioridad de interrupción, velocidad de respuesta de interrupción, anidamiento de interrupción, etc. Para integrar todo esto, podemos sentirnos cómodos en el proceso de desarrollo real. Sin embargo, las interrupciones suelen ser más complicadas de lo que imaginamos: si el programa principal genera una interrupción durante la ejecución secuencial, la CPU pasa inmediatamente a la rutina de servicio de interrupción, entonces, si se genera una interrupción nuevamente durante la ejecución de la rutina de servicio de interrupción, ¿dónde debería la CPU ir? Este es el problema a resolver por el "anidamiento de interrupciones" mencionado anteriormente (aquí hay solo una breve charla, para que todos puedan tener una comprensión preliminar).

f22b19868e1d7728e5562fc3c751a6dd.jpeg

Bueno, este capítulo llega a su fin aquí. Zhennan espera que a través de este capítulo, todos puedan comprender de manera fundamental y verdadera la esencia de la arquitectura y el mecanismo operativo de la CPU y la microcomputadora de un solo chip, y establecer un modelo visual en sus mentes. Con esta base, la comprensión de todos acerca de las microcomputadoras de un solo chip puede ser realmente de tres puntos, y el aprendizaje y la comprensión pueden obtener el doble de resultados con la mitad del esfuerzo.

"La microcomputadora de un solo chip y el lenguaje C en realidad no son difíciles. En cierto sentido, es solo un "trabajo calificado", lo más importante es "comenzar". ¡Con lo básico y nuestro ingenio, todos pueden convertirse en maestros! "

Después de un año de preparación, el Sr. Yu Zhennan combinó años de experiencia práctica para crear un curso nuevo y sistemático " Diez días para llegar a la cima del lenguaje C integrado (Master C) ", con un total de 100 conferencias y un tiempo total de clase. de más de 2.000 minutos Descifrado muchos problemas que no conoces y a menudo cometes errores en el lenguaje C integrado para nosotros.

¡Espero que este conjunto de cursos pueda permitirles a aquellos que ya comenzaron con el lenguaje C y todavía están vagando [a mitad de camino de la montaña] llevarlo a otro nivel y finalmente alcanzar el pináculo del lenguaje C integrado! !

9c8563572f476000735873d71887ba36.jpeg

ffac56eb9b357607da72261d55b80468.jpeg

¡Haz clic para leer el texto original para registrarte y aprender con tus amigos!

Supongo que te gusta

Origin blog.csdn.net/karaxiaoyu/article/details/131346091
Recomendado
Clasificación