Implementações legíveis e educacionais de uma CPU em um HDL


37

Você pode recomendar uma implementação legível e educacional de uma CPU em VHDL ou Verilog? De preferência algo bem documentado.

PS: Eu sei que posso olhar opencores, mas estou especificamente interessado em coisas que as pessoas realmente viram e acharam interessantes.

PS2. Desculpe pelas tags ruins, mas como novo usuário não consigo criar novas


11
Aqui está um grande blog de um cara tentando criar uma pequena CPU para um CPLD stevechamberlin.com/cpu
Toby Jaffey

2
HDL able legível, infelizmente.
Connor Lobo

@Joby Taffey: link está quebrado, é isso que você quis dizer? bigmessowires.com/cpu-in-a-cpld
Brian Carlton

mor1kx , uma implementação Verilog do OpenRISC 1000. Ele tem alguns comentários. O OpenRISC tem a vantagem de possuir uma cadeia de ferramentas, mas ainda é relativamente simples.
Janus Troelsen

Respostas:



7

Pegue este livro, eu tenho a primeira edição. Alguns anos atrás, implementei sua CPU em um pequeno Flex 10K10 FPGA em uma PCB que eu projetei, com alguns botões e um único display de 7 segmentos para inserir dados e exibir os resultados.


7

Depende muito de qual é o seu objetivo de estudar o código? Em outras palavras, o que interessante significa para você?

Se você estiver fazendo isso para ver quanta complexidade pode entrar em uma CPU, poderá estar mais interessado em estudar a fonte das arquiteturas do OpenSPARC . Vai levar um longo tempo para mergulhar em, mas você vai ter uma apreciação para o geral retrato grande vista de um microprocessador complexa.

Então, se for para estudar recursos específicos da microarquitetura de computadores, você deve observar algumas máquinas RISC simples como o AEMB , um pequeno e rápido processador RISC de 32 bits e multithread (plugue sem vergonha).

Então, se você deseja aprender bons estilos e convenções de codificação, o design do LEON2 é um bom lugar para aprender um bom estilo de codificação VHDL.

No entanto, se seu objetivo no estudo de um processador é aprender a projetar você mesmo, sua melhor aposta seria começar com uma das máquinas simples de 8 bits (existem muitos exemplos AVR, 8051, PIC na rede).


Plugue sem vergonha - AEMB - meu próprio "menor processador que poderia".
sybreon 12/09/11

5

Você pode tentar examinar alguns designs de CPU adiante. A quarta é uma linguagem de programação simples, cuja especificação e implementação são definidas por meio de duas pilhas de pilhas (uma para dados e outra para endereços de retorno).

Vários pequenos processadores VHDL / Verilog estão disponíveis gratuitamente:

Mais alguns links podem ser encontrados aqui:

PS. Apesar de ser uma linguagem bastante antiga e obscura, muitas VMs modernas baseadas em pilha (Java, VMs rápidas de JavaScript) têm design de baixo nível semelhante, portanto, aprender sobre isso pode ser proveitoso.


2

O PicoBlaze é bom, no entanto, não está disponível no VHDL independente do fornecedor.

Algumas outras opções são:

  • Um clone do Picoblaze em Verilog (você poderá encontrá-lo facilmente). Não tenho certeza se ele é mantido
  • Gumnut é um núcleo pequeno e agradável, apoiado por um livro recente de Ashenden.
  • A pequena máquina / computador de registro da Thacker (cerca de 200 linhas da Verilog)
  • Jan Gray XSoC / XR16 (já mencionado aqui)

Além disso, se você estiver procurando por um compilador para sua CPU, é mais provável obter um para uma CPU de 16 bits. Uma vez houve o compilador de Poderico de uma linguagem C para Picoblaze, mas ele foi retirado da web.


Se você incluir uma linha em branco antes da sua lista, sua resposta será formatada muito melhor.
Trygve Laugstøl

1

Você pode dar uma olhada no processador Xilinx PicoBlaze . É um microcontrolador incorporado mínimo de 8 bits, e o código fonte deve estar disponível.


11
Isso é tudo VHDL estrutural, porém, assim não é grande como uma ferramenta de ensino
Martin Thompson

0

Tarde demais, no entanto, eu forneço uma pequena resposta.

Existe um curso nomeado fromNand2Tetris da Universidade de Jerusalém, este curso também está presente no coursera, eu construí o computador que eles criaram nesse curso. Eu implementei a linguagem no esquema para poder me ver como o computador funciona nos mínimos detalhes. E eu consegui, o simulador que eles criaram em Java não pode fazer tudo o que eu queria ver.

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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.