03/21/2017 at 00:56 •
A summary of my design thus far (work very much in progress)
- 8 channels of digital audio (considering upgrade to 16 or more)
- Backplane with PCI-express connectors (cheap connector with many pins, saves cost on module)
- Daisy-chain modules to allow DSP of any input (or no DSP module at all)
- Module capability discovery via I2C/SPI EEPROM- Minimal work required of CPU (e.g. choice of Arduino, Raspberry Pi, maybe 6502 if you can bit-bang the bus)
Vague block diagram:
(signal flow is from left to right, my drawing tool was too tedious to add arrows)
Control module may or may not also act as an input module (signal source).
03/26/2017 at 06:08 •
Today I worked on a PCB for proof-of-concept, essentially it will be an adapter to a Raspberry Pi header.
One module will have a Raspberry Pi, one module will have a Pi DAC module.
Once this is working, I will be able to use it to check other custom modules.
So far I have discovered one problem, that using a PCIe x1 connector probably isn't going to allow me to use more than one signal source. Pretty much all the pins are used up with 8 channels of audio, all using the same clocks. I suspect it will be impractical to sync multiple sources with the same clock (although I will look into it), so I will probably have to go to a bigger connector to allow multiple sets of 8 audio channels. Maybe I'll go for a few sets of stereo and a couple of 8 channel sets (or is stereo falling out of favour?)
Schematics are on github, unfinished, not laid-out yet.
Next: Finish schematic, layout, send for manufacture.
04/06/2017 at 22:07 •
After a minor glitch (forgot to export the soldermask layers), the first PCBs are now being made at @Seeed Studio.
The backplane has four PCIe 1x slots, plus debug headers.
The modules are just adapters from Raspberry Pi header to my draft PCIe 1x specification. During the process of designing the PCBs I found a few signals were pretty hard to route (I'm only using 2 layers to keep the costs down), so I think I'll re-map some pins and go to a bigger connector for the next version.
PCB designs are not updated in Github yet, I'll do that this weekend.
04/10/2017 at 10:59 •
PCB designs are now up on github, and manufacture is underway, hope to get them in a couple of weeks time.
04/11/2017 at 11:32 •
I'm using the Explore EP91H0 chip, because it's the simplest way I could find to add HDMI ARC (that's all the chip does, no video stuff).
What's ARC? "Audio Return Channel". When you plug your amplifier to your TV with an HDMI cable, the TV is able to send audio *back* to the amplifier, despite the TV's HDMI socket being an input (in HDMI parlance the TV is a "sink", and the amplifier is supposedly a "source").
I've also made the schematics a bit modular, using a common sheet for stuff that I expect to be used on most modules (in future I will refine this with further sub-sheets for mandatory / optional bits).
04/23/2017 at 06:24 •
First draft of the HDMI ARC module PCB layout is done. All parts are on the top side, but I did have to use one wire jumper (for the "module enable" signal, very low speed so no problem). It's up on github.
I realised I could make the ARC chip (Explore EP91H0) function as either transmit or receive by adding a couple of resistors, so I did that. Might come in handy for testing (rather than risking damage to my far-too-expense TV, the only device I have that currently supports ARC).
I'm using the good old CS8416 for SPDIF to I2S conversion, because I still have one in my parts drawer from my last DAC project.
The Raspberry Pi adapter boards and backplane are apparently in transit. So, if I'm lucky they'll be here in a couple of weeks...
Next move: finish the layout of the ARC module (cuts & silkscreen). Might throw in a few guard traces around the high speed clocks if I remember to...
05/09/2017 at 10:40 •
Some good progress over the last few days. PCBs arrived, and I've assembled them - cut down a bit, I left out the bus switches for two reasons:
1. they aren't needed with only one input & one output.
2. I didn't have them.
So the first modules are essentially a weird looking Raspberry Pi add-on. One mistake I did make - no +5V. My backplane spec didn't include 5V because most parts I'm looking at using are quite happy at 3.3V. But maybe that was a mistake. Anyway, easily fixed for now with a piece of wire, and music now comes out of my DAC!
Next: I2C comms from the Pi to the IO Expander / EEPROM chip that will eventually serve as module ID & control.