Easy To Use Patents Search & Patent Lawyer Directory

At Patents you can conduct a Patent Search, File a Patent Application, find a Patent Attorney, or search available technology through our Patent Exchange. Patents are available using simple keyword or date criteria. If you are looking to hire a patent attorney, you've come to the right place. Protect your idea and hire a patent lawyer.


Search All Patents:



  This Patent May Be For Sale or Lease. Contact Us

  Is This Your Patent? Claim This Patent Now.



Register or Login To Download This Patent As A PDF




United States Patent Application 20120005383
Kind Code A1
LEWIS; Michael January 5, 2012

SYSTEM AND A METHOD FOR CONSTRUCTING AND DECONSTRUCTING DATA PACKETS

Abstract

A packet processing data path is attached to the processor bus as a slave via a bus interface. The packet processing data path comprises a number of blocks. Respective blocks comprise configuration registers operable to provide information on what operation the blocks should perform for the current packet field being processed. The bus interface comprises a first register operable to control a bus of Update Enable signals, which bus is also connected to the blocks. The bus interface also comprises a second register operable to control a Mode signal, which is also connected to the blocks. An Update Mode signal is connected to the bus interface and to the blocks. A write to the second register causes the Update Mode signal to be pulsed active, triggering the enabled configuration registers to update their values.


Inventors: LEWIS; Michael; (Maersta, SE)
Serial No.: 232949
Series Code: 13
Filed: September 14, 2011

Current U.S. Class: 710/105
Class at Publication: 710/105
International Class: G06F 13/42 20060101 G06F013/42


Foreign Application Data

DateCodeApplication Number
Apr 22, 2005EP05 008 911.9

Claims



1. An apparatus, comprising: a number of processing blocks to storing predefined configuration modes, the predefined configuration modes determining values of different fields of different data packets; and a mode register to cause a parallel update of the predefined configuration modes in the number of processing blocks in response to a mode signal provided by a bus interface in order to provide a certain field of a data packet.

2. The apparatus of claim 1, wherein the update of the predefined configuration modes may be independently disabled.

3. The apparatus of claim 1, further comprising additional registers to store predefined configuration mode settings for respective processing block.

4. The apparatus of claim 1, further comprising hardwired predefined configuration mode settings for respective processing blocks.

5. The processing data path of claim 1, further comprising a set of registers operable to disable and/or enable the update of the predefined configuration modes in the processing blocks.

6. A system, comprising: a processing data path comprising processing blocks, respective processing blocks comprising configuration registers to store information on an operation to be performed by the processing blocks for a current packet being processed; and a bus interface including a first register for controlling a bus of Update Enable signals being receivable by the number of processing blocks, and a second register for controlling a Mode signal being receivable by the processing blocks, the bus interface providing an Update Mode signal to the number of processing blocks, wherein a write to the second register causes the Update Mode signal to be pulsed, thereby triggering enabled configuration registers to update their values.

7. The system of claim 6, further comprising a processor operatively coupled to a processor bus, the packet processing data path being operatively coupled to the processor, and the packet processing data path being operatively coupled to the processor bus as a slave via a bus interface, the system being operable to support a number of different coding formats.

8. The system of claim 6, wherein the bus interface is operable to decode a bus protocol and perform write and/or read operations to the configuration registers.

9. The system of claim 6, further comprising additional registers operable to store pre-defined modes for respective configuration registers, wherein complete mode definitions, for respective configuration registers comprise whether the configuration registers should be updated, and if so what values the registers it should be set to.

10. The system of claim 6, wherein pre-defined modes for respective configuration registers are hardwired, and wherein complete mode definitions, for respective configuration registers, comprise whether the configuration registers should be updated, and if so what values the registers should be set to.

11. A method, comprising: transmitting a write signal to a register which then transmits a Mode signal to processing blocks; transmitting Update Enable signals to configuration registers to be updated for new mode; pulsing an Update Mode signal active; and transmitting the active Update Mode signal to processing blocks thereby triggering enabled configuration registers to update their values in parallel.

