Serial access memory with column address counter and pointers

Abstract: A serial access memory has multiple memory blocks, each with a row-and-column array of memory cells for storing data. Data access is synchronized with a clock signal. A column address counter counts the clock signal to generate a column address. A block selector decodes upper bits of the column address to generate a series of block select signals, which are distributed to the memory blocks. In each memory block a shift register receives and shifts one block select signal to generate a series of column select signals.

Description: This invention relates to a method of selecting successive columns in successive memory blocks in a serial access memory and a serial access memory for accessing data in synchronization with a clock signal. An example of a serial access memory is a first-in-first-out (FIFO) memory that stores serial input data in synchronization with a write clock, and provides the same data in the same order as serial output in synchronization with a read clock. Such memories are often used as line memories or frame memories in image-processing apparatus. The memory stores data in a row-and-column array of memory cells. In access to a given row, successive columns in that row are selected by shifting a pulse through a shift register clocked by the read or write clock. The shift register is configured as a ring counter, so that it repeatedly selects all columns in ascending order. If the memory capacity is large, practical design considerations require the array to be subdivided into blocks, each block having its own shift registers for read and write access. The shift register design must now be modified, because each row extends through a plurality of blocks. The conventional modification connects the output end of each shift register to the input end of the shift register in the next block, so that a plurality of shift registers form a single ring counter. This leads, however, to two problems. One problem is that, especially when the number of blocks is large, highly contorted wiring schemes are needed to interconnect the shift registers for read access into one ring and the shift registers for write access into another ring. Another problem is that the interconnecting signal lines become so long that their parasitic resistance and capacitance slows down the operation of the memory, setting an undesirably low maximum frequency on the read clock and write clock and limiting the serial access rate. In view of this, it is an object of the present invention to provide a method of selecting successive columns in successive memory blocks in a serial access memory and a serial access memory for accessing data in synchronization with a clock signal, whereby the design of the serial access memory is simplified by eleminating interconnections between shift registers. In particular the operating speed of a serial access memory is to be raised. A method for solving this object is characterized in claim 1 whereas a memory for solving the problem is characterized in claim 7. Particular embodiments of the invention are characterized in the dependent claims. Preferred embodiments of the invention are now described with reference to the drawings in which: Fig. 1 is a general block diagram illustrating the invented serial access memory. Fig. 2 is a more detailed block diagram illustrating a memory block and its row-selecting circuits. Fig. 3 is a more detailed block diagram illustrating column-selecting circuits. Fig. 4 is a circuit diagram of the block selector in Fig. 3. Fig. 5 is a timing diagram illustrating the operation of the column address counter and block selector. Fig. 6 is a circuit diagram illustrating a configuration of the shift register in Fig. 3. Fig. 7 illustrates a modification of Fig. 6. The invention will now be described with reference to the attached drawings. These drawings are not to be interpreted as restricting the invention: for example, the drawings will show a serial access memory with only four memory blocks, but the invention can be practiced with memories divided into any number of blocks. The scope of the invention should be determined from the appended claims. Referring to Fig. 1, each of the four memory blocks MB1, MB2, MB3, and MB4 comprises a memory cell array 2 and two shift registers 4 and 6. The shift register 4 will be referred to as the read pointer; the shift register 6 will be referred to as the write pointer. Each memory cell array 2 has memory cells arranged in, for example, two hundred fifty-six rows and two hundred fifty-six columns. The read and write pointers 4 and 6 select the columns. The memory also comprises a read column address counter 8, a write column address counter 10, a read block selector 12, and a write block selector 14. The read and write column address counters 8 and 10 are ten-bit counters. The read column address counter 8 is incremented by a read clock signal RCK; the write column address counter 10 is incremented by a write clock signal WCK. The read block selector 12 receives the two upper bits of the read column address count generated by the read column address counter 8 and decodes these two upper bits to generate four read block select pulses RBS1, RBS2, RBS3, and RBS4, which are supplied to the read pointers 4 in memory blocks MB1, MB2, MB3, and MB4, respectively. The write block selector 14 similarly decodes the two upper bits of the write column address count to generate four write block select pulses WBS1, WBS2, WBS3, and WBS4, which are supplied to the write pointers 6 in memory blocks MB1, MB2, MB3, and MB4, respectively. Fig. 2 shows in more detail the circuits associated with a memory cell array 2 for selecting rows and transferring data. The rows correspond to word lines WL, which cross the memory cell array 2 in the vertical direction in the drawing. Columns correspond to bit lines BL, which cross the memory cell array 2 in the horizontal direction in the drawing. Memory cells are disposed at the intersections of the word lines and bit lines, each memory cell being coupled to one word line and one bit line. Rows are selected by a read row address counter 16, a write row address counter 18, an address multiplexer 20, and a row decoder 22. The read and write row address counters 16 and 18 are up-counters that generate, for example, eight-bit row addresses. The address multiplexer 20 selects the row address output from either the read row address counter 16 or the write row address counter 18 for provision to the row decoder 22. The row decoder 22 decodes the provided address and drives one of the word lines WL to the active state. Bits of read data are transferred out of the memory cell array 2 to a read data bus DBR by a transfer circuit 24, a line buffer 26, an input/output (I/O) circuit 28, a driver circuit 30, and the read pointer 4. The transfer circuit 24 comprises switches, such as transistor switches, that all turn on or off simultaneously. The bit lines are coupled through these switches to the line buffer 26, which is a parallel register for storing two hundred fifty-six bits of data. The line buffer 26 is coupled through switches in the I/O circuit 28 to the read data bus DBR. The read pointer 4 selects one column at a time, causing the driver circuit 30 to turn on one switch at a time in the I/O circuit 28, thereby transferring one bit at a time from the line buffer 26 to the read data bus DBR. Bits of write data are transferred from a write data bus DBW into the memory cell array 2 by the write pointer 6 and a driver circuit 32, an I/O circuit 34, a line buffer 36, and a transfer circuit 38. The write pointer 6 selects one column at a time, causing the driver circuit 32 to turn on one switch at a time in the I/O circuit 34, thereby transferring one bit at a time from the write data bus DBW into the line buffer 36. From the line buffer 36, the data bits are transferred all at once via the transfer circuit 38 into the memory cell array 2. Fig. 3 is a more detailed block diagram of the read pointer 4, read column address counter 8, and read block selector 12, which select columns for read access. Details of the write pointer 6, write column address counter 10, and write block selector 14 are similar, so a separate drawing will be omitted. The read clock is a complementary clock comprising two mutually inverse clock signals RCK and RCK . The read pointer 4 is a shift register comprising two hundred fifty-six stages S 0 to S 255 , which are clocked by the read clock signals RCK and RCK so as to shift data from S 0 toward S 255 . Column select signals CS 0 to CS 255 are output from the corresponding stages. The column select signals are active low. The read column address counter 8 comprises, for example, flip-flops R 0 to R 9 cascaded so as to count cycles of the read clock signal RCK. The count held in the read column address counter 8 is a ten-bit column address. The flip-flops are synchronized by RCK and RCK so that transitions in the count occur at, for example, the fall of RCK. The flip-flops R 8 and R 9 output two pairs of complementary signals denoted RY8, RY8 , RY9, and RY9 , representing the upper two bits of the column address. The read block selector 12 comprises four unit decoders D 1 , D 2 , D 3 , and D 4 , which decode RY8, RY8 , RY9, and RY9 to generate the block select pulses RBS1, RBS2, RBS3, and RBS4. Fig. 4 shows the circuit configuration of the unit decoder D 1 . A two-input NAND gate 40 performs a NOT-AND logical operation on RY8 and RY9 and an inverter 42 inverts the result to generate a first signal A. A delay line 44, comprising three inverters 46, 48, and 50 coupled in series and capacitors 52 and 54 that capacitively couple the outputs of the inverters 46 and 48 to ground, inverts A to generate a second signal B. A two-input NAND gate 56 performs NOT-AND logic on A and B to generate a third signal C. A flip-flop 58 clocked by RCK, comprising cross-coupled NAND gates 60 and 62, outputs the inverse of C as the first block select signal RBS1. More precisely, the flip-flop 58 outputs the inverse of C when either C or RCK is low, and holds its existing output state when C and RCK are both high. The other unit decoders D 2 , D 3 , and D 4 have the same circuit configuration but different pairs of input signals, as indicated in the drawing. Fig. 5 illustrates the operation of the read column address counter 8 and read block selector 12. Originally RY8 and RY9 are both high and RY8 and RY9 are both low, indicating that the upper two bits of the column address are both one's. In Fig. 4, the first signal A is low, the second signal B is high, the third signal C is high, and RBS1 is low. Eventually the read column address counter 8 increments from a count of all one's to a count of all zero's, causing RY8 and RY9 to go low and RY8 and RY9 to go high, the increment occurring at the fall of the read clock RCK. In Fig. 4, the first signal A goes high. Both inputs to the NAND gate 56 are now high, so C goes low and RBS1 goes high. Next RCK goes high, then B goes low and C goes high, but the flip-flop 58 holds RBS1 high until RCK goes low again. In this way the unit decoder D 1 produces a block select pulse RBS1 with a pulse width of one cycle of the read clock RCK. After two hundred fifty-six RCK cycles, only the first two of which are indicated in Fig. 5, RY8 goes high and RY8 goes low, causing the unit decoder D 2 to drive the second block select pulse RBS2 high for one RCK cycle. This is followed by similar output of RBS3 and RBS4 pulses, then another RBS1 pulse. Read block select pulses are thus output in a repeating sequence at intervals of two hundred fifty-six RCK cycles. Next the operations of reading and writing data will be described. Referring again to Fig. 2, the read row address counter 16 is adapted to increment at intervals of one thousand twenty-four RCK cycles, and the write row address counter 18 to increment at intervals of one thousand twenty-four WCK cycles. Each time the read row address counter 16 increments, the address multiplexer 20 selects the newly incremented read row address, the row decoder 22 decodes this row address to select a word line WL, and the switches in the transfer circuit 24 are turned on to transfer data from the memory cells connected to that word line into the line buffer 26. Similarly, each time the write row address counter 18 increments, the address multiplexer 20 selects the newly incremented write row address, the row decoder 22 decodes this row address to select a word line WL, and the switches in the transfer circuit 38 are turned on to transfer data from the line buffer 36 to memory cells connected to this word line in the memory cell array 2. The read and write row address counters 16 and 18 are coordinated with the read and write column address counters so that data are never transferred into and out of the line buffer 26 or the line buffer 36 at the same time. For example, the read row address counters in memory blocks MB3 and MB4 can be incremented by the fall of RY9, and the read row address counters in memory blocks MB1 and MB2 by the fall of RY9 . When a first read block select pulse RBS1 is generated at the fall of RY9 in Fig. 5, this pulse is input to the read pointer 4 in memory block MB1 as indicated in Fig. 1. Referring to Fig. 3, this pulse is shifted through the two hundred fifty-six stages S 0 to S 255 of the read pointer 4, causing the column select signals CS 0 to CS 255 to go low in turn for one read clock cycle each. Referring to Fig. 2, these column select signals CS 0 to CS 255 are fed through the driver circuit 30 to the I/O circuit 28, causing the data stored in the line buffer 26 to be output on the data bus DBR one bit at a time, in ascending column order, during two hundred fifty-six RCK cycles. At the end of these two hundred fifty-six RCK cycles a second read block select pulse RBS2 is output as indicated in Fig. 5 and the same process is repeated in memory block MB2, resulting in the output of two hundred fifty-six bits of data from that memory block. Next a third read block select pulse RBS3 is output and the process is repeated in memory block MB3. Then a fourth read block select pulse RBS4 is output and the same process is repeated to output two hundred fifty-six bits of data from memory block MB4, after which another first read block select pulse RBS1 is output and the whole cycle repeats again with data from a different row. The writing of data is similar, the only difference being that the direction of transfer is reversed. A detailed explanation will accordingly be omitted. The read block selector 12 and write block selector 14 in Fig. 1 can be coupled to the read and write pointers 4 and 6 in the memory blocks by a simple, orderly wiring system, thereby simplifying the design of the memory as compared with the prior art. There are no interconnecting lines between different pointers, so the cycle speed limitations imposed by the parasitic resistance and capacitance of such interconnecting lines are eliminated. These advantages of the invention become increasingly important as the number of memory blocks increases. Next, a preferred circuit configuration of the read and write pointers 4 and 6 will be described and its operation explained. All the read and write pointers in all the memory blocks are identically structured, so only the read pointer 4 in the first memory block MB1 will be shown. Referring to Fig. 6, the first stage S 0 of this read pointer comprises a first clocked inverter 64, a first latch 66, a second clocked inverter 68, and a second latch 70. The first clocked inverter 64 comprises a pair of p-channel metal-oxide-semiconductor field-effect transistors (hereinafter, PMOS transistors) 72 and 74 and a pair of n-channel metal-oxide-semiconductor field-effect transistors (NMOS transistors) 76 and 78 coupled in series between a power supply potential Vcc and a ground potential Vss. The PMOS transistor 72 and NMOS transistor 78 are switched on and off by the block select signal RBS1. The PMOS transistor 74 is switched by RCK , and the NMOS transistor 76 by RCK. The output node N 1 of the first inverter 64 is disposed between the two transistors 74 and 76. The first latch 66 comprises a pair of inverters 80 and 82 coupled in a loop, the output of the inverter 80 being coupled to the input of the inverter 82, and the input of the inverter 80 and output of the inverter 82 both being coupled to the signal line of the column select signal CS 0 . This column select signal line is also coupled to the output node N 1 of the first inverter 64, and is coupled through a PMOS reset transistor 84 to Vcc. The reset transistor 84 is switched by a reset signal RS . The second inverter 68 is similar to the first, comprising PMOS transistors 86 and 88 and NMOS transistors 90 and 92 coupled in series between Vcc and Vss. However, the PMOS transistor 86 and NMOS transistor 92 are switched by the CS 0 signal output by the first inverter 64, the PMOS transistor 88 is switched by RCK, and the NMOS transistor 90 is switched by RCK . The output node N 2 of this inverter produces an internal signal K. The second latch 70 is similar to the first, comprising a looped pair of inverters 94 and 96 coupled to the output node N 2 of the second inverter. The next stage S 1 is identical to the initial stage S 0 except that instead of receiving the block select signal RBS1, it receives the internal signal K. Succeeding stages are the same, each stage receiving the internal signal output by the preceding stage. This circuit is initialized by supplying a low reset pulse RS to all stages, causing the column select signals CS 0 to CS 255 all to go to the high (inactive) state, where they remain as long as RBS1 remains low. When RBS1 goes high for one read clock cycle, the circuit operates as follows. In the first half of this clock cycle, when RCK is low and RCK is high, the first inverter 64 is disabled (transistors 74 and 76 are switched off), but the first latch 66 continues to hold CS 0 at the high level. The second inverter 68 is enabled (transistors 88 and 90 are switched on) so K is low. In the second half of this clock cycle, when RCK is high and RCK is low, the first inverter 64 is enabled and the second inverter 68 is disabled. The first inverter 64 inverts RBS1, driving CS 0 low, while the second latch 70 holds K low. In the first half of the next clock cycle RBS1 goes low but the first latch 66 continues to hold CS 0 low, while the second inverter 68 inverts CS 0 and drives K high. In the second half of this clock cycle the first inverter 64 returns CS 0 to the high level, the second latch 70 continues to hold K high, and the first inverter in the next stage S 1 inverts K to drive CS 1 low. Operation continues in this way, the original high RBS1 pulse being passed from inverter to inverter at intervals of one-half clock cycle, with the result that CS 0 , CS 1 , ..., CS 255 go low in turn for one clock cycle each. At the end of these two hundred fifty-six clock cycles CS 0 to CS 255 all remain high until the next high RBS1 pulse is received. Fig. 7 shows a modification of Fig. 6 in which RBS1 is supplied as a set signal to the initial stage S 0 and as a reset signal to the other stages S 1 to S 255 . Stages S 1 to S 255 are identical to stage S 0 in Fig. 6. RBS1 is inverted by an inverter 98 and the inverted signal RBS1 is supplied to the reset transistor 84 in each of these stages S 1 to S 255 . In stage S 0 , the reset transistor 84 of Fig. 6 is replaced by an NMOS transistor 99, which is switched by RBS1 and couples node N 1 to Vss. The input side of stage S 0 is also coupled to Vss, and the roles of RCK and RCK are reversed. When RBS1 goes high, the NMOS transistor 99 in stage S 0 and reset transistors 84 in stages S 1 to S 255 all turn on, setting CS 0 to the active (low) state and resetting CS 1 to CS 255 to the inactive (high) state. When RBS1 goes low, the shift register in Fig. 7 operates in the same way as the shift register in Fig. 6, causing CS 1 to CS 255 to go low in turn for one clock cycle each, while the low input to the initial stage S 0 returns CS 0 to the high level. Fig. 7 has the advantage of not requiring a separate reset signal for initialization. The invention can of course be practiced with other shift-register circuits, such as circuits employing flip-flops. Moreover, the invention is not restricted to FIFO serial access memories that generate separate read and write column addresses. It is also applicable to dual-port memories having only a single serial port, which require only a single column address counter, and to various other types of multi-port memories. Many serial access memories already incorporate a column address counter for the purpose of redundant repair, e.g. for selecting redundant bit lines to replace faulty bit lines. In this case the invention can be practiced simply by adding a block selector to generate block select signals, thereby obtaining the advantages of simpler signal-line routing and higher-speed operation with minimal increase in chip size. Those skilled in the art will notice further modifications that can be made to Figs. 1 to 7 without departing from the scope of the invention as set forth in the following claims.

