• Bootloader Protocol

    Luke Valenty10/11/2017 at 05:43 0 comments

    I've documented the bootloader protocol a bit more in the GitHub repo: https://github.com/tinyfpga/TinyFPGA-B-Series/blob/master/bootloader/README.md

    If you want to integrate the TinyFPGA B-series into a development platform, you can ideally use the tinyfpgab.py programmer script instead of writing your own.  However, there are some cases where it's just not practical or user-friendly to do so.  In those cases this README should help along with the reference implementation that tinyfpgab.py provides.

  • Open Source FPGA Synthesis Tools (and CLI!)

    Luke Valenty10/10/2017 at 06:42 0 comments

    I have pushed an update to the TinyFPGA B-Series GitHub repository with a template for the open source icestormFPGA synthesis flow.  Take a look at the new README for detailed instructions.

    I've also added support for programming TinyFPGA B-series bitstreams using a command-line interface.  Take a look at the READ for instructions on using the command line interface.

  • Schematic PDF Available

    Luke Valenty10/07/2017 at 03:11 0 comments

    I've finally gone over the schematics of all my projects and organized them a little bit so they are nice and easy to follow.  For people that don't have KiCad installed, making the schematics available in PDF form is much more convenient and easy to share for quick reference.

    You can view the PDF directly on GitHub: https://github.com/tinyfpga/TinyFPGA-B-Series/blob/master/board/TinyFPGA-B.pdf, or you can take a look at the image included below.

    I've also started a new Hackaday.io project, #The Hobbyist's Guide to FPGAs.  I'll be posting articles, tutorials, and hands on labs using the TinyFPGA boards as project logs.  If this sounds interesting to you then follow the project to be updated when new content is posted.

  • Quantity Pricing

    Luke Valenty09/29/2017 at 02:47 0 comments

    Quantity price tiers have now been added for the TinyFPGA B2 on the Tindie store.  For larger orders or resale please contact me directly at luke@tinyfpga.com.

  • Getting Started Guide Updated

    Luke Valenty09/14/2017 at 13:53 0 comments

    I've updated the getting started guide to include installation of @Paul Stoffregen's  Virtual Serial Driver Installer if you use a version of Windows older than Windows 10.  If you ordered a TinyFPGA B2 board and are planning on using an older version of Windows, you will need to install the driver in order to program the board.

    Windows 10 has a brand new USB serial port driver that works for all CDC class USB devices (USB serial ports).  Older versions of windows don't do this because some devices aren't exactly compliant to the CDC class driver and needed special workarounds.  The new Windows 10 USB serial driver gets around this by relaxing its standards a bit and letting devices misbehave a little bit.  This allows them to default to using the universal driver.  Paul's installer installs an INF file that tells windows that any CDC class USB device that doesn't already have a driver specific to its VID and PID can use the generic USB serial port driver.  

    Paul went through all the work to make this installer and get  it signed.  Not only does it work for his Teensy boards, it also works for everyone else that makes a generic USB serial device with a different USB VID and PID.  Thanks Paul!

  • On sale now!

    Luke Valenty08/28/2017 at 18:31 1 comment

    The TinyFPGA B2 boards are available to buy today from Tindie: https://www.tindie.com/products/tinyfpga/tinyfpga-b2/

    Take a look and buy the tiniest FPGA board with this many logic resources!

  • Getting Started Guide

    Luke Valenty08/28/2017 at 16:11 0 comments

    the getting started guide for the B-Series boards has been uploaded to TinyFPGA.com.  Assembled and tested boards will be available to buy on Tindie very soon.


  • Testing Manufactured Boards

    Luke Valenty08/25/2017 at 06:33 0 comments

      The firmware and hardware of the production programmer/tester for the B-series boards is finished.  This is what I use to program the bootloader onto the SPI flash and test all of the components of the board.  The TinyFPGA B-Series boards have many more components than the #TinyFPGA A-Series boards and there is a lot more that can go wrong.  

      During PCB manufacture the final step is electrical test.  The bare PCBs are tested automatically using a machine that probes all of the traces and ensures there are no shorts or opens.  After the board is populated with all of its components further tests must be made.  The connectivity of each of the components must be tested as well as their basic functionality.  This is what the pogo-bed tester firmware currently does:

      1. Test 1.2v and 3.3v levels from the voltage regulators.
      2. Program and read back bootloader bitstream in SPI flash.
      3. Test the clock and PLL by using the PLL to generate a new clock and use a verilog counter to divide the clock into pulses that can be counted by the #Teensy 3.0 & 3.1 & 3.2 & 3.5 & 3.6 microcontroller on the tester.  The PLL needs to be tested because there are external decoupling capacitors on dedicated pins for the FPGA's internal PLL.
      4. Test each of the IO pins to ensure the connection from the through-hole on the board is good all the way to the fabric of the FPGA.

      So far all of the boards are passing, however I anticipate there will be some boards that fail due to one reason or another.  Any failing boards will be analyzed and feedback sent to the manufacturer and/or updates made to the PCB layout.

      With current progress the hardware is ready to be listed on Tindie for sale, however I will need to make sure there is a getting started guide that can get people up and running with the board quickly.

  • Prototype Tester/Programmer

    Luke Valenty08/21/2017 at 05:38 0 comments

      The production tester and programmer PCBs don't arrive from OSH Park until late next week.  I wanted to get a head start so I hacked together a more convenient prototype than a basic solderless breadboard.  This one uses pogo-pins and has all the necessary connections to program and test the board.

      It's an ugly piece of kit, but does the job.  I'm using one of the #Teensy 3.0 & 3.1 & 3.2 & 3.5 & 3.6 boards as the brains of the tester.  Teensy 3.6 is perfect for the task.  It has a built in micro SD card slot, USB device and host mode at the same time, and plenty of analog and digital IO for testing all the pins of the B-series boards as well as any indicators or displays I may want to add.

      I test a board by pressing on it's reset button while pushing it on the pogo pins at the same time. The microswitch will activate when the board is pressed firmly against the pins.  I've found that programming will fail if the board is not firm on the pogo pins.  It takes several seconds per board for the full program, verify, and test cycle.  I may want a lever to hold down the board while it is being tested.

      I ran about ten boards through the programming cycle to find and fix any bugs.  Ultimately one of the B2 boards had a defect.  Looks like a faulty SPI flash chip at this point.  The detailed failure information from the tester says it always fails at a specific address in flash.  Interesting failure.  Maybe ESD related, I'll need to take some more precautions going forward.  Anways I can replace the flash chip at a later date and use the reworked board for a free giveaway.  

      A few more things need to be done before I can list the board on Tindie:

      1. B-Series getting started guide
      2. USB bootloader production testing features
        1. Similar to boundary scan.  Just need the ability to drive and sample pins.
      3. Tester features
        1. Need to add support for USB Host mode to ensure the board enumerates and functions properly after being programmed
        2. Need to test all the IO pins
        3. Need to ensure 3.3 and 1.2 volt outputs are within range
        4. Need to check 16MHz clock
      4. Program/test/package all the B2 boards
        1. This programmer/tester could even be rugged enough for the current run of B2 boards.

      Happy with current progress.

      Stay tuned!

  • Production Tester/Programmer Development

    Luke Valenty08/19/2017 at 06:03 0 comments

      I spent some time last night sketching up a quick PCB for testing and programming TinyFPGA B1 and B2 boards.  I previously made a tester for the TinyFPGA A1 and A1 boards.  I followed the general strategy that sparkfun uses for their boards.  The A-Series tester looks like this:

      I press the board onto the pogo pins, the Teensy 3.0 microcontroller tests all the pins via JTAG boundary scan and lights up the green LED if it passes.  This rig made it pretty easy to test all of the A1 and A2 prototype and production boards.

      The B-Series boards are a bit more complex and have a few more things to test.  Some of the differences:

      1. The iCE40 FPGAs do not have JTAG, so no boundary scan is available
      2. They need to be programmed with the bootloader
      3. They have additional components to test
        1. SPI Flash
        2. 16MHz Clock
        3. 3.3 and 1.2 voltages regulators

      Because of these extra requirements I've decided to upgraded to a Teensy 3.6.  It's probably overkill, but it has the extra pins I needed as well as a built-in SD card slot and high clock speed.  So I can do things like a basic test of the 16MHz clock and output of the voltage regulators.  Additionally the extra pins give me the opportunity for more control and feedback during testing: I can integrate a display for pass/fail information.  I could even have multiple bitstream images on the SD card in case I want to offer pre-programmed designs in addition to the basic bootloader.

      The tester PCB ended up being pretty simple though:

      I will almost certainly be hacking in some changes to the tester once I get it back from OSH Park, but I have already taken too long to make this programmer and so I wanted to start moving faster.  I gave myself a decently sized breadboard area to add any buttons, indicators, or LCD.

      Meanwhile I have a simple firmware development setup for the Teensy.  This will let me have my firmware finished and tested in time for the actual production testing hardware.  I have the bootloader programming portion of the tester firmware complete and am now working on the testing portion.

      The PCBs should come back late next week.  With some luck I'll be able to get it working and list the first batch of TinyFPGA B2 boards on Tindie.