This is minimalist computing taken to the extreme!
The new "XS" platform allows an even smaller computer design. Compared to the
original My4TH computer board, the new XS platform has a much
more compact microcode.
I reduced the width of the microcode counter from 8 bits to 4 bits, so I could remove
one of the two 74HC161 counter ICs from the design. I also removed the two 74HC574 ICs
used for parallel I/O and the 74HC541 tri-state driver. The new
My4TH XS uses only 13.75 ICs! Why 13.75? Because a NOR gate in the 74HC02 remains
unused. So the My4TH XS computer consists of two memory ICs and only 11.75 logic ICs.
By the way, "XS" stands for extremely small in terms of mechanical size,
the number of logic gates or transistors used, and computing power.
That's why "XS" could also mean "extremely slow" ;-) .
Its speed is about 85% of that of the original My4TH when both are clocked at 8 MHz,
and 8 MHz is the highest frequency My4TH XS can run at.
|
|
My4TH XS:
- PCB size only 90 x 70 mm
- 12 logic ICs, 2 memory chips:
- 16 KB EPROM, 8 KB SRAM
- proven ALU-less design
- clock speed fixed at 8 MHz
- TTL-level UART with 4800 baud
- Forth 2012 operating system
- includes 205 standard words
- no I/O except the UART!
Here is the
schematics.
|
In addition to the My4TH XS, I also built a more useful computer based on the XS platform.
I took the My4TH XS and added another IC (a 74HC74). With these two additional flip flops
I was able to add an I2C interface to the computer. I call this computer the
"My4TH light", because it is a My4TH in a lighter version, and it also
has a light (a yellow LED) on the PCB!
|
|
My4TH light:
- PCB size only 90 x 83 mm
- 13 logic ICs, 3 memory chips:
- 32 KB EPROM, 8 KB SRAM
- 64 KB EEPROM (optional)
- proven ALU-less design
- clock speed fixed at 8 MHz
- TTL-level UART with 4800 baud
- fast I2C bus with 83 kHz
- Forth 2012 operating system
- includes 295 standard words
- includes floating point support
- supports several I2C I/O chips
This version of My4TH has a lot of
software in its ROM, so it should be
the board of your choice!
Here is the
schematics.
|
Here is a size comparison between the three My4TH variants.
The original My4TH board is 100 x 100 mm, but the My4TH XS
is only 90 x 70 mm. This is only 39% of the size of a Eurocard!
The My4TH XS computer board
The My4TH XS is the smallest / slowest / simplest / lowest gate count /
lowest transtor count / or whatever Forth capable 8-bit computer I have
ever built. It may even be a world record computer. I am very proud of
the new microcode,
which is very compact and fits into 5.5 KB.
The microcode not only covers all the processor instructions available
on the original My4TH computer, but also includes some fast I2C transfer
routines that were used on the My4TH light computer. To squeeze all these
functions into 5.5 KB, I had to implement subroutine calls within the
microcode itself. For example, there are routines for fetching the operands
of an instruction. The My4TH XS platform is slower than the My4TH due to
the reduced number of components used. A microcode can only have up to
8 microinstructions, compared to up to 128 microinstructions on the
original My4TH. This means that microcodes using more than 8 instructions
must jump to the next microcode fragment after executing every 7th
microinstruction. This results in a reduced execution speed of 1/8, or 12.5%.
Together with the overhead of the subroutine calls, the My4TH XS is
approximately 15% slower than the My4TH platform.
My4TH XS comes with a fully functional Forth,
which includes more than
200 "words" ready to use, all squeezed into the 16 KB EPROM.
You can enter your own programs on the terminal command line, but due to
the lack of non-volatile memory you cannot save your work.
Since My4TH XS also has no I/O other than the terminal interface, it is
of limited use. I see My4TH XS as a kind of demonstration of what is
possible with so little and simple hardware. But My4TH XS is also a
good platform for those who just want to practice soldering and learn
the Forth programming language.
Please note that My4TH XS is not supported by the my4th transfer tool,
thus you can not upload your source code the easy way. This is due to the
small ROM, in which there is no space left for the needed transfer functions.
Here is an example how to use the My4TH XS board. The board is connected
to the PC via a serial to USB converter (CH340G bought at Amazon).
On the PC, I use Putty as terminal emulator program:
You can find everything you need to
build your own My4TH XS board in the
the download area.
The My4TH light computer board
My4TH light is the big brother of the My4TH XS computer board. In contrast
to the My4TH XS it has an I2C interface that is 8 times faster than the
I2C interface of the original My4TH board.
This makes the I2C bus the ideal interface to connect all kinds of I/O,
LCD and sensor breakout boards to this Forth computer.
In addition, the My4TH light has a larger ROM than the My4TH XS, so that it
has become possible to include a lot more additional functions in the firmware.
For example, floating point words are now included in the ROM,
so it is no more necessary to install them by loading an expansion module
from the EEPROM. Also some software drivers for I2C based LCDs and also for
general purpose I/O port expanders are now included.
My4TH light has built-in support for:
- HD44780 compatible LCDs using the PCF8574 chip for the I2C bus
- I/O port expander PCF8574, PCF8575, AW9523 and MCP23017
- I2C-to-UART bridge SC16IS750 (provides a fast RS-232 interface with FIFO)
- Keyboard matrix up to 64x64 keys using a PCF8574 or PCF8575
This Forth-based computer board is an ideal platform for tinkering with
a variety of breakout boards from Adafruit or other suppliers.
Any board can be connected as long as it supports an I2C bus with 5V signal level.
This includes all STEMMA boards and the newer Qwiic boards which have
level shifters already on the board.
My4TH light has only one IC more than My4TH XS
To add the I2C bus to the My4TH XS platform, I had to add two more digital outputs
to the computer. I did this by adding a 74HC74 dual flip-flop, so the computer
now consists of 15 ICs plus the optional EEPROM.
But wait, two outputs are not enough for an I2C bus! At least one input pin
is needed to read back the data on the SDA line. Since adding another input pin
to the system would require at least one more IC, I decided to do something
different: I now share the single input pin between the serial port and the
I2C bus! Since My4TH can only handle one of these interfaces at a time,
it is possible to share the single digital input.
But there is one drawback - when My4TH is communicating over I2C, the user
is not allowed to type any data into the terminal, otherwise the data on the
SDA line would be corrupted. To solve this problem, I use the TXD signal to
mask the RXD when the I2C bus is active. So as long as the I2C bus is active,
My4TH sets the TXD signal low, which in turn disables a MOSFET transistor so
that the RXD line is disconnected from the digital input. The firmware ensures
that the low signal on the TXD line is always longer than 10 bit times, so
that the serial terminal does not receive a valid data byte. Instead,
the RS-232 interface on the terminal side will see a
"break condition", which is not harmful.
My4TH light has a huge built-in word set. The screenshot shows the word list,
together with some simple Forth examples in the lines below:
The next picture shows a small demo I made for My4TH light to demonstrate
the computer's ability to scan a keyboard matrix over I2C.
The Tic-Tac-Toe game consists of a My4TH light board,
a custom Tic-Tac-Toe game shield and two PCF8575 I2C I/O port expander
breakout boards. One PFC8575 is used to scan the 11 buttons and
to control four LEDs, and the other PCF8575 is used to control the rest
of the LEDs. As you can see in the picture, there are only 4 wires going
from the My4TH light board to the shield, namely +5V, GND, SCL and SDA.
Do you want to build your own Tic Tac Toe game for My4TH light? Here is the
archive that contains all the files needed to recreate the game:
tic-tac-toe_for_my4th-light.zip.
And this is the Forth code for your reference:
tictactoe-game.txt
You can find everything you need to
build your own My4TH light board
in the the download area.
|