While preparing a tutorial I came across an issue with all Digilent IP associated with the 128x32 Monochrome OLED display module that appear on numerous Digilent products.
There are numerous versions of VHDL and Verilog source code to demonstrate how to use the OLED display that have been posted over the years that the display has appeared on Digilent products. Unfortunately, none of them function properly. The most concerning is the manipulation of the Vbatt and Vdd FET control signals. Digilent acknowledges that not observing a recommended power-on and power-off can have deleterious effects on the display hardware over time.
From the PmodOLED Reference Manual: "The PmodOLED has a particular power-on/power-off sequence that must be followed to prolong the life of the display."
From the vivado-library PmodOLED_V1_0 README.md file: "To make sure that the Pmod OLED isn't damaged, make sure to safely quit the demo." I haven't checked this version as it only supports ZYNQ or MicroBlaze designs and the source is in the form of a pre-compiled netlist.
As for the Verilog and VHDL code versions, none of them actually work as advertised. Specifically, there is no power-off activity on the control pins. In the case of the latest published Verilog code the OLEDCtrl.v code has major flaws that prevent if from being suitable for any of the demos.
When there is a possibility of damaging hardware it is vital that the designer actually verify that the design works as intended. I did this using an oscilloscope and by simulation. Obviously, no one at Digilent, including the many coders who've massaged the design, have bothered to do either of those verification steps.
I hacked the OLEDCtrl.v to at least manipulate the display power controls properly, and over repeated power-on and power-off cycles; but the code is so overly complicated and badly structured that I don't have the time to correct it's deficiencies. It's not my responsibility to do this for Digilent IP even if I were so inclined. I thought about writing my own OLED controller but it's beyond the scope of my tutorial.
I suggest having someone completely re-write the OLED controller from a fresh start.
Since it requires absolute timing it should work with any input clock. This can be done with generic or parameter specifications.
Make it simpler so that whoever designs it, or modifies it, can understand what the heck is going on.
Verifiy that the code does what it claims to be doing with a proper testbench simulation
Verify control pin behavior with an oscilloscope.
Given the severity and number of products involved, I'd expect that Digilent would want to address this issue ASAP
Question
zygot
While preparing a tutorial I came across an issue with all Digilent IP associated with the 128x32 Monochrome OLED display module that appear on numerous Digilent products.
There are numerous versions of VHDL and Verilog source code to demonstrate how to use the OLED display that have been posted over the years that the display has appeared on Digilent products. Unfortunately, none of them function properly. The most concerning is the manipulation of the Vbatt and Vdd FET control signals. Digilent acknowledges that not observing a recommended power-on and power-off can have deleterious effects on the display hardware over time.
From the PmodOLED Reference Manual: "The PmodOLED has a particular power-on/power-off sequence that must be followed to prolong the life of the display."
From the vivado-library PmodOLED_V1_0 README.md file: "To make sure that the Pmod OLED isn't damaged, make sure to safely quit the demo." I haven't checked this version as it only supports ZYNQ or MicroBlaze designs and the source is in the form of a pre-compiled netlist.
As for the Verilog and VHDL code versions, none of them actually work as advertised. Specifically, there is no power-off activity on the control pins. In the case of the latest published Verilog code the OLEDCtrl.v code has major flaws that prevent if from being suitable for any of the demos.
When there is a possibility of damaging hardware it is vital that the designer actually verify that the design works as intended. I did this using an oscilloscope and by simulation. Obviously, no one at Digilent, including the many coders who've massaged the design, have bothered to do either of those verification steps.
I hacked the OLEDCtrl.v to at least manipulate the display power controls properly, and over repeated power-on and power-off cycles; but the code is so overly complicated and badly structured that I don't have the time to correct it's deficiencies. It's not my responsibility to do this for Digilent IP even if I were so inclined. I thought about writing my own OLED controller but it's beyond the scope of my tutorial.
I suggest having someone completely re-write the OLED controller from a fresh start.
Given the severity and number of products involved, I'd expect that Digilent would want to address this issue ASAP
Link to comment
Share on other sites
22 answers to this question
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now