|
|
|
|
|
|
|
|
|
MAS3507D DSP - MAS Player Pro
My goal had always been to develop a system using a MAS3507D DSP chip for MPEG decoding. This handy little DSP takes an MPEG stream via a serial input, and spits out the decoded audio in 18bit stereo. The DSP has facilities for volume and tone control, as well as some basic feedback on the MPEG stream and decoding status. Rather than design my own interface for this DSP, I used Dirk Conrad's excellent MAS Player Pro. I was already writing software for this device anyway, so knew all I needed to about it. The MAS Player Pro connects to the parallel port (drawing an external +5-12V for power, in this case direct from the A1200 motherboard floppy port power connector) and has a built in DAC to convert the digital output from the DSP to normal line level analogue audio. The entire device is built into a 25 way d-type enclosure, with the parallel port connector at one end and a 3.5mm sterio output jack at the other. The MAS Player Pro connects various IO pins on the MAS3507D to the parallel port pins. In particular, it connects the serial data input, I2C bus and 'demand' pin. The serial data input is clock doubled, in other words you can clock data with both rising and falling clock edges thanks to Dirk's clever circuit. The I2C bus provides a control interface, and the demand pin lets you known when the DSP needs more data. The DSP itself has a small buffer for MPEG data. The serial interface needs careful timing to work properly, and the I2C bus is unfortunately very slow. Still, it's a useful DSP and means that my computer needs no more than an 68030 processor to work. |
|
|||||||
|
Amiga A1200 030
I had to choose an Amiga to use for the project. My initial idea was to use an A600 030 I had, but I ran into a few problems with it. My MHI driver is optimised for accelerator cards that can hit the CIA chips (and thus the parallel port) every possible bus cycle. The Viper 630 couldn't do this. The other problem with the Viper 030 is that it connects to the A600, which has no proper CPU connector, by clipping over the 68000. There is no easy way to keep it in place, and I was worried that it might get dislodged when the car was in motion. To get around these problems, I simply decided to use an A1200 030. The A1200 is larger than the A600, but still much smaller than most of the PC systems I have seen. I removed the keyboard and floppy drive from the A1200, and applied the PCMCIA reset patch. I put a wire between pins 10 and 2 on the floppy drive port, which makes the A1200 ignore it and not wait when booting up. I noticed that, with some HDs, if pin 1 of the IDE cable was not cut this would prevent the machine from even powering up correctly.
|
|
|||||||
|
Removable HD
The natural choice of HD was a laptop drive, designed to take a few bumps while in use, so the next issue I had to tackle was how to connect the HD to the computer. In order to transfer MP3s to the HD, it needed to be removable so I could easily plug it in to my A4000 or the A1200, as needed. It would also be a good idea to pad it a bit, to help prevent shocks from bumps in the road (and Portsmouth has a lot of those). To this end, I decided to use a small plastic ABS box as an enclosure for the HD, and to use 44 pin d-type connectors to attach it to the IDE cables. I needed 44 pins because I was using a Hitachi 2.5" laptop HD. 2.5" HDs use 44 pin IDE, which is the same as 40 pin IDE but with power on the same cable. I got the d-types, which are quite hard to find, from Frasiers, a local electronics shop which is now sadly closed. Paul Harding helped make the enclosure by cutting out a hole for the 44 was d-type at one end. I put bubble wrap in it to pad it out, and strapped the HD in with a cable tie. The d-types were soldered directly to either end of a 44 way IDE cable cut in half, one end for the A1200 and the other for the HD. I also made up a 40 way IDE cable with an extra Molex power connector for my A4000 which has standard IDE. Needless to say, soldering 136 small wires to connectors with three rows of tightly packed pins was not a lot of fun, but it works!
|
|
|||||||
|
Head Unit MK 1
For data display and control, I needed some kind of head unit. To start with, I got hold of a 20x4 character LCD display with RS232 serial interface from Crystal Fontz in the US. It's basically an RS232 text terminal, with a few extra features like 8 programmable characters and built in bar graph display. The screen has an LED backlight which works really well, and the brightness and contrast are adjustable via the RS232 link. For control, I decided to use two input devices. The first is an IR remote control, which I liberated from a broken Creative Labs Soundblaster. The remote has numbers, standard play/pause/stop/ff/rw, volume up/down, and a few other buttons. To decode the IR data stream I built the Universal IR device, based on a PIC12c508 microcontroller. This handy little unit decodes almost any IR remote into simple six byte serial messages. Since this device is transmit only, and the display is receive only, I could run them both from the internal A1200 serial port. The second input device is a simple potentiometer. I use this for volume control by connecting it to the analogue joystick port of the A1200. I used a 470k linear pot and a 100pF capacitor. I did think about using the pot for some kind of real analogue volume control, but since the IC I needed to do that was hard to get, I just has the software sample it and control the MAS Player volume via the I2C bus. Finally, I decided to add a couple of ultra bright 3mm LEDs. I used a green LED for power and a red one for HD access, both connected to the same header on the A1200 as the keyboard LEDs usually use. To connect all this up, I put a couple of round connectors on the back of the head unit, one for serial and one for the pot, LEDs and +5V power for the LCD display backlight. These turned out to be less than amazing, because the pins on the plug parts are very difficult to solder to. They are basically straight pins with small solder cups at one end, no tags or wrapping points. They are prone to coming unstuck, so I had to firmly clamp the cables in place and make sure they weren't hanging from the connectors.
|
|
|||||||
|
||||||||
|
|