First post, by bakemono
So... I designed my first PCB (not counting the homework assignment I had one time where I had to lay out a circuit on a piece of graphing paper). What is it? Well, it's basically an EPROM and a YM2203 on an 8-bit ISA card. The reason I did that is because I felt that an EPROM alone would be too easy and boring, even if it is potentially useful, while the YM2203 was more interesting but not very practical since there is no PC software that uses it. Plus, I wasn't sure if I'd be able to get it to work. In particular I didn't really know what to do with the audio output and the Y3014, as you can see I didn't put in an audio jack or amplification, just a 4-pin header to run to the aux input of another sound card.
As for the board layout, in retrospect many of the traces probably could have been routed more easily by packing them closer together. But I just aligned them according to the grid pitch which was based on the distance between pins on the ICs. Looking at the final product, it somehow seems a lot less complex than it did on the screen when I was continually running traces and then deleting them and running them a different way. The decoupling caps and power/gnd are a bit haphazard, in fact one of the capacitors is missing. I accidentally deleted it in pcbnew and didn't know how to get it back... Later when I checked VCC with a scope probe it didn't look bad, maybe it's fine.
I submitted the gerber files and then after receiving the boards I ordered various components. I soldered everything on, and the first test I did was in a 486 board, with ROM installed but without the FM enabled. The jumpers on the board allow mapping the ROM to C800/D000/D800 and mapping the FM to 180/1C0/380. I left off the jumper for the FM at first, to test the ROM. This worked. Yay 😀 Then I tried it with the FM jumper installed, aaaaand the computer didn't boot 🙁
Turns out I made a mistake in the address decoding. If a memory read happens at an address which matches the FM I/O range then the 74245 activates and tries to drive the bus. Oops. I could fix this with a few wires, but as a temporary fix I just lifted a certain IC pin which effectively disabled the ROM but allows the FM to be accessible.
I think the YM2203 is usually clocked at 3-4MHz? There is nothing like that on the ISA slot. The datasheet said something about dividing the clock by 6, so I thought maybe 14MHz divided by 6 would work so that's how I connected it. Perhaps not. When I installed the card in my 286 and tried to access the FM, I was able to read and write registers which is good. I didn't check the timer IRQ. I briefly tried the PSG audio which did not work, probably because pin 17 is supposed to be connected to something. *shrug* As for FM synthesis, I went into QBASIC and fed it some data from a GYM file. There was a faint, heavily distorted sound coming out. I thought I had to write to a register to enable the clk/6 divider, but it didn't seem to do anything. I couldn't find more info about it, but then I found a YM2608 datasheet which said that the clk/6 mode is the default one. I checked the clock coming out of the YM2203 going to the Y3014 and it was 4.7MHz which I'm sure is too fast.
Trying to come up with an alternative plan, I eventually found out how to make a divider using a 74F74 which I harvested from a junk motherboard. That's the thing with all the red wires. Now I have a 3.58MHz clock going into the YM2203. So I tried to play a GYM file again, the sound is somewhat more recognizable but still very distorted, like it has massive clipping.
For a first board that is partially working I consider this a win 😀 Someday I'll have to learn about opamps and stuff though...