EP0241129B1

Addressing arrangement for a RAM buffer controller.

Abstract

This record has no abstract on file.

EP0241129B1, drawing sheet 1
Sheet 1 of 12

Term

Term ended

Expired 3 March 2007, 19.6 years ago.

  1. Priority
  2. Filed
  3. Granted
  4. Expired
  5. Today

48 claims: 33 independent, 15 dependent

  1. 1
    An apparatus (RBC) for generating pointer addresses for guiding data operations within a memory (38) comprising:first means (80,88,92) for storing a plurality of pointer addresses in pointer address storage registers (RPX,WPX,RPR,WPR,MAR,SAX,SAR,EAX,EAR) to manage a plurality of independent areas in said memory (38) as at least two independently managed FIFO/LIFO buffers each with programmable starting and ending addresses;second means (G) coupled to said first means for selecting the output of one of said pointer address storage registers (RPX,WPX,RPR,WPR or MAR) for output to said memory (38);third means (82) coupled to said second means and to said first means (80,88,92) for incrementing or decrementing the selected pointer address appearing at the output of the selected pointer address storage register (RPX,WPX,RPR,WPR,MAR);characterised by    fourth means comprising multiplexers (C,D,E,F,K,) for selecting an output value from an initialisation bus (102), said third means (82) or said pointer address storage registers (RPX,WPX,RPR,WPR or MAR) to be input into a selected pointer address storage register (RPX,WPX,RPR,WPR or MAR) in said first means (80,88,92).
  2. 5
    An apparatus as defined in claim 4 characterised by a multiplexer 87A having its output coupled to a data input of said pointer address storage register for the read pointer (RPX) for transmit packets in said first means (80,88,92) and having an input coupled to an output of said programmable starting address pointer register SAX of said first means and an input coupled to said initialization bus (102) and having a control input and further comprising control means (125) having a select control output carrying a switching selection control signal for controlling switching by said multiplexer (87A) coupled to said control input and having an input coupled to receive said end signal from said fifth means (88) and for causing said multiplexer 87A to select the output of said a selected one (SAX) of said programmable starting address pointer registers for coupling to said data input of said pointer address storage register for the read pointer (RPX) for transmit packets in said first means so as to store therein a new starting address pointer.
  3. 6
    An apparatus as defined in any of claims 1 to 5 characterised by full/empty comparison means (140, 142) coupled to said first means (80,88,92) for comparing said read and write pointers for buffer for receive packets and generating a first signal indicating whether said pointers are equal and for comparing said read and write pointers for said buffer for transmit packets and generating a second signal indicating whether said pointers are equal.
  4. 7
    An apparatus as defined in claim 6 characterised by means (125) coupled to said full/empty comparison means (140,142) for receiving said first and said second signals and for comparing these signals to the type of memory access that occurred in the memory access cycle just previous to the cycle that caused the compared pointers to become equal and to the type of memory access that occurred in the memory access cycle that caused the pointers to become equal and for making a determination in the case of said first signal indicating the status of the receive FIFO whether that FIFO is full or empty and for making a determination in the case of said second signal indicating the status of the transmit FIFO whether that FIFO is full or empty.
  5. 8
    An apparatus as defined in claim 1 characterised by means coupled to said first means (80,88,92) for initializing separate write and read pointers for a first stack and for initializing separate write and read pointers for a second stack and for controlling said third means (82) to manage the incrementing and decrementing of said write and read pointers such that a last in, first out memory access operation in said memory may be performed.
  6. 9
    An apparatus as defined in claim 4 wherein said first means includes means (102,H,I,EAX,EAR) for allowing the end pointer addresses to be initialized or changed to any desired address within the address space of said memory (38).
  7. 10
    An apparatus as defined in claim 1 wherein said further comprising linked list means (42,87A,87B,57B,C,L,RPXS,RPXA) for allowing the read pointer for transmit packets (RPXS,RPXA) to be changed to a new arbitrary address within the address space of said memory (38) during each memory access cycle for purposes of allowing linked lists of packets to be transmitted.
  8. 11
    An apparatus as defined in claim 9 characterised in that said initialization bus (102) carries the initial address for said read pointer for transmit packets and a DBI bus (42) for carrying linking addresses for storage in the register (RPXS) storing the read pointer address for transmit packets and wherein said linked list means includes an input multiplexer 87A having its output coupled to the data input of said register (RPXS) for storing the read address for transmit packets and having an input coupled to said initialization bus (102) and having an input coupled to said DBI bus (42) and having an input coupled to said third means (82) and having a control input, and characterised by control means (125) coupled to said control input for causing said multiplexer to select the input coupled to said DBI bus (42) during transmission of a packet organized as a linked list in said memory (38) such that linking addresses from said DBI bus (42) will be loaded in the register storing the read pointer for transmit packets.
  9. 12
    An apparatus as defined in claim 10 wherein said first means (80,88,92) includes at least two pointer address storage registers (RPXS,RPXA) for storing separate and individual read address pointers for transmit packets organized into at least two linked lists and wherein said linked list means includes means (87A,87B) for allowing separate linking addresses for said at least two linked lists to be stored in each of said at least two pointer address storage registers (RPXS,RPXA) where each register and linking address correspond to one of said at least two linked lists.
  10. 13
    An apparatus as defined in claim 11 wherein said first means (80,88,92) includes at least two pointer address storage registers (RPXS,RPXA) for storing separate and individual read address pointers for transmit packets organized into at least two linked lists and wherein said linked list means includes means (87A,87B) for allowing separate linking addresses for said at least two linked lists to be stored in each of said at least two pointer address storage registers (RPXS,RPXA) where each register and linking address correspond to one of said at least two linked lists.
  11. 14
    An apparatus as defined in claim 1 wherein said first means (80,88,92) is comprised of a plurality of registers (RPX,WPX,MAR,RPR,WPR) for storing said pointers and wherein said multiplexers (C,D,E,F,K) of said fourth means each have an output coupled to a data input of one of said registers and each have a plurality of inputs, and characterised in that said initialization bus (102) is coupled to selected ones of said inputs and wherein said third means (82) is coupled to other selected ones of said inputs.
  12. 15
    An apparatus as defined in claim 14 wherein one of said registers is a random access memory address register (MAR).
  13. 16
    An apparatus as defined in claim 5 characterised by a random access memory address register (MAR) coupled to said initialization bus (102) and wherein said control means (125) ignores said end signal when said second means selects the output of said random access memory address register (MAR) for output to said memory (38).
  14. 17
    An apparatus as defined in claim 2 wherein said first means (80,88,92) includes a first register (WPR) for storing a write pointer for receive packets and having an output coupled to said second means and a second register (SWPR) for storing a shadow write pointer for receive packets where said first and second registers have inputs and outputs, and further comprising first and second multiplexers (F,M) having outputs coupled respectively to said inputs of said first and second registers, each said multiplexer having a plurality of inputs wherein one input of said first multiplexer (F) is coupled to said third means (82) for receiving the incremented value of said write pointer for receive packets when said second means selects the write pointer for receive packets for output to said memory (38) and one input of said first multilexer (F) is coupled to said initialization bus (102) and wherein the output of said second register (SWPR) is coupled to an input of each of said first and second multiplexers (F,M) and wherein the output of said first register (WPR) is coupled to an input of each of said first and second multiplexers (F,M).
  15. 18
    An apparatus as defined in claim 17 wherein said first and second multiplexers (F,M) also have control inputs and further comprising control means (125) coupled to said control inputs and having an input for receiving a BRCVPKT signal indicating packet reception is beginning and having an input for receiving a DWRREQ signal indicating that the next byte of packet reception is ready for storage, said control means (125) for controlling said first multiplexer (F) so as to select the input coupled to said initialization bus before the assertion of said (BRCVPKT) signal so as to load said first register (WPR) with an initial pointer address value for receive packets, and thereafter for causing said second multiplexer (M) to select the input coupled to the output of said first register (WPR) so as to load the contents of said first register (WPR) into said second register (SWPR) immediately upon assertion of said BRCVPKT signal and for causing said first multiplexer (F) to select the input coupled to said third means (82) to cause said first register (WPR) to load the write pointer for receive packets as incremented by said third means (82) upon activation of said BRCVPKT signal and thereafter for controlling said first multiplexer (F) so as to select its input coupled to the output of said first register (WPR) so as to hold the incremented contents of said first register constant until assertion of said DWRREQ signal and, thereafter, for causing said first multiplexer (F) to select said input coupled to said third means (82) upon activation of said DWRREQ signal, and for causing said second multiplexer (M) to select the input coupled to the output of said second register (SWPR) immediately after receiving the contents of said first register (WPR) so as to hold the contents of the second register constant while the DWRREQ signal is asserted and thereafter to cause said second means (G) to select its input coupled to the output of said first register upon activation of said (DWRREQ) signal.
  16. 19
    An apparatus as defined in claim 17 wherein said first and second multiplexers (F,M) also have control inputs and characterised by control means (125) coupled to said control inputs, and having a second input for receiving a BRCVPKT signal indicating packet reception is beginning, and having a third input for receiving a DWRREQ signal indicating that the next byte of packet reception is arriving, and having a fourth input for receiving an ERCVPKT signal indicating a packet has been successfully received, said control means (125) for controlling said first multiplexer (F) so as to select the input coupled to said initialization bus before the assertion of said (BRCVPKT) signal so as to load said first register (WPR) with an initial pointer address value for receive packets, and thereafter for causing said second multiplexer (M) to select the input coupled to the output of said first register (WPR) upon assertion of said (BRCVPKT) signal so as to cause the then existing write pointer for receive packets to be saved in the second register (SWPR) and for causing said first multiplexer (F) to select the input coupled to said third means (82) to cause said first register (WPR) to load the write pointer for receive packets as incremented by said third means (82) upon activation of said BRCVPKT signal and thereafter for controlling said first multiplexer (F) so as to select its input coupled to the output of said first register (WPR) so as to hold the incremented contents of said first register constant until assertion of said DWRREQ signal, and, thereafter for causing said first multiplexer (F) to select said input coupled to said third means (82) upon activation of said DWRREQ signal such that the write pointer for receive packets is incremented on every clock cycle during packet reception and, and for causing said second multiplexer (M) to select the input coupled to the output of said second register (SWPR) immediately after receiving the contents of said first register (WPR) so as to hold the contents of the second register constant while the DWRREQ signal is asserted, and, thereafter, said control means (125) controls said second means (G) to select its input couple to the output of said first register (WPR) upon activation of said (DWRREQ) signal, and, upon receiving said ERCVPKT signal, for causing said first multiplexer (F) to select the input coupled to the output of said second register (SWPR) and for causing said second multiplexer (M) to select the input coupled to the output of said first register (WPR) such that the contents of these two registers are exchanged, and for causing said second means to select the output of said first register (WPR) for application to the address inputs of said memory (38), and further comprising data path controller means (43) coupled to the data inputs of said memory (38) for keeping track of the length of the received packet and its status and for writing this data into the location in memory pointed to by the current contents of said first register (WPR) during assertion of said ERCVPKT signal, said control means (125) also for causing said first multiplexer (F) to select the input coupled to the output of said second register (SWPR) after said status and length data is written so as to cause said first register (WPR) to load the contents of said second register (SWPR) to restore the write pointer for receive packets to its state as it existed at the time of receiving said ERCVPKT signal, said data path controller (43) for writing a predetermined bit in the memory location addressed by the contents of said first register (WPR) during assertion of said ERCVPKT signal and for subsequently causing said first multiplexer (F) to select the input coupled to the output of said first register (WPR) until the next activation of BRCVPKT signal.
  17. 20
    An apparatus as defined in claim 17 wherein said first and second multiplexers (F,M) also have control inputs and further comprising control means (125) coupled to said control inputs, said control means having a first input for receiving a FLSHPKT signal indicating a received packet or portion thereof is to be flushed, and having a second input for receiving a BRCVPKT signal indicating packet reception is beginning, and having a third input for receiving a DWRREQ signal indicating that the next byte of packet reception has arrived, and having a fourth input for receiving an RCVABRT signal indicating a packet that has been received or partially received is to be aborted but its status and length information is to be recorded, said control means (125) for controlling said first multiplexer (F) so as to select the input coupled to said initialization bus before the assertion of said (BRCVPKT) signal so as to load said first register (WPR) with an initial pointer address value for receive packets, and thereafter for causing said second multiplexer (M) to select the input coupled to the output of said first register (WPR) so as to load the contents of said first register (WPR) into said second register (SWPR) immediately upon assertion of said BRCVPKT signal and for controlling said first multiplexer (F) so as to select its input coupled to said third means so as to increment the contents of said first register and thereafter for causing said first multiplexer (F) to select the input coupled to said third means (82) to cause said first register (WPR) to load the write pointer for receive packets as incremented by said third means (82) upon activation of said BRCVPKT signal and thereafter for controlling said first multiplexer (F) so as to select its input coupled to the output of said first register (WPR) so as to hold the incremented contents of said first register constant until assertion of said DWRREQ signal, and for causing said first multiplexer (F) to continue to select said input coupled to said third means (82) during activation of said DWRREQ signal such that the write pointer for receive packets is incremented on every clock cycle during packet reception and, for causing said second multiplexer (M) to select the input coupled to the output of said second register (SWPR) immediately after receiving the contents of said first register (WPR) so as to hold the contents of the second register constant while the DWRREQ signal is asserted, and, thereafter, to cause said second means (G) to select its input coupled to the output of said first register (WPR) during activation of said DWRREQ signal, and upon activation of said RCVABRT signal, for causing said first multiplexer (F) to select the input coupled to the output of said second register (SWPR) such that the contents of the second register (SWPR) is loaded into said first register (WPR), and for causing said second means (G) to select the output of said first register (WPR) for application to the address inputs of said memory, and wherein a data path controller means (43) coupled to the data inputs of said memory keeps track of the length of the received packet and its status and for writing this data into the location in memory pointed to by the current contents of said first register (WPR) during assertion of said RCVABRT signal, said control means (125) also for causing said first multiplexer (F) to select the input coupled to the output of said third means (82) after said status and length data is written so as to cause said first register (WPR) to reload a write pointer for receive packets comprising the (WPR) writer pointer during assertion of said RCVABRT signal incremented by 1 by said third means (82), said data path controller (43) for, thereafter, writing a predetermined bit in the memory location addressed by the contents of said first register (WPR) after its contents have been incremented and for subsequently causing said first multiplexer (F) to select the input coupled to the output of said first register (WPR) so as to hold the pointer stored in said first register (WPR) constant until the next BRCVPKT signal is asserted.
  18. 21
    An apparatus as defined in claim 11 characterised by a starting address register (SAX) within said first means and for storing a new link address pointing to the location in memory of a predetermined ring recovery packet during linked list transmission and a multiplexer (A) having an input coupled to said initialization bus (102) and having an input coupled to the output of said starting address register (SAX), and having its output coupled to the input of the starting address register (SAX), said multiplexer (A) having a control input, and characterised by a control means (125) coupled to said control input and having a control input for receiving a signal INICLBN indicating that said predetermined ring recovery packet should be sent, said control means (125) for causing said multiplexer (C) to select the input coupled to the output of said starting address register (SAX) when said INICLBN signal is asserted so as to load the pointer address of said ring recovery packet into the read pointer address storage register (RPX) for transmit packets.
  19. 22
    An apparatus as defined in claim 21 characterised by said first means including an end address register (EAX) having an input and a multiplexer (H) having an output coupled to said input of said end address register (EAX), said multiplexer (H) having an input coupled to the output of said end address register (EAX), said end address register (EAX) for storing the read address pointer for the transmit packets during ring recovery situations when the ring recovery packet needs to be sent such that transmission of the packets comprising said linked list can be resumed where it was left off when the ring recovery situation arose, said multiplexer (H) also having an input coupled to said initialization bus (102), and having an input coupled to the output of the pointer address storage register (RPX) for storing the read pointer address for transmit packets and having a control input, and wherein said control means (125) is coupled to said control input of said multiplexer (H) and wherein said control means (125) causes said multiplexer (H) to select said input coupled to the output of said end address register (EAX) simultaneously with the selection by said source multiplexer (C) of its input coupled to the output of said starting address register (SAX) upon activation of said INICLBN signal such that the link address for the ring recovery packet is loaded in said register (RPX) simultaneously with the loading of the current read pointer for transmit packets (RPX) into the end address register (EAX).
  20. 23
    An apparatus as defined in claim 1 characterised by arbitration means (62) coupled to said second means (G) and having a plurality of service request signal inputs for receiving signals indicating that a particular pointer is desired to be selected, said arbitration means (88) for arbitrating said request signals and selecting the currently asserted request with the highest priority.
  21. 24
    An apparatus as defined in claim 23 characterised by a clock input for receiving a clock signal and wherein said second means (G) has a control input and wherein said first means (80,88,92) includes a plurality of registers (RPX,WPX,MAR,RPR,WPR) for storing predetermined ones of said pointer addresses, each register having an input and an output and a clock input for receiving said clock signal for causing the data at said input to be latched into said register and to be available for output on said output, and further comprising a plurality of multiplexers (C,D,E,F,K) each having its output coupled to a said input of said one of said registers and each having at least one input coupled to the output of the registers to which the multiplexer has its output coupled so as to be able to hold the contents of the pointer storage register constant by selection of the input coupled to the output of the pointer storage register, and wherein said third means (82) has an output carrying the incremented value of the pointer selected by said second means (G), said output of said third means (82) coupled to another input of each said multiplexer (C,D,E,F,K), and each said multiplexer having a control input for receiving a signal controlling which input is selected for coupling to said output of said multiplexer, and further characterised by a control means (125) coupled to said control inputs of said multiplexers and to said arbitration means (62) and to a control input of said second means (G) for sensing which request signal has received priority by said arbitration means and for causing said second means (G) to select the appropriate one of the outputs of said pointer address storage registers (RPX,WPX,RPR,WPR,MAR) in accordance with the result of the arbitration performed by said arbitration means and for causing said multiplexer coupled to the input of the register whose pointer contents have been selected for output by said second means (G) to select its input coupled to the output of said third means (82) for a first clock cycle so as to increment the selected pointer and for causing said multiplexer coupled to the selected register to select the multiplexer input coupled to the output of the selected register during a second clock cycle so as to hold the selected pointer address constant during said second clock cycle.
  22. 26
    An apparatus as defined in claim 1 wherein said first means (80,88,92) includes a plurality of registers (RPX,WPX,RPR,WPR,MAR) for storing address pointers and characterised in that said initialization bus (102) is coupled to an input of each register and wherein one of said registers is for storing a random access pointer address which can be set initially by data on said initialization bus (102) and will be incremented by said third means (82) when said random access pointer is selected for output by said second means.
  23. 27
    An apparatus as defined in claim 26 characterised by arbitration means (62) having a plurality of inputs for coupling to conductors carrying request signals and coupled to said second means (G) for arbitrating any simultaneously asserted requests and selecting the highest priority request and for causing said second means (G) to select the output of said pointer storage register storing the pointer selected by said arbitration means for output to said memory (38).
  24. 28
    An apparatus as defined in claim 26 characterised by instruction decoder means (96) having an instruction bus input and coupled to said second means (G) for decoding an instruction received at said instruction bus input and causing said random access pointer register output to be selected for output by said second means.
  25. 29
    An apparatus as defined in claim 27 characterised by means having an instruction bus input and coupled to said second means (G) for decoding an instructions received at said instruction bus input and causing said random access pointer register output to be selected for output.
  26. 30
    An apparatus as defined in claim 28 wherein said instruction decoder means (96) is also coupled to said third means (82) in such a way that when a predetermined instruction is received, the third means (82) can be stopped from incrementing the selected pointer.
  27. 31
    An apparatus as defined in claim 1 characterised in that said first means (80,88,92) is comprised of a plurality of registers sufficient in number to store programmable starting, ending and read and write pointers for two independently operated FIFO/LIFO buffers to be implemented in said memory (38), and each having an input and further comprising a plurality of multiplexers having their outputs coupled to said register inputs, each multiplexer having an input coupled to said third means (82) for receiving the incremented value of the selected pointer and each multiplexer having an input coupled to said initialization bus (102).
  28. 32
    An apparatus as defined in claim 1 characterised in that said first means (80,88,92) is comprised of a plurality of registers each having an input and further comprising a plurality of input multiplexers having their outputs coupled to said register inputs, and further comprising a source multiplexer (A) having an input coupled to said initialization bus (102) and having an input coupled to said third means (82) and having an output, each said input multiplexer having an input coupled to said initialization bus (102) and to said third means (82).
  29. 35
    A system as defined in claim 33 wherein said buffer controller means (RBC) is for managing pointer addresses supplies to said memory (38) such that said memory appears to each of said first and second systems as a pair of independently operating FIFO memories.
  30. 38
    An apparatus as defined in claim 37 further comprising means (92B,J,88) coupled to said initialization bus (102) and to said output of said output multiplexer (G) and having a control output, for storing an end address for each of said transmit FIFO and said receive FIFO and for comparing the address of the currently selected FIFO at the output of said output multiplexer (G) to the appropriate one of the end addresses and for generating a signal indicating whether or not the end address has been equalled.
  31. 39
    An apparatus as defined in claim 38 further comprising random access memory pointer address storage means (MAR) coupled to said output multiplexer (G) and said incrementing means (82) and to said initialization bus (102) and having a control input coupled to said control means (125), said random access memory pointer address storage means for storing any address on said initialization bus (102) to be output at the output of said output multiplexer (G) upon receipt of a predetermined instruction by said control means (125) when linked list transmission is to be implemented and for storing either an incremented or not incremented version of said pointer address and for re-outputting the said pointer address depending upon the instruction received.
  32. 43
    A method of operating a RAM buffer controller (RBC) for generating addresses for a memory (38), said controller including a first register (WPR), a second register (SWPR), an incrementer (82) and an output multiplexer (G) for gating the output of the first register (WPR) to the address inputs of said memory (38) comprising the steps of:storing an address in said first register (WPR);upon receipt of a first signal (BRCVPKT), storing the contents of said first register (WPR) in said second register (SWPR) and incrementing the contents of said first register (WPR);upon receipt of a second signal (DWRREQ), holding the contents of said second register (SWPR) constant while incrementing the contents of said first register (WPR) once for every access to said memory (38):    upon receipt of a third signal (ERCVPKT), causing the contents of said second register (SWPR) to be stored in said first register (WPR) and the contents of said first register (WPR) to be stored into said second register (SWPR).
  33. 45
    A method comprising steps of:storing an address in said first register (WPR);upon receipt of a first signal (BRCVP), storing the contents of said first register (WPR) in said second register (SWPR) and incrementing the contents of said first register (WPR);during assertion of a second signal (DWRREQ), holding the contents of said second register (SWPR) constant while incrementing the contents of said first register (WPR) once for every access to said memory (38);upon assertion of a third signal (RCVABRT), storing the contents of said second register (SWPR) into said first register (WPR), and gating the output of said first register (WPR) through to said address inputs and writing predetermined status and length data in the location in memory addressed by the contents of said first register (WPR);incrementing the contents of said first register (WPR);gating the output of said first register (WPR) through to said address inputs and writing a predetermined status data bit into the memory location addressed by the contents of said first register (WPR);and    preventing the incrementing of the contents of said first register (WPR) in preparation for the next memory access.
Independent claims33