12. The method of claim 11, further comprising enabling or disabling the update of the configuration registers with the aid of a set of registers.

13. The method of claim 11, further comprising storing pre-defined modes for respective configuration registers, wherein complete mode definitions, for respective configuration registers, comprise whether the configuration registers should be updated, and if so what values the registers should be set to.

14. The method of claim 11, further comprising hardwiring pre-defined modes for respective configuration registers, wherein complete mode definitions, for respective configuration registers, comprise whether the configuration registers should be updated, and if so what values the registers should be set to.

15. The method of claim 11, further comprising storing a pre-defined mode for some of the configuration registers; and hardwiring a predefined mode for other of the configuration registers, wherein complete mode definitions, for respective configuration registers, comprise whether the configuration registers should be updated, and if so what value the registers should be set to.
Description



REFERENCE TO RELATED APPLICATIONS

[0001] This application is a Continuation of application Ser. No. 11/408,727, which was filed on Apr. 21, 2006. The application Ser. No. 11/408,727 claimed the benefit of the priority date of European Application EP 05 008 911.9, filed on Apr. 22, 2005. The entire contents of application Ser. No. 11/408,727 and European Application EP 05 008 911.9 are hereby incorporated herein by reference.

FIELD OF THE INVENTION

[0002] System and method for constructing and deconstructing data packets, and at least one computer program for constructing and deconstructing data packets.

BACKGROUND OF THE INVENTION

[0003] Many communications protocols are based on the transmission and reception of information coded into so-called `packets`. Such packets consist of a number of defined fields, and the protocol defines the content of such fields for transmitting a particular item of data. An important part of communication equipment is therefore an apparatus for constructing and deconstructing such packets.

[0004] As an example, some of the different packet types for the Bluetooth.RTM. standard are shown in FIG. 1. The packets begin with an access code field which allows the receiver to discriminate the beginning of the transmission. This carries no other information content. The packets also include a header field: amongst other things, this identifies the type of packet. This part of the packet is protected against transmission errors with a rate 1/3 error correcting code (FEC), and remaining errors are detected by an 8-bit CRC check.

[0005] What follows next then depends on the type of packet: for packet types Null and Poll, there is no other information. For other packet types, there are one or more subsequent information fields carrying different types of data.

[0006] Depending on packet type, these are encoded with different types of error correcting codes and may or may not contain a CRC field to check for errors. The length (number of bytes) of subsequent fields may be defined by the packet type (e.g. HVx packet types), may be pre-defined by some prior negotiation (e.g EVx packet types), or may be variable and defined by a further information field (e.g. the payload header for packet types with a data payload).

[0007] The apparatus for constructing and deconstructing such packets must therefore be capable of supporting a number of different coding formats. Particularly in the receive direction, there are often hard real time constraints and it is necessary to rapidly interpret the contents of one information field in order to re-configure the packet deconstruction apparatus to process the following sections. Due to the time constraints, and also due to the requirements for low power consumption for portable data communication systems such as Bluetooth.RTM., it is common to design a dedicated hardware packet processing datapath block for performing the bit-level operations.

[0008] Communication standards are always in a state of rapid evolution, and the pressure to achieve a fast time-to-market for updated versions of a standard requires that a communications product be designed with flexibility in mind. Typically, this is achieved by having the key decision-making processes performed by software running on a general purpose micro-processor embedded in the communications product. An update to the standard (e.g. a new packet type) can then often be catered for by a pure software upgrade. This also provides for protection against errors in design, since hardware errors in the packet processing datapath can often be corrected by intervention from the microprocessor via a work-around in the software.

[0009] A simple example of such a system 10 is shown in FIG. 2. This comprises a microprocessor 12 with its own bus system 14, 16 and a packet processing datapath 18 consisting of an RF interface 18.sub.1 (which transfers data to and from the radio), a FEC block 18.sub.2 (which performs error correction coding or decoding), a CRC block 18.sub.3 (which generates or checks a CRC code) and a DMA endpoint 18.sub.4 (which requests that information bytes be transferred to or from system memory via direct memory access, and issues an interrupt to the processor when the required number of bytes have been transferred).

