**Problem 1:** A transformer’s windings, when measured individually (all other windings disconnected), have a certain amount of inductance. If you have a 1:1 transformer (both windings have the same inductance) and connect the windings in series, what value of inductance do you get?

**Answer 1:** Assuming you connect the windings in-phase, you’ll have double the number of turns, so the resulting inductance will be about four times the inductance of one winding alone.

If you hook them up out of phase, the inductance will cancel out and you’ll be left with the resistance of the wire and a lot of parasitic inter-winding capacitance.

**Problem 2:** If you connect the windings in parallel, what value of inductance do you get?

**Answer 2:** With the two windings connected in-phase and in parallel, the inductance will be exactly the same as the single-winding case. But the resulting inductor will be able to handle twice the current, as long as the core itself doesn’t saturate.

**Question 3:** Suppose you have a 32-bit word in your microprocessor, and you want to count how many contiguous strings ones that appear in it. For example, the word “01110001000111101100011100011111” contains six such strings. Can you come up with an algorithm that uses simple shifts, bitwise logical and arithmetic operators, but —here’s the twist—does not require iterating over each bit in the word?

**Answer 3:** Here’s a solution that iterates over the number of strings, rather than the number of bits in the word.

int nstrings (unsigned long int x)
{
int result = 0;
/* convert x into a word that has a '1' for every
* transition from 0 to 1 or 1 to 0 in the original
* word.
*/
x ^= (x << 1);
/* every pair of ones in the new word represents
* a string of ones in the original word. Remove
* them two at a time and keep count.
*/
while (x) {
/* remove the lowest set bit from x; this
* represents the start of a string of ones.
*/
x &= ~(x & -x);
++result;
/* remove the next set bit from x; this
* represents the end of that string of ones.
*/
x &= ~(x & -x);
}
return result;
}

**Problem 4:** For the purpose of timing analysis, the operating conditions of an FPGA are sometimes known as “PVT,” which stands for “process, voltage, and temperature.” Voltage and temperature are pretty much self-explanatory, but what does process mean in this context?

**Answer 4:** The term process in this case refers to the manufacturing process at the plant where they make the FPGA. It’s a measure of the statistical variability of the physical characteristics from chip to chip as they come off the line.

This includes everything from mask alignment to etching times to doping levels. These things affect electrical parameters such as sheet and contact resistance, actual transistor gains, and thresholds and parasitic capacitances.

These kinds of variations are unavoidable, and the P in PVT is an attempt to account for their effects in the timing analysis. The idea is to make the analysis conservative enough so that your design will work reliably despite these variations.

*Contributed by David Tweed*