Frequently Asked Questions

 

Home

I get asked some or all of the following questions in most every email someone sends me.

 

How big is it?

The active area of the sign measures 36” by 24”. Within this area there are a total of 24,576 pixels or 49,152 LED’s. I don’t know how much it weighs but my arms hurt when I pick it up.

 

How much did it cost to build?

              The first batch of LED modules(192) that I bought cost $2.50 each. The second batch (another 192) cost $1 each. The cost of the modules in total was $672. The FPGA with adapter which drives the panel is made for the company where I work. The one I’m using is an out-of-date revision so I didn’t have to pay anything for it. (I think the cost to the company for one is around $500.) The rest of the bits which make up the sign (perfboard, wire wrap, power supply, processor, DRAM, SRAM, transistors, column driver I.C.s, buffers, etc..) probably add up to around $300 to $350. So, the total cost would then be around $1472. (I’m sure it’s actually higher than that since a lot of the parts came from Radio Shack and they charge an arm and a leg for everything… I just don’t want to think about it….)

 

How much time did it take to build?

              History: I started the sign about 2 years ago. The first version used 74ls374 buffers and parallel busses to drive the columns. The original FPGA was a Xilinx XC4028. The design in the FPGA was schematic based and somewhat synchronous (it was my first FPGA design). This first version barely functioned due to crosstalk and transmission line effects along the parallel busses carrying column pixel data. I tried everything imaginable to cure the noise issues which existed on the first version: termination, additional buffers to reduce loading and decreasing the refresh rate to no avail. I finally scrapped the parallel bus idea about a year ago. The bottom half of the sign including row transistors and modules is from the original. Nothing of the parallel bus circuits remain.

               There have been three processor boards: the first attached to the original sign. It had a 80486 processor and XC4028 FPGA. This board functioned properly, however, I don’t own an in-circuit emulator for the 486 so I was stuck burning and erasing EPROMs. The second board (shown in some of the pictures on the site) had a MC68360, 16MB of DRAM and a Virtex FPGA. I do have an in-circuit emulator for the MC68360 so I was able to test the sign hardware quite easily using this board. The third processor board which I’m currently using has a MC68360, 16MB of DRAM, Virtex FPGA, MC68882 FPU, RTC and a bunch of buffer/drivers to handle the top and bottom halves of the sign.

                I recently purchased a Pentium in-circuit emulator from someone on Ebay and have begun work on a Pentium board to replace the 360 board. So far the Pentium board has 64MB of SDRAM, a 233Mhz Pentium and a Virtex FPGA which provides the interface between the processor and SDRAM. The board is functional but needs more work before I can replace the 360. (Someone with sense might ask why in the world I need a 233Mhz Pentium to run a 192 x 128 LED sign: I’m trying to do 3D stuff with the sign. The 68882 FPU just isn’t cutting it.)

                Anyway, the answer to the question is two years.

 

What’s an FPGA?

               Field Programmable Gate Array: It’s like a blank chip: Any digital circuit you can think of can be fit into an FPGA. FPGAs come in sizes from 1000 logic gates to 10 million logic gates. It used to be that FPGA designs were done in schematic format, however, today’s FPGA designs usually use a hardware description language(HDL) to define the circuitry within the part. The sign FPGA design is written entirely in VHDL. Other hardware description languages include Verilog, Abel and (the newly created) Handel-C. Look around the web for more information about FPGAs and HDLs.

               FPGA manufacturers: Xilinx (60-70% market share), Actel, Altera, Cypress, Quicklogic, others… Xilinx and Altera are SRAM-based meaning that the chip is blank at power-up; the design itself resides in some sort of PROM. The FPGA loads the design from the memory after power is applied. Actel and (I think, although I’m not sure) Quicklogic are fuse or flash based: the design is ‘burned’ into the FPGA using a programmer. These parts do not suffer from the configuration delay incurred from using SRAM-based parts.

 

Which FPGA does the sign use?

               The sign uses a XCV300-BG432 Virtex FPGA made by Xilinx. It has (supposedly) 300,000 gates. The chip is packaged in a 432-‘pin’ ball grid array. The FPGA rides on an adapter module which provides 3.3V and 2.5V for power through two tiny Micrel 39100 series linear regulators. The footprint of the adapter is a 299-pin pin grid array compatible with a XC4028 pin-out. The design is loaded into the FPGA at power-up from a XC18V04 serial flash based PROM. When I change the FPGA design I use a JTAG download cable to program the configuration PROM in-circuit.

 

