Computer design goals:
Architecture:
RISC-like. This is Load/Store architecture, meaning that ALU operations are only applied on data in registers, and for using data from memory it should be first loaded to these registers, or stored from them back to memory, in separate instruction cycle.
The instruction set is presented in its own sub-project.
The assembly language is presented also in ints own sub-project.
16-bit computer, with 16-bit wide ALU operating 16-bit wide registers, and 16-bit data bus.
Memory consists of 16-bit words, addressable by 24-bit address bus.
Up to 16 MBytes can be addressed in theory, by 24-bit addresses, byte-addressable memory. (Although most memory transfers would be word-sized). In real machine, up to 12 MBytes of SRAM will be installed, with possible video and other I/O mapped to top 4 MBytes.
The address bus can be expanded up to 32 bits, making it possible to address up to 4GB of memory, without great complication, but for this project such big address space is overkill.
Register transfer scheme:

Component base: 74HCxx SSI and MSI chips (Elementary logic, multiplexers, flip-flops, 8-bit registers, and counters).
Input-output (tentative):
Input: keyboard.
Output: Monitor (VGA): characters, pseudographics, bitmap.
Mass storage: 1GB CompactFlash card through Parallel ATA interface.
Registers:
Register file: 8 16-bit registers, 3-address:
First address (A operand) is written with result of ALU operation on 2 registers (B and C operands). ;
Some ALU ops use only 1 register, as accumulator;
Memory Pointers: 4 pairs of registers, 16-bit for low word and 8-bit for high byte, to yield Program Counter, Stack Pointer, Frame Pointer and Base Pointer (all 24-bit);
Instruction register: 16-bit, holds running instruction;
Instruction Extension register: 16-bit, holds immediate data for some instructions;
Address Buffer register: 24-bit, holds result of Address Adder (base + offset);
Status Register: 16-bit, holds Main ALU output flags, interrupt mask bit and some additional status bits yet to be defined.
Functions: ADD, SUB, AND, OR, XOR, SHIFT, ROTATE
B operand modifications: no, invert (1-complement), twos complement, replace with hardcoded value in range 0...255.
ALU Adder: fast adder (16-bit, with carry look-ahead) for high speed.
Memory Addressing:
Several different addressing modes are supported: Immediate, Direct, Indexed, Indexed with pre-increment and Indexed with post-increment. Any register from General Purpose Register File and Memory Pointer bank can be target of memory accesses in any of the mentioned modes.
Address Adder ( 24-bit, with carry look-ahead ), adds signed offset to Memory Pointer for indexed address calculation.
I've already built 16-bit datapath, which includes main ALU and Register File, with rudimentary control unit, which altogether makes a very restricted processing unit. Its testing is described in more detail in its own project.
Pavel








On the schematic, there is the funnel shifter itself, comprised of a bunch of 2:1 muxes with a little sprinkling of AND and OR gates, as well as temporary register represented as 4 data flip flops r_A through r_D (blue squares). This register holds shifted-out bits that could be retrieved later, with special MOV operation, or used in consecutive operation to facilitate multi-word shifts/rotates.
Stefan
kaimac
Awesome project! I learned to use LogiSim during an undergraduate Digital Electronics course this spring. I am hoping to design and build a pure TTL computer over the summer.