04-07-2009 02:31 PM
Hi,
I'm working with a sbRIO 9641 system, and I'm getting some very odd flickering from my digital I/O pins. I'm trying to send data from a microcontroller to the FPGA, but some of the I/o lines flicker on even when I'm holding them low. Any idea how I can solve this problem?
04-08-2009 11:47 AM
Hello,
This is interesting. What do you mean by flickering exactly? Do you mean a quick pulse? If so, is it random or periodic and how fast of a pulse is it? Also you mentioned that you are trying to send data from a microcontroller to the FPGA. If so, then the microcontroller must be driving the line and is likely reponsible for this behavior somehow. One possible workaround would be to implement some form of debounce filtering in the FPGA so that it essentially ignores the 'flicker'. Hope this helps!
04-08-2009 06:22 PM - edited 04-08-2009 06:22 PM
I do not think it is the MC because when viewing the lines with an Oscillscope I notice no noise that could cause the flickering. Additionally, it appears to work correctly when there is just one loop reading in the inputs, but when I add another parallel loop outputing a very fast clock (~6 MHZ) on PORT0/DIO4 the flickering appears. Could internal noise generated by that fast clock be causing interference on the lines?
04-09-2009 01:11 AM
[different member working on ohmsean project]
Actually, I do notice some noise on the MC driving the line. When the lines are connected and the FPGA is not running, there is minimal noise. It is only when the FPGA is also running that the noise appears on the line. Would applying some sort of low pass filter to remove the noise help? How can I do this in labview FPGA?
04-09-2009 02:32 PM
04-09-2009 06:53 PM
Hmm, that is interesting. There are a couple of things I would do to fix this problem. The first would be to try and separate these channels as much as possible. I would try insulating them from each other and putting them in DIO ports that are not adjacent.
The other thing I would do would be to implement some form of debounce filtering on the FPGA. Essentially, if you know the highest frequency signal you would expect on a port, you can poll the DI and only accept it as an input if it constant for a certain amount of time (a time less than your shortest valid signal period). As long as these noise spikes aren't constantly happening, you will be able to ignore them. I hope this helps!