Arduino Mega and SCSI

I have a project where I need to get an Arduino Mega to emulate a SCSI 1 device.

I do not need any storage on the device at all, just to act as a proxy between SCSI and SPI.

I know that the SCSI that I am dealing with is slow only about 50K/sec transfer rate at peak and has no parity to calculate

Can someone please point me in the right direction with documentation as I need to know the timing information on the handshake lines.

The hardware that I am trying to emulate is a SCSI Laserdisc player that just receives simple information about where to start and end playing (Frame numbers) and hands simple data back. I am going to be using a Raspberry PI for the Video side of this project but the PI cant interface to the number of pins on the SCSI so need something in the middle.

As for the circuit diagram I will be using a clone of an eight bit SCSI interface that I have that only needs minimal control lines and deals with all of the termination of the SCSI bus.

For the code side of things I know it wont be simple but I do have the original 6502 assembler available for the host SCSI controller and the original Laserdisc player uses a Z80 internally to decode the SCSI bus and handle comms so may be able to pull the code for that too.

Hope someone can help.

SCSI can have a lot of meanings. http://en.wikipedia.org/wiki/SCSI_connector

Do you have any more info other than "eight bit SCSI interface that I have that only needs minimal control lines" ?

The connector for this project is an IDC 50 Way with the pinout of :

Pin 2: *Data 0
Pin 4: *Data 1
Pin 6: *Data 2
Pin 8: *Data 3
Pin 10: *Data 4
Pin 12: *Data 5
Pin 14: *Data 6
Pin 16: *Data 7
Pin 18: Parity
Pin 20: Ground
Pin 22: Ground
Pin 24: Ground
Pin 26: Terminator Power
Pin 28: Ground
Pin 30: Ground
Pin 32: ATN
Pin 34: Ground (Unused?)
Pin 36: *BSY
Pin 38: *ACK
Pin 40: *RST
Pin 42: *MSG
Pin 44: *SEL
Pin 46: *C/D
Pin 48: *REQ
Pin 50: *I/O

  • means the pins are in use on the SCSI
    all odd pins are ground

The original computer that I am attempting to connect to is a Acorn BBC Master AIV from 1986 and is part of the BBC Domesday Project.
http://www.bbc.co.uk/news/technology-1334819
The online version is only about 80% of one disc and I have 5 discs available to me.

There are only about 15-20 of these complete systems working worldwide and I am looking to emulate the Laserdisc player.

The problem that I have is not so much of the electrical connection but the low level protocol and order of the handshaking on the SCSI bus and more related to the software side of things the arduino.

A copy of the original schematic for the SCSI controller is attached but pin 14 on IC8D should be attached to 0V and not 5V.

The original driver ROM for the SCSI was only 16K and had mouse driver as well as an entire filesystem written within it so storage on the arduino should not be a problem.

AIV_SCSI_R0_Schematic.pdf (140 KB)

Can someone please point me in the right direction with documentation as I need to know the timing information on the handshake lines.

This seems to be your only question. You're asking the people on the Arduino forum to go look up SCSI timing information for you? That's daft.

You should probably look into SCSI specification: http://www.t10.org/drafts.htm#SCSI3_PAR (If you need older specs, please let me know.)

I was thinking, how complicated would be the reverse: Use Arduino as a translator between USB Mass Storage SCSI layer and parallel SCSI host. Such devices were available commercially in past, but now they are all hard to get, and those compatible with most devices are even harder to get.

smally4242,

Did you manage to emulate a scsi device?

I'm interested in doing exactly the same thing but with a Dsub25 SCSI connector instead.

Best regards

Hi,

Although I really want to get further with this project I have not really had the time recently.

I have a 74series based SCSI card made from discrete logic IC's that deals with all of the buffering, termination and electrical characteristics of the SCSI bus and all i need to do now is implement the protocol.

I do know that the DB25 SCSI pin layout is a 1:1 relation to the IDC50 as I have made cables between them (Long time ago) The majority of the IDC pins are either N/C or earth

After speaking to my brother who does far more of this than i do, he has said that I may need to write in either assembler or C++ without using the arduino library for the speed aspect of the protocol and responding to an IRQ on the SCSI bus in time.

If needed then I should be able to supply a schematic of the SCSI board that I have but will have to dig it out of storage and scan it. Not quite this one.... http://www.microcomputer.org.uk/documents/schematics/AIV-SCSI_Host_Adaptor.png That is the original schematic but there is an error on it. From memory i think that IC8 pin14 should be tied to 0V and not the 5V. There is also a small amount of circuit there for replacing the CPU/RAM/Video clock on the BBC Micro that would not be needed.

I did find a 1985 SCSI technical document with all of the handshaking and transfer protocols described in great detail http://www.t10.org/ftp/x3t9.2/drafts/s1/s1-r17b.txt

Let me know how you get on.

Hi,

how did this story end? I'm quite interested, actually, in simulting SCSI interface with Arduino. It would be great to give my old Amiga what it deserves: flashhhhh HD support.

Regards.