Implementaciones legibles y educativas de una CPU en un HDL

¿Puede recomendar una implementación legible y educativa de una CPU en VHDL o Verilog? Preferiblemente algo bien documentado.

PD Sé que puedo mirar opencores, pero estoy específicamente interesado en cosas que la gente realmente ha mirado y encontrado interesantes.

PS2. Lo siento por las etiquetas apestosas, pero como nuevo usuario no puedo crear nuevas

Aquí hay un gran blog de un tipo que intenta crear una pequeña CPU para un CPLD stevechamberlin.com/cpu
HDL ⊕ Legible, por desgracia.
@Joby Taffey: el enlace está roto, ¿es esto lo que quisiste decir? bigmessowires.com/cpu-in-a-cpld
mor1kx , una implementación Verilog de OpenRISC 1000. Tiene algunos comentarios. OpenRISC tiene la ventaja de que tiene una cadena de herramientas, pero sigue siendo relativamente simple.

Respuestas (7)

Puede disfrutar de una serie de artículos que escribí sobre esto hace mucho tiempo para la revista Circuit Cellar, Building a RISC System in an FPGA .

¡Feliz piratería!

Consulte también mi documento Design Con, Designing a Simple FPGA-Optimized RISC CPU and System-on-a-Chip [ fpgacpu.org/papers/soc-gr0040-paper.pdf] , que presenta el código fuente Verilog anotado para una CPU FPGA y SoC.
ese es un enlace muerto :/
¿Eliminar el ] final?

Consigue este libro, tengo la primera edición. Hace unos años implementé su CPU en una pequeña FPGA Flex 10K10 en una PCB que diseñé, con un par de botones y una sola pantalla de 7 segmentos para ingresar datos y mostrar los resultados.

Mucho depende de cuál es su propósito de estudiar el código. En otras palabras, ¿qué significa interesante para ti?

Si lo está haciendo para ver cuánta complejidad puede tener una CPU, puede estar más interesado en estudiar el origen de las arquitecturas OpenSPARC . Tomará mucho tiempo sumergirse, pero obtendrá una apreciación de la vista general general de un microprocesador complejo.

Entonces, si se trata de estudiar características específicas de la microarquitectura de la computadora, querrá ver algunas máquinas RISC sencillas como la AEMB , un pequeño y rápido procesador RISC de 32 bits de subprocesos múltiples (enchufe desvergonzado).

Entonces, si lo que desea es aprender buenos estilos y convenciones de codificación, el diseño de LEON2 es un buen lugar para aprender un buen estilo de codificación VHDL.

Sin embargo, si su propósito al estudiar un procesador es aprender a diseñar uno usted mismo, su mejor opción sería comenzar con una de las máquinas simples de 8 bits (hay muchos ejemplos de AVR, 8051, PIC en la red).

Enchufe desvergonzado - AEMB - mi propio "procesador más pequeño que podría".

Puede intentar examinar algunos diseños de CPU de Forth. Forth es un lenguaje de programación simple cuya especificación e implementación se define mediante dos pilas (una para datos y otra para direcciones de retorno).

Varios pequeños procesadores VHDL/Verilog están disponibles gratuitamente:

Algunos enlaces más se pueden encontrar aquí:

PD. A pesar de que Forth es un lenguaje bastante antiguo y oscuro, muchas máquinas virtuales modernas basadas en pilas (Java, máquinas virtuales JavaScript rápidas) tienen un diseño de bajo nivel similar, por lo que aprender sobre él puede ser fructífero.

PicoBlaze es bueno, sin embargo, no está disponible en VHDL independiente del proveedor.

Algunas otras opciones son:

  • Un clon de Picoblaze en Verilog (debería poder encontrarlo fácilmente). No estoy seguro si se mantiene
  • Gumnut es un núcleo pequeño y agradable respaldado por un libro reciente de Ashenden.
  • La pequeña máquina/computadora de registro de Thacker (alrededor de 200 líneas de Verilog)
  • XSoC/XR16 de Jan Gray (ya mencionado aquí)

Además, si está buscando un compilador para su CPU, lo más probable es que obtenga uno para una CPU de 16 bits. Una vez hubo un compilador de Poderico de un lenguaje similar a C a Picoblaze, pero lo quitaron de la web.

Si incluye una línea en blanco antes de su lista, su respuesta tendrá un formato mucho mejor.

Puede echar un vistazo al procesador Xilinx PicoBlaze . Es un microcontrolador integrado mínimo de 8 bits y el código fuente debería estar disponible.

Sin embargo, todo eso es VHDL estructural, por lo que no es excelente como herramienta de enseñanza.

Demasiado tarde, sin embargo doy una pequeña respuesta.

Hay un curso llamado Nand2Tetris de la Universidad de Jerusalén, este curso también está presente en Coursera, construí la computadora que crearon en ese curso. Implementé el lenguaje en esquema para poder ver yo mismo cómo funciona la computadora con el mínimo detalle. Y lo logré, el simulador que crearon en Java no puede hacer todo lo que yo quería ver.

https://github.com/alinsoar/pequeña-computadora