what programming microprocessor book embedded microcontroller

embedded - programming - microcontroller vs microprocessor



¿Cómo puedo hacer mi propio microcontrolador? (9)

¿Cómo puedo hacer mi propio microcontrolador? He trabajado un poco usando chips GAL y he programado un chip para hacer comandos simples como agregar, cargar, mover, xor y salida, pero me gustaría hacer algo más como un microcontrolador real.

¿Cómo puedo hacer esto? He leído un poco sobre FPGA y CPLD, pero no mucho, y estaba buscando consejos sobre qué obtener y cómo comenzar a desarrollarlo.


Después de buscar algunos enlaces muy útiles por todos ustedes, me encontré con this curso de Wikiversidad.

Una de las primeras oraciones es: "¿Alguna vez has pensado en construir tu propio microprocesador?"


Es posible que desee echar un vistazo a OpenCores.org , un sitio "forjado" para el desarrollo de núcleo de IP de código abierto. Además, considere obtener una placa de desarrollo como una de estas para jugar.

Gran parte del ecosistema de herramientas gira en torno a VHDL , aunque Avalda está trabajando en herramientas para compilar F # para FPGA.


Mira here un buen libro wiki. Tuve algunos cursos que escribí cuando enseñaba Electronic Eng, pero no pude encontrarlos. Cuando estaba enseñando, la mayoría de los estudiantes estaban felices de usar las herramientas de captura esquemáticas en el paquete de la Fundación Xilinx. Han pasado a ISE y a WebPACK ahora. Puede descargar el WebPack de forma gratuita, lo cual es útil, y tiene una captura y simulación esquemática.

Si realmente quieres brillar, aprende VHDL o Verilog (VHDL parece ser más común donde he trabajado, pero eso es solo una pequeña cantidad de lugares) y codifica el diseño en lugar de ingresarlo a través de la GUI.

Si conoces CUALQUIER COSA sobre el diseño de lógica digital (y algo de HDL), rekon puedes tener un microprocesador de 8 bits algo funcional simulando en VHDL en aproximadamente 2 días. No vas a construir nada increíblemente rápido o enormemente poderoso en ese momento, pero es un buen punto de partida para crecer. Si tiene que aprender sobre diseño digital, piense en un par de días para aprender cómo funcionan las herramientas y simular algunos circuitos lógicos básicos antes de pasar al diseño de UP.

Comience a aprender los conceptos básicos de los sistemas digitales y cómo crear un sumador binario. Continúe con la creación de una ALU para manejar la suma, la resta, y, o, xor, etc. y luego un secuenciador para leer los códigos de operación de la RAM y suministrarlos a la unidad de ejecución.

Puede hacerse elegante con el diseño del conjunto de instrucciones, pero recomendaría comenzar REALMENTE simple hasta que sepa qué está pasando, luego tírelo y comience de nuevo con algo más complejo.

Una vez que tenga el diseño que simula bien puede medir su complejidad y comprar un dispositivo para satisfacer. Debería ver un sistema de desarrollo para la familia de dispositivos que ha elegido. Elija un dispositivo más grande que lo que necesita para el desarrollo, ya que es agradable poder agregar instrumentación adicional para depurarlo cuando se está ejecutando, y es casi seguro que no habrá optimizado su diseño en las primeras etapas para obtenerlo en el dispositivo.

EDITAR: Colin Mackenzie tiene un buen tutorial sobre el diseño de uC y algunas placas FPGA, así como un poco de otras cosas.


Necesitas una gran fpga por un poco de mcu.

Necesitas un fpga con los bloques de hardware correctos si necesitas cosas como AD.

Necesitas un núcleo blando para poner en la fpga.

¿Pero qué tal jugar con una MCU normal antes de este proyecto, para que sepas a dónde vas? ¿Qué tal algunos AVR: s de Atmel.


Para jugar con microprocesadores de núcleo blando, me gusta la Spartan 3 Starter Board de Digilent solo porque tiene 1M de RAM estática. SDRAM y DDR RAM son más difíciles de poner en marcha, ya sabes.

Los leds, los conmutadores y una interfaz en serie simple son una ventaja para la depuración y la comunicación.

Como alguien ya señaló, OpenCores.org es un buen lugar para encontrar ejemplos de trabajo. Usé Plasma uC para escribir algunos artículos mientras estaba en la universidad.



Un microcontrolador puede ser tan simple como una ROM (instrucción * 2 ^ x + (fase de reloj) es la dirección, las salidas son las señales de control, y está listo para comenzar). O puede ser una compleja harry bestia con tres brazos y hardware de soporte de predicción de ramas.

¿Puedes dar más detalles sobre tus aspiraciones?


Vi una vez un libro de texto que pasó por la construcción de una máquina a partir de chips TTL. Este tenía el mismo conjunto de instrucciones que un PDP-8, que es muy, y me refiero a muy simple, por lo que la arquitectura de la máquina real es fácil de implementar de esta manera.

Las preguntas frecuentes del PDP-8 mencionan un libro: " The Art of Digital Design " , segunda edición, de Franklin Prosser y David Winkel (Prentice-Hall, 1987, ISBN 0-13-046780-4). También menciona a las personas que lo implementan en FPGA.

Dada la extrema simplicidad de esta arquitectura de CPU y la disponibilidad del código PDP-8 o las implementaciones de referencia, podría ser un buen punto de partida para calentarse.

Alternativamente, un conocido mío implementó un pulgar (cortar ARM) en un FPGA como un proyecto universitario dirigido por un tal Steve Furber (un prominente ex alumno de Acorn). Dado que esto podría comprimirse en un formato lo suficientemente pequeño para un proyecto universitario, también podría ser un buen comienzo.


Xilinx tiene un MicroBlaze y un controlador suave PicoBlaze para sus FPGA. Este último es gratis, mientras que, IIRC, el Microblaze debe ser pagado.
Como su nombre lo indica, PicoBlaze es un procesador pequeño, que tiene sus limitaciones, pero OTOH es lo suficientemente compacto como para ejecutarse en un CPLD . De todos modos, un buen procesador para que comiences.
Pablo Bleyer tiene un PacoBlaze compatible con PacoBlaze . PacoBlaze fue escrito en Verilog (que, como dijo Adam, es menos común que VHDL).