NiklasW

LogicStart 7seg display current question

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

 

 

 

Share this post


Link to post
Share on other sites

I hope someone that have the data on the design can give me a more exact answer.
Type the segment max current is 20mA and if continiously light it draw 25mA or 15mA if it works.

Share this post


Link to post
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.

Share this post


Link to post
Share on other sites

I just realised I did not write proper documentation for the wishbone core. It can be quite hard to understand, cause I also did not comment the code.

 

If you want to use the wishbone core, I'll be glad to document it if you need.

 

Alvie

Share this post


Link to post
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

Share this post


Link to post
Share on other sites
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?

Share this post


Link to post
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(!)

Share this post


Link to post
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 :)

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
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.

Share this post


Link to post
Share on other sites

PS just for laughs: I ordered an Asus Rampage IV Extreme mainboard for my Linux workstation a couple of weeks ago. It has a seven-segment display. And guess what, one LED is broken (among other things, this one is going back under warranty).

Share this post


Link to post
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).

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now