Determine the PROM programming pattern for the memory system using TPB28L42, 512×8 PROM as an address decoder

addressingmemory

Question

The following figure shows a memory system using the TPB28L42, 512×8
PROM as an address decoder. Determine the PROM programming pattern for
the circuit.
enter image description here


My Problem

My classmates and I have very different understanding of the programming pattern of a memory system. I think that the following programming pattern is a kind of truth table. A15, A14 and A13 cannot be changed arbitrarily in this question since the real circuitry inside the TPB28L42 will not change according to what we think. My classmates just directly put the higher 7 bits of the address into the table. Why? It seems so odd. Is programming pattern not a kind of truth table?

F0  =  1111  000 0
F2  =  1111  001 0
FC  =  1111  110 0
C6  =  1100  011 0
F8  =  1111  100 0
FA  =  1111  101 0
F4  =  1111  010 0
FE  =  1111  111 0

enter image description here

Best Answer

Your truth table should have the same output as the programming pattern your classmates produced, but there is a subtle difference between them. Each row and column in a truth table can have an arbitrary position (not dependent on those around it) so you can put them in any order.

In general terms, a pattern is an ordered array or sequence. A PROM programming pattern is supposed to map all locations in the PROM in the order that it would normally be programmed. The programmer may have an address counter which can only access locations sequentially, and it may not accept a file format which has random addresses.

The TPB28L42 is a fuse-link PROM which is programmed by blowing titanium-tungsten metal links. An intact fuse represents logic high or '1', while a blown fuse is low or '0'. Therefore only '0' bits need to have their fuses blown. As blowing each fuse takes a lot of current (~250mA) bits can only be programmed one at a time. In your example only 8 fuses need to be blown, with the programmer selecting a different address and bit location for each one. Those fuses could be blown in any order, but the standard programming algorithm specifies doing it in sequence.

Many years ago I built a manual fuselink PROM programmer which had two rotary switches and a pushbutton. Blowing a wrong fuse would render the chip useless, so to make it easier to follow the fuse chart I would first select one bit, then switch through all the addresses that needed that bit programmed (pushing the button several times to blow each fuse). I would then switch to the next bit and repeat all the addresses. Having the chart arranged in an ordered pattern rather than a truth table made the process easier, as I could simply go down each column and across each row in sequence.