3.15 Add 68881 FPU Add 68881 FPU to an Atari
Adding a 68881 Math Co-processor
This describes how you can get a 68881 coprocessor to work with
your Atari 1040 or similar. Basically what you have to do is this; in
the following I am using '*' for the inversion of a signal:
AS* is decode from address 0xFFFA40.
Only bits A23-A5 are used though. To do this I used two 74HC133 13
I/P nand gates, oring the two outputs together using a 74HC32. Also
FC0-FC2 are inputted to the 133's, decode as x01, i.e. do not use FC2
and invert FC1. A single 74HC04 will provide the inverters for the
address decode and FC1.
DS* is just the AND of UDS* and LDS*.
Other than this, the signals need to be connected just as shown in
the 68881 data sheet (you'll need a copy of this, if only for the
68881 pinout). The following shows the connections I used, with
MC68000 pins on the left and MC68881 pins on the right. I soldered 2
26 way IDC cables with connectors right onto the 68000 pins (crude but
my 68000 was not socketed, so there wasn't much choice). The use of
IDC connectors is recommended as at least you can unplug your atari
and use as normal while you're checking your circuit. I built it on a
small piece of board with plated-thru holes. If you can make PCB's so
much the better, please send me one!
I buffered the clock from the 68000 using a spare AND gate in the
74HC08, since with 8 inch leads the signal was a bit flaky, giving me
errors at first.
Here's the complete schematic, there may be one or two 68000 -
> 68881 signals that I have forgotten (I'm working from memory
here, I'll check it over the weekend). If I have forgotten anything
important I'll remail you.
I tested it with a simple Laser C program linked with the lib881.a
library. A test of about 1000 log, exp etc. double precision
operations took 7.00s with the standard lib (libc.a) and 0.53s with
lib881.a. Pretty impressive, huh?
Keith Sabine (keiths@cadence.com)
FC2 --- FC1 ---|>o----| | FC0 ----------| | A23 ----------| | A22 ----------| | A21 ----------| | 74HC133 A20 ----------| |)O------------- A19 ----------| | | | A18 ----------| | | | A17 ----------| | | | A16 ----------| | | | Vcc ----------| | | | Vcc ----------| | | | Vcc ----------| | | | 74HC32 ----| )------- AS* ----| | | A15 ----------| | | | A14 ----------| | | | A13 ----------| | | | A12 ----------| | | | A11 ----------| | | 74HC133 | A10 ---|>o----| | |)O------------- A9 ----------| | A8 ---|>o----| | A7 ---|>o----| | A6 ----------| | A5 ---|>o----| | Vcc ----------| | Vcc ----------| 74HC08 UDS* ---------| |)---------------------------- DS* LDS* ---------| D0-D7 ------------------------+------------- D0 - D7 | | D8-D15 -----------------+------------------- D8 - D15 | | | | | ------------- D16 - D23 | | -------------------- D24 - D31 RESET* ------------------------------------- RESET* 74HC08 CLK ------+----| | |)--------------------------- CLK -----| DTACK -------------------------------------- DSACK1* R/W* --------------------------------------- R/W* Vdd ---------------------------------------- SIZE Gnd ---------------------------------------- A0
Copyright © Robert Schaffner (doit@doitarchive.de) Letzte Aktualisierung am 23. Mai 2004 |