[0010] Respective block in the packet processing datapath 18 communicates with its neighbors, and contains configuration registers which provide information on what operation the block should perform for the current packet field being processed. An example of a possible register definition for the simple example datapath is shown in FIG. 3. It should be noted that a practical implementation is likely to contain both more functional blocks and more configuration registers per block. The packet processing datapath 18 is attached to the bus as a slave via a bus 14 interface block 16. This decodes the bus protocol and performs write or read operations to the configuration registers.

[0011] For the case of reception of Bluetooth.RTM. packets, the microprocessor would first configure the datapath for reception of the header field. For the simple example datapath, this would require 7 programming operations over the microprocessor bus. The Bit_Count field for the RF interface would be programmed last, since this would have the side-effect of causing data to begin to flow through the datapath. Once the header is received, the microprocessor would receive an interrupt from the end-point. It would then read the packet type from the header. Depending on the packet type, it would be necessary to reprogram some or all of the registers for the subsequent field, and repeat this for every subsequent field. For example, a DH1 packet would first require that the datapath be programmed to receive the payload header. Then, the datapath would need to be reprogrammed to receive the payload body.

[0012] The example datapath has a fairly trivial number of configuration registers. In a practical hardware implementation there are likely to be considerably more registers. Also, there may be a number of wait states introduced in gaining access to the registers. This means that such reprogramming can take a significant amount of time (from the system viewpoint). As mentioned previously, decisions during reception are often time-critical. The time taken to do the reprogramming means that there is less time left and therefore there is less flexibility to implement software work-arounds. The alternative is to increase the clock frequency to reduce the time taken, which has an effect on system power consumption.

[0013] Additionally, a microprocessor (and associated ROM and RAM memories) consumes significant amounts of energy when active. Typically, in an event-driven system such as that described, the processor will be shut down when there are no tasks to perform and will consume almost no energy. Once the "intelligence" of the microprocessor has been used to make a decision about what type of field is to come next, it is wasteful of energy for the processor to perform the manual process of updating respective of the registers.

SUMMARY OF THE INVENTION

[0014] The following presents a simplified summary in order to provide a basic understanding of one or more aspects and/or embodiments of the invention. This summary is not an extensive overview of the invention, and is neither intended to identify key or critical elements of the invention, nor to delineate the scope thereof. Rather, the primary purpose of the summary is to present one or more concepts of the invention in a simplified form as a prelude to the more detailed description that is presented later.

[0015] A system for constructing and deconstructing data packets is disclosed, wherein the system is operable to support a number of different coding formats. In one example the system comprises a processor means operatively coupled to a processor bus. The system also comprises a packet processing data path which is attached to the processor bus as a slave via a bus interface means. The packet processing data path comprises a number, n, of blocks, wherein n is an integer. Respective blocks comprise configuration registers operable to provide information on what operation the block should perform for said current packet field being processed. The bus interface means comprises a first register operable to control a bus of Update Enable signals, which bus also is connected to the n blocks. The bus interface means also comprises a second register operable to control a Mode signal, which also are connected to the n blocks. An Update Mode signal is connected to the bus interface means, and to the n blocks. A write to the second register causes the Update Mode signal to be pulsed active, triggering the enabled configuration registers to update their values.

[0016] The system achieves a way of controlling a datapath, that retains advantages of full programmability while mitigating processor intervention in normal operation. The microprocessor is used for the tasks, e.g. making decisions, in which it is most efficient, while mitigating time and energy consumption for updating configuration registers.

[0017] In one example respective blocks of said packet processing data path are connected to and communicate with block neighbors.

[0018] Furthermore, said bus interface means may be operable to decode the bus protocol and perform write or read operations to said configuration registers.

