LogicStart 7seg display current question


NiklasW

Recommended Posts

Without multiplexing the IO on the 7-seg display the individual segments seams to be very bright.
I dont dare to have them lit continuously.


I took a look at the schematic but I could not figure out the current limiting resistors.
I dont know how much current each segment can handle. (continuously)
 

 

Q: is it safe to light the segment without multiplexing?

 

Best Regards

Niklas

 

 

 

Link to comment
Share on other sites

Hello Niklas,

 

There was a pretty detailed discussion about driving the segments directly in this thread. The conclusion was that its not a good idea to drive them directly, they should be multiplexed instead. We are working on an updated design that adds current limiting resistors so that segments can be driven directly. But with this version we recommend multiplexing, if you do burn out a segment I will of course replace the board.

 

Hamsters eBook has VHDL examples of driving the 7 Segment display and Alvie has a Wishbone core for the ZPUino here. Girish just finished up an Arduino library that he will be posting to the forum any day now.

 

Thanks,

Jack.

Link to comment
Share on other sites

Well you can, in theory, drive the 7 segment display without limiting resistors, if the current does not exceed the LED display's rating. LTC4627 datasheet indicate that the peak forward current is 90mA at 10% duty cycle, pulse length of 100 uS. The total inherent resistance of the current path and the LED's forward voltage drop will ensure that current will not actually go too high if the pulse is sufficiently small. The digit needs to be switched within 3 milliseconds (for 5 digits) to avoid blinking effect.

 

So if you are multiplexing at sufficient speed you can safely use the display without any resistors. Of course it is only possible with a hardware multiplexer core that one can actually drive the LEDs at pulses as small as 100 microseconds, or hardware PWM peripheral to drive each of the switching transistors.

 

As for the new version of the LogicStart MegaWing, we have made some modifications to include a few additions, including addition of current limiting resistors, RGB LED and upgrade to stereo audio and activating the colon/apostrophe on the display. The existing cores and sketches meant for LogicStart v1.2 will not be fully compatible with the newer v2.1 board. The schematics and a test sketch written in pure Arduino code (no FPGA core support) for the AVR8 soft processor and a 7-seg software multipexer library are also included.

 

https://github.com/GadgetFactory/LogicStart-MegaWing-2.1

 

 

Girish

Link to comment
Share on other sites

  • 6 months later...
I've recently bought a Papilio Pro along with the LogicStart Megawing as I've been meaning to get into FPGAs for a while. It's been fun working through Hamster's course/pdf guide but I'm now having problems with the 7 segments display.

 

The problem I'm having is not getting them to light as I want, that's fine, but more that if I turn on 4 or more (3 if any of the other LEDs are also lit) segments simultaneously at a time on any one digit, it crashes the FTDI device and the PC can't see either of the Pro's ports. As soon as I go back to 2 or less segments lit, it re-connects.

 

I am currently multiplexing all four digits (as in Hamster's eBook) and am just displaying the same on each digit based on the state of the 8 switches. I have tried clock speeds from directly using the on-board 32 MHz clock down to a few Hz... same result every time. I've also tried 4 different computers.

 

FWIW, I notice that in the device manager, the root hub states that the device requires only 90 mA... which is surely cutting it a bit fine when using the 7 Segment display?

 

I think it's pretty clear that its a current draw issue, but at the moment short of either using a separate supply to power the board or program the segments to be lit one at a time I'm stuck for solutions.

 

Any ideas?

Link to comment
Share on other sites

I finally managed to sort this out myself. Turns out that it was a hardware problem... with the USB cable that was shipped with the Papilio Pro. To be honest it felt pretty poor quality after seeing that my code worked fine a friend's Pro board that just arrived I figured something weird was going on. After trying various combinations, we found that the 5v net on the board was ~4.7v without any shield plugged in. With the shield plugged in and all LEDs and segments illuminated the the 5v net dropped to 3.2v... nice(!)

Link to comment
Share on other sites

That bad batch of USB cables has caused a lot of people a lot of problems. It's very puzzling how a cable can be so badly made. I'd be very interested to know what caused such a voltage drop over a copper cable. Unless they didn't use copper because it was too expensive. Maybe Jack, if he hasn't tossed all those cables out already, can disect a few and measure the resistance and analyze the internal makeup of the cable, you know, for science :)

Link to comment
Share on other sites

  • 7 months later...

I seem to have burnt out one of the segments of the 0th (3rd?) digit on my logic start - I didn't know about the multiplexing advice before I started playing around with it. I've still got the other 3 digits to work with in the examples in the intro to fpga book, but other owners should definitely be careful and make sure they don't have everything going through a single segment without multiplexing.

Link to comment
Share on other sites

Well, semiconductor junction and constant voltage bias usually don't mix. The temperature coefficient goes the wrong way, the diode starts to draw more current as it gets hotter. Not good.

Seems like an opportunity to improve the design :-)

 

You can probably use the DRIVE= option in the constraints file to limit the current.

See

http://www.xilinx.com/support/documentation/user_guides/ug381.pdf

Table 1.2

I read a default drive strength of 12 mA (which is a bit much for a 7-segment display) but you should be able to dial it down to 2 mA, which sounds about right.

 

DISCLAIMER I haven't checked this in the lab.

 

BTW, my Papilio Pro USB cable was broken, too. Fortunately, in an obvious way.

I guess that's the difference with pro hardware where you could get two Papilios for the price of a dumb GPIO header board for example.

Link to comment
Share on other sites

You can probably use the DRIVE= option in the constraints file to limit the current.

See

http://www.xilinx.com/support/documentation/user_guides/ug381.pdf

Table 1.2

I read a default drive strength of 12 mA (which is a bit much for a 7-segment display) but you should be able to dial it down to 2 mA, which sounds about right.

 

DISCLAIMER I haven't checked this in the lab.

 

 

I did do some testing a while back. Drive strength seems to be the size / area / number of the output FETs that actively drive the output signal. The number seems to be indicative of the current that will be sourced/sinked at pin when the pin is held at the specified high/low voltage level for the chosen I/O standard.

 

So for IOSTANDARD of LVTTL33 and DRIVE=2 a 'high' output this should supply 2mA before the output sags below 2.7V (or whatever level the LVTTL standard requires) , likewise a low output should sink 2mA before it gets higher than 0.6V. This is a dynamic output resistance of about 300 Ohm (0.6V drop from the 3.3V Vcco) .

 

For the 12mA setting this gives a dynamic output resistance of about 50 Ohm. I guess this is how you can get away without using a current limiting resistor when driving an LED with high foreward voltage, as long as the forward voltage of the LED is approximately that of the high level of the I/O standard then you can control the current using the drive.

 

As the LEDs in the Seven Segment display do not have a current limiting resistor they will pull the output signficantly away from the I/O standard's specified high level - especially the base connection on each anode transistor - it will only be 0.7V off of the power rail. The upshot being that the pin will supply far more current then the "DRIVE" setting makes you beleive it will.

 

I would go the for the lowest drive possible, then maybe increase the segment drive strength if they are too dim (and they won't be).

Link to comment
Share on other sites

  • 4 weeks later...

Hi,

 

right.

I tried DRIVE=2 with a 5 mm "Radio Shack" LED (on a LX25) and it got very bright even though its nominal current is 30 mA.

So I wouldn't recommend this. With green LEDs it looks about right. but their threshold voltage is quite a bit higher.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.