TTL computing

From: Roger Ivie <IVIE_at_cc.usu.edu>
Date: Wed Apr 10 15:55:52 2002

Thilo Schmidt wrote:
> The Address of the ROM is the current-state (lets say the line-number
> of the programm). Every line of Code consists only of the "outputs" and
> one or more "next states". The "inputs" select which "line" comes
> next: Either the next "line" of Code (that's what the counter is for),
> or one of the "next states". I made a mistake there, the Microcoded Machine
> has to look like that:
>
> |---|---> OUT
> address | R |--->
> |-->| O |---> |--[Counter]
> | | M |----| |
> | |___| \MUX/<--- IN
> | |
> |-[StateReg]<--

Actually, there are a grundle of ways to do this. Here's a scheme that
doesn't require a counter, but requires wider microcode:

> |---|---> OUT
> address | R |--->
> |-->| O |--->
> | | M |------|
> | | |----| |
> | |___| \MUX/<--- IN
> | |
> |-[StateReg]<--

In this case, each microcode word contains two addresses: one for when
the input is true and one for when the input is false. If you want to
go to the "next" word, the appropriate field in the microcode contains
the current address +1.

And then there's:

> |---|---> OUT
> IN ---->| |--->
> address | R |--->
> |-->| O |--->
> | | M |-----|
> | |___| |
> | |
> |-[StateReg]<--

This does away with the mux by using the input as one of the address
bits. It doesn't get more simple than this. You used to be able to
get registered EPROMs; using those, the state and output registers
are built into the EPROM and all you have to do is wire it up. And
write a grundle of microcode, of course...

The Firefox QBUS Adapter was implemented this way. Some of the outputs
ran back around to control a mux to select which input was being
examined by the microcode for a given state. Hmm, I'm going to have
to turn your drawing sideways, I think:

> INPUTS
> |||
> |||
> VVV
> +----------->\MUX/
> |+-------+ |
> || | |
> || V V
> || +--------------+
> || | ROM |
> || +--------------+
> || | |||
> || V VVV
> || [State and Output reg]
> || | |||
> |+--------+ |||
> +----------------+||
> ||
> VV
> OUTPUTS

Since this was done using registered PROMs, the only parts are ROMs
and the mux. And a synchro register for inputs; I don't recall whether
I synchronized the inputs before or after the mux.

Am I the only person who sees registered SRAMs intended for cache
and things "Hey! A huge microcode store that can run really fast!"?
Some of them even have JTAG inputs you could use to load the microcode.

Fundamentally, a state machine consists of inputs, outputs, a state
register, and a next state decoder. A microcoded system just uses a
ROM for the next state decoder.

Roger Ivie
ivie_at_cc.usu.edu
Received on Wed Apr 10 2002 - 15:55:52 BST

This archive was generated by hypermail 2.3.0 : Fri Oct 10 2014 - 23:34:30 BST