[0019] Said system may also comprise a further set of registers operable to enable or disable the update of said configuration registers.

[0020] Furthermore, said system may also comprise additional registers operable to store pre-defined modes for respective configuration registers, wherein complete mode definitions, for respective configuration registers, comprise whether said configuration registers should be updated, and if so what value the registers should be set to.

[0021] A pre-defined mode for respective configuration registers may be hard-wired, wherein complete mode definitions, for respective configuration registers, comprise whether the configuration registers should be updated, and if so what values the registers should be set to.

[0022] Furthermore, said system may also comprise additional registers operable to store pre-defined modes for some of said configuration registers, and in that a pre-defined mode for the remaining of said configuration registers is hard-wired, wherein complete mode definitions, for respective configuration registers, comprise whether said configuration registers should be updated, and if so what values the registers should be set to.

[0023] Said packet processing data path may comprise an RF interface block operable to transfer data to and from a radio, a FEC block operable to perform error correction coding or decoding, a CRC block operable to generate or check a CRC code, and a DMA endpoint block which is connected to said processor means, and operable to request that information bytes be transferred to or from a memory means, comprised in said system, via direct memory access, and to issue an interrupt signal to said processor means when the required number of bytes have been transferred.

[0024] Furthermore, said RF interface block may comprise a Bit-Count configuration register operable to store the number of bits to transfer to or from said RF interface block, and in the receive direction, to cause data to start flowing through said packet processing data path.

[0025] Said FEC block may comprise a FEC-Type configuration register operable to store the type of error correction coding.

[0026] Said CRC block may comprise a CRC-Type configuration register operable to store the type of CRC, a CRC-reset configuration register operable to reset the CRC calculation at the start of the packet field if set true, and a CRC-end configuration register operable, when set true, to indicate that this is the last field over which the CRC is calculated, and that the checksum should be appended to/stripped from said field.

[0027] Said DMA endpoint block may comprise a Byte-Count configuration register operable to store the number of bytes to transfer to/from said memory means, and in the transmit direction, to cause data to start flowing through said packet processing data path.

[0028] A method is also disclosed for constructing and deconstructing data packets with the aid of a system operable to support a number of different coding formats. In one example the system comprises a processor means operatively coupled to a packet processing data path, which is attached to a processor bus as a slave via a bus interface means. The packet processing data path comprises a number, n, of blocks, wherein n is an integer. Respective blocks comprise configuration registers operable to provide information on what operation the block should perform for the current packet field being processed. The bus interface means comprises a first register, and a second register. The method comprises transmitting via the processor means a write signal to said second register which then transmits a Mode signal to respective blocks. The method also comprises transmitting with the aid of said first register Update Enable signals to said configuration registers that are defined to be updated for the new mode. Additionally, as a consequence of said write signal, an Update Mode signal is pulsed active. Also, said enabled configuration registers are triggered to update their values in parallel to transmit said active Update Mode signal to said n blocks.

[0029] The method achieves a way of controlling a datapath that retains advantages of full programmability while mitigating required processor intervention in normal operation. The microprocessor is used for the tasks, e.g. making decisions, in which it is most efficient, while mitigating time and energy consumption for updating configuration registers.

[0030] The method may also comprise enabling or disabling the update of said configuration registers with the aid of a further set of registers comprised in said system.

[0031] The method may also comprise, with the aid of additional registers comprised in said system, storing a pre-defined mode for respective configuration registers, wherein complete mode definitions, for respective configuration registers, comprise whether said configuration registers should be updated, and if so what values the registers should be set to.

[0032] The method may also comprise hard-wiring a pre-defined mode for respective configuration registers, wherein complete mode definitions, for respective configuration registers, comprise whether said configuration registers should be updated, and if so what value the registers should be set to.

[0033] The method may also comprise, with the aid of additional registers comprised in said system, storing pre-defined modes for some of said configuration registers and hard-wiring predefined modes for the remaining of said configuration registers, wherein complete mode definitions, for respective configuration registers, comprise whether said configuration registers should be updated, and if so what value the registers should be set to.

