#86 LED Matrix is wrong asynchronous memory device

Ilia Lilov

There is the circuit in the attachment to explain my idea; I assume you're viewing that circuit while reading this report.
When Input Format attribute of LED Matrix is "Select Rows/Columns" and Light Persistence more than 0, Matrix actually behaves as an asynchronous memory device. For the case shown in my circuit, we can accept input, which define row number, is an "address" and input, which sets pixels in a row, is a "data". As an asynchronous memory device, a Matrix updates its state as soon as new value is received from inputs. Usually, data and address don't update simultaneously, so it's common case when memory device receives new address while data isn't updated yet; new value will overwrite old one. But in case of our Matrix, new data doesn't overwrite old one: it OVERLAPS (or mixes with) it - "1" eliminates "0" but "0" doesn't eliminate "1" (actually, AND operation performs). I see the obstacle to fix this: there is no definition "who is who": whether row number is an "address" or column number is. The simple solution is to define: row number is an "address", and every new value should overwrite a row if corresponding row number bit is "1". More complex solution is to add an attribute defining "who" is an "address". There is another solution (I guess it's bad): to add clock input to LED Matrix component. Actually, two "working correctly" solutions in my circuit are the attempt to "add" clock input.

Carl, I'm sorry I didn't find this bug when you just added "Light Persistence" feature this summer. It was my job to check this situation. I would to know you decision about this bug soon, since my workbook contains the lab with this sort of using LED Matrix and I have to know whether I have to add this terrible "register solution" or to wait until you will implement good solution.


  • Carl Burch

    Carl Burch - 2010-12-13

    I think the current behavior corresponds more closely with the operation of an actual LED matrix bought off the shelf. That, after all, is the point of the "Select Rows/Columns" option in the first place. In fact, your two-register solution is exactly how I would have suggested dealing with it.

    However, I think I'd agree that it would be nice to have a new attribute to the LED matrix that allows one to select from asynchronous (current behavior) and synchronous (providing an additional clock input, and inputs are read only on a clock edge).

  • Ilia Lilov

    Ilia Lilov - 2010-12-13

    Thank you for answering, Carl.
    Now I think I agree the current behavior is more close to actual LED matrix behavior: "we can illuminate a pixel instantly, but we can't put it out instantly, only by waiting for fading moment".
    I was doubting because 2-register solution seems very homely. Do real LED matrices use this solution or they have any other way to receive row number and column number signals simultaneously?


Log in to post a comment.