What tools are used to create an FPGA design?

               I use the Xilinx ISE 5.1 tool suite in combination with the Synplicity VHDL synthesizer, Synplify. Each FPGA manufacturer has their own tool suite. Most tool suites also have the ability to interface with third-party VHDL or Verilog synthesizers.

 

Is that your cat in the picture? What happened to her face? How many toes does she have?

               Yes, that’s my cat. She was born allergic to her own teeth (go figure….)  The vet removed all of her teeth except for one fang (which is non-allergenic?). Her mouth looks the way it does because of the continuous swelling she suffered from when she was a kitten. She has seven claws on each front paw, five claws on one back foot and four on the other. To the best of my knowledge, her parents weren’t related and she wasn’t born on Three-Mile Island (so don’t even ask). (also, I know my rug needs a vacuuming)

 

What LED modules did you use and where did you get them?

               The part number for the modules I’m using is LTP14188A. It’s an 8x8 bi-color module made by the company Lite-On. I purchased them mail order from the electronic surplus company Electronics Goldmine. They’re website address is www.goldmine-elec.com. I don’t think they have any more of the modules I’m using, however they do carry other types. You can also buy LED matrix modules from Jameco, JDR Microdevices, Mouser and Digi-key. Also, sometimes you can find them on Ebay. I would very much recommend staying away from anything that isn’t surplus since new bi-color 8x8 modules generally cost well over $12 a piece. Smaller single color ones (5x7) cost around $3 or $4. The last bunch of modules I bought from Electronics Goldmine cost $1 each. Make sure you look around before committing to a Jameco or a Digi-key……

 

What components are actually driving the LEDs?

               The modules are wired in a matrix format: there are 128 row lines on each side. Along the bottom, driving the columns are 384 column lines (each column has two lines: one line for red and another for green). The row lines are driven by TIP125 Darlington power transistors.

               The sign has a total of 256 power transistors. Row-wise the display is split in half. Each row has a drive transistor for the left half and a drive transistor for the right half. I did this because had only a single transistor been used per row than that transistor could potentially have to drive 384 LEDs at once. Although the TIP125 is rated to 8 Amps, current division and IR losses would cause the side opposite the drive transistor to be significantly less bright than the side nearest the transistor. Also, to further lessen the effects of IR drops along the power rails (which are 16 gauge Monster cable) the left side and right sides are never driven at once: the left side is enabled while the pixels for the right are being loaded. Once loaded, the right side is enabled and the left side is shut off and pixels loaded.  The effect of this is that transients along the power rails are reduced since ‘only’ 192 LEDs are switched on or off at once per row.

                The column lines along the top and bottom of the display are ‘driven’ (I think the right word here is actually ‘sunk’ ) by TLC5921 serial-to-parallel high current-sink I.C.s. They are made by TI. TI  seems to be the only company with an I.C. line geared towards LED panels. The TLC5921 has built-in current limiting and other nice (but somewhat useless) features such as the ability to automatically detect when an LED has been disconnected from one of its outputs. Data is loaded into the part serially. It has a serial clock input, serial data input, latch control input and blanking input. Each TLC5921 has 16 outputs, each capable of sinking well over 100mA pulsed. I think the DC current rating is around 20mA max. Check the data sheet.

                 The sign uses a total of  48 TLC5921s: 24 across the top and 24 across the bottom. Again, because of concerns about IR drops and current division, the sign is split horizontally: During operation, the FPGA loads the top and bottom TLC5921s at once.

                 As can be seen in some of the pictures, the TLC5921s have heatsinks attached to them. The heatsinks are epoxied to the TLC5921s using Artic Silver thermal epoxy. The heatsinks are cheap TO-220 transistor types. The row drivers don’t require heatsinks because they are only pushing current at a 1/64 duty cycle.

 

What’s the refresh rate of the sign?

                  813 hz. The way the sign generates variations in intensity levels demands that the screen refresh rate be high. Each LED on the sign has 16 levels of brightness. The brightness levels are achieved by illuminating or not illuminating an LED over the course of 16 frames. When I was first figuring out how to come up with brightness levels I decided that the refresh rate must be high enough that at the lowest intensity level (LED on once every 16 frames) the LED would not appear to flicker. This means if an LED is on for one frame every 16 frames than 1/16 * refresh rate would have to be greater than the eye’s persistence of vision frequency of  30hz. So: (1/16) *  refresh > 30 or refresh rate > 16*30 = refresh rate > 480hz.  At the lowest intensity level, I don’t directly see any flicker on the sign. Sometimes when I’m working on the sign and the majority of the LEDs on the sign are at the lowest intensity level I sometimes think I see flicker out of the corner of my eye but I’m not sure if this is real or not. (One of the guys at my job insists he can see flicker in an LED running at 50hz so maybe I’m seeing actual flicker but I don’t know.)

 