[0034] The respective blocks of said packet processing data path may be connected to and operable to communicate with neighboring blocks.

[0035] The method may also comprise, with the aid of an RF interface block comprised in said packet processing data path, transferring data to and from a radio, with the aid of a FEC block comprised in said packet processing data path, performing error correction coding or decoding, with the aid of CRC block comprised in said packet processing data path, generating or checking a CRC code, with the aid of a DMA endpoint block comprised in said packet processing data path, requesting that information bytes be transferred to or from a memory means comprised in said system, via direct memory access, and issuing an interrupt signal to said processor means when the required number of bytes have been transferred.

[0036] The method may also comprise, with the aid of a Bit-Count configuration register comprised in said RF interface block, storing the number of bits to transfer to or from said RF interface block, and in the receive direction, causing data to start flowing through said packet processing data path.

[0037] The method may also comprise, with the aid of a FEC-Type configuration register comprised in said FEC block, storing the type of error correction coding.

[0038] The method may also comprise, with the aid of a CRC-Type configuration register comprised in said CRC block, storing the type of CRC, with the aid of a CRC-reset configuration register comprised in said CRC block, resetting the CRC calculation at the start of the packet field if set true, and with the aid of a CRC-end configuration register comprised in said CRC block, when set true, indicating that this is the last field over which the CRC is calculated, and that the checksum should be appended to/stripped from said field.

[0039] The method may also comprise, with the aid of a Byte-Count configuration register comprised in said DMA endpoint block, storing the number of bytes to transfer to/from said memory means, and in the transmit direction, causing data to start flowing through said packet processing data path.

[0040] At least one computer program product for constructing and deconstructing data packets is also disclosed. The at least one computer program product is loadable into internal memory of at least one digital computer. The computer program product(s) comprise software code portions for performing a methodology set forth herein.

[0041] The computer program product(s) provide a way of controlling a datapath that retains the advantages of full programmability while mitigating the required processor intervention in normal operation. The microprocessor is used for the tasks, e.g. making decisions, in which it is most efficient, while mitigating time and energy consumption for updating configuration registers.

BRIEF DESCRIPTION OF THE DRAWINGS

[0042] The invention is explained in more detail below wherein reference is made to the following drawings.

[0043] FIG. 1 illustrates different examples of Bluetooth.RTM. packet types.

[0044] FIG. 2 illustrates a block diagram of a conventional system for constructing and deconstructing data packets.

[0045] FIG. 3 illustrates examples of configuration registers comprised in the system illustrated in FIG. 2.

[0046] FIG. 4 illustrates examples of register configurations for different packet fields.

[0047] FIG. 5 is a block diagram illustrating an example of a system for constructing and deconstructing data packets as described herein.

[0048] FIG. 6 is a flow chart illustrating a method for constructing and deconstructing data packets as described herein.

[0049] FIG. 7 is a schematic diagram illustrating computer program products as described herein.

DETAILED DESCRIPTION OF THE INVENTION

[0050] One or more examples of the present invention will now be described with reference to the drawing figures, wherein like reference numerals are used to refer to like elements throughout. It should be understood that the drawing figures and following descriptions are merely illustrative and that they should not be taken in a limiting sense. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding. It will be appreciated that variations of the illustrated systems and methods apart from those illustrated and described herein may exist and that such variations are deemed as falling within the scope of the appended claims.

