2009-03-10 28 views
42

¿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 mi propio microcontrolador?

¿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.

+3

+1 de interés. ¿Has mirado aquí? http://www.fpga4fun.com/ – epatel

Respuesta

25

Look here para 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 quiere brillar, aprenda VHDL o Verilog (el VHDL parece ser más común donde he trabajado, pero solo son pocos lugares) y codifique 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 aprendiendo los conceptos básicos de los sistemas digitales, y cómo construir 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 obtener lujo con el diseño del conjunto de instrucciones, pero yo recomendaría comenzar REALMENTE simple hasta que esté al tanto de lo que está pasando, luego tirarlo y comenzar 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 a su medida. 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.

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

13

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

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

1

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.

¿Puede dar más detalles sobre sus aspiraciones?

+0

Me gustaría implementar algo similar a un AVR posiblemente, aunque sé que sería mucho más simple. Cuando estaba usando chips GAL, la clase en la que estaba estaba rápidamente alcanzaba los límites físicos de GAL, y quería saber cuál es el siguiente paso que puedo dar para hacer algo un poco más poderoso. – samoz

0

Necesita una fpga grande para un poco de mcu.

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

Necesita 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.

+0

Ya tengo varios chips AVR;) – samoz

+0

Pero entonces no eres tan verde como lo cuestionas implica ... Tal vez una actualización de tu pregunta. – Johan

1

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?"

7

Vi un libro de texto una vez que pasó por la construcción de una máquina 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.

El PDP-8 FAQ menciona un libro: "The Art of Digital Design," 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 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.

+2

+1 solo por mencionar el PDP-8 ;-) – RBerteig

3

Para jugar con microprocesadores de núcleo blando, me gusta el 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é el Plasma uC para escribir algunos artículos mientras estaba en la universidad.

1

Xilinx tiene un controlador suave MicroBlaze y 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 run on a CPLD. De todos modos, un buen procesador para que comiences.
Pablo Bleyer tiene un PacoBlaze compatible con PicoBlaze. PacoBlaze fue escrito en Verilog (que, como dijo Adam, es menos común que VHDL).

Cuestiones relacionadas