Tim's Build Log

Hello World!

I have been doing software development for nearly 25 years, but I am completely new to hardware. I have spent about 2 years hobbying around with some development boards that utilize Xilinx fpga’s. As a software developer, being able to create hardware through programming is very interesting to me. Of course, once I spent time in VHDL and Verilog I discovered that being able to develop logic circuits in FPGA’s did me little good without being able to design a board with the peripherals I want.

In the last couple weeks I have started experimenting with KiCAD. There are plenty of tutorials out there for the software, but none that seem to walk me through enough to do a design which includes an FPGA. I am hoping that some of those gaps get filled in here.

It seems that every project I come up with requires large bandwidth sensors and I “think” FPGA’s are the right tool for that. I am also interested in understanding better how to utilize the wires and connections that I have for higher throughputs.

Perhaps what I hope to get out of this is reaching too far, but I am very excited to have finally found a path to learn more.

1 Like

With the exception of a few “toy” FPGAs (e.g. iCE40-HX1K), most of them come in BGA packages. As a result, PCB layout can quickly get complicated. There are some resources out there for doing a proper fanout from a BGA package (for example, this thread is a good discussion and links to a few pages worth reading: https://forum.kicad.info/t/bga-fan-out-design-with-6-layers-pcb/7642/6).

Additionally, soldering a BGA can be quite hard. Most professional shops use a pick-and-place or special BGA machine to align the part. Trying to align such a package to the footprint with just your eyes can be frustratingly difficult. If you’re able to align the package, you can probably get away with a hot plate or hot air rework station to reflow the solder balls. However, you have no way to ensure that everything reflowed properly without any voids (except maybe plugging in the device and hoping everything works). Many shops use an X-Ray machine to check for proper alignment and reflow. Due to all of this, messing with BGAs with home equipment can be a crap shoot.

Once you start talking about “high bandwidth” signals, you get into the realm of “high speed” design, where the inductance and capacitance of your PCB traces start to matter. From my experience, this stuff seems to start becoming an issue at clock speeds over about 100 MHz. This is a fairly advanced PCB layout topic. If you have access to some expensive equipment (e.g. oscilloscopes with 1+ GHz bandwidth), you can measure some of the phenomena to test your designs. In lieu of that, you’ll have to implement best practices and hope for the best. Here is a good article that introduces high speed design: https://www.analog.com/en/analog-dialogue/articles/high-speed-printed-circuit-board-layout.html

Personally, if I was going to do a project with an FPGA, I would design a board around a dev board (like this one: https://1bitsquared.com/products/icebreaker-bitsy), assuming that the FPGA met my needs. This would save me from having to design for and solder BGA parts at home. However, if I was planning to make something for production, I’d look for an assembly shop that would be able to help prototype, assemble, and test boards with BGA parts.

Hope that helps some!

1 Like

Thank you for the response. If nothing else it gives me hope that what I want to learn is possible even as a hobby. It is tough to start over again, this reminds me of long ago when I struggling to learn to program. I am hoping I can be a bit smarter at learning this than I did code. I learned code the hardest possible way, but I suppose that came with its own rewards.

I knew that soldering these packages were probably going to be beyond what I have the equipment or skill for at least in the beginning so I had planned to use an assembly service. There seems to be several out there that will allow for low volume. I want to get to making something interesting as soon as possible, though I understand blinking lights will be necessary. If nothing else, perhaps it will get me over the paralysis I feel when I get to the part of project where I need a custom board.

I have a SIGLENT 1202X-E and I ordered the AD-2 hoping it would allow me to follow along easier, though by your comment I am guessing neither of these will be fast enough to do high speed circuits. I suppose I shouldn’t worry about that too much until I have finished the basics. I can’t help but wondering what price range I am looking at for an oscilloscope that can work with high speed circuits, assuming they are affordable at all.

I currently have been playing with Zedboards, Arty boards, Ultra-96, and the like. I do have a cmod with an Artix-7 but I suppose I was worried there was no way to deliver a high enough bandwith signal though the single pins. I am confused on just what is required for a high speed signal. Is it possible to solder individual pins and get a good enough connection? I will come back and ask my questions again once I have completed a few courses and I know better what I am asking for.

I am, of course, aware of the ICE40 chips and boards. They are interesting to me, but since everyone has told me “use Xilinx” that it what I am doing until I know well enough to choose for myself.

Here is to hoping at some later post I can look back and at this one and say, “wow I have learned so much”


That Siglent has a 200 MHz bandwidth, which is pretty good. I suppose it depends on what frequencies, throughput, etc. you’re working with on your sensor. If you’re <100 MHz, that should be enough. If you start talking >200 MHz, you’re going to need a better scope (other folks here probably have more experience, but I think most 1 GHz bandwidth scopes start in the $5k range). If you have a big parallel bus (e.g. PCI), you’re probably going to need a logic analyzer.

As for soldering to individual pins, I’m not sure. If you make a good solder joint, that’s usually a plenty good connection for most applications. However, much of it is going to depend on how you route your wires, lengths used, etc. At high speeds, the length of the wire (or traces) starts to matter as well as things like the inductance and capacitance in the wires/traces.

Good luck! Hardware design is a deep, deep rabbit hole :slight_smile: Please report back on your findings and what progress you’ve made!

It is very humble beginnings at the moment.

My shine on board is on the way. I am also playing around a bit with an arduino uno and a breadboard. I am about to open up my AD2 to see what I can do with it. Just the little bit I have done so far has made schematics for the various dev and expansion boards much easier to read.

I started looking into the trace length, routing geometry, inductance, and capacitance; though I my understanding at current is only as far as what I read makes sense, but I couldn’t say it back.

My interest in high bandwidth has to do with cameras. I am interested in using an fpga for sensor fusion/ML/Vision, but even 5mp cameras deliver quite a bit of data. I have the pmod expansion card that lets me plug 4 mipi pcams into my zedboard, but I would like to have access to a dsi as well. I though about trying to make my own daughter board for my ultra96 with 4 mipi csi-2 and 1 mipi dsi, but a quick look at the spec tells me that the 96 boards standard won’t support it. I am not married to making a standard card, but I am not yet sure there are enough pins on the high speed connector.

Also, since I like using artix and kintex fpga’s in way that will require ram than I want to sacrifice in block ram; I will eventually have to be able to create a board that can support bga fanout and ddr.

I was going to invest in one of the new kria boards, but it seems like everything else, those won’t be available until the end of next year. All the same, I would really like to be able to make the board I want so I can get exactly what I want on it.

SOM’s are really attractive, but I don’t know if they will just be a cruch that will stop me from getting a solid understanding of this stuff. Then again, using an SOM and routing the 5 mipi’s to the main board would be a pretty overwhelming challenge for me at the moment as well.

I want to learn this right. Even though I feel like I am learning things that kids in grade school learn at the moment; I am trying to stay focused so that I can get a solid understanding eventually. I am hoping at some point 25+ years of software design proves to be an asset, but the fascination is how in how much of that I can push into hardware.

I also have a huge interest in the open hardware movement that RISC-V has started. I would love to be part of the design for open source IPs to help round out the next generation of open source SoC’s. I realize I can work on this without making any custom board’s, but in as much as this is a hobby project for me I want it to stay fun. That means I want to be able to build fun things.

At the moment I am probably one of countless people interested in the VR/AR technology. I would love to make a headset. Of course, I have already figured out that the optical requirement there makes electronics a small part of a much more difficult problem.

My interim goal is to make programmable toys for my daughter. She is only 2 so she is not likely to be very interested now, but that is ok because I have a lot to learn. I suppose that puts me on the robot/drone path until I can graduate to some of the the bigger problems.

@ShawnHymel Forgive me for being such a blatant fan, but I just connected your name to the Digikey videos I have been watching recently. Among other things, they have made me even more interested in the Lattice FGPA’s. I only recently found your chaneel, so I am not yet caught up, but great videos!

I wish I didn’t feel completely stuck to Xilinx due to needing their free mipi IP. I looked around Digikey for d-phy’s but I couldn’t find any. Perhaps I just don’t know enough to look for the right thing yet.

1 Like

No worries, and I’m really glad you enjoy the videos! I haven’t touched FPGAs since school, so much of it was learning for me, too. Outside of the limited open source FPGA tools, I don’t know how Lattice compares to Xilinx when it comes to IP blocks–you may honestly be better sticking with Xilinx (unless you want to write your own drivers/controllers).

That sounds like a really cool project! Please let us know what you end up making. I’d love to learn more about piping camera data to an FPGA to feed a softcore CPU or ML accelerators.

My shine on board functions as designed! I know it’s not very complicated, but I am super excited about it. Now onto the next project.


I don’t pretend to understand any of the posts above, but it would be great to see photos of your shine on board. Also, did you have any issues along the way or was it a first time success. Congratulations either way!

The forums won’t let me include images or links in my post. Otherwise I would love to post a picture.

This was a success on the first try. The only thing I ran into was that my part database didn’t match the part database in the video. It was not difficult to figure out which parts to use though. Also, the video selects the male connector, but then orders and solders the female equivalent. I actually used the female connector. This meant that I had to additionally select that it should be on the underside of the board so that the pins would line up correctly.

I also did a bit of research to understand ohm’s law so I knew why the resistors were being chosen. It isn’t really that important. I was worried that the led’s I ordered might need different resistors. In the end I found that the 200ohms that the video uses will work for most of the leds out there. I thought about dropping my resistors closer to the output of the ohms law formula so that my leds would be brighter, but in the end I went the safe route and just ordered the 200ohms. On a breadboard I futz’d around with some resistors and leds to make sure that I understood what was going on though.

You will see that my solder job isn’t very good, but it is because I didn’t have my solder iron at a hot enough temperature. The video uses 350 degrees C, but I couldn’t figure out how to switch my solder iron from F. I tried 652 degrees F, but apparently it wasn’t enough. Once I set it to about 700 degrees F I started to have much better luck. Even the bad solder joints work just fine though for this application.

Soldering temperatures are a trigger for me :slight_smile:

Personally, I use 315 degC, which I am reliably informed is 599 degF. The engineers at my work insist on much higher temperatures, however what they achieve is much closer to welding than soldering in my opinion :slight_smile: . I don’t think I can recall ever using a calibrated soldering iron, so of course each iron is going to be slightly different, and choice of tip can affect the temperature reading (only by a couple of degrees though). My own soldering iron has a book that tells you what offset you need to dial in to get the correct temperature reading depending on tip (Pace MBT250). I do have a cheap thing for checking soldering iron temperature but holding the tip with my fingers would probably be more accurate.

For desoldering I will sometimes increase the temperature to 330C (626F), and higher if it is a large part. I would rarely go higher than 350C (662F) though.

If you are using a very fine tip then the temperature will probably need to be higher to get enough heat energy to get the solder flowing. For SMD I like a small chisel tip 1.6mm or 2.4mm, although my favourite is a 1.8mm angled tip that has a small reservoir for drag soldering which works great for normal soldering too. I detest ‘pointy’ tips.

Flux is also your friend - it took me a little while to realise its value, but now I swear by it. And, like anything, practice is the best way to improve. It took me 25 years, but I would consider myself almost competent now :slight_smile:

1 Like

So I am working my schematic for Getting to Blinky since it is a small step up from the Shine On board. The NXP 7555 that is used in the video is listed on Digikey is obsolete, so I am looking at the ICM7555ESA+CT-ND for my build. The datasheet for that chip lists two recommended configurations. Configuration 1b is similar to the schematic in the Getting to Blinky video, but it does not attach to the RST wire. I am assuming that since the video only attached that wire to v+ to keep it from resetting, I should be ok not attaching it? Or am I missing a difference between what the video is trying to accomplish vs the recommended configuration in the Datasheet?

Also, is there a reason I can’t post links and pictures? Can everyone else? I got the mid range account and the AD2 despite the fact I haven’t even completed the free content. I would love to post my schematic so far for someone to look at before I order the board since I am deviating from the video a bit… My backup is to order the breadboard version of the chip, but since mail takes so long at the moment it would be nice to order both at the same time.

I’m not sure. If you bought a CE membership (mid range account?) you should be able to but @ChrisGammell may need to tweak your account settings as the little CE membership logo isn’t appearing in your icon. Either way, he should be able to clarify and you are free to @mention him when needed, especially for account permissions etc.

Unless you are going to use pin 4 as a reset you will want to connect it to V+ and not just leave it unconnected. The ICM7555 is a CMOS device, and the datasheet value of pin 4’s input current is well under 1nA; this tells me that the pin is connected to the gate of a MOSFET, and if left unconnected it is likely to pick up stray impulses from nearby pins and other signals - making the chip susceptible to spontaneous (and unintended) resets. You don’t have to connect it directly to V+; you can use a pull up resistor of 1M or less.

It is weird you didn’t get moved to a Level 1 user autotmatically, you were very active here. But Simon is correct, you also should have had a CE badge, which I just added. You should be able to post photos now.

1 Like


My Shine on board:

1 Like

I am going to change my schematic to attach the RST to V+, but I did want to share what I saw, my current schematic, and make sure I understand how I am supposed to know to do what you are saying.

Here is a snippet of the datasheet:

Here is my current schematic (before I rearrange to add the RST to V+):

I made my symbol so it matches the way the datasheet looks. This has made decluttering it a bit more difficult. I know the design in the schematic doesn’t have to match the footprint, but I was hoping to match the datasheet.

Updated to connect RST to v+:

This is a very simple circuit to look so convoluted and I am sure some of you veterans are cringing looking at it. Please feel free to give me pointers to make it look more correct.

I’m no veteran, but I like a challenge :slight_smile: Here would be my attempt - although it will give a warning in ERC since TRIG and THR end up on the same net. I just used a library 7555 (I’m lazy) so if I was being pedantic I would create my own symbol with threshold and trigger on the same side (preferably left since I think inputs make more sense on the left) and then use a wire to join them so I don’t get the ERC warning. I would also give BT101 a value of the type of battery I was intending to use.

Shine On board looks great!

Couple of things I would suggest - you could do with a little bit more solder on the pins - the nice thing with a ENIG finish is that you can see when you have enough solder when the gold is just covered up. Also, if you use some isopropyl alcohol and a Q-Tip/Cotton Bud you will be able to clean up the excess flux. You get products like Flux Off (I would have loved to be at the meeting where they decided on that name!), but I tend to find they leave the PCB sticky afterwards, whereas alcohol just evaporates.