Pregunta

¿Cómo puedo hacer mi propio microcontrolador? Trabajé un poco con chips GAL y programé un chip para realizar comandos simples como agregar, cargar, mover, xor y generar, 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, por lo que estaba buscando algunos consejos sobre qué obtener y cómo comenzar a desarrollarlo.

¿Fue útil?

Solución

Busque aquí para obtener un buen libro wiki. Tenía 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ática en el paquete de la Fundación Xilinx. Se han mudado a ISE y WebPACK ahora. Puede descargar el WebPack de forma gratuita, lo cual es útil y tiene captura esquemática y simulación.

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 sabe algo acerca del diseño de lógica digital (y algo de HDL), creo que puede tener un microprocesador de 8 bits algo funcional que simule 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, tenga en cuenta 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 construir un sumador binario. Pase a construir una ALU para manejar sumas, restas, y, o, xor, etc. y luego un secuenciador para leer códigos de operación de la RAM y suministrarlos a la unidad de ejecución.

Puede ser sofisticado con el diseño del conjunto de instrucciones, pero le recomiendo 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 simulando bien, puede medir su complejidad y comprar un dispositivo que se adapte. Debe buscar un sistema de desarrollo para la familia de dispositivos que ha elegido. Elija un dispositivo más grande de lo que necesita para el desarrollo porque es bueno 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. / p>

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

Otros consejos

Es posible que desee echar un vistazo a OpenCores.org , una " forge " sitio para el desarrollo del 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.

Una vez vi un libro de texto que atravesó 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 quiero decir very , simple, por lo que la arquitectura de la máquina real es fácil de implementar de esta manera.

Las PDP-8 FAQ menciona un libro: " < a href = "https://rads.stackoverflow.com/amzn/click/com/0130467804" rel = "nofollow noreferrer"> El arte del diseño digital, " segunda edición, por 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 de código PDP-8 o implementaciones de referencia, podría ser un buen punto de partida para calentarse.

Alternativamente, un conocido mío implementó un pulgar (reducir ARM) en un FPGA como un proyecto universitario dirigido por un Steve Furber (un ex alumno prominente de Bellota). 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.

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 interruptores y una interfaz serial simple son una ventaja para depurar y comunicarse.

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

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

¿Puede dar más detalles sobre sus aspiraciones?

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

Una de las primeras oraciones es: "¿Alguna vez pensó en construir su propio microprocesador?"

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

Necesitas una gran fpga por un poco de mcu.

Necesita una fpga con los bloques de hardware correctos si necesita cosas como AD.

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

Pero, ¿qué hay de jugar con un MCU normal antes de este proyecto, ¿Entonces sabes a dónde vas? ¿Qué tal algunos AVR: s de Atmel.

Puede obtener muestras gratuitas de microcontroladores pic en este sitio. Lo último que supe es que ni siquiera tienes que pagar el envío.

http://www.microchip.com/stellent/idcplg?IdcService = SS_GET_PAGE & amp; nodeId = 64

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top