Re: Ideas for a faster TTL CPU //6502 related
Posted: Thu Aug 01, 2019 1:19 pm
OK, now for the unavoidable proposal for building a non_microcoded 6502 instruction decoder\sequencer from multiplexers,
something we certainly won't build for this project.
IR is the instruction register.
"data phase decoder" is a big lump of 8:1 multiplexers like in my previous posting.
It generates control signals for ALU, flags and registers for the mill in machine cycles where the ALU processes data.
"control decoder" is another lump of 8:1 multiplexers, together with a little lump of logic related to interrupts, flag testing etc.
it is responsible for what happens in all of the other machine cycles. (addressing modes etc.)
Some more 8:1 multiplexers controlled by the 3 Bit state machine counter (that's 8 states) then generate control signals.
//Means it could happen that one would have to make eight 16*16 OpCode tables, one for every state.
That 2:1 switch which routes either these control signals or control signals from the "data phase decoder"
to the mill is just for illustration of the concept:
On implementation level, one could use a 7404 inverter plus 8:1 multiplexers with three_state outputs like 74251 or 74CBT(LV)3251
for getting rid of that switch.
Some more clues might be hiding up in the thread.
;---
When trying to take this approach, better expect to end up with >150 TTL chips just for the instruction decoder\sequencer.
Because the select inputs of all these multiplexers are fed by the instruction register,
we are going to have a lot of capacitances, even when creatively buffering the instruction register outputs.
So a design like that would be too slow for the project (it probably won't be getting past 100MHz).
An instruction decoder\sequencer built from 8ns asynch SRAM containing microcode would have about the same speed,
while being a lot smaller, cheaper, more reliable, and simpler to modify (bug fixes).
something we certainly won't build for this project.
IR is the instruction register.
"data phase decoder" is a big lump of 8:1 multiplexers like in my previous posting.
It generates control signals for ALU, flags and registers for the mill in machine cycles where the ALU processes data.
"control decoder" is another lump of 8:1 multiplexers, together with a little lump of logic related to interrupts, flag testing etc.
it is responsible for what happens in all of the other machine cycles. (addressing modes etc.)
Some more 8:1 multiplexers controlled by the 3 Bit state machine counter (that's 8 states) then generate control signals.
//Means it could happen that one would have to make eight 16*16 OpCode tables, one for every state.
That 2:1 switch which routes either these control signals or control signals from the "data phase decoder"
to the mill is just for illustration of the concept:
On implementation level, one could use a 7404 inverter plus 8:1 multiplexers with three_state outputs like 74251 or 74CBT(LV)3251
for getting rid of that switch.
Some more clues might be hiding up in the thread.
;---
When trying to take this approach, better expect to end up with >150 TTL chips just for the instruction decoder\sequencer.
Because the select inputs of all these multiplexers are fed by the instruction register,
we are going to have a lot of capacitances, even when creatively buffering the instruction register outputs.
So a design like that would be too slow for the project (it probably won't be getting past 100MHz).
An instruction decoder\sequencer built from 8ns asynch SRAM containing microcode would have about the same speed,
while being a lot smaller, cheaper, more reliable, and simpler to modify (bug fixes).