Claims: A method of selecting successive columns in successive memory blocks in a serial access memory having a plurality of memory blocks each of the successive memory blocks having shift registers which select the columns respectively, comprising the steps of: a) counting a clock signal to generate a column address comprising a plurality of bits; (b) decoding upper bits of said column address to generate a series of block select pulses selecting respective memory blocks consecutively; and (c) shifting each block select pulse through a respective shift register in synchronization with said clock signal, thereby generating a series of column select pulses to select successive columns in said respective memory blocks. The method of claim 1 further comprising the steps of: (d) applying one of said block select pulses to one of said memory blocks and shifting said block select pulses through a corresponding one of said shift registers in synchronization with said clock signal, thereby selecting successive columns in said memory block; and (e) applying another one of said block select pulses to another one of said memory blocks and shifting said another block select pulses through another corresponding one of said shift registers in synchronization with said clock signal after step (d), thereby selecting successive columns in said another memory block. The method of claim 1, wherein said step (b) comprises the further steps of: (f) performing a logic operation on said column address signals to generate a first signal (A) having one state when a certain memory block is selected and another state when that memory block ist not selected; (g) inverting and delaying said first signal to generate a second signal (B); (h) performing a logic operation on said first signal and said second signal, thereby producing a third signal (C); and (i) holding said third signal to generate said block select pulse in response to said clock signal. The method of claim 1, wherein each of said shift registers comprises a plurality of stages, and each stage performs the further steps of: (j) inverting an input signal (RSB) in synchronization with said clock signal (RCK) to generate a column select signal (CS 0 ); (k) latching said column select signal; (l) using said column select signal to select a column in a memory block; (m) inverting said column select signal in synchronization with said clock signal to generate an internal signal; (n) latching said internal signal; and (o) supplying said internal signal as an input signal to a next stage in said shift register. The method of claim 4, wherein said block select pulses are supplied as input signals to initial stages of respective shift registers. The method of claim 4, wherein said block select pulses are supplied as set signals to initial stages of respective shift registers and as reset signals to all other stages of respective shift registers. A serial access memory for accessing data in synchronization with a clock signal, comprising: a column address counter (8,10) for counting said clock signal (RCK,WCK) to generate column address signals comprising a plurality of bits; a block selector (12,14) coupled to decode upper bits of said column address signals and thereby generating a series of block select pulses (RBS1 to RBS4, WBS1 to WBS4); and a plurality of memory blocks having respective memory cell arrays (2) for storing data in rows and columns, and a respective shift register for each memory block clocked by said clock signal, each of said shift registers (4,6) being coupled to receive and shift a different one of said block select pulses in response to said clock signal and thereby generating a series of column select pulses ( CS 0 to CS 255 ) to select successive columns in its memory block. The memory of claim 7, wherein said column address counter (8), block selector (12), and shift registers (4) as described in claim 7 are for read access, and further comprising a separate block selector (10), column address counter (14), and shift registers (6) as described in claim 7 for write access. The memory of claim 7, wherein said column address counter (8,10) generates a pair of complementary output signals (e.g. RY8 and RY8 ) for each of said upper bits. The memory of claim 7, wherein said block selector has a plurality of unit selectors (D 1 to D 4 ), each comprising: a first logic gate (40) for performing a logic operation on said column address signals to generate a first signal (A); a delay line (44) for delaying and inverting said first signal to generate a second signal (B); a second logic gate (56) for performing a logic operation on said first signal and said second signal to generate a third signal (C); and a flip-flop(58), clocked by said clock signal, for holding said third signal to generate said block select pulse. The memory of claim 7, wherein each of said shift registers (4,6) has a plurality of stages, each stage comprising: a first clocked inverter (64)clocked by said clock signal, for receiving and inverting an input signal, thereby generating a column select signal; a first latch (66) for latching said column select signal; a second clocked inverter (68) clocked by said clock signal, for receiving and inverting said column select signal, thereby generating an internal signal (K); and a second latch (70) for latching said internal signal and providing same as an input signal to a next stage. The memory of claim 11, wherein said block select pulses (RBS1 to RBS4,WBS1 to WBS4); are supplied as input signals to initial stages (S0) of respective shift registers (4,6). The memory of claim 11, wherein said block select pulses (RBS1 to RBS4,WBS1 to WBS4) are supplied as set signals to initial stages (S 0 ) of sepective shift registers and as reset signals to other stages (S 1 to S 255 ) of respective shift registers, thereby setting or resetting the first latch (66) in each stage. The memory of claim 7, having first and second memory blocks (MB1,MB2) wherein said first memory block (MB1) has a first memory cell array (2) and a first shift register substantially arranged on a lateral side of said first memory block, said first shift register receiving and shifting the first block select pulse therein in response to the clock signal and selecting successive columns in the first memory cell array (2) in response to the shifted first block select pulse; and wherein said second memory block (MB2) is arranged laterally adjacent to said first memory block (MB1) on a side opposite of said first shift register, said second memory block (MB2) having a second shift register (4) substantially arranged on a lateral side of said second memory block (MB2) being adjacent to said first memory block (MB1), said second shift register receiving and shifting the second block select pulse therein in response to the clock signal and selecting successive columns in the second memory cell array in response to the shifted second block select pulse. The memory of claim 14, wherein the first and second block select, pulses are supplied as input signals to initial stages (S 0 ) of the first and second shift registers. The memory of claim 14, wherein the first and second block select pulses are supplied as set signals to initial stages (S 0 ) of the first and second shift registers respectively and as reset signals to other stages (S 1 to S 255 ) of the first and second shift registers respectively, thereby setting or resetting the first latch (66) in each stage of the first and second shift registers respectively.

Inventors: IWAKIRI ITUROU, MURAKAMI KOJI, IWAKIRI, ITUROU, MURAKAMI, KOJI, Iwakiri, Iturou, c/o Oki Micro Design, Murakami, Koji, c/o Oki Electric Industry Co., Ltd
Applicants: OKI ELECTRIC IND CO LTD, OKI ELECTRIC INDUSTRY CO., LTD.
Application year: 1993
Main classification: G06F5
IPC codes: G06F5, G11C11, G11C8