What type of interface are you using to your PC?

                   There is no real interface to my PC. I did give the controller board an RS-232 link but aside from the sign cam idea, I haven’t found much use for it yet. I use an in-circuit debugger to talk to directly to the 68360. The debugger is made by WindRiver. They make a bunch of different debuggers mostly for Motorola processors. I write software for the design on my PC than download it into the debugger which instructs the processor where to store the code in on-board DRAM. From there I can step through the source code as it executes on the 360 or force the 360 to run the code real time. I write the 360 software in C.

 

What’s the deal with the Sign Cam?

                    At one point I wrote a little Visual C program to check a mailbox at my ISP. The C program would get the subject of the email and send it over to the sign over the serial port. The sign would then display the email subject. I had a webcam attached to my PC and it would periodically take a snapshot of the sign and send it up to my website. For whatever reason (Microsoft! Read Microsoft!) my PC was never able to keep the webcam running for longer than about 45 minutes before it crashed and I had to reboot. Sooner or later I’m going to buy a decent computer with an up-to-date operating system (my PC runs Windows 98) and maybe then I’ll be able to have the webcam up permanently. (Also: I’m also a little worried about leaving the sign on when I’m not around. While the sign has never had a catastrophic failure resulting in fire or smoke, I’m still a little hesitant to leave it on 24 hours a day, seven days a week.)  

 

I’m thinking about building a small LED display, say 50x8….. How do I build it?

                    The best way to do a smaller display is with a microcontroller. You would use power transistors to drive the row lines (eight of them) and then serial to parallel converters for the columns. The microcontroller would be responsible for updating the display by filling the serial-to-parallel converters for each row than incrementing to the next row and filling the serial-to-parallel converters again. The TLC5921 would be a good choice for a column driver as would be the UCN5832/5833 made by Allegro Microdevices. The 5833 is a serial-to-parallel converter just like the TLC5921 except the 5833 has 32 outputs instead of 16. I didn’t use it for the sign because it has a maximum serial clock rate of 5Mhz and I needed to go at least 10Mhz to keep the frame rate up. This limit would not be an issue for a microcontroller.

                     There is a link in the links section of my site to another site describing a smaller character LED sign. You may want to look there for more info. At some point I might make a smaller sign using a microcontroller to put here for instructional purposes but I doubt I’ll get to it any time soon.

 

Here’s a good one that I get a lot: ‘Did you actually solder each LED?!??!’?

                     Nope, they’re modules… see above…. J

 

I want to build a big, huge sign and connect it to my computer as if it were a monitor. How do I do that?

                     I have some ideas but I’m not sharing until I know for sure (don’t want to look stupid and all) Some companies that make large panels which connect to computers or video sources: Trans-lux, Saco-Smartvision (made the monstrous Nasdaq sign in Times Square) (and that big sucker that U2 was toting around a few years ago).

 

Can you send me the code and schematics for your sign?

                    Yes. When I first set up this site I had some schematics and VHDL for the sign available to anyone who wanted it. I took a good hard look at the code and decided that, in the state that it was in I shouldn’t be giving it away as a representation of my work. It wasn’t commented very well and really represented the code of someone who was just learning VHDL. (At the start of the sign I was someone who was just learning VHDL). I’ve since restructured parts of it and commented areas that are a little hard to follow. I’m working on getting block diagrams together to illustrate the major sections of the design in an effort to make the code easier to follow. In the past 6 months I’ve added some more complex bits of VHDL to the FPGA and these sections absolutely require some explanation aside from simple in-source comments. (I just completed a polygon filler for the sign. It is comprised of 14 source files. There is no way simple comments will be able to accurately explain what the module is doing.) I find it difficult to use the time I have available for the sign drawing block diagrams and writing explanations. I’d much rather keep adding new things to the sign. I also don’t want to put the code out there only to get six billion questions about some part of it that could easily have been explained with a simple picture.