[0051] Turning to FIG. 5, a block diagram illustrates an example of a system 50 for constructing and deconstructing data packets. The system 50 is operable to support a number of different coding formats. The system 50 comprises a processor means 52 operatively coupled to a processor bus 54. The system 50 also comprises a packet processing data path 56 connected to the processor means 52. The packet processing data path 56 is also attached to the processor bus 54 as a slave via a bus interface means 58. The packet processing data path 56 comprises a number, n, of blocks 56.sub.1-56.sub.n, wherein n is an integer. In the packet processing data path 56 disclosed in FIG. 5, there are four blocks 56.sub.1-56.sub.4. Respective block 56.sub.1-56.sub.4 comprise configuration registers (not shown in FIG. 5) operable to provide information on what operation the block 56.sub.1-56.sub.4 should perform for the packet field being processed. The bus interface means 58 comprises a first register 58.sub.1 operable to control a bus of Update Enable signals, which bus also is connected to the four blocks 56.sub.1-56.sub.4. The bus interface means 58 also comprises a second register 58.sub.2 operable to control a Mode signal, which also is connected to the four blocks 56.sub.1-56.sub.4. As also is apparent in FIG. 5, an Update Mode signal is connected to the bus interface means 58 and to the four blocks 56.sub.1-56.sub.4. A write to the second register 58.sub.2 causes the Update Mode signal to be pulsed active, which will trigger the enabled configuration registers to update their values. As also is apparent from FIG. 5, respective blocks 56.sub.1; 56.sub.2; 56.sub.3; 56.sub.4 of the packet processing data path 56 is connected to and communicates with its block neighbors. The bus interface means 58 is operable to decode the bus protocol and perform write or read operations to the configuration registers.

[0052] The system 50 may also comprise a further set of registers operable to enable or disable the update of the configuration registers.

[0053] The system 50 may also comprise additional registers operable to store pre-defined modes for respective configuration registers. Mode definitions, for respective configuration registers, comprise whether the configuration register should be updated, and if so what values the registers should be set to.

[0054] In one example, pre-defined modes for respective configuration registers are hard-wired.

[0055] The system 50 may also comprise additional registers operable to store pre-defined modes for at least some of the configuration registers.

[0056] The packet processing data path 56 may comprise an RF interface block 56.sub.1, operable to transfer data to and from a radio, a FEC block 56.sub.2 operable to perform error correction coding or decoding, a CRC block 56.sub.3 operable to generate or check a CRC code, and a DMA endpoint block 56.sub.4 which is connected to the processor means 52, and operable to request that information bytes be transferred to or from a memory means 60, comprised in the system 50 (see FIG. 5), via direct memory access, and to issue an interrupt signal to the processor means 52 when the required number of bytes have been transferred.

[0057] The RF interface block 56.sub.1 may comprise a Bit Count configuration register operable to store the number of bits to transfer to or from the RF interface block 56.sub.1, and in the receive direction, to cause data to start flowing through the packet processing data path 56.

[0058] The FEC block 56.sub.2 may comprise a FEC-Type configuration register operable to store the type of error correction coding.

[0059] The CRC block 56.sub.3 may comprise a CRC-Type configuration register operable to store the type of CRC, a CRC-reset configuration register operable to reset the CRC calculation at the start of the packet field if set true, and a CRC-end configuration register operable, when set true, to indicate that this is the last field over which the CRC is calculated, and that the checksum should be appended to/stripped from the field.

[0060] The DMA endpoint block 56.sub.4 may comprise a Byte-Count configuration register operable to store the number of bytes to transfer to/from the memory means 60, and in the transmit direction, to cause data to start flowing through the data processing data path 56.

[0061] Turning to FIG. 6, a flow chart illustrates a method for constructing and deconstructing data packets. While the method is illustrated and described below as a series of acts or events, it will be appreciated that the present invention is not limited by the illustrated ordering of such acts or events. For example, some acts may occur in different orders and/or concurrently with other acts or events apart from those illustrated and/or described herein. In addition, not all illustrated acts may be required for implementation. Further, one or more of the acts depicted herein may be carried out in one or more separate acts and/or phases.

[0062] The method may be carried out in a system operable to support a number of different coding formats. Such a system may correspond to the system 50 illustrated in FIG. 5, for example, which system 50 comprises a processor means 52 operatively coupled to a processor bus 54 and a packet processing data path 56 which is attached to the processor bus 54 as a slave via a bus interface means 58. The packet processing data path 56 comprises a number, n, of blocks 56.sub.1; . . . ; 56.sub.n, wherein n is an integer. Respective block 56.sub.1; . . . ; 56.sub.n are operable to provide information on what operation the block 56.sub.1; . . . ; 56.sub.n should perform on the packet field being processed. The bus interface means 58 comprises a first register 58.sub.1, and a second register 58.sub.2. The method begins at 200 and continues to 202 where, with the aid of the processor means 52, a write signal is transmitted to the second register 58.sub.2, which then transmits a Mode signal to respective blocks 56.sub.1; . . . ; 56.sub.n. Thereafter, the method continues at 204, with the aid of the first register 58.sub.1, to transmit Update Enable signals to the configuration registers that are defined to be updated for the new mode. Then, at 206, as a consequence of the write signal, an Update Mode signal is pulsed active. Thereafter, at 208 the active Update Mode signal is transmitted to the n blocks 56.sub.1; . . . ; 56.sub.n, triggering the enabled configuration registers to update their values in parallel. The method ends at 210.

[0063] The method may also comprise enabling or disabling the update of the configuration registers with the aid of a further set of registers comprised in the system 50.

[0064] The method may also comprise, with the aid of additional registers comprised in the system 50, storing pre-defined modes for respective configuration registers, wherein complete mode definitions, for respective configuration registers, comprises whether the configuration registers should be updated, and if so what values the registers should be set to.

[0065] The method may also comprise hard-wiring pre-defined modes for respective configuration registers.

[0066] The method may also comprise, with the aid of additional registers comprised in the system 50, storing pre-defined modes for at least some of the configuration registers, and hard-wiring pre-defined modes for at least some of the configuration registers.

[0067] In one example, a block 56.sub.x of the packet processing data path 56 is connected to and is operable to communicate with its neighbors, e.g. blocks 56.sub.x-1, 56.sub.x-1.

[0068] The method may also comprise, with the aid of an RF interface block 56.sub.1 comprised in the packet processing data path 56, transferring data to and from a radio, with the aid of a FEC block 56.sub.2 comprised in the packet processing data path 56, performing error correction coding or decoding, with the aid of CRC block 56.sub.3 comprised in the packet processing data path 56, generating or checking a CRC code, with the aid of a DMA endpoint block 56.sub.n comprised in the packet processing data path 56, requesting that information bytes be transferred to or from a memory means 60 comprised in the system 50 via direct memory access, and issuing an interrupt signal to the processor means 52 when the required number of bytes have been transferred.

[0069] The method may also comprise, with the aid of a Bit-Count configuration register comprised in the RF interface block 56.sub.1, storing the number of bits to transfer to or from the RF interface block 56.sub.1, and in the receive direction, causing data to start flowing through the packet processing data path 56.

[0070] The method may also comprise, with the aid of a FEC-Type configuration register comprised in said FEC block 56.sub.2, storing the type of error correction coding.

[0071] The method may also comprise, with the aid of a CRC-Type configuration register comprised in the CRC block 56.sub.3, storing the type of CRC, with the aid of a CRC-reset configuration register comprised in the CRC block 56.sub.3, resetting the CRC calculation at the start of the packet field if set true, and with the aid of a CRC-end configuration register comprised in the CRC block 56.sub.3, when set true, indicating that this is the last field over which the CRC is calculated, and that the checksum should be appended to/stripped from said field.

[0072] The method may also comprise, with the aid of a Byte-Count configuration register comprised in the DMA endpoint block 56.sub.n, storing the number of bytes to transfer to/from the memory means 60, and in the transmit direction, causing data to start flowing through the packet processing data path 56.

[0073] The disclosure herein is stated in additional terms as follows. A modified datapath is described, and a method for controlling it that retains advantages of full programmability while mitigating required processor intervention in normal operation.

[0074] At the time of designing the datapath hardware and/or releasing the software for the device, the protocol to be implemented should be defined (even if it is expected to change in some details at a later stage). This means that values for configuration registers for most or all of the different fields of the different packet types can be defined in advance. These pre-defined configurations or `modes` can be stored in the different processing blocks of the datapath. Complete `mode` definitions comprise, for respective configuration registers, whether particular registers should be updated and if so what values the registers should be set to.

[0075] Per-mode settings for respective configuration registers can be stored either in additional registers (which are programmed only once at start-up) or the configurations can be hard-wired. The register-based approach provides flexibility, at the expense of additional hardware. A mixture of the two approaches may be desired: all or part of the configuration for a particular mode can be contained in registers, depending on the probability that a particular configuration register will need to be changed subsequently.

[0076] To receive a certain field of a packet, the microprocessor programs a single register, which selects the appropriate mode and simultaneously informs datapath blocks of the change to the new mode. Respective datapath blocks then update those configuration registers that are defined to be updated for this new mode. Should there be further changes that are unique to respective packets (e.g. the length of the data payload) then these can be written individually after the main mode change.

[0077] To maintain flexibility for future protocol changes or work-arounds, the method can be enhanced by a further set of registers which enables or disables the update of configuration registers. Respective configuration could be represented by a single bit, and therefore a single write to a 32-bit register could select 32 different configuration registers to be updated or not. For example, a Bit_Count register has the side effect of causing data to start being fed through the datapath. If there is a requirement to change the number of bits in a particular field (or to support a new type of field), then the processor can clear the relevant bit in the register before selecting the affected mode. The processor can then update Bit_Count according to the new requirement.

[0078] If there is a mode (particularly a rarely used one) that differs slightly from another mode, then the less commonly used mode can be made a special case of another mode. For example, AUX1 packets are very similar to DM1 packets with the exception that no CRC is applied to the payload. In this case, the processor would select the appropriate DM1 mode, and then reprogram the CRC configuration to "No CRC".

[0079] Turing to FIG. 7, a schematic diagram illustrates one or more computer program products for constructing and deconstructing data packets. This is disclosed relative to different digital computers 100.sub.1, . . . , 100.sub.n, wherein n is an integer. N different computer program products 102.sub.1, . . . , 102.sub.n, are illustrated in the form of compact discs. The different computer program products 102.sub.1, . . . , 102.sub.n are directly loadable into the internal memory of the n different digital computers 100.sub.1, . . . , 100.sub.n. Respective computer program product 102.sub.1, . . . , 102.sub.n may comprise software code portions for performing some or all of the actions described above with regard to FIG. 6 when the product (s) 102.sub.1, . . . , 102.sub.n is/are run on said computer(s) 100.sub.1, . . . , 100.sub.n. The computer program products 102.sub.1, . . . , 102.sub.n may, for example, be in the form of floppy disks, RAM disks, magnetic tapes, opto-magnetic disks or any other suitable computer readable mediums and/or products.

[0080] Although the invention has been illustrated and described with respect to one or more examples, equivalent alterations and modifications will occur to others skilled in the art upon the reading and understanding of this specification and the annexed drawings. In particular regard to the various functions performed by the above described components (e.g., assemblies, devices, circuits, etc.), the terms (including a reference to a "means") used to describe such components are intended to correspond, unless otherwise indicated, to any component which performs the specified function of the described component (i.e., that is functionally equivalent), even though not structurally equivalent to the disclosed structure. In addition, while a particular feature may have been disclosed with respect to only one example, such feature may be combined with one or more other features as may be desired and advantageous for any given or particular application. Furthermore, to the extent that the term "includes" is used in either the detailed description or the claims, such term is intended to be inclusive in a manner similar to the term "comprising." Also, "exemplary" is merely intended to mean an example, rather than "the best".

* * * * *

File A Patent Application

  • Protect your idea -- Don't let someone else file first. Learn more.

  • 3 Easy Steps -- Complete Form, application Review, and File. See our process.

  • Attorney Review -- Have your application reviewed by a Patent Attorney. See what's included.