Introduction: Make Your Own POV Display
The Perception of Vision (POV) or Persistence of Vision (it has several variations) is an interesting human sight phenomenon which occurs when visual perception of an object does not cease despite the object changing position. Human beings see an image in intervals of fractions of seconds; these images are saved into the brain for very short time (an instant). An example of this phenomenon is when you observe a lighting source such as LEDs or bulbs, turned on and spun around. Our vision is tricked into believing the spinning light is actually a continuous circle, much like the continuous circle formed from a rotating propeller on a plane. POV has been used for many years, beginning with the giphoscope, to make different kinds of illusions and animations to our vision; it is frequently used to show messages and animations on displays using LEDs, spinning them in 2D or 3D for different kinds of messages. The objective of this app note is to design and demonstrate how Perception of Vision works by writing the word “SILEGO” on the display to be built, and give ideas to guide you through the process of making more complex designs in the future. For this project, we used a Dialog GreenPAK™ SLG46880, with its socket kit that allows this prototype to be easy connected to all external components using cables. Using the larger GreenPAK to design general purpose POV Displays is very advantageous because of its robust components such as ASM subsystems, which will allow you to print any kind of pattern on the display. This application will show a final result using a SLG46880.
Below we described steps needed understand how the GreenPAK chip has been programmed to create the POV Display. However, if you just want to get the result of programming, download GreenPAK software to view the already completed GreenPAK Design File. Plug the GreenPAK Development Kit to your computer and hit program to create the custom IC for the POV Display.
Step 1: Schematics
This POV Display example targets a 2D type shown in Figure 1, which has an array of eleven LEDs (each one with resistors to regulate current) connected directly to different GPO pins on the GreenPAK CMIC. The circuit is prototyped and soldered into PCB breadboards. The power supply used for the Display is a 9 V 10 A L1022 Alkaline Battery, connected to a voltage regulator circuit using LM7805V that outputs 5 V. In addition to making the display rotate, a DC Motor is needed with enough strength to move all the control circuitry attached to the customized stand. In this case a 12 V motor was used, connected to a main switch, and an off-the-shelf regulated power supply which outputs different voltage levels through a rotary switch, allowing the motor to rotate at several speeds.
Step 2: GreenPAK Design
When designing different kind of messages and animations for a POV Display using GreenPAK, we should know both the tools and limitations of the chip. In this way we can create a proficient design, using the fewest electronics components to achieve the POV display. This design uses the new advantages offered by the SLG46880 CMIC, with a focus on the Asynchronous State Machine Subsystems component. The SLG46880 ASM Subsystem tool can be more advantageous than previous GreenPAK ASM tools because of its new features, which allow more complex State Machine designs. Some of the relevant ASM Subsystems internal components used are:
● 12-States ASM Macrocell
● Dynamic Memory (DM) Macrocell
● F(1) Computation Macrocell
● State Independent Components
The more state machine macrocells the chip allows to create and configure, the more numerous the design possibilities. Each of the twelve states were used to write different fractions of the word to be shown, turning on/off distinct combinations of the LEDs, some of which were repeated twice or more times, and in some cases the repeated states timing are changed, because the same pattern could be used for different letters at diverse times. States are structured in Table 1.
Table 1 shows how each of the existing states in the design are related to the letters in the word “SILEGO”. This correlates to the LED configuration shown in Figure 2.
As you can observe, all the states together executed at different timing achieves the complete build
of the word, Figure 3 shows how states are connected/related. All state’s transitions are in the order of milliseconds, and each of the columns in the diagram of Figure 2 represents one millisecond (1 ms). Some of the states last 3 ms, 4 ms and others, long enough with the minimum speed of the motor used for the video demonstration at approximately 460 RPM.
It is important to consider and measure the speed of the motor to know and calculate the timing on a
general-purpose design. In this way the message can be synced with the motor speed, thereby visible to the human eye. Another consideration to make the transition of states less imperceptible, and clearer to our vision, is to increase the speed of the motor to more than 1000 RPM, and the states timing set in the order of microseconds so the message could be seen smoothly. You may be asking yourself, how would you synchronize the speed of the motor with the speed of message or animation? This is accomplished by a few simple formulas. If you have a motor speed of 1000 RPM, to know how long the DC motor takes per revolution in seconds, then:
Frequency = 1000 RPM / 60 = 16.67 Hz Period = 1 / 16.67 Hz = 59.99 ms
By knowing the period, you know how long the motor takes in a turn. If you want to print a message like “Hello World”, once you know the period of each turn, it is just matter of how big do you want the message to be on the display. To print the desired message at the desired size, follow this rule of thumb:
If, for example, you wish that the message covers 40 % of the display’s space, then:
Message Size = (Period * 40 %) / 100 % = (59.99 ms * 40 %) / 100 % = 24 ms
That means the message will be shown in 24 ms for each turn, so the blank space or the rest of the space in a turn (if you are not showing something after the message), should be:
Blank Space = Period – Message Size = 59.99 ms - 24 ms = 35.99 ms
Finally, if you need to show the message at that 40% of the period, you need to know how many states and transitions the message will need to write the expected message, for example if the message has twenty (20) transitions, then:
Single State Period = Message Size / 20 = 24 ms / 20 = 1.2 ms.
So each state should last 1.2 ms to display the message correctly. Of course, you would notice that
most of the first designs are not perfect, so you may be changing some parameters during physical testing to improve the design. We used Dynamic Memory (DM) Macrocells to facilitate state transitions. Two of the four DM blocks have matrix connections so that they can interact with blocks outside the ASM subsystem. Each DM Macrocell can have up to 6 different configurations that can be used in different states. DM blocks are used in this design to trigger the ASM to transition from one state to another. For example the Silego  state is repeated twice over the transitions; it needs to write the beginning and the end of the uppercase “I” letter which has the same pattern, but it first needs to go to Silego  to write the pattern of the middle of uppercase “I”, and then when Silego  is executed for a second time, it needs to go to No Message state, continuing the rest of transitions. How is it possible to prevent Silego  from falling into an infinite loop with Silego ? It’s simple, there are some LUTs configured as SR Flip Flops that tells Silego  to not choose Silego  over and over again, but choose No Message state on the second time. Using SR Flip Flops to prevent infinite loops when any of the states are repeated is a great way to solve this problem, and only requires a 3-bit LUT configured as shown in Figure 4 and Figure 5. This process happens at the same time as the ASM output makes Silego  to go to Silego , so the next time the state machine executes Silego , it will be notified to choose No Message state to continue the process.
Another ASM block that was helpful for this project is the F(1) Computational Macrocell. The F(1) can
perform a list of specific commands to read, store, process and output desired data. It is able to manipulate 1 bit at a time. In this project the F(1) block was used to read, delay and output bits to control some LUTs and enable states (such as in Silego  to enable Silego ).
The table in Figure 1 explains how each of the LEDs are addressed to the GPO pins of the
GreenPAK; the associated physical pins are addressed from the ASM Output RAM in the matrix, as it is shown in Table 2.
As you can see in Table 2, each pin of the chip was addressed to distinct ASM outputs; ASM
OUTPUT 1 has eight (8) outputs all used directly connected to external GPOs except OUT 4. ASM OUTPUT 0 has four (4) outputs where OUT 0 and OUT 1 are directly connected to PIN 4 and PIN 16 respectively; OUT 2 is used to reset LUT5 and LUT6 at Silego  and Silego  states and finally OUT 3 is used to set LUT6 at Silego  and Silego . ASM nRESET is not toggled in this design so it is just forced to HIGH being connected to VDD. Upper and Lower LEDs were added to this project to make additional animation while “SILEGO” is being displayed. This animation is about a few lines that are circling over time with the motor’s movement. These lines are white LEDs, while the ones used to write the letters are red. To achieve this animation, we used the GreenPAK’s PGEN and CNT0. The PGEN is a pattern generator which will output the next bit in its array at every clock edge. We divided the motor’s turn period into 16 sections, and the result was set to the output period of CNT0. The pattern programmed into the PGEN is shown in Figure 6.
Step 3: Results
To test the design, we connected the SLG46880’s socket to the PCB with a ribbon cable. Two external boards were connected to the circuit, one of which contained the voltage regulator and the other which contained the LED array. To start displaying the message for demonstration, we turned on the logic circuit which is controlled by the GreenPAK, and then turned on the DC motor. The speed may need to be adjusted for proper synchronization. The final result is shown in Figure 7. There is also an associated video with this application note.
The Perception of Vision Display presented in this project was designed using a Dialog GreenPAK SLG46880 as the main controller. We demonstrated that the design works by writing the word “SILEGO” using LEDs. Some improvements that could be made to the design include:
● Using multiple GreenPAKs to increase the amount of states possibilities to print a longer message or animation.
● Add more LEDs to the array. It may be helpful to use surface-mount LEDs rather than throughhole LEDs to decrease the mass of the spinning arm.
● Including a microcontroller could allow you to change the message displayed by using I2C commands to reconfigure the GreenPAK design. This could be used to create a digital clock display that updates the digits to display the time accurately