What is 'drive strength' for? (Spartan 3)

Hi everyone,

I'm building a circuit that will be driving quite a few (>100) LEDs, multiplexed into 3 or 4 groups, so up to 40 at the same time. Can I use the Spartan 3 'Current drive' option to limit drive current to these LEDs to e.g. 24 mA ? I'm hoping to limit the number of external components that I'll need. I've set the IO standard of the ports in question to LVCMOS33 and set

24mA, but the port drives at least 70mA trough a LED and amp-meter connected to ground. Setting a lower value for drive current does decrease the drive, but it stays significantly above the value I set - and I'd rather not ruin my LEDs or, even worse, FPGA.

So I'm probably misunderstanding the way 'drive limit' is set or supposed to be used. Could anyone enlighten me?

Regards, Paul Boven.

Reply to
Paul Boven
Loading thread data ...

Paul,

Drive strength sets the worst case minimum current that will be available.

Worst case is measured at hottest temperature, worst (slowest) process, and lowest IO voltage.

So, for example, if we are designing ICs that have to meet mil spec (125C), over all process, and over +/- 10% IO voltage variation, the actual current at 25C, nominal process, and nominal IO voltage will be substantially larger.

If you use DCI, you can actually set the output resistance by setting the drive impedance with the external resistors....but Spartan 3 does not have DCI, so that won't help you there. Sorry. DCI (digitally controlled impedance) is a useful feature offerred in the Virtex line, but not in the Spartan line.

So, all you have to play with is drive strength (you could set it to 2 mA, or the lowest setting), and the Vcco voltage. By setting the drive to the lowest possible setting for the highest possible Vcco (eg 2 mA at

3.3 V) by lowering the voltage to 2.5V, you will now be much lower current than the operation at 3.3V (and the IOB will still work just fine, as the difference between 3.3V and 2.5V IO standards is how many transistors to turn on in parallel: it takes more to drive the same current at lower voltages).

The brightness will vary with chip to chip (process variations) and also will vary with chip temperature.

Austin

PS: did you know that the Christmas Lights video that went around recently was done in Cincinnati, Ohio, and used Spartan 3 demo kits to control banks of triacs? What some people have time to do is amazing!

formatting link

Paul Boven wrote:

Reply to
Austin Lesea

Spartan 3 does have DCI ...

Sylvain

Reply to
Sylvain Munaut

Oops...I couldn't find it on the data sheet,

Aust> Aust>

Reply to
Austin Lesea

Paul Boven schrieb:

In a spartan-3 you have a hell lot of logic. So if it is just the number of external components that you want to minimize, you can do the following:

- connect the vcc side of all leds together and connect them to vcc via a common resistor. Add a large capacitor to the common node.

- use differential input pair, a resistor and a capacitor to build a sigma delta ADC to measure the voltage at the common node. The voltage drop on the resistor is proportional to the current.

- use a delta sigma or PWM modulator on the LED-pins to set the current to the desired value for a single LED times the number of LEDs that is currently turned on.

This approach uses only 4 external discrete components in addition to the LEDs.

Kolja Sulimma

Reply to
Kolja Sulimma

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.