TOPOLOGY

Address Descramble

If you access a cell (pixel) in the OpticRAM using an address of zero for both the row and column, the OpticRAM will not physically select Row 0 and Column 0. This is because the internal address decoding does not provide a one-to-one correspondence between the address count and the physical row and column. A simple circuit, consisting of a 7486 and a 7404, performs the necessary code conversion to achieve the desired one-to-one correspondence. See Figure Topology (256k jpeg)

Pixel Layout

One of the primary goals in designing a low cost integrated circuit such as the OpticRAM, is to minimize its physical size. To achieve this goal, the cells in the OpticRAM are arranged in an interleaved pattern. If an image is read out of the OpticRAM by counting successively down the rows and columns, the image will look "fuzzy" around the edges because the pixels will be slightly misplaced in the graphics matrix.

To accomodate the pixel misplacement, the data from the optics must be mapped into the graphics matrix so that the arrangement of the pixels in the graphic matrix matches the physical arrangement of the cells in the OpticRAM. Due to the interleaved cell pattern on the OpticRAM, the array is much longer than it is wide, resulting is spaces between the cells in the column direction. Because of the spaces, the 128 X 256 array of cells will map very nicely into a 129 X 514 matrix. We will call this matrix the Cell Placement Grid.

Cell Placement Grid

The cell placement grid is shown in Figure D-2 below. For a single array, there are a total of 129 rows and 514 columns. Only the corners of the array are shown. The placement grid indicates where the information from each cell in the OpticRAM should be mapped. For instance, if the cell at address Row 1, Column 1, in the OpticRAM is read, the value (a 1 or 0) should be placed in the placement grid at location X=2, Y=3.

When every cell has been read and the values placed in the appropriate locations, about half of the grid remains empty. We will call these empty locations "space pixels." The space pixels can be set all high or all low to provide a light or dark background for the image. Another alternative is to set each space pixel to the level that agrees with the majority of its nearest neighbors. For example, let's say the pixel at grid locations X=2,Y=2 (R1 C1) and X=3,Y=1 (R1 C0) are high, and the pixel at grid location X=3,Y=3 (R3 C0) is low. These are the three nearest neighbors of grid location X=3,Y=2. The majority of these nearest neighbors is high, so the previously empty grid location X=3,Y=2 is set high also. This technique can be applied to all empty grid locations except those near the edge of the array. A modified technique can be used for these edge space pixels, although there is less optical data to work with. Another alternative is to simply not use the edge rows and columns.

Having the cells laid out in the IS32 the way they are, gives the IS32 much greater resolving power than if the cells were laid out linearly.