Implementaciones legibles y educativas de una CPU en un HDL


37

¿Me 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 visto y encontrado interesantes.

PS2 Perdón por las etiquetas sucky, pero como usuario nuevo no puedo crear otras nuevas


1
Aquí hay un gran blog de un tipo que intenta crear una pequeña CPU para un CPLD stevechamberlin.com/cpu
Toby Jaffey

2
HDL ⊕ Legible, desafortunadamente.
Connor Wolf

@Joby Taffey: el enlace está roto, ¿es esto lo que querías decir? bigmessowires.com/cpu-in-a-cpld
Brian Carlton

mor1kx , una implementación de Verilog de OpenRISC 1000. Tiene algunos comentarios. OpenRISC tiene la ventaja de que tiene una cadena de herramientas, pero sigue siendo relativamente simple.
Janus Troelsen

Respuestas:



7

Consigue este libro, tengo la primera edición. Hace unos años implementé su CPU en un pequeño 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.


7

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 . Se necesitará mucho tiempo para bucear en pero usted recibirá un reconocimiento por el conjunto panorama vista de un microprocesador complejo.

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

Entonces, si lo que quiere es aprender buenos estilos y convenciones de codificación, el diseño 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 AVR, 8051, PIC en la red).


Plug descarado - AEMB - mi propio "procesador más pequeño que podría".
sybreon

5

Puede intentar examinar algunos diseños de CPU Forth. Forth es un lenguaje de programación simple cuya especificación e implementación se define mediante dos pilas de 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 pila (Java, máquinas virtuales rápidas de JavaScript) tienen un diseño similar de bajo nivel, por lo que aprender sobre esto puede ser fructífero.


2

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

Algunas otras opciones son:

  • Un clon de Picoblaze en Verilog (deberías poder encontrarlo fácilmente). No estoy seguro si se mantiene
  • Gumnut es un pequeño núcleo agradable apoyado por un libro reciente de Ashenden.
  • La pequeña máquina registradora / computadora 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, es muy probable que obtenga uno para una CPU de 16 bits. Una vez hubo un compilador de Poderico de un lenguaje tipo C a Picoblaze, pero se ha eliminado de la web.


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

1

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


1
Sin embargo, eso es todo VHDL estructural, por lo que no es tan bueno como herramienta de enseñanza
Martin Thompson, el

0

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

Hay un curso llamado de 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 el esquema para poder verme cómo funciona la computadora en el menor detalle. Y tuve éxito, el simulador que crearon en Java no puede hacer todo lo que quería ver.

https://github.com/alinsoar/little-computer

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.