I purchased my Basys 2 from Digilent in 2009 for an FPLD class in undergrad. We wrote some VHDL, worked through the different peripherals on the boards including the initially difficult 4-digit 7-segment display, and generally had a good time in the class. The one drawback I've had with this board since is the requirement to power it from a computer that has the Digilent software (my assumption is the included USB driver). I've tinkered around with trying to get the board to power-up and configure the FPGA for some time now and finally figured out a solution. Here are the steps I took in order to power the board from a USB mini-B phone charger from an old Motorola Razr V3m. I've also tested it with a newer USB-outlet wall adapter and a USB-A to mini-B cable.
The major problem with powering the board from a "dumb" power source is the lack of data connection to the Atmel chip on the board. You may have noticed the board not powering up correctly if the computer did not have the Digilent software installed. This turns out to be a similar case as powering the board from a phone charger. The Basys 2 uses the Atmel AT90USB2-16MU to interface to a PC over USB 2.0 but is also responsible for the enable signal sent to the FPGA power supply. When the Atmel chip does not establish USB communication the FPGA power supply is never enabled. This is somewhat speculation since the Atmel code was not available but there are some hints in the schematic labels.
Sheet 4/7 of the Basys 2 schematics shows the power supply for the FPGA which converts the incoming 5V to 1.2V, 2.5V, and 3.3V for the FPGA. Now notice the USB-ON connection to pins 14, 3 and 10 corresponding to RUN1, RUN2, and RUN3. A closer look at the LTC3545 datasheet shows that these are active-high enable pins with the same voltage rating as VIN, minimal 1uA of input current.
The first test was with the board power by a computer with the Digilent software, normal conditions. Using the LTC3545 datasheet I located the VIN pin to check for 5V and the RUN1 pin (fortunately a via was placed near the pin so getting a probe in was not so difficult) with the power switch off. VIN was at 5V, RUN1 was at 1.25V which wasn't super clear but the FPGA was off so I assumed that was less than the threshold. When I turned on the switch, RUN1 pin went to 3.3V and the FPGA powered on and configured as expected.
The next test I used the phone charger to power the board. With the switch on I connected a jumper from the Battery + header pin to the same via I had just probed, shown in the above picture by the Xacto knife. The FPGA powered on and configured! However, the red LED next to the power switch did not turn on. Looking back at the Basys 2 schematics, this red LED is powered by one of the Atmel pins, not directly from any of the power supply pins.
Now that I had a working solution for powering-on the FPGA from a phone charger I needed to make a final solution. The power switch actually doesn't do anything in this RUN1-jumpered-to-VIN arrangement. All the power switch does is connect PSWT of the ATMEL to USB3V3 (page 3/7 on the schematics). Rather than simply jumping RUN1 to VIN I wanted to use the power switch since it was already there.
| Trace for RUN1, RUN2, and RUN3 (bottom of board) |
| Atmel side of the trace (trace goes through via to top of PCB) |
First step was to cut the PCB trace connecting the RUNx pins to USB-ON at the Atmel. The photo above shows the trace connecting those three pins together then down the board to a via then over to the Atmel on the top of the board. I used the xacto knife to cut the trace a few mm's away from the via in case I ever wanted to mend the trace in the future back to its original condition.
| Cutting the USB-ON trace |
Next I found a short jumper from one of those Radio Shack jumper kits. A smaller gauge would have been easier to solder but I'll get to that. Before I got to soldering I wanted to double check where this USB3V3 was coming from for the switch. The only 3.3V I could see produced was from the LTC3545 power supply but that was labeled VCC3V3 and does not come on without the RUN1 pin. The 3.3V on the switch was there whenever I had a USB plugged in, either laptop or phone charger.
The solution was found in the datasheet for the Atmel AT90USB2-16MU. It has an internal 5V -> 3.3V regulator inside for low-power peripherals. This is labeled on sheet 3/7 in the lower left corner but USB3V3 is on the left side of the chip which made it seem like the 3.3V was coming from somewhere else and powering the chip, this assumption was not correct. The USB3V3 is produced inside the Atmel and brought out to the top of SW8. This was good news: SW8 would have 3.3V whenever the board had 5V from a USB connection and I could use this to power the RUN1-3 pins.
| Internal 3.3V regulator of the Atmel AT90USB2-16MU, the Basys 2 uses the lower configuration |
Now onto soldering the jumper wire. I used a Hakko F888-D with a fine T18-S4 tip. This was helpful getting solder onto the small via on the bottom side of the board. I used some tape to hold the jumper in place while I soldered the switch side.
| Hakko F888-D with T18-S4 tip |
| Added lacquer nail polish to cover bare conductor and strain relief |
And the finished product powered from the Motorola Razr charger and the Digilent USB cable with a Samsung USB wall adapter from a Galaxy S3