FPGA Computer - Design
Components
The overall architecture is that from Build a Modern Computer From First Principles: From Nand to Tetris,
which details the construction of a simple computer starting only with NAND gates. For the most part, this design has been adhered to for the individual components
despite the probable availability of more efficient Xilinx-made versions.
CPU
The CPU consists of a seven-function
ALU, data and address
registers, and circuitry to shuffle signals around
based on the current opcode being processed.
Computer
The computer consists of the CPU, a program counter, and two banks of
RAM implementing a
Harvard architecture.. I'm still undecided as to whether it will have an actual screen and keyboard or
will implement a serial interface of some kind. The registers will be exposed to inspection from the Raspberry Pi.
Memory
This is turning out to be a little more complicated than it would seem. The design from the course uses 56K+1 16-bit words (32K instruction, 16K data, 8K screen memory, 1 byte keyboard memory).
The Spartan-6 lx9 doesn't contain enough resources to implement all of this from
scratch, but does contain 32K 16-bit words of SRAM. This would be ideal, but there is not enough of it.
In addition to the Spartan-6 FPGA, the Logi-Pi also contains 32Kbit of
SDRAM, which works out to 2M 16-byte words. This is plenty, and better than either severely
limiting the memory available to the computer or working with purely external memory, but slower and more complicated to work with than SRAM. Mike Field has developed
an SDRAM controller for the Logi-Pi.