CD drive: Difference between revisions

From NeoGeo Development Wiki
Jump to navigation Jump to search
m (Furrtek moved page CD module to CD drive without leaving a redirect)
(4 intermediate revisions by the same user not shown)
Line 1: Line 1:
[[File:Cd2_cdboard1.jpg|thumb|right|CD2 CD drive board.]]
[[File:Cd2_cdboard1.jpg|thumb|right|Top-loading drive control board.]]


Or "CD drive". The part that fails before everything else in [[CD systems]]. Also see [[optical pickups]].
The part that fails before everything else in [[CD systems]]. Made of a control board and an [[optical pickups|optical pickup]].


The NeoGeo CD top-loading model drive was made by Sony. The [[CDZ]] one was made by Sharp ?
The NeoGeo CD top-loading model drive was made by Sony. The [[CDZ]] one was made by Sharp ?


It is made of:
The control board has:
* A 4-bit maskROM MCU (Sony CXP5084), taking care of sequencing and communication (command execution and status report).
* A 4-bit mask ROM MCU (Sony CXP5084), taking care of operation sequencing and communication with the NeoGeo.
* A DSP (Sony CXD2500) to process analog data from the pickup.
* A DSP (Sony CXD2500) to process analog data from the pickup.
* A servo controler (Sony CXA1372) to drive the pickup coils for tracking and focus.
* A servo controler (Sony CXA1372) to drive the pickup coils for tracking and focus.
* A spindle and sled motor driver (Rohm BA6396).
* A spindle, sled (and tray) motor driver.


==Connections==
=Connections=


Some say the protocol was standard for the time, but clear information is hard to find. This was guessed from the [[system ROM]] disassembly and a logic analyzer.
Some say the protocol was standard for the time, but clear information is hard to find. This was guessed from the [[system ROM]] disassembly, Sega MegaCD documents and a logic analyzer.
 
==Top-loading model==


Connector pinout, directions are from CDD (CD Drive) to CDC (CD Controller):
Connector pinout, directions are from CDD (CD Drive) to CDC (CD Controller):
Line 28: Line 30:
| Clock
| Clock
| Output
| Output
| Tells the CDC when to change HOCK
| Communication clock to CDC
|-
|-
| 2
| 2
Line 52: Line 54:
| Clock
| Clock
| Input
| Input
| Tells the CDD data is ready on D0~3
| Communication clock from CDC
|-
|-
| 6
| 6
Line 58: Line 60:
| rowspan="4" | Data
| rowspan="4" | Data
| rowspan="4" | Both
| rowspan="4" | Both
| rowspan="4" | 4-bit data bus
| rowspan="4" | 4-bit command/status data bus
|-
|-
| 7
| 7
Line 76: Line 78:
| Clock
| Clock
| Output
| Output
| I2S bit clock, should be 44100 * 32 = 1.4112MHz
| Serial bit clock, should be 44100 * 32 = 1.4112MHz
|-
|-
| 12
| 12
Line 82: Line 84:
| Data
| Data
| Output
| Output
| I2S data
| Serial data
|-
|-
| 13
| 13
Line 91: Line 93:
|-
|-
| 14
| 14
| MUTE?
| D/M ?
| Signal
| Signal
| Input
| Output
| Put low to gate SDATA ?
| Data/Music. Low during music playback ?
|-
|-
| 15
| 15
Line 121: Line 123:
|}
|}


Some signal has to be "D/M", an output which indicates if SDATA is audio or data. There's a /RESET somewhere also.
Missing: /RESET, C2PO, and 16MHz.


==Communication==
==Front-loading model==


CDD (CD Drive) to CDC (CD Controller, motherboard) communication uses an uncommon scheme, and is handled by the [[system ROM]]. {{Chipname|NEO-MGA}} takes care of the I/Os through registers {{Reg|REG_CDDCTRL}}, {{Reg|REG_CDDINPUT}}, {{Reg|REG_CDDOUTPUT}}.
Connector pinout, directions are from CDD (CD Drive) to CDC (CD Controller):
 
{| class="regdef"
|'''Pin #'''
|'''Name'''
|'''Type'''
|'''Direction'''
|'''Description'''
|-
| 1
| SGND
| Power
| -
| Ground
|-
| 2
| SVCC
| Power
| -
|
|-
| 3
| VCC
| Power
| -
|
|-
| 4
| WFCK
| Clock
| Output
| Write Frame Clock
|-
| 5
| GND
| Power
| -
| Ground
|-
| 6
| SCOR
| Pulse
| Output
| Subcode sync
|-
| 7
| MUTE
| ?
|
|
|-
| 8
| SBSO
| Data
| Output
| Subcode data
|-
| 9
| EXCK
| Clock
| Input
| Subcode clock
|-
| 10
| EMP
| ?
| ?
| EMPty ?
|-
| 11
| DOUT
| Data
| Output
| ?
|-
| 12
| 6MHz
| Clock
| ?
| ?
|-
| 13
| LRCK
| Clock
| Output
| DATA L or R channel (44100Hz)
|-
| 14
| DATA
| Data
| ?
| Data stream
|-
| 15
| BCLK
| Clock
| Output
| DATA bit clock (44100 * 24 * 2 = 2.12MHz)
|-
| 16
| C2PO
| Data
| Output
| Error flag
|-
| 17
| rowspan="4" | DB0~3
| rowspan="4" | Data
| rowspan="4" | Both
| rowspan="4" | 4-bit command/status data bus
|-
| 18
|-
| 19
|-
| 20
|-
| 21
| HOCK
| Clock
| Input
| Communication clock from CDC
|-
| 22
| RESET
| Pulse
| Input
| The name says it all
|-
| 23
| /IRQ
| Signal
| Output
| Asks the CDC for a data exchange
|-
| 24
| L-MUTE
| ?
|
|
|-
| 25
| CDCK
| Clock
| Output
| Communication clock to CDC
|}
 
=Communication=
 
CDD to CDC communication uses a special protocol handled by the [[system ROM]]. {{Chipname|NEO-MGA}} provides the I/Os through registers {{Reg|REG_CDDCTRL}}, {{Reg|REG_CDDINPUT}}, {{Reg|REG_CDDOUTPUT}}.


[[File:Cdunit4bit.png]]
[[File:Cdunit4bit.png]]


* The CDD regularly (~64Hz) sends a low pulse on its /IRQ output to initiate a data exchange.
* The CDD regularly (~64Hz not 75) sends a low pulse on its /IRQ output to initiate a data exchange.
* HOCK goes low, indicating that the CDC aknowledges the request. The 4-bit bus direction is set to CDD to CDC.
* HOCK goes low, indicating that the CDC aknowledges the request. The 4-bit bus direction is set to CDD to CDC.
* CDCK goes low, indicating that the CDD is starting to send its status data (green A). Diagram fix: A should be ready on CDCK low.
* CDCK goes low, indicating that the CDD is starting to send its status data (A).
* HOCK goes high and the CDC reads the status data (A).
* HOCK goes high and the CDC reads the status data (A).
* CDCK returns high.
* CDCK returns high.
* HOCK returns high.
* HOCK returns low.
* CDCK goes low, the B word is ready.
* CDCK goes low again, the B word is ready.
* The cycle continues on for 10 words.
* The cycle continues on for 10 words...


(The delay here is not necessary, but it can be seen on the NeoGeo CD and is caused by the [[system ROM]] program preparing stuff).
(The delay here is not necessary, it is seen on the NeoGeo CD because of the [[system ROM]] preparing stuff).


* HOCK goes low and the 4-bit bus direction is inverted (CDC to CDD). The command data is set (red A).
* HOCK goes low and the 4-bit bus direction is reversed (CDC to CDD). The first command word is set (K).
* CDCK goes low, indicating that the CDD has read the data (A).
* CDCK goes low, indicating that the CDD has read the data (A).
* HOCK returns high.
* HOCK returns high.
* CDCK returns high.
* CDCK returns high.
* HOCK goes low, the B word is ready.
* HOCK goes low again, the B word is ready.
* The cycle continues on for 10 words.
* The cycle continues on for 10 words...


===Status data (green)===
==Status data (green)==


* A: Status
* A: Status
** 0=Stop mode
** 1=Playing data or music
** 2=Seeking
** 4=Paused
** 5=Tray opened
** 6=Comm. checksum error
** 7=Command error
** 8=Function error (mech/laser ?)
** 9=Reading TOC
** 10=Sled moving
** 11=Couldn't focus, no disk
** 12=Sled at edge, end of disk
** 14=Tray moving
** 15=In test mode
* B: Status
* B: Status
* C: Minutes high digit
* C: Minutes high digit
Line 160: Line 326:
* J: Checksum (see below)
* J: Checksum (see below)


===Command data (red)===
==Command data (red)==


* A: Command
* K: Command
* B~H: Depends on command
* L~S: Depends on command (see below)
* I: Checksum (see below)
* T: Checksum (see below)


===Checksum===
==Checksum==


The checksum digit is the sum of all 9 previous digits, + 5, XOR 15, modulo 15: ((sum + 5) ^ 0xF) & 0xF.
The checksum digit is the sum of all 9 previous digits, + 5, XOR 15, modulo 15: ((sum + 5) ^ 0xF) & 0xF.
Line 172: Line 338:
==Commands==
==Commands==


===0: STATUS===
See [[CD drive commands]].
No parameters.
 
===1: STOP ALL===
No parameters. Stops CDDA playback, disk spin, and sets drive in data mode.
 
===2: TOC COMMAND===
D: Command code:
 
====0: GET POSITION====
MSF in status will be the current position from the beginning of the CD (absolute).
====1: GET TRACK POSITION====
MSF in status will be the current position from the beginning of the track (relative).
====2: GET TRACK NUMBER====
Minutes in status will be the current track.
====3: GET CD LENGTH====
MSF in status will be the total CD length.
====4: GET FIRST AND LAST TRACKS====
Minutes in status will be the first track (normally 1), seconds will be the last.
====5: GET TRACK NUMBER====
MSF in status will be the start of the desired track. If the track is a data track, the frames high digit's fourth bit will be 1 (OR 8).
 
===3: PLAY===
* B: Minutes high digit
* C: Minutes low digit
* D: Seconds high digit
* E: Seconds low digit
* F: Frames high digit
* G: Frames low digit
 
Starts playing audio.
 
===4: SEEK===
* B: Minutes high digit
* C: Minutes low digit
* D: Seconds high digit
* E: Seconds low digit
* F: Frames high digit
* G: Frames low digit
 
Sets pickup at desired position.
 
===6: PAUSE===
Pauses CDDA playback (disk keeps spinning).
 
===7: RESUME===
Resumes CDDA playback.
 
===8: FAST-FORWARD===
Unknown.
 
===9: REWIND===
Unknown.
 
===10: INIT===
Sets pickup at lead-in ?
 
===12: CLOSE===
Closes the tray on the front-loading NeoGeo CD.
 
===13: OPEN===
Opens the tray.


==Adjustments==
==Adjustment pots==


To do !
To do !


[[Category:Chips]]
[[Category:Chips]]
[[Category:Repairs]]
[[Category:CD systems]]
[[Category:CD systems]]

Revision as of 22:48, 20 April 2019

File:Cd2 cdboard1.jpg
Top-loading drive control board.

The part that fails before everything else in CD systems. Made of a control board and an optical pickup.

The NeoGeo CD top-loading model drive was made by Sony. The CDZ one was made by Sharp ?

The control board has:

  • A 4-bit mask ROM MCU (Sony CXP5084), taking care of operation sequencing and communication with the NeoGeo.
  • A DSP (Sony CXD2500) to process analog data from the pickup.
  • A servo controler (Sony CXA1372) to drive the pickup coils for tracking and focus.
  • A spindle, sled (and tray) motor driver.

Connections

Some say the protocol was standard for the time, but clear information is hard to find. This was guessed from the system ROM disassembly, Sega MegaCD documents and a logic analyzer.

Top-loading model

Connector pinout, directions are from CDD (CD Drive) to CDC (CD Controller):

Pin # Name Type Direction Description
1 CDCK Clock Output Communication clock to CDC
2 ? ? ? High ?
3 /IRQ Signal Output Asks the CDC for a data exchange (low pulse at ~64Hz)
4 ? ? ? High ?
5 HOCK Clock Input Communication clock from CDC
6 D0~3 Data Both 4-bit command/status data bus
7
8
9
10 ? ? ? ?
11 BCLK? Clock Output Serial bit clock, should be 44100 * 32 = 1.4112MHz
12 SDATA Data Output Serial data
13 LRCK Signal Output I2S word clock, should be 44100Hz. Audio L/R switch for the DAC.
14 D/M ? Signal Output Data/Music. Low during music playback ?
15 GND Power - Ground
16 5V Power - +5V for logic
17 9V Power - +9V for motors and coils
18 GND Power - Ground

Missing: /RESET, C2PO, and 16MHz.

Front-loading model

Connector pinout, directions are from CDD (CD Drive) to CDC (CD Controller):

Pin # Name Type Direction Description
1 SGND Power - Ground
2 SVCC Power -
3 VCC Power -
4 WFCK Clock Output Write Frame Clock
5 GND Power - Ground
6 SCOR Pulse Output Subcode sync
7 MUTE ?
8 SBSO Data Output Subcode data
9 EXCK Clock Input Subcode clock
10 EMP ? ? EMPty ?
11 DOUT Data Output ?
12 6MHz Clock ? ?
13 LRCK Clock Output DATA L or R channel (44100Hz)
14 DATA Data ? Data stream
15 BCLK Clock Output DATA bit clock (44100 * 24 * 2 = 2.12MHz)
16 C2PO Data Output Error flag
17 DB0~3 Data Both 4-bit command/status data bus
18
19
20
21 HOCK Clock Input Communication clock from CDC
22 RESET Pulse Input The name says it all
23 /IRQ Signal Output Asks the CDC for a data exchange
24 L-MUTE ?
25 CDCK Clock Output Communication clock to CDC

Communication

CDD to CDC communication uses a special protocol handled by the system ROM. NEO-MGA provides the I/Os through registers REG_CDDCTRL, REG_CDDINPUT, REG_CDDOUTPUT.

  • The CDD regularly (~64Hz not 75) sends a low pulse on its /IRQ output to initiate a data exchange.
  • HOCK goes low, indicating that the CDC aknowledges the request. The 4-bit bus direction is set to CDD to CDC.
  • CDCK goes low, indicating that the CDD is starting to send its status data (A).
  • HOCK goes high and the CDC reads the status data (A).
  • CDCK returns high.
  • HOCK returns low.
  • CDCK goes low again, the B word is ready.
  • The cycle continues on for 10 words...

(The delay here is not necessary, it is seen on the NeoGeo CD because of the system ROM preparing stuff).

  • HOCK goes low and the 4-bit bus direction is reversed (CDC to CDD). The first command word is set (K).
  • CDCK goes low, indicating that the CDD has read the data (A).
  • HOCK returns high.
  • CDCK returns high.
  • HOCK goes low again, the B word is ready.
  • The cycle continues on for 10 words...

Status data (green)

  • A: Status
    • 0=Stop mode
    • 1=Playing data or music
    • 2=Seeking
    • 4=Paused
    • 5=Tray opened
    • 6=Comm. checksum error
    • 7=Command error
    • 8=Function error (mech/laser ?)
    • 9=Reading TOC
    • 10=Sled moving
    • 11=Couldn't focus, no disk
    • 12=Sled at edge, end of disk
    • 14=Tray moving
    • 15=In test mode
  • B: Status
  • C: Minutes high digit
  • D: Minutes low digit
  • E: Seconds high digit
  • F: Seconds low digit
  • G: Frames high digit
  • H: Frames low digit
  • I: Extension
  • J: Checksum (see below)

Command data (red)

  • K: Command
  • L~S: Depends on command (see below)
  • T: Checksum (see below)

Checksum

The checksum digit is the sum of all 9 previous digits, + 5, XOR 15, modulo 15: ((sum + 5) ^ 0xF) & 0xF.

Commands

See CD drive commands.

Adjustment pots

To do !