| Design | Schematics | Embedded CPU | JAM STAPL | Loop Filter | Spectra | MASH | Simulation | Back to projects |
| Stored program[1] | Key | Instruction Set | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Data memory map
ΔN
|
Minimal 8-bit CPU Architecture Notes :
Carry propogation examples :
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Above is the programmer's quick reference guide to this processor. Although other programs are possible (e.g. integer-N mode, lower-order MASH, shorter accumulators, single-accumulator un-compensated Fractional-N), this CPU was specifically designed to run the 73 instructions above. Executing once per comparison cycle, leaving the next VCO divisor (N+ΔN) in the accumulator, they implement a 4th-order 32-bit MASH.
Instructions are fetched and executed on alternate VCO clock cycles. The program above executes in 146 cycles. Cycle time depends on VCO output frequency! Accumulator instructions are pipelined to overlap with the following fetch cycle.
The CPU core is written in VHDL. The most interesting part is the fragment below, which manages the program counter (pc), instruction register (ir) and fetch/execute cycle:
process(clock, sclr, fe, pc, op)
begin
if rising_edge(clock) then
if (sclr = '1') then
pc <= "0000000";
fe <= '0';
elsif (fe = '0') then
fe <= '1';
ir <= data;
elsif (op /= OP_END) then
fe <= '0';
pc <= pc + 1;
end if;
end if;
end process;
op <= ir(7 downto 5);
RamAddr <= "000" & ir(4 downto 0) when (fe='1') else "1" & pc;
Note: the "1" prepended to the program counter is fed through an LCELL to synchronise transitions on A7 with the other address lines.

OEL and OEH are tied together. One of them is always tri-state.

To load the accumulator from memory, it is first cleared during the LDA execute cycle,
and then summed with the operand pipeline register during the following fetch cycle.
Pipelining is necessary to meet the 25 MHz VCO clock setup time through the adder.
In order to implement a 4th-order MASH efficiently, this CPU has 4 carry flags in a 4-bit FIFO shift register. The stored program updates the MASH accumulators, shown in the data memory map at the top of this page, a row at a time.
| Copyright © Andrew Holme, 2005. |
|