The bring-up of MAXI000 is still in the very early stages, despite the relatively large amount of bench-time that’s gone by since the boards and other parts arrived. I ended up using jlcpcb.com in the end, as they were a fair amount cheaper then allpcb.com.
The bare boards look great:
And the back:
After trying to use my microscope, previously reviewed in a blog post, to solder up the two FPGAs I encountered an annoying problem: the reach of the stand was not sufficient to view the middle of this board. After contemplating making a new stand from scratch, I came up with a simple solution involving a drill, an M6 bolt, nuts, washers and a old anglepoise lamp. I’m pretty happy with the solution. The focal length on the microscope is longer then the original stand would exersise; it’s useful to raise the microscope quite high off the desk giving a clear view of the whole of an EPF10K20 for alignment prior to soldering, for instance. Needless to say the mount is a little bit “bouncy” as an anglepoise lamp is not exactly a precision instrument but its easily good enough and the reach is now at least three times what it was. At some point I’m almost certainly going to buy a high-end microscope with a viewfinder and camera attachment, but until then I’m happy with my little “hack”.
During the course of attempting to solder the 0.5mm pitch EPF10K20s to the MAXI000 board I managed to ruin no less then two PCBs and three FPGAs. At one point disponantcy started to set in. But I didn’t give up; instead I took it as a big red flag to acknowledge that there were some things beyond my abilities, and to slow down.
I spent more then three weeks practicing and watched endless YouTube videos on the topic of soldering QFP parts and SMT soldering generally. I even went back to basics and taught myself how soldering actually works and learned things that I didn’t know before about flux, wetting, etc.
One standout video is this one which shows the use of some high-end (and obviously expensive) soldering equipment from a company called Pace. The video shows different ways to attach fine pitched QFP parts including the drag method and with reflowed paste. The video is also interesting for the awesome 90s aesthetic; YouTube before YouTube existed, and the way it was created as a promotional video, yet is highly educational as well.
Pace is still going, but the irons and other tools are unfortunately out of my price bracket. I have, though, upgraded my current iron and reflow gun to an integrated unit. It’s still at the top of the budget price bracket but it seems like a pretty big improvement on my old iron, as one of the problems it has is there are basically only two different tips available for it. The unit I bought off ebay came with around 10 different tips:
The other big problem I discovered when attempting, and failing miserably, to solder up the 0.5mm QFP EPF10K20s is with flux. It seems that all flux is not created equal.
In the past I have been pretty sparing with my use of flux, which I’ve discovered is not indicative to good soldering. But even with flux I found it impossible to remove the inevitable bridges that appeared when drag soldering.
After watching a video which reviewed different fluxes – such a video sounds boring but it is actually pretty interesting – I settled on some AMTech NC-599-ASM branded flux, dispensed from a syringe. I’m still not convinced it is a genuine part, but it works well. It can be used to clear persistent bridges, which is something I really struggled with before.
My current technique for attaching 0.5mm pitch QFP parts is a mixture of drag soldering after applying a generous amount of flux along the pins and then going over each pin by dragging, very, very gently, down to the pad to make sure the pad has enough solder on it to hold the lead in place. It is as easy to have too little solder as too much. Clearing bridges can be achieved 9 times out of 10 with just a clean iron tip and some flux. I haven’t had much success with using soldering braid to clear bridges but I think this is down to technique.
And I think ultimately more practice will get me to the point where I can get a quick, solid result with simple drag soldering. I’m not there yet, but I can at least make progress with the MAXI000 board.
Before talking about that, I have also added one other item to the bench: a solder fume extractor/filter.
I probably should have looked at this years ago, but it’s not like I solder every day.
Instead of buying an expensive commercial solution I have gone for the DIY approach. After looking around I found this home made device on a YouTube video and it looked like an excellent one to copy as it should be more effective then a simple fan on the desk, and is relatively cheap. It’s basically a couple of plastic storage boxes, a shorter one on top of a taller one, with an extraction fan – as used in bathrooms – and a couple of carbon filters – as used in cooker hoods. It was quite fun making it. The construction glue used to hold it together, PinkGrip, is not something I’ve used before. It’s smelly, so should be applied outside, but is effective.
In use it seems to work well. It can suck away solder smoke from about 25cm away from the end of the hose which is adequate. I will probably try to improve the suction further by using silicone sealant on the lid of the top box as this is the one weak point in the design.
Because I’m quite pleased with the look of my desk with all its “toys” laid out on it I thought it would be interesting to take a couple of pictures. First up the area where I build my projects:
The air filter box is on the floor with a hole drilled in the desk for the hose. On the desk is the soldering station, microscope and other tools and supplies. I use a heatproof mat on top of a cutting board to protect the desk. One thing I need is a tool rack as I generally just stick everything in a small toolbox. I also now need a new angle-poise lamp!
Here’s a picture of where I play with the projects:
The MINI000 and keyboard is currently still setup here, with the Rigol DS1054 oscilloscope and trusty Saleae Logic Analyser. Also visible is the desktop PSU I finally purchased. It’s a Tenma 72-10480 purchased from ebay. The biggest advantage it has over my previous method of powering projects, with a wall wart, is it can limit the current supplied, which is useful in the event of a short.
Finally, the bring-up of MAXI000, sans the construction problems previously mentioned.
As per the MAXI09 bring-up the first task was to attach the power regulator and related parts. I struggled with soldering the SMT electrolytic capacitors. The amount of paste used has to be exactly spot on. Too little paste and the part will not adhere to the PCB, and too much risks a short (which I had at one point) under the capacitor.
I soldered up the power LED and the LED attached to the Alpha FPGA. I also attached the system clock oscillator, which is also attached to the Alpha FPGA. I’m currently using a 32Mhz can, while will result in a 16MHz CPU clock, as this is what I’ve used previously in the MINI000. I’m concerned a 40MHz clock will push the EPF10K20 -4 just over the edge. Another reason to stick to a lower system clock, at least initially, is that the Logic Analyzer will struggle to capture wave forms greater then 30MHz. I also attached the reconfigure (which will act as a system reset) push button.
Attaching the FPGAs was eventually achieved using the method described above.
The third IC in the JTAG chain is an EPC2 (PDF) configuration flash. This is a PLCC20 part and, unlike with all my other boards, it is soldered directly to the PCB. Unlike the flash memories, the configuration flash is only programmed in the board, hence it can be soldered directly without the use of a socket. This was achieved using the hot air gun. The tricky part, once again, is using exactly the right amount of paste. Aligning the IC is not completely trivial either, but after reflowing it looked good from a visual inspection.
I initially had a problem with the JTAG chain, but after very carefully beeping out the related connections it was established that some pins weren’t properly attached to the pads on the Alpha FPGA. Going over those pins with the flux, a minuscule amount of solder, and the iron finally gave me an intact JTAG chain.
The chain was tested by sending a design which flashed the Alpha LED on and off using a counter driven by the system clock which, again, is exactly how the MAXI09 board was bought up. For completeness the Beta FPGA was also lightly tested by sending a design which set the three expansion IOs to a particular combination. For completeness the EPC2 was also programmed with designs for both FPGAs and it was verified that the designs were loaded in the FPGAs at power up and when the configure push button was pressed.
Here’s a picture of the board as it currently stands:
I like the green LED attached to Alpha, though it is rather bright!
Before talking about the next steps, here is a list of other issues I’ve identified with the board:
- The RJ10 keyboard connector footprint is somehow the one used on the MINI000 IO board and not the correct one used on the keyboard controller board. This will need fixing with the pillar drill, once again.
- Several opportunities to route traces between multiple pads, instead of sending multiple traces between only two pads, were missed. Likewise in a few places traces run near pads when they do not have to. Not big problems at all but I don’t like to push the PCB house’s tolerances when I don’t have to.
- Some silkscreen test point labels have the wrong label on them.
- The PCB design uses very short traces between pads on the FPGA to join them. This is used in a few places for the power pins. Unfortunately these traces make detecting solder bridges very hard to spot, as it is difficult to see (without looking at the PCB design) that a bridge is actually made by a tiny trace and not unintentionally with solder. These connections should have been made by short runs either under or in front of the IC.
Perhaps the biggest issue, though it is hopefully more of an inconvenience then a real problem, is that I should have used bigger pads on the large QFP FPGAs, SOJ memories, and the PLCC devices. This would have made soldering a little easier as the iron tip would have more room. This is especially noticeable on the PLCC parts. Luckily my new soldering station came with a very pointy tip which can just about get into the crease between the curling J lead and the pad, but fixing solder bridges would be easier with deeper pads.
The next step is to solder the MPU and associated resistor packs. The reset handling IC and associated resistors also needs attaching.
After that, a 680000 capable of running code should be achievable with only some ROMs, so the next thing to solder will be the two PLCC flash sockets. I’ll then take my usual approach of getting the user-controllable LED attached to Alpha to flash under MPU control, to demonstrate that the MPU is running. But before attempting to use those in the MAXI000 circuit, I first need to verify that they are programmable in my USB programmer.
After that, SRAM. The flash sockets are rather close to the system SRAM, but it should be easy enough to avoid any damage to them by the hot air by constructing a “heat shield” with some old drinks can or similar.
This leads onto another possible problem with the board: the two SOJ system (and video) memory ICs are only about 3mm apart. Fixing bridges with the iron is going to be difficult. But if I judge the amount of solder paste correctly there wont be any.
And of course after that will be the 16C654 (PDF) QUART.
It’s going to be fun!