WO2010146714A1 - データ転送方法、コード変換回路及び装置 - Google Patents

データ転送方法、コード変換回路及び装置 Download PDF

Info

Publication number
WO2010146714A1
WO2010146714A1 PCT/JP2009/061234 JP2009061234W WO2010146714A1 WO 2010146714 A1 WO2010146714 A1 WO 2010146714A1 JP 2009061234 W JP2009061234 W JP 2009061234W WO 2010146714 A1 WO2010146714 A1 WO 2010146714A1
Authority
WO
WIPO (PCT)
Prior art keywords
character
data
bit
circuit
control
Prior art date
Application number
PCT/JP2009/061234
Other languages
English (en)
French (fr)
Inventor
誠之 岡田
Original Assignee
富士通株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 富士通株式会社 filed Critical 富士通株式会社
Priority to PCT/JP2009/061234 priority Critical patent/WO2010146714A1/ja
Publication of WO2010146714A1 publication Critical patent/WO2010146714A1/ja

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M5/00Conversion of the form of the representation of individual digits
    • H03M5/02Conversion to or from representation by pulses
    • H03M5/04Conversion to or from representation by pulses the pulses having two levels
    • H03M5/14Code representation, e.g. transition, for a given bit cell depending on the information in one or more adjacent bit cells, e.g. delay modulation code, double density code
    • H03M5/145Conversion to or from block codes or representations thereof

Definitions

  • the present invention relates to a data transfer method, a code conversion circuit, and an apparatus.
  • a relatively low-speed parallel data bus has been used for information transmission between large scale integrated circuits (LSIs) or between devices having LSIs.
  • LSIs large scale integrated circuits
  • the parallel data bus allows easy coupling between LSIs or devices, it is difficult to improve the information transmission capability due to skew generated between signals. Therefore, in recent years, a relatively high-speed serial bus has been used for coupling between LSIs or devices.
  • PCI Express Peripheral Component Interconnect Express Express
  • 8B10B method a coding method called 8B10B method is adopted for the purpose of enabling high-speed serial transmission (for example, Patent Document 1).
  • This 8B10B system is adopted not only by PCI Express but also by Ethernet, Fiber Channel, IEEE 1394, and the like.
  • the 8B10B system is roughly divided into the following two features.
  • D characters shown in FIG. 1 and 12 types of control characters called K characters shown in FIG. 2 are multiplexed to make a lookup table LUT of 3 bits and 5 bits. Is converted into a 10-bit symbol code and transmitted.
  • FIG. 1 shows an example in which a 10-bit symbol code is output using a lookup table LUT based on an 8-bit D character, K character, control character valid signal, and disparity value.
  • FIG. 2 shows the code, symbol, name and meaning of the K character.
  • the 10-bit symbol since it is defined that only a maximum of 5 consecutive bit values appear in a 10-bit symbol, the 10-bit symbol always includes at least one bit value transition, Clock recovery at the receiving device is facilitated.
  • the transition of the bit value means that the bit value transitions from 0 to 1 or from 1 to 0.
  • the DC balance is adjusted using disparity, so that the transmission characteristics are good.
  • the DC balance indicates, for example, the ratio between the number of values “0” and the number “1” appearing during a certain period (time) of bit values on the transmission line.
  • a good DC balance indicates that the number of values “0” and “1” appearing in a certain period are substantially the same.
  • An object of the present invention is to provide a data transfer method, code conversion circuit, and apparatus that can reduce the bus overhead during serial transmission and can effectively use the bandwidth of the bus.
  • a data character having a bit width M (M is a natural number of 3 or more) and a control character having a bit width N (N is a natural number of 1 or more) are multiplexed and an inverted symbol code is provided.
  • a first circuit that multiplexes a data character having a bit width M (M is a natural number of 3 or more) and a control character having a bit width N (N is a natural number of 1 or more);
  • a second circuit for generating a symbol code having a larger bit width of M + 1 or N + 3 by adding an inversion control bit indicating whether or not the output is an inversion symbol code to the output of one circuit;
  • the symbol code is converted from parallel data to serial data and output to the transmission line, and the first circuit converts the control character valid signal and a disparity value having a predetermined polarity indicating the number of predetermined logical values included in the data character.
  • a code conversion circuit is provided for determining transfer data based thereon.
  • a first circuit that multiplexes a data character having a bit width M (M is a natural number of 3 or more) and a control character having a bit width N (N is a natural number of 1 or more);
  • Code conversion having a second circuit for generating a symbol code having a bit width of M + 1 or N + 3, which is greater by adding an inversion control bit indicating whether or not it is an inverted symbol code to the output of one circuit
  • a conversion circuit for converting the symbol code from parallel data to serial data and outputting the converted data to a transmission line, the code conversion circuit indicating a control character valid signal and the number of predetermined logic values included in the data character
  • An apparatus is provided for determining transfer data based on a disparity value of a predetermined polarity.
  • D character It is a figure explaining K character. It is a figure explaining operation
  • D character It is a figure explaining K character. It is a figure explaining operation
  • a character to be transferred in order to realize a desired transfer efficiency (or transmission efficiency) in serial transfer (or transmission) with serial / parallel conversion.
  • an inversion control bit indicating whether or not it is an inversion type symbol code, the data character and the control character are multiplexed and transferred (or transmitted).
  • transfer data is determined based on a disparity value having a predetermined polarity indicating the number of predetermined logical values included in the data character. For example, the number of predetermined logical values included in the data character is measured to measure a disparity value having a predetermined polarity, and the running disparity value of the transfer data that has already been transferred is held.
  • the disparity value of the data character to be transferred is measured, and if the result of comparison with the running disparity value held is positive (that is, the polarity matches), the inversion control Set the bit to OFF and output the data character as it is.
  • the inversion control bit is set to ON, and all bits of the data character are inverted. To do.
  • the inversion control bit is turned on, and transfer data is determined with reference to a lookup table.
  • the multiplexed code can be efficiently AC transferred, the bus overhead during serial transfer can be reduced, and the bus bandwidth can be used effectively.
  • AC transfer refers to transferring data using a signal having AC characteristics.
  • the AC characteristics do not depend on the data character to be transferred with respect to the data transferred through the transmission path. For example, even if all bits of the data character are always 0 (All "0"), This symbol code always includes the values “0” and “1”, which means that it is guaranteed that at least one bit value transition occurs.
  • the data having AC characteristics means that the data transferred through the transmission path has such AC characteristics.
  • FIG. 3 is a diagram for explaining the operation of the code conversion circuit in one embodiment of the present invention.
  • the code conversion circuit 11 shown in FIG. 3 includes, for example, 9-bit data characters (D characters) D0 to D8 as transfer data (or transmission data), 4-bit control characters (K characters) K0 to K3, and control. A character valid signal is input. Further, the code conversion circuit 11 outputs 10-bit symbol codes CNtl, S0 to S8 including the inversion control bit CNtl.
  • D characters 9-bit data characters
  • K characters 4-bit control characters
  • a character valid signal is input.
  • the code conversion circuit 11 outputs 10-bit symbol codes CNtl, S0 to S8 including the inversion control bit CNtl.
  • the bit Bit0 of the D character is expressed as D0 or D_Bit0
  • the bit Bit0 of the K character is expressed as K0 or K_Bit0
  • the bit Bit0 of the symbol code is expressed as S0 or S_Bit0.
  • FIG. 4 is a diagram for explaining an example of the definition of the symbol code.
  • FIG. 4A shows assignment of D characters to symbol codes
  • FIG. 4B shows assignment of K characters to symbol codes.
  • the 10-bit symbol code is formed of 1-bit inversion control bit CNtl and 9-bit payload data.
  • one or two pieces of 10-bit symbol data are allocated to each 9-bit transfer data, that is, each value of the D character as shown in FIG.
  • the inversion control bit Cntl indicates that the value “0” and the value “1” of the payload data are inverted with respect to the allocation target character.
  • a value of “0” (or off) indicates that the value “0” and the value “1” of the payload data are not inverted with respect to the allocation target character.
  • Normal Decode When a D character is represented by a binary number, only a normal decode (Normal Decode) is performed for a D character including five values “1” (that is, the number of “1”) as a “character of D character”. It is allocated and Inverted Decode is not allocated. Normal decoding is selected when the running disparity value is positive, and means that normal decoding to which a non-inverted symbol code is assigned is performed. On the other hand, inverted decoding is selected when the running disparity value is negative, and means that inverse decoding is performed to which an inverted symbol code is assigned. Two symbol codes of normal decoding and inverted decoding are assigned to D characters whose value “1” is other than five. In FIG. 4, “the number of“ 1 ”” indicates the number of “1” in the symbol code including the inversion control bit CNtl.
  • 1024 types of symbols can be defined. Of these, a code that can be used as a K character, that is, the value of the inversion control bit Cntl is “1” (including Cntl). ) There are 126 types of codes in which the number of values “1” in the symbol code is five.
  • FIG. 5 is a diagram for explaining an example of the definition of the control character.
  • FIG. 5 shows 126 types of codes that can be used as K characters among 1024 types of definable 10-bit symbol codes.
  • the disparity is calculated. Specifically, the number of values “0” and “1” included in the bit string of the symbol code to be transferred is compared, and the difference number is held. When this difference number is negative, it indicates that there are many transfers of the value “0” in the accumulated value of the symbol code transferred in the past. On the other hand, when the difference number is positive, it indicates that there are many transfers of the value “1” in the accumulated value of the symbol code transferred in the past.
  • This difference number can be used as a disparity (or disparity value) having a predetermined polarity indicating the number of predetermined logical values included in the D character. Therefore, when transferring the D character, the symbol code to be transferred is selected according to the normal decoding or the inverted decoding of FIG. 4 selected according to the polarity of the disparity.
  • bit width of the data character is 9
  • the integer value is not limited to bits, and may be an integer value of 3 bits or more, preferably an odd integer value of 3 bits or more.
  • the bit width of the symbol code is either M + 1 or N + 3, whichever is larger It becomes the numerical value of.
  • FIG. 6 is a block diagram illustrating an information processing apparatus to which the data transfer method, code conversion circuit, and apparatus according to this embodiment can be applied.
  • the information processing apparatus 20 shown in FIG. 6 includes a plurality of system boards 21-0 to 21-n (n is a natural number of 1 or more), a crossbar device 22, and a plurality of input / output (IO) devices 23-0 to 23-n, a crossbar bus 24, and an IO bus 25.
  • n is a natural number of 1 or more
  • IO input / output
  • each of the system boards 21-0 to 21-n has the same structure, and a plurality of CPUs (Central Processing Units) 211-0 to 211-m (m is a natural number of 1 or more independent of n) A memory 212, a memory control device 213, a CPU bus 214, and a memory bus 215.
  • CPUs Central Processing Units
  • m is a natural number of 1 or more independent of n
  • a memory 212 is connected to the memory control device 213 via the CPU bus 214
  • the memory 212 is connected to the memory control device via the memory bus 215. 213 is connected.
  • Each system board 21-0 to 21-n is connected to the crossbar device 22 via the crossbar bus 24, and each IO device 23-0 to 23-n is connected to the crossbar device 22 via the IO bus 25. Yes.
  • Data transfer between each of the CPUs 211-0 to 211-m and the memory control device 213 is performed by a code conversion circuit (not shown) in each of the CPUs 211-0 to 211-m and a code conversion circuit in the memory control device 213 ( (Not shown) via the CPU bus 214.
  • data transfer between the memory 212 and the memory control device 213 is performed between the memory 212 and a code conversion circuit (not shown) in the memory control device 213. Is done through.
  • data transfer between the memory control device 213 and the crossbar device 22 is performed by a code conversion circuit (not shown) in the memory control device 213 and a code conversion in the crossbar device 22.
  • Data transfer between the crossbar device 22 and the IO devices 23-0 to 23-n is performed by a code conversion circuit (not shown) in the crossbar device 22 and the IO devices 23-0 to 23-n. This is performed between code conversion circuits (not shown) via the IO bus 25.
  • FIG. 7 is a block diagram showing a code conversion circuit in the transmission side device and a code conversion circuit in the reception side device.
  • the transmission side device and the reception side device are provided in the CPUs 211-0 to 211-m, the memory control device 213, the crossbar device 22, and the IO devices 23-0 to 23-n, respectively.
  • the transmission side device 31 is the memory control device 213 in the system board 21-0 and the reception side device 32 is the crossbar device 22.
  • the differential transmission path 33 such as a printed board wiring connecting the transmission side apparatus 31 and the reception side apparatus 32 is formed by the crossbar bus 24 in this example.
  • the transmission-side device 31 includes a clock oscillator 311, a data transmission circuit 312, a scrambler 313 using an LFSR (Linear Feedback Shift Register), a transmission-side control circuit 314, a transmission-side code conversion circuit 315, A serial (parallel serial) conversion circuit 316 and an output driver 317 are included.
  • the clock output from the clock oscillator 311 is input to the data transmission circuit 312, the transmission side control circuit 314, the transmission side code conversion circuit 315, and the parallel / serial conversion circuit 31.
  • a data character from the scrambler 313, a control character from the transmission side control circuit 314, and a control character valid signal are input to the transmission side code conversion circuit 315.
  • the output of the transmission side control circuit 314 is also input to the data transmission circuit 312.
  • the parallel data output from the transmission side code conversion circuit 315 is converted into serial data by the parallel / serial conversion circuit 316 and input to the output driver 317.
  • the reception side device 32 includes an input receiver 321, a clock recovery circuit 322, a serial / parallel conversion circuit 323, a reception side code conversion circuit 324, a descrambler 325 using an LFSR, a reception side control circuit 324, and data A receiving circuit 327 is included.
  • the clock recovered from the serial data output from the input receiver 321 by the clock recovery circuit 322 is input to the serial / parallel conversion circuit 323, the reception side code conversion circuit 324, the reception side control circuit 326, and the data reception circuit 327.
  • the serial data output from the input receiver 321 is converted into parallel data by the serial / parallel conversion circuit 323 and input to the reception code conversion circuit 324.
  • the data character output from the receiving side code conversion circuit 324 is input to the descrambler 325.
  • the control character, control character valid signal, and data valid signal output from the reception side code conversion circuit 324 are input to the reception side control circuit 326.
  • Outputs of the descrambler 325 and the receiving side control circuit are input to the data receiving circuit 327.
  • the data transmission circuit 312 and the data reception circuit 327 correspond to, for example, a data link layer of PCI Express.
  • the scrambler 313 and the descrambler 325 are provided to reduce EMI (Electro Magnetic Interference) generated in the differential transmission path 33 by converting transfer data into random numbers, but may be omitted.
  • EMI Electro Magnetic Interference
  • the transmission side control circuit 314 controls the state of the entire transmission side device 31 including the transmission side code conversion circuit 315.
  • the reception side control circuit 326 controls the state of the entire reception side device 32 including the reception side code conversion circuit 324.
  • An example of the control operation of the control circuits 314 and 326 is an initialization process.
  • a process using a control character called a K character is performed.
  • K character instructing initialization is sent from the transmission side device 31 to the reception side device 32, and an initialization sequence is executed.
  • the K character is a control character necessary for the initialization sequence.
  • the initialization process itself is well-known, and is described in, for example, Non-Patent Document 1. Therefore, the detailed description of the initialization process is omitted in this specification.
  • the parallel-serial conversion circuit 316 of the transmission side device 31 converts the parallel data output from the transmission side code conversion circuit 315 into serial data.
  • the serial / parallel conversion circuit 323 on the reception side converts serial data received by the input receiver 321 into parallel data and inputs the parallel data to the reception side code conversion circuit 324.
  • the parallel / serial conversion circuit 316 and the serial / parallel conversion circuit 323 can be formed by, for example, a high-speed shift register.
  • the output driver 317, the input receiver 321, and the differential transmission path 33 that connects them are circuits that transfer serial data between the transmission-side device 31 and the reception-side device 32 (for example, between LSIs). Since the circuit itself for transferring serial data is well known, detailed description of the circuit for transferring serial data is omitted in this specification.
  • Parallel data is output from the data transmission circuit 312 in accordance with the transmission path valid signal from the transmission-side control circuit 314.
  • the parallel data is converted into random numbers by the scrambler 313 and supplied to the transmission side code conversion circuit 315 as data characters.
  • the transmission side control circuit 314 outputs the control character
  • the transmission side control circuit 314 supplies the control character encoded with the control character valid signal to the transmission side code conversion circuit 315.
  • the scrambler 313 is installed for the purpose of diffusing the frequency component of electromagnetic radiation noise and facilitating EMI countermeasures. More specifically, when the D character to be transferred is a continuation of a specific value, for example, a continuation of a value “0” and a value “1”, a transmission circuit having no scrambler, Therefore, electromagnetic radiation noise having a specific frequency component is likely to be generated. Such noise generally tends to adversely affect other devices.
  • the scrambler 313 has the effect of making it difficult to generate electromagnetic radiation noise having a specific frequency component by converting it into a pseudo-random number even if the D character has the same continuous value, and is installed for this purpose. .
  • the transmission side code conversion circuit 315 the data character from the scrambler 313, the control character from the transmission side control circuit 314, and the control character valid signal are converted into parallel data called a symbol code and supplied to the parallel / serial conversion circuit 316.
  • the parallel-serial conversion circuit 316 converts parallel data into serial data in synchronization with a clock (transmission clock) output from the clock oscillator 311 and outputs the serial data.
  • the clock generator 311 outputs a low-speed clock for controlling parallel data transfer in addition to the transmission clock, and supplies the low-speed clock to each unit in the transmission-side device 31.
  • the low-speed clock has a low speed, that is, a low frequency compared to the transmission clock.
  • the serial data output from the parallel-serial conversion circuit 316 is input to the reception side device 32 via the output driver 317 and the differential transmission path 33.
  • the input receiver 321 outputs the received serial data to the clock recovery circuit 322 and the serial / parallel conversion circuit 323.
  • the differential transmission line 33 is used in FIG. 7, it goes without saying that a transmission line other than the differential transmission line 33 may be used.
  • the clock recovery circuit 322 includes a PLL (Phase Locked Loop) circuit, detects an edge of bit transition that exists at least once in the symbol data, and synchronizes the internal PLL circuit to recover the reception clock. Thus, in order to regenerate the reception clock, it is necessary to have a bit transition in the symbol data.
  • the method of recovering the reception clock in this way is called CDR (Clock Data Recovery) or embedded clock, and is a technique generally used in high-speed serial transfer.
  • the serial / parallel conversion circuit 323 converts the serial data from the input receiver 321 into a symbol code (parallel data) based on the regenerated reception clock and outputs it to the reception side code conversion circuit 324.
  • the reception-side code conversion circuit 324 detects the symbol type by decoding the symbol code, and generates a data character or control character and each valid signal. That is, the receiving side code conversion circuit 324 generates a data character and a data valid signal, or a control character and a control character valid signal.
  • the data character is output to the descrambler 325, and the control character, the control character valid signal, and the data valid signal are output to the receiving side control circuit 326.
  • the descrambler 325 cancels the randomization of the data character using the LFSR, and outputs the data character to the data receiving circuit 327.
  • the reception-side control circuit 326 performs each process according to the control character and the error signal, but these processes themselves are not directly related to the gist of the present embodiment, so in this specification, the details of these processes are described. Description of is omitted.
  • K characters can be defined as in the case of the conventional 8B10B system, and it is possible to define 16 types or more and 126 types of K characters at the maximum. Therefore, 8B10B control can be used for physical layer control and link layer control such as DLLP (Data Link Layer Packet). Therefore, the control circuits 314 and 326 can be designed based on the control circuit used in the 8B10B system.
  • 8B10B control can be used for physical layer control and link layer control such as DLLP (Data Link Layer Packet). Therefore, the control circuits 314 and 326 can be designed based on the control circuit used in the 8B10B system.
  • the transmission side code conversion circuit 315 As an example, the case where the bit width of the data character is 9 bits, the bit width of the control character is 4 bits, and the bit width of the symbol code is 10 bits will be described. However, the data character, control character, and symbol code are those bits. As described above, the width is not limited.
  • the transmission side code conversion circuit 315 selects one of the data character and the control character and multiplexes it with the control character valid signal, so that the data character and the control character can be separated within the reception side device 32. Embed the pattern in the symbol code. This particular bit pattern also guarantees the occurrence of bit transitions for clock recovery. Further, the transmission side code conversion circuit 315 selects the bit characteristic of the symbol code to be output based on the running disparity and adjusts the DC balance.
  • FIG. 8 is a flowchart for explaining the operation of the transmission side code conversion circuit 315.
  • step S1 determines from the control character valid signal whether or not the control character is valid. If the data to be transferred is a control character and the decision result in the step S1 is YES, a step S2 searches a look-up table described later and converts the control character into a 10-bit symbol code. In step S3, the 10-bit symbol code is output to the parallel-serial conversion circuit 316, and the process ends.
  • step S4 calculates the number of values “0” and “1” included in the bit string of the data character when the data character is represented by a binary bit string. To do. In the case of a 9-bit data character, the number of values “0” and “1” is an integer value in the range of 0-9. In step S5, the number of values “0” and “1” included in the data character is compared, and it is determined whether or not the number of values “0” is greater than the number of values “1”. In this embodiment, since the bit width of the data character is an odd value of 3 bits or more, the number of values “0” and “1” is not the same.
  • step S6 is a difference for counting the difference between the number of values “0” and the number of values “1”. It is determined whether the polarity of the number counter is positive.
  • the running disparity is indicated by a positive or negative value of a difference counter that holds the difference between the value “0” and the value “1” that have been output from the transmission side device so far (that is, already output). It is.
  • the difference number becomes a positive (positive polarity) value when the number of values “1” is large, and becomes a negative (negative polarity) value when the value “0” is larger.
  • step S6 If the decision result in the step S6 is YES, that is, if the polarity of the difference counter is positive, the step S7 sets the value of the inversion control bit CNtl to “0” to generate a normal decode, and the process advances to the step S3. .
  • the step S9 sets the value of the inversion control bit CNtl to “1” to generate an inverted decode, and the process Proceed to S3.
  • a step S8 decides whether or not the polarity of the count value of the difference counter that counts the difference between the number “0” and the value “1” is positive.
  • a step S7 sets a value of the inversion control bit CNtl to “0” to generate a normal decode, and the process advances to a step S3.
  • a step S9 sets the value of the inversion control bit CNtl to “1” to generate inverted decode, and the process advances to a step S3.
  • step S5 After the number of values “0” and “1” are compared in step S5, the running disparity is determined.
  • the number of values “0” is greater than the number of values “1”, and the polarity of the count value of the difference counter is positive
  • the number of data character values “0” and “1” are compared, the number of values “0” is smaller than the number of values “1”, and the polarity of the count value of the difference counter is not positive
  • the symbol code is generated by selecting the normal decode value shown in FIG.
  • FIG. 9 is a circuit diagram showing an example of the configuration of the transmission side code conversion circuit 315.
  • the transmission side code conversion circuit 315 includes a lookup table (or conversion table) 41, a normal decode value generation circuit 42, an inverted decode value generation circuit 43, a selection circuit 44, a decode circuit 45, connected as shown in FIG.
  • the determination circuit 46 includes a difference counter 47, an update value generation circuit 48, and an addition / subtraction circuit 49.
  • FIG. 10 is a diagram illustrating an example of the lookup table 41.
  • the bit width of the control character is 4 bits, 16 types of control characters are defined in FIG. 10, but as shown in FIG. 5, up to 126 types of control characters can be defined.
  • FIG. 11 is a diagram showing a truth table for explaining the operation of the decode value generation circuits 42 and 43.
  • ⁇ D_in [0] indicates an inverted value of the value of D_in [0].
  • the selection circuit 44 selects one symbol code among the three types of symbol codes output from the lookup table 41, the normal decode value generation circuit 42, and the inverted decode value generation circuit 43 according to a selection logic described later.
  • the transfer data is input to a decode circuit 45 that decodes the number of values “1”.
  • the decode circuit 45 receives the D character and outputs a numerical value obtained by calculating the number of values “1” included in the 9-bit bit string. For example, the decoding circuit 45 outputs a numerical value 0 when the D character is 000000000 and outputs a numerical value 4 when the D character is 001011010. In this example, since the bit string of the D character input to the decoding circuit 45 is 9 bits, the effective numerical value output from the decoding circuit 45 is in the range of 0-9.
  • the determination circuit 46 and the selection circuit 44 determine symbols to be output according to the truth table of FIG.
  • FIG. 12 is a diagram showing a truth table for explaining the selection of the transmission side output symbol code and the difference counter update.
  • the control character valid signal is on (ON)
  • the other selection conditions are invalid and the selection circuit 44 selects the K character as the output symbol code.
  • the selection circuit 44 selects the D character as the output symbol code.
  • the polarity of the count value of the difference counter 47 is negative and the number of D character values “1” is in the range of 0 to 4 (indicated by “ ⁇ 5” in FIG. 9).
  • the selection circuit 44 selects inverted decoding as the output symbol code. In other cases, the selection circuit 44 selects normal decoding.
  • the count value of the difference counter 47 is updated according to the output of the symbol code.
  • the transmission side code conversion circuit 315 is a difference number counter that holds the difference (that is, the difference number) between the number “0” and the value “1” in the bit string of the symbol code output so far. 47.
  • the difference counter 47 holds a numerical value (count value) from ⁇ 10 to +10 in decimal, and can be typically formed by a register that holds 1 sign bit and 4 data bits. is there.
  • the sign bit held by the difference counter 47 is the same as the running disparity in the conventional 8B10B code conversion circuit.
  • the number of values “0” and the number “1” included in the symbol code transferred in the past are calculated, and if the sign bit is positive, it indicates that the value “1” is greater, and the sign bit Is negative, it indicates that the value “0” is more.
  • the update value generation circuit 48 updates the count value of the difference counter 47 according to the truth table of FIG. 12 based on the control character valid signal, the difference counter sign bit, and the number of D character values “1”. decide.
  • the updated value of the count value of the difference counter 47 corresponds to the difference between the number of symbol code values “0” and the number of values “1” to be output at present, and is negative when the value “0” is large.
  • the number of “1” is large, the number is positive. For example, when the output symbol code is 00_0000_0000, the update value is -10, and when the output symbol code is 01_1111_1100, the update value is +4.
  • the effective numerical value output from the difference counter 47 is an even number in the range of ⁇ 10 to +10.
  • the K character has five values “1” in the symbol code, that is, the number “0” and the value “1”. Since the number is the same, the count value of the difference counter 47 is not changed. That is, when the K character is selected, this is equivalent to adding a numerical value 0 to the count value count value of the difference counter 47.
  • the current value of the count value of the difference counter 47 and the update value of the count value of the difference counter 47 output from the update value generation circuit 48 are calculated by the addition / subtraction circuit 49 and a new value is set in the difference counter 47. Is done.
  • the effective value and the updated value of the difference counter 47 are both in the range of effective values ⁇ 10 to +10. As is clear from FIG. 12, the updated value is obtained when the polarity of the count value of the difference counter 47 is negative. When the polarity of the difference value counter 47 is positive and the polarity of the update value is negative, the output value of the addition / subtraction circuit 49 falls within the range of -10 to +10.
  • the bit width of the data character is 9 bits
  • the bit width of the control character is 4 bits
  • the bit width of the symbol code is 10 bits as in the case of the transmission side code conversion circuit 315.
  • the character, control character, and symbol code are not limited to these bit widths.
  • the bit width of the data character, control character, and symbol code in the reception side code conversion circuit 324 needs to be the same as the bit width in the transmission side code conversion circuit 315.
  • the receiving side code conversion circuit 324 detects a specific bit pattern embedded in the symbol code, and separates the data character and the control character multiplexed based on the specific bit pattern.
  • the reception side code conversion circuit 324 detects a disparity error based on the running disparity and outputs a disparity error signal as in the case of the transmission side code conversion circuit 315.
  • FIG. 13 is a circuit diagram showing an example of the configuration of the receiving side code conversion circuit 324.
  • the receiving side code conversion circuit 324 includes a lookup table (or conversion table) 51, a D character generation circuit 52, a decode circuit 53, a character determination circuit 54, a difference counter 55, an update value generation, which are connected as shown in FIG. A circuit 56, an addition / subtraction circuit 57, and an error detection circuit 58 are included.
  • FIG. 14 is a diagram illustrating an example of the lookup table 51.
  • the bit width of the control character is 4 bits, 16 types of control characters are defined in FIG. 14, but up to 126 types of control characters can be defined as shown in FIG.
  • FIG. 15 is a diagram for explaining generation of data characters.
  • ⁇ S_in [0] indicates an inverted value of the value of S_in [0].
  • bits S0 to S8 (S_Bit0 to S_Bit8) excluding the inversion control bit CNtl in the symbol code are input to the decoding circuit 53 that decodes the number of values “1”.
  • the decoding circuit 53 outputs a numerical value obtained by calculating the number of values “1” included in the 9-bit bit string. For example, the decoding circuit 53 outputs a numerical value 0 when the bits S0 to S8 of the symbol code are 000000000, and outputs a numerical value 4 when it is 001011010.
  • the effective numerical value output from the decoding circuit 53 is in the range of 0-9.
  • the character determination circuit 54 detects the received symbol type according to the truth table of FIG.
  • FIG. 16 is a diagram illustrating a truth table for explaining reception-side character detection and difference counter update.
  • the received symbol code is a control character.
  • the K character valid signal output from the character determination circuit 54 is turned on. In other cases, since the received symbol code is a data character, the D character valid signal output by the character determination circuit 54 is turned on.
  • the difference counter 55 is updated.
  • the reception-side code conversion circuit 324 includes a difference counter 55 that holds the difference between the number of values “0” and “1” in the bit string of the symbol code received by the reception-side apparatus.
  • the difference counter 55 holds a numerical value (count value) from ⁇ 10 to +10 in decimal, and can be typically formed by a register that holds 1 sign bit and 4 data bits. It is.
  • This difference counter 55 may have the same configuration as the difference counter 47 of the transmission side code conversion circuit 315.
  • the sign bit held by the difference counter 55 is the same as the running disparity in the conventional 8B10B code conversion circuit. That is, the number of values “0” and the number “1” included in the symbol code received in the past is calculated, and if the sign bit is positive, the value “1” is greater, Is negative, it indicates that the value “0” is more.
  • the update value generation circuit 56 of the difference counter 55 determines the update value of the count value of the difference counter 55 according to the truth table of FIG. 16 based on the number of symbol code values “1”.
  • the updated value of the count value of the difference counter 55 corresponds to the difference between the number of symbol code values “0” and the number of values “1” currently received, and the value “0” of the bits S0 to S8 of the symbol code. "Is a negative numerical value, and a large number of" 1 "is a positive numerical value. For example, when the received symbol code is 00_0000_0000, the update value is -10, and when the received symbol code is 01_1111_1100, the update value is +4. Since the bit width of the input symbol code is 10 bits, the effective numerical value output from the difference counter 55 is a numerical value in the range of ⁇ 10 to +10.
  • the current value of the count value of the difference counter 55 and the update value of the count value of the difference counter 55 output from the update value generation circuit 56 are calculated by the addition / subtraction circuit 57 and a new value is set in the difference counter 55. Is done. Since both the effective value and the updated value of the difference counter 55 are in the range of the effective numerical value ⁇ 10 to +10, the output value of the addition / subtraction circuit 57 can take the range of ⁇ 20 to +20. However, since the transmission side code conversion circuit 315 selects and outputs the symbol code so that the difference number falls within the range of ⁇ 10 to +10, if the output value of the addition / subtraction circuit 57 is ⁇ 11 or less or +11 or more, the transmission is performed.
  • the error detection circuit 58 turns on the disparity error signal to be output (ON) and notifies the error.
  • FIG. 17 is a block diagram showing a code conversion circuit in the transmission side apparatus and a code conversion circuit in the reception side apparatus in another embodiment of the present invention.
  • a plurality of serial interfaces may be combined to form one logical interface.
  • a single serial interface is called in units called lanes, but in this PCI Express specification, in addition to the 1 lane configuration, 2 lanes, 4 lanes, 8 lanes, 12 lanes, and 16 lanes , And 32 lane configurations are defined.
  • a single serial interface is referred to as one lane as in the PCI Express specification.
  • FIG. 17 shows an example in which one serial interface circuit including a code conversion circuit is combined to form one logical interface. That is, in FIG. 17, the transmission side device 131 and the reception side device 132 connected by the transmission path 133 each have an eight lane configuration.
  • the transmission side device 131 includes a byte / bit separation circuit 61, transmission side code conversion circuits 62-0 to 62-7, and output units 63-0 to 63-7. Since the configurations of the lanes # 0 to # 7 in the transmission-side apparatus 131 are the same, only the configuration of the lane # 0 is shown.
  • the transmission side code conversion circuits 62-0 to 62-7 have the same configuration as the transmission side code conversion circuit 315 shown in FIG.
  • the output unit 63-0 includes a parallel-serial conversion circuit 316 and an output driver 317 having the same configuration as that in FIG.
  • the reception side device 132 includes input units 71-0 to 71-7, reception side code conversion circuits 72-0 to 72-7, and a bit-to-byte assembly circuit 73. Since the configurations of the lanes # 0 to # 7 in the reception side device 132 are the same, only the configuration of the lane # 0 is shown.
  • the input unit 71-0 includes an input receiver 321 and a serial-parallel conversion circuit 323 having the same configuration as that in FIG.
  • the receiving side code conversion circuits 72-0 to 72-7 have the same configuration as the receiving side code conversion circuit 324 shown in FIG. Note that the transmission-side control circuit and the reception-side control circuit can use the same configuration as the transmission-side control circuit 314 and the reception-side control circuit 326 shown in FIG. 7, and FIG. 17 shows these control circuits. The description is omitted.
  • the separation circuit 51 and the assembly circuit 73 are circuits necessary for a serial interface circuit composed of a plurality of lanes.
  • the separation circuit 51 has a function of receiving a 72-bit width parallel data bus from a data transmitter (not shown) and supplying parallel data to each lane every 9 bits.
  • the assembling circuit 73 has a function reverse to that of the separating circuit, that is, a function of assembling 9-bit parallel data from each lane into a 72-bit parallel data bus and transmitting it to a data receiver (not shown). .
  • FIG. 18 is a diagram illustrating an example of bit allocation for each lane.
  • FIG. 18 shows a bit definition for each lane of each bit of the 72-bit parallel data bus by the separation circuit 61.
  • the vertical axis indicates a symbol code (in this example, 10-bit width) transferred in each lane
  • the horizontal axis indicates each lane number, that is, a serial bus number.
  • bit 00 of the 72-bit parallel data bus is represented as D00.
  • the lane number # 0 is a combination of one determination control bit CNtl and data bits D00 to D08 to form a set of symbol codes.
  • a 72-bit width can be secured as the effective data bus width.
  • it is necessary to define one inversion control bit CNTL for a set of symbol codes it is arbitrary which bit of 72-bit parallel data is assigned to which lane, and data bits other than those shown in FIG. Needless to say, it may be assigned.
  • FIG. 19 is a diagram for explaining an example of bit allocation of a 72-bit parallel data bus.
  • FIG. 19 shows the definition of data of a 72-bit parallel data bus in the transmission side device 131 and the reception side device 132.
  • bits Bit0 to Bit7 (Bit0 to 7) of the 72-bit parallel data bus are defined as a data byte (Byte) Byte0.
  • the bits Bit64 to Bit71 (Bit64 to 71) of the 72-bit parallel data bus are defined as redundant bits [0: 7].
  • DIMM Dual Inline Memory Module
  • CB Check Bit
  • ECC error correction code
  • serial interface circuit having the code conversion circuit as in the present embodiment it is possible to handle 72-bit width data in the case of the 8-lane configuration, and therefore, without changing the format of the DIMM data, It can be output to the serial interface bus as it is.
  • an 8-bit data character is converted into a 10-bit symbol for transmission, resulting in a 25% bus overhead.
  • a 1-bit inversion control bit is added and converted into a 10-bit symbol, so the bus overhead is 11%.
  • 20% of the bandwidth is overhead in the conventional 8B10B system, but 10% overhead in each of the above embodiments, and the overhead is reduced by 10% compared to the conventional 8B10B system.
  • the bandwidth of the bus can be used effectively.
  • each of the transmission side device and the reception side device can use a control circuit similar to the conventional one.
  • a code conversion circuit having an AC characteristic necessary for clock recovery can be provided. That is, a certain number of symbols (maximum of 2 symbols in this example) always include at least one bit value transition (transition from 0 to 1 or 1 to 0). More specifically, it is in the case of 00_0000_0000 or 11_1111_1111 that the same bit string is obtained with one symbol code. Therefore, in the following description, the case of 00_0000_0000 will be described as an example, but it goes without saying that the same applies to the case of 11_1111_1111.
  • the count value of the difference counter 47 becomes ⁇ 10. That is, the polarity of the count value of the difference counter 47 is negative.
  • the maximum run length is 5 bits, whereas in each of the above embodiments, the maximum run length is 15 bits.
  • This run length is closely related to the clock recovery function, and it is considered that when the run length is extended, the clock recovery is adversely affected.
  • the receiving side device can stably Can regenerate the clock.
  • the transmission side code conversion circuit 315 of the transmission side device 31 uses the difference counter 47 to select a symbol code to be transferred to the reception side device 32.
  • the count value of the difference counter 47 that is, the cumulative value of the number “0” and the value “1” in the bit string of the symbol code falls within the range of ⁇ 10 to +10. Therefore, the DC balance is adjusted and good transmission characteristics can be obtained.
  • the above embodiments provide a kind of 9B10B system as compared to the conventional 8B10B system.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Dc Digital Transmission (AREA)

Abstract

 データ転送方法において、ビット幅M(Mは3以上の自然数)のデータキャラクタとビット幅N(Nは1以上の自然数)の制御キャラクタを多重化すると共に、反転型シンボルコードであるか否かを示す反転制御ビットを付加してM+1又はN+3の何れか大きい方のビット幅を有するシンボルコードを生成し、前記シンボルコードをパラレルデータからシリアルデータに変換して伝送路へ出力することでデータ転送を行い、前記シンボルコードの生成は、制御キャラクタ有効信号及び前記データキャラクタに含まれる所定論理値の数を示す所定極性のディスパリティ値に基づいて転送データを決定するようにする。

Description

データ転送方法、コード変換回路及び装置
 本発明は、データ転送方法、コード変換回路及び装置に関する。
 従来、大規模集積回路(LSI:Large Scale Integrated circuit)間、又は、LSIを有する装置間の情報伝送には、比較的低速なパラレルデータバスが用いられていた。しかし、パラレルデータバスは、簡易にLSI間又は装置間を結合可能にするものの、信号間に発生するスキューのため情報伝送能力を向上することは難しかった。そこで、近年はLSI間又は装置間の結合に比較的高速なシリアルバスを用いるようになった。
 高速シリアル伝送を行う典型的な例として、PCI(Peripheral Component Interconnect)エクスプレス(以下、PCI Expressと言う)が知られている。このPCI Expressでは、高速シリアル伝送を可能にする目的で、8B10B方式と呼ばれるコード化方式が採用されている(例えば、特許文献1)。この8B10B方式は、PCI Expressの他に、イーサーネット(Ethernet)、ファイバチャネル(Fiber Channel)、IEEE 1394等で採用されている。
 8B10B方式は、大きく分けて以下の2つの特徴を有する。第1に、図1に示すDキャラクタと呼ばれる256種類の8ビットのデータキャラクタと、図2に示す12種類のKキャラクタと呼ばれる制御キャラクタを多重化して、3ビット及び5ビットのルックアップテーブルLUTを用いて10ビットのシンボルコードに変換して伝送する。図1は、一例として8ビットのDキャラクタ、Kキャラクタ、制御キャラクタ有効信号、及びディスパリティ値に基づいてルックアップテーブルLUTを用いて10ビットのシンボルコードを出力する場合を示す。図2は、Kキャラクタのコード、シンボル、名称及び意味を示す。第2に、10ビットシンボル中では最大で5ビットの連続するビット値しか出現しない様に定義されているので、10ビットシンボル中には必ず1回以上のビット値の遷移が含まれており、受信側装置でのクロック再生が容易になる。尚、ビット値の遷移とは、ビットの値が0から1、又は、1から0に遷移することを意味する。
 又、8B10B方式では、ディスパリティを利用してDCバランスを調整するので、伝送特性が良好である。DCバランスとは、例えば伝送路上のビット値について、一定期間(時間)に区切ってその期間中に出現した値「0」の個数と値「1」の個数の比率を示す。DCバランスが良好であるということは、一定期間に出現した値「0」の個数と値「1」の個数が略同じであることを示す。
 しかし、従来の8B10B方式では、シリアル転送時のオーバーヘッドが比較的大きいため、シリアルバスの帯域幅を比較的多く消費してしまう。具体的には8ビットのデータキャラクタを10ビットに変換するので、帯域幅が25%増加してしまう。
特開昭59-10056号公報 特開2004-80300号公報 特表2006-502679号公報 特開2007-32526号公報
PCI Express Base Specification Revision 2.0, PCI-SIG, December 20, 2006
 従来の8B10B方式を用いたデータ転送方法では、シリアル伝送時のバスのオーバーヘッドを減少させ、バスの帯域幅を有効利用することは難しいという問題があった。
 そこで、本発明は、シリアル伝送時のバスのオーバーヘッドを減少させ、バスの帯域幅を有効利用することが可能なデータ転送方法、コード変換回路及び装置を提供することを目的とする。
 本発明の一観点によれば、ビット幅M(Mは3以上の自然数)のデータキャラクタとビット幅N(Nは1以上の自然数)の制御キャラクタを多重化すると共に、反転型シンボルコードであるか否かを示す反転制御ビットを付加してM+1又はN+3の何れか大きい方のビット幅を有するシンボルコードを生成し、前記シンボルコードをパラレルデータからシリアルデータに変換して伝送路へ出力することでデータ転送を行い、前記シンボルコードの生成は制御キャラクタ有効信号及び前記データキャラクタに含まれる所定論理値の数を示す所定極性のディスパリティ値に基づいて転送データを決定するデータ転送方法が提供される。
 本発明の一観点によれば、ビット幅M(Mは3以上の自然数)のデータキャラクタとビット幅N(Nは1以上の自然数)の制御キャラクタを多重化する第1の回路と、前記第1の回路の出力に反転型シンボルコードであるか否かを示す反転制御ビットを付加してM+1又はN+3の何れか大きい方のビット幅を有するシンボルコードを生成する第2の回路を備え、前記シンボルコードはパラレルデータからシリアルデータに変換されて伝送路へ出力され、前記第1の回路は、制御キャラクタ有効信号及び前記データキャラクタに含まれる所定論理値の数を示す所定極性のディスパリティ値に基づいて転送データを決定するコード変換回路が提供される。
 本発明の一観点によれば、ビット幅M(Mは3以上の自然数)のデータキャラクタとビット幅N(Nは1以上の自然数)の制御キャラクタを多重化する第1の回路と、前記第1の回路の出力に反転型シンボルコードであるか否かを示す反転制御ビットを付加してM+1又はN+3の何れか大きい方のビット幅を有するシンボルコードを生成する第2の回路を有するコード変換回路と、前記シンボルコードをパラレルデータからシリアルデータに変換して伝送路へ出力する変換回路を備え、前記コード変換回路は、制御キャラクタ有効信号及び前記データキャラクタに含まれる所定論理値の数を示す所定極性のディスパリティ値に基づいて転送データを決定する装置が提供される。
 開示のデータ転送方法、コード変換回路及び装置によれば、シリアル伝送時のバスのオーバーヘッドを減少させ、バスの帯域幅を有効利用することが可能となる。
Dキャラクタを説明する図である。 Kキャラクタを説明する図である。 本発明の一実施例におけるコード変換回路の動作を説明する図である。 シンボルコードの定義の一例を説明する図である。 制御キャラクタの定義の一例を説明する図である。 実施例におけるデータ転送方法、コード変換回路及び装置を適用可能な情報処理装置を示すブロック図である。 送信側装置内のコード変換回路と受信側装置内のコード変換回路を示すブロック図である。 送信側コード変換回路の動作を説明するフローチャートである。 送信側コード変換回路の構成の一例を示す回路図である。 ルックアップテーブルの一例を示す図である。 デコード値生成回路の動作を説明する真理値表を示す図である。 送信側出力シンボルコードの選択及び差数カウンタ更新を説明する真理値表を示す図である。 受信側コード変換回路の構成の一例を示す回路図である。 ルックアップテーブルの一例を示す図である。 データキャラクタの生成を説明する図である。 受信側キャラクタの検出及び差数カウンタ更新を説明する真理値表を示す図である。 本発明の他の実施例における送信側装置内のコード変換回路及び受信側装置内のコード変換回路を示すブロック図である。 レーン毎のビット割り当ての一例を説明する図である。 72ビットパラレルデータバスのビット割り当ての一例を説明する図である。
 開示のデータ転送方法、コード変換回路及び装置では、シリアルパラレル変換を伴うシリアル転送(又は、伝送)において所望の転送効率(又は、伝送効率)を実現するために、転送(又は、送信)するキャラクタに対して反転型シンボルコードであるか否かを示す反転制御ビットを付加することでデータキャラクタと制御キャラクタを多重化して転送(又は、送信)する。
 DCバランスを調整するために、シンボルコードを生成する際には、データキャラクタに含まれる所定論理値の数を示す所定極性のディスパリティ値に基づいて転送データを決定する。例えば、データキャラクタに含まれる所定論理値の数を計測して所定極性のディスパリティ値を計測し、既に転送された転送データのランニングディスパリティ値を保持する。データキャラクタを転送する場合は、転送するデータキャラクタのディスパリティ値を計測し、保持されているランニングディスパリティ値との比較の結果が正極性(即ち、極性が一致)であれば、前記反転制御ビットをオフに設定し、更にデータキャラクタをそのまま出力する。一方、ディスパリティ値と保持されているランニングディスパリティ値の比較の結果が逆極性(即ち、極性が不一致)であれば、前記反転制御ビットをオンに設定し、更にデータキャラクタの全ビットを反転する。又、制御キャラクタを転送する場合、前記反転制御ビットをオンとし、更にルックアップテーブルを参照して転送データを決定する。
 これにより、多重化されたコードを効率良くAC転送することができ、シリアル転送時のバスのオーバーヘッドを減少させ、バスの帯域幅を有効利用することが可能となる。
 尚、AC転送とは、AC特性を持った信号を使用してデータを転送することを言う。又、AC特性とは、伝送路を転送されるデータに関して、転送されるデータキャラクタに依存せず、例えば常時データキャラクタの全てのビットが0(All"0")であっても、コード変換後のシンボルコードには必ず値「0」と値「1」が含まれており、必ず1回以上のビット値の遷移が発生することが保証されていることを言う。つまり、データがAC特性を有するとは、伝送路を転送されるデータがこのような交流特性を持っていることを言う。
 以下に、開示のデータ転送方法、コード変換回路及び装置の各実施例を図面と共に説明する。
 図3は、本発明の一実施例におけるコード変換回路の動作を説明する図である。図3に示すコード変換回路11には、例えば転送データ(又は、送信データ)としての9ビットのデータキャラクタ(Dキャラクタ)D0~D8、4ビットの制御キャラクタ(Kキャラクタ)K0~K3、及び制御キャラクタ有効信号が入力される。又、コード変換回路11からは、反転制御ビットCntlを含む10ビットのシンボルコードCntl,S0~S8が出力される。尚、以下の説明では、便宜上、DキャラクタのビットBit0をD0又はD_Bit0、KキャラクタのビットBit0をK0又はK_Bit0、シンボルコードのビットBit0をS0又はS_Bit0と表現する。
 図4は、シンボルコードの定義の一例を説明する図である。図4(a)はDキャラクタのシンボルコードへの割り当てを示し、図4(b)はKキャラクタのシンボルコードへの割り当てを示す。この例では、10ビットのシンボルコードは、1ビットの反転制御ビットCntlと9ビットのペイロード(Payload)データで形成されている。又、この例では、9ビット幅の転送データ、即ち、Dキャラクタの各々の値に対して、図4(a)に示すように10ビットのシンボルデータを1個又は2個割り付ける。反転制御ビットCntlは、値が「1」(又は、オン)であると割当対象のキャラクタに対してペイロードデータの値「0」と値「1」が反転していることを示し、値が「0」(又は、オフ)であると割当対象のキャラクタに対してペイロードデータの値「0」と値「1」が反転していないことを示す。
 Dキャラクタを2進数で表現した時に、「Dキャラクタの性質」として値「1」(即ち、"1"の数)が5個含まれるDキャラクタに対しては、ノーマルデコード(Normal Decode)のみが割り付けられ、インバーテッドデコード(Inverted Decode)は割り付けられない。ノーマルデコードは、ランニングディスパリティ値が正の時に選択され、非反転型シンボルコードが割り当てられる通常の復号化が行われることを意味する。一方、インバーテッドデコードは、ランニングディスパリティ値が負の時に選択され、反転型シンボルコードが割り当てられる反転型の復号化が行われることを意味する。値「1」の数が5個以外のDキャラクタに対しては、ノーマルデコードとインバーテッドデコードの2つのシンボルコードが割り当てられる。尚、図4において、「"1"の個数」とは、反転制ビットCntlを含むシンボルコード中の「1」の数を示す。
 10ビット幅のシンボルコードのうち、図4(a)中、「"1"の個数」が「未割り当て」で示すようにDキャラクタに割り当てられなかったインバーテッドデコードのシンボルコードのペイロードには、図4(b)に示すように全てKキャラクタとして割り当てられる。即ち、Kキャラクタ=<Ctrl=1><Payloadの"1"の数が4個>であるが、図4(b)ではペイロードはKキャラクタ[0:3]を9ビットに拡張したコードである。尚、10ビット幅のシンボルコードの場合、1024種類のシンボルが定義可能であるが、このうちKキャラクタとして使用可能なコード、即ち、反転制御ビットCntlの値が「1」であり(Cntlを含む)シンボルコード中の値「1」の個数が5個であるコードは126種類存在する。
 図5は、制御キャラクタの定義の一例を説明する図である。図5は、定義可能な1024種類の10ビットシンボルコードのうち、Kキャラクタとして使用可能な126種類のコードを示す。
 転送コード又は制御コードからシンボルコードへのコード変換と並行して、ディスパリティが計算される。具体的には、転送するシンボルコードのビット列に含まれる値「0」と値「1」の個数を比較し、差数を保持する。この差数が負である場合、過去に転送したシンボルコードの累積値で値「0」の転送が多いことを示す。一方、差数が正である場合、過去に転送したシンボルコードの累積値で値「1」の転送が多いことを示す。この差数は、Dキャラクタに含まれる所定論理値の数を示す所定極性のディスパリティ(又は、ディスパリティ値)として用いることができる。そこで、Dキャラクタを転送する際には、ディスパリティの極性に応じて選択される図4のノーマルデコード又はインバーテッドデコードに従って転送するシンボルコードを選択する。
 図3~図5では、一例として9ビット幅(又は、ビット長)のデータキャラクタと、4ビット幅(又は、ビット長)の制御キャラクタを転送するものとしているが、データキャラクタのビット幅は9ビットに限定されず、3ビット幅以上の整数値、好ましくは3ビット幅以上の奇数の整数値であれば良い。データキャラクタのビット幅をM(Mは、3以上の自然数)制御キャラクタのビット幅をN(Nは1以上の自然数)とした場合、シンボルコードのビット幅はM+1、或いは、N+3の何れか大きい方の数値となる。
 この例では、9ビット幅のデータキャラクタに対して1ビットの反転制御ビットCntlを付加するので、シリアルバスで転送される1つのシンボルコードCntl,S0~S8は10ビット幅となる。更に、制御キャラクタは、PCI Express仕様と同様に12種類以上、最大で126種類転送される。
 図6は、本実施例におけるデータ転送方法、コード変換回路及び装置を適用可能な情報処理装置を示すブロック図である。図6に示す情報処理装置20は、複数のシステムボード21-0~21-n(nは1以上の自然数)、クロスバ装置22、複数の入出力(IO:Input and Output)装置23-0~23-n、クロスババス24、及びIOバス25を有する。図6の例では、各システムボード21-0~21-nは同じ構造を有し、複数のCPU(Central Processing Unit)211-0~211-m(mはnに依存しない1以上の自然数)、メモリ212、メモリ制御装置213、CPUバス214、及びメモリバス215を有する。各システムボード21-0~21-nにおいて、各CPU211-0~211-mは、CPUバス214を介してメモリ制御装置213に接続されており、メモリ212はメモリバス215を介してメモリ制御装置213に接続されている。各システムボード21-0~21-nは、クロスババス24を介してクロスバ装置22に接続されており、各IO装置23-0~23-nはIOバス25を介してクロスバ装置22に接続されている。
 各CPU211-0~211-mとメモリ制御装置213との間のデータ転送は、各CPU211-0~211-m内のコード変換回路(図示せず)とメモリ制御装置213内のコード変換回路(図示せず)の間でCPUバス214を介して行われる。各システムボード21-0~21-nにおいて、メモリ212とメモリ制御装置213との間のデータ転送は、メモリ212とメモリ制御装置213内のコード変換回路(図示せず)の間でIOバス215を介して行われる。各システムボード21-0~21-nにおいて、メモリ制御装置213とクロスバ装置22との間のデータ転送は、メモリ制御装置213内のコード変換回路(図示せず)とクロスバ装置22内のコード変換回路(図示せず)の間でクロスババス24を介して行われる。又、クロスバ装置22と各IO装置23-0~23-nとの間のデータ転送は、クロスバ装置22内のコード変換回路(図示せず)と各IO装置23-0~23-n内のコード変換回路(図示せず)の間でIOバス25を介して行われる。
 図7は、送信側装置内のコード変換回路と受信側装置内のコード変換回路を示すブロック図である。送信側装置及び受信側装置は、夫々CPU211-0~211-m、メモリ制御装置213、クロスバ装置22、及びIO装置23-0~23-n内に設けられる。ここでは説明の便宜上、送信側装置31がシステムボード21-0内のメモリ制御装置213であり、受信側装置32がクロスバ装置22であるものとする。従って、送信側装置31と受信側装置32を接続するプリント板配線等の差動型伝送路33は、この例ではクロスババス24により形成される。
 図7に示すように、送信側装置31は、クロック発振器311、データ送信回路312、LFSR(Linear Feedback Shift Register)を用いたスクランブラ313、送信側制御回路314、送信側コード変換回路315、並列直列(パラレルシリアル)変換回路316、及び出力ドライバ317を有する。クロック発振器311が出力するクロックは、データ送信回路312、送信側制御回路314、送信側コード変換回路315、及び並列直列変換回路31に入力される。送信側コード変換回路315には、スクランブラ313からのデータキャラクタと、送信側制御回路314からの制御キャラクタ及び制御キャラクタ有効信号が入力される。送信側制御回路314の出力は、データ送信回路312にも入力される。送信側コード変換回路315が出力するパラレルデータは、並列直列変換回路316によりシリアルデータに変換されて出力ドライバ317に入力される。
 一方、受信側装置32は、入力レシーバ321、クロック再生回路322、直列並列(シリアルパラレル)変換回路323、受信側コード変換回路324、LFSRを用いたデスクランブラ325、受信側制御回路324、及びデータ受信回路327を有する。クロック再生回路322により入力レシーバ321が出力するシリアルデータから再生されたクロックは、直列並列変換回路323、受信側コード変換回路324、受信側制御回路326、及びデータ受信回路327に入力される。入力レシーバ321が出力するシリアルデータは、直列並列変換回路323によりパラレルデータに変換されて受信コード変換回路324に入力される。受信側コード変換回路324が出力するデータキャラクタはデスクランブラ325に入力される。受信側コード変換回路324が出力する制御キャラクタ、制御キャラクタ有効信号、及びデータ有効信号は、受信側制御回路326に入力される。デスクランブラ325及び受信側制御回路の出力は、データ受信回路327に入力される。
 データ送信回路312及びデータ受信回路327は、例えばPCI Expressのデータリンク層に相当する。スクランブラ313及びデスクランブラ325は、転送データを乱数化することで差動型伝送路33で発生するEMI(Electro Magnetic Interference)を低減するために設けられているが、省略しても良い。
 送信側制御回路314は、送信側コード変換回路315を含む送信側装置31全体の状態を制御する。同様に、受信側制御回路326は、受信側コード変換回路324を含む、受信側装置32全体の状態を制御する。制御回路314,326の制御動作の一例として、初期化処理がある。初期化処理では、Kキャラクタと呼ばれる制御キャラクタを用いた処理が行われる。初期化処理が必要な場合は、送信側装置31から受信側装置32に対して初期化を指示するKキャラクタが送られ初期化シーケンスが実行される。Kキャラクタは、初期化シーケンスに必要な制御キャラクタである。尚、初期化処理自体は周知であり、例えば非特許文献1に記載されているので、本明細書では初期化処理の詳細についての説明は省略する。
 送信側装置31の並列直列変換回路316は、送信側コード変換回路315から出力されたパラレルデータをシリアルデータに変換する。一方、受信側の直列並列変換回路323は、入力レシーバ321が受信したシリアルデータをパラレルデータに変換して受信側コード変換回路324に入力する。並列直列変換回路316及び直列並列変換回路323は、例えば高速シフトレジスタで形成可能である。
 出力ドライバ317、入力レシーバ321、及びこれらを接続する差動型伝送路33は、送信側装置31と受信側装置32の間(例えば、LSI間)でシリアルデータを転送する回路である。シリアルデータを転送する回路自体は周知であるため、本明細書ではシリアルデータを転送する回路の詳細についての説明は省略する。
 次に、送信側装置31から受信側装置32へのデータ転送を説明する。データ送信回路312からは、送信側制御回路314からの伝送路有効信号に応じてパラレルデータが出力される。パラレルデータは、スクランブラ313により乱数化されてデータキャラクタとして送信側コード変換回路315に供給される。送信側制御回路314が制御キャラクタを出力する場合は、送信側制御回路314が制御キャラクタ有効信号と共にコード化された制御キャラクタを送信側コード変換回路315に供給する。
 スクランブラ313は、電磁放射ノイズの周波数成分を拡散させ、EMI対策を取り易くすることが目的で設置される。より具体的には、転送するDキャラクタが特定の値の連続であった場合、例えば値「0」と値「1」の連続であった場合、スクランブラを持たない送信回路の場合、伝送路上からは特定の周波数成分を持った電磁放射ノイズが発生し易くなる。この様なノイズは一般的には他の装置への悪影響を与え易い。スクランブラ313は、Dキャラクタが連続する同じ値であっても、疑似乱数化することで特定の周波数成分を持った電磁放射ノイズの発生をし辛くする効果があり、これを目的として設置される。
 送信側コード変換回路315では、スクランブラ313からのデータキャラクタ及び送信側制御回路314からの制御キャラクタと制御キャラクタ有効信号をシンボルコードと呼ばれるパラレルデータに変換して並列直列変換回路316に供給する。並列直列変換回路316では、クロック発振器311が出力するクロック(送信クロック)に同期してパラレルデータをシリアルデータに変換して出力する。尚、クロック発信器311は、送信クロックの他に、パラレルデータの転送を制御する低速クロックも出力して送信側装置31内の各部に供給する。低速クロックは、送信クロックに比べて低速、即ち、周波数が低い。
 並列直列変換回路316から出力されたシリアルデータは、出力ドライバ317及び差動型伝送路33を介して受信側装置32に入力される。入力レシーバ321は、受信したシリアルデータをクロック再生回路322及び直列並列変換回路323に出力する。尚、図7では差動型伝送路33が用いられているが、差動型伝送路33以外の伝送路を用いても良いことは言うまでもない。
 クロック再生回路322は、PLL(Phase Locked Loop)回路を内蔵しており、シンボルデータ中に最低1回は存在するビット遷移のエッジを検出して内蔵PLL回路を同期化して受信クロックを再生する。このように受信クロックを再生するためには、シンボルデータ中にビット遷移が存在する必要がある。このようにして受信クロックを再生する方法は、CDR(Clock Data Recovery)又はエンベデッドクロック(Embedded Clock)と呼ばれ、高速シリアル転送では一般的に用いられる技術である。
 直列並列変換回路323では、再生された受信クロックに基づいて入力レシーバ321からのシリアルデータをシンボルコード(パラレルデータ)に変換して受信側コード変換回路324に出力する。受信側コード変換回路324は、シンボルコードをデコードしてシンボルのタイプ(種類)を検出し、データキャラクタ又は制御キャラクタと、各々の有効信号を生成する。つまり、受信側コード変換回路324は、データキャラクタとデータ有効信号、又は、制御キャラクタと制御キャラクタ有効信号を生成する。データキャラクタはデスクランブラ325に出力され、制御キャラクタ、制御キャラクタ有効信号、及びデータ有効信号は受信側制御回路326に出力される。
 デスクランブラ325は、LFSRを用いてデータキャラクタの乱数化を解除して、データキャラクタをデータ受信回路327に出力する。受信側制御回路326は、制御キャラクタ及びエラー信号に応じて各々の処理を行うが、これらの処理自体は本実施例の要旨と直接は関係がないので、本明細書ではこれらの処理の詳細についての説明は省略する。
 本実施例では、従来の8B10B方式の場合と同様にKキャラクタを定義可能であり、16種類以上、最大で126種類のKキャラクタを定義可能である。このため、物理層制御、DLLP(Data Link Layer Packet)等のリンク層制御には、8B10B方式の制御を利用可能である。従って、制御回路314,326は、8B10B方式の場合に使用する制御回路に基づいて設計可能である。
 次に、図8~図12を用いて、送信側コード変換回路315のより詳細な動作を説明する。ここでは一例として、データキャラクタのビット幅が9ビット、制御キャラクタのビット幅が4ビット、シンボルコードのビット幅が10ビットの場合について説明するが、データキャラクタ、制御キャラクタ及びシンボルコードがこれらのビット幅に限定されないことは前述した通りである。
 送信側コード変換回路315は、データキャラクタと制御キャラクタとの一方を選択して制御キャラクタ有効信号と多重化し、データキャラクタ及び制御キャラクタが受信側装置32内で分離が可能な様に、特定のビットパターンをシンボルコードに埋め込む。この特定のビットパターンは、クロック回復のためのビット遷移の発生を保証するものでもある。更に、送信側コード変換回路315は、ランニングディスパリティに基づいて出力するシンボルコードのビット特性を選択してDCバランスを調整する。
 図8は、送信側コード変換回路315の動作を説明するフローチャートである。図8において、ステップS1は、制御キャラクタが有効であるか否かを、制御キャラクタ有効信号から判定する。転送するデータが制御キャラクタでありステップS1の判定結果がYESであると、ステップS2は、後述するルックアップテーブルを検索して制御キャラクタを10ビットのシンボルコードに変換する。ステップS3は、この10ビットのシンボルコードを並列直列変換回路316へ出力し、処理は終了する。
 一方、ステップS1の判定結果がNOであると、ステップS4は、データキャラクタを2進数のビット列で表現した時に、データキャラクタのビット列中に含まれる値「0」と値「1」の個数を計算する。9ビット幅のデータキャラクタの場合、値「0」と値「1」の個数は、0~9個の範囲の整数値となる。ステップS5は、データキャラクタに含まれる値「0」と値「1」の個数を比較し、値「0」の個数の方が値「1」の個数より大きいか否かを判定する。本実施例では、データキャラクタのビット幅は3ビット以上の奇数値であるため、値「0」と値「1」の個数が同じになることはない。
 ステップS5の判定結果がYES、つまり値「0」の個数の方が値「1」の個数より大きい場合、ステップS6は値「0」の個数と値「1」の個数の差を計数する差数カウンタの極性が正であるか否かを判定する。ランニングディスパリティは、これまでに送信側装置から出力された(即ち、既に出力された)値「0」と値「1」との差数を保持する差数カウンタの正又は負の値で示される。この例では、差数は、値「1」の個数が多い場合に正(正極性)の値となり、値「0」の方が多い場合に負(負極性)の値となる。ステップS6の判定結果がYES、つまり差数カウンタの極性が正であると、ステップS7は、反転制御ビットCntlの値を「0」に設定してノーマルデコードを生成し、処理はステップS3へ進む。一方、ステップS6の判定結果がNO、つまり差数カウンタの極性が負であると、ステップS9は、反転制御ビットCntlの値を「1」に設定してインバーテッドデコードを生成し、処理はステップS3へ進む。

 又、ステップS5の判定結果がNOであると、ステップS8は値「0」の個数と値「1」の個数の差を計数する差数カウンタのカウント値の極性が正であるか否かを判定する。ステップS8の判定結果がNOであると、ステップS7は、反転制御ビットCntlの値を「0」に設定してノーマルデコードを生成し、処理はステップS3へ進む。一方、ステップS8の判定結果がYESであると、ステップS9は、反転制御ビットCntlの値を「1」に設定してインバーテッドデコードを生成し、処理はステップS3へ進む。
 
 このように、ステップS5において値「0」と値「1」の個数の比較が行われた後、ランニングディスパリティの判定が行われる。データキャラクタの値「0」と値「1」の個数を比較して値「0」の個数が値「1」の個数より大きく、且つ、差数カウンタのカウント値の極性が正の場合、及び、データキャラクタの値「0」と値「1」の個数を比較して値「0」の個数が値「1」の個数より小さく、且つ、差数カウンタのカウント値の極性が正ではない場合には、図4(a)に示すノーマルデコード値が選択されてシンボルコードが生成される。一方、データキャラクタの値「0」と値「1」の個数を比較して値「0」の個数が値「1」の個数より大きく、且つ、差数カウンタのカウント値の極性が正ではない場合、及び、データキャラクタの値「0」と値「1」の個数を比較して値「0」の個数が値「1」の個数より小さく、且つ、差数カウンタのカウント値の極性が正の場合には、図4(a)に示すインバーテッドデコード値が選択されてシンボルコードが生成される。
 尚、図8に示す各ステップが実行される順序は、最終的に同様の処理結果が得られるものであれば変更しても良いことは言うまでもない。
 図9は、送信側コード変換回路315の構成の一例を示す回路図である。送信側コード変換回路315は、図9に示す如く接続されたルックアップテーブル(又は、変換テーブル)41、ノーマルデコード値生成回路42、インバーテッドデコード値生成回路43、選択回路44、デコード回路45、判定回路46、差数カウンタ47、更新値生成回路48、及び加減算回路49を有する。
 4ビットの制御キャラクタは、ルックアップテーブル41を検索することで10ビットのシンボルコードに変換される。図10は、ルックアップテーブル41の一例を示す図である。この例では制御キャラクタのビット幅が4ビットであるから図10では16種類の制御キャラクタが定義されているが、図5に示すように最大で126種類の制御キャラクタが定義可能である。
 9ビットの転送データは、ノーマルデコード値生成回路42及びインバーテッドデコード値生成回路43により2種類のシンボルコードに変換される。図11は、デコード値生成回路42,43の動作を説明する真理値表を示す図である。図11中、例えば^D_in[0]はD_in[0]の値の反転値を示す。
 選択回路44は、ルックアップテーブル41、ノーマルデコード値生成回路42、及びインバーテッドデコード値生成回路43から出力された3種類のシンボルコードのうち1つのシンボルコードを後述する選択論理に従って選択する。
 又、転送データは、値「1」の個数をデコードするデコード回路45に入力する。デコード回路45は、Dキャラクタを入力として、9ビットのビット列に含まれる値「1」の個数を計算した数値を出力する。デコード回路45は、例えばDキャラクタが000000000の場合は数値0、001011010の場合は数値4を出力する。この例では、デコード回路45に入力するDキャラクタのビット列は9ビットであるため、デコード回路45から出力される有効数値は0~9の範囲である。
 判定回路46及び選択回路44では、図12の真理値表に従って出力するシンボルを決定する。図12は、送信側出力シンボルコードの選択及び差数カウンタ更新を説明する真理値表を示す図である。先ず、制御キャラクタ有効信号がオン(ON)の場合、他の選択条件は無効となり、選択回路44は出力シンボルコードとしてKキャラクタを選択する。

 制御キャラクタ有効信号がオフ(OFF)の場合、選択回路44は出力シンボルコードとしてDキャラクタを選択する。ここで、差数カウンタ47のカウント値の極性が負であり、且つ、Dキャラクタの値「1」の個数が0~4個の範囲である場合(図9中、「<5」で示す)、或いは、差数カウンタ47のカウント値の極性が正であり、且つ、Dキャラクタの値「1」の個数が6~9個の範囲である場合(図9中、「>5」で示す)、判定回路46からの指示に基づいて、選択回路44は出力シンボルコードとしてインバーテッドデコードを選択し、これ以外の場合は選択回路44によりノーマルデコードが選択される。
 
 上記の如きシンボルコードの選択動作と並行して、シンボルコードの出力に応じて差数カウンタ47のカウント値の更新が行われる。図9に示すように、送信側コード変換回路315は、これまで出力したシンボルコードのビット列中の値「0」と値「1」の個数の差(即ち、差数)を保持する差数カウンタ47を有する。この差数カウンタ47は、10進数で-10~+10までの数値(カウント値)を保持するものであり、典型的には1ビットの符号ビットと4ビットのデータビット保持するレジスタで形成可能である。この差数カウンタ47が保持する符号ビットは、従来の8B10Bコード変換回路におけるランニングディスパリティと同様である。即ち、過去に転送したシンボルコードに含まれる値「0」の数と値「1」の数を計算し、符号ビットが正である場合は値「1」の方が多いことを示し、符合ビットが負である場合は値「0」の方が多いことを示す。
 更新値生成回路48では、制御キャラクタ有効信号、差数カウンタ符号ビット、及びDキャラクタの値「1」の個数に基づいて、差数カウンタ47のカウント値の更新値を図12の真理値表に従って決定する。差数カウンタ47のカウント値の更新値は、現在出力しようとしているシンボルコードの値「0」の数と値「1」の個数の差に対応しており、値「0」が多い場合は負の数値、値「1」の数が多い場合は正の数値となる。例えば、出力するシンボルコードが 00_0000_0000の場合、更新値の数値は-10であり、出力するシンボルコードが01_1111_1100の場合、更新値の数値は+4である。出力されるシンボルコードのビット幅が10ビットであるため、差数カウンタ47から出力される有効数値は、-10~+10の範囲の偶数となる。尚、Kキャラクタが選択される場合、Kキャラクタは図4(b)に示すようにシンボルコード中の値「1」の個数は5個、即ち、値「0」と値「1」の個数は同数であるので、差数カウンタ47のカウント値は変更されない。つまり、Kキャラクタが選択される場合は、差数カウンタ47のカウント値カウント値に数値0が加算されることと等価である。
 差数カウンタ47のカウント値の現在値と、更新値生成回路48が出力する差数カウンタ47のカウント値の更新値が加減算回路49で演算を施されて新たな数値が差数カウンタ47にセットされる。差数カウンタ47の有効値及び更新値は何れも有効数値-10~+10の範囲であるが、図12からも明らかなように、差数カウンタ47のカウント値の極性が負の場合は更新値の極性が正となり、差数カウンタ47のカウント値の極性が正の場合は更新値の極性が負になるので、加減算回路49の出力値は-10~+10の範囲に収まる。
 次に図13、図14及び図15を用いて、受信側コード変換回路324のより詳細な動作を説明する。ここでは一例として、送信側コード変換回路315の場合と同様にデータキャラクタのビット幅が9ビット、制御キャラクタのビット幅が4ビット、シンボルコードのビット幅が10ビットの場合について説明するが、データキャラクタ、制御キャラクタ及びシンボルコードがこれらのビット幅に限定されないことは前述した通りである。ただし、受信側コード変換回路324におけるデータキャラクタ、制御キャラクタ及びシンボルコードのビット幅は、送信側コード変換回路315におけるビット幅と同じである必要がある。
 受信側コード変換回路324は、シンボルコードに埋め込まれている特定のビットパターンを検出し、特定のビットパターンに基づいて多重化されているデータキャラクタと制御キャラクタを分離する。受信側コード変換回路324は、送信側コード変換回路315の場合と同様にランニングディスパリティに基づいてディスパリティエラーを検出してディスパリティエラー信号を出力する。
 図13は、受信側コード変換回路324の構成の一例を示す回路図である。受信側コード変換回路324は、図13に示す如く接続されたルックアップテーブル(又は、変換テーブル)51、Dキャラクタ生成回路52、デコード回路53、キャラクタ判定回路54、差数カウンタ55、更新値生成回路56、加減算回路57、及びエラー検出回路58を有する。
 シンボルコードは、ルックアップテーブル51を検索することにより制御コードに変換される。図14は、ルックアップテーブル51の一例を示す図である。この例では制御キャラクタのビット幅が4ビットであるから図14では16種類の制御キャラクタが定義されているが、図5に示すように最大で126種類の制御キャラクタが定義可能である。
 又、シンボルコードは、Dキャラクタ生成回路52により9ビット幅のデータキャラクタに変換される。図15は、データキャラクタの生成を説明する図である。図15中、例えば^S_in[0]はS_in[0]の値の反転値を示す。
 更に、シンボルコードのうち、反転制御ビットCntlを除くビットS0~S8(S_Bit0~S_Bit8)は、値「1」の個数をデコードするデコード回路53に入力される。デコード回路53は、送信側コード変換回路315のデコード回路45と同様に9ビットのビット列に含まれる値「1」の個数を計算した数値を出力する。デコード回路53は、例えばシンボルコードのビットS0~S8の部分が000000000の場合は数値0、001011010の場合は数値4を出力する。この例では、デコード回路53に入力されるシンボルコードのビット列は9ビットであるため、デコード回路53から出力される有効数値は0~9の範囲である。
 キャラクタ判定回路54では、図16の真理値表に従って受信したシンボルのタイプを検出する。図16は、受信側キャラクタの検出及び差数カウンタ更新を説明する真理値表を示す図である。反転制御ビットCntlが値「1」でビットS0~S8の値「1」の個数が4個の場合(図13中、「=4」で示す)、受信したシンボルコードは制御キャラクタであるため、キャラクタ判定回路54が出力するKキャラクタ有効信号がオン(ON)になる。これ以外の場合は、受信したシンボルコードはデータキャラクタであるため、キャラクタ判定回路54が出力するDキャラクタ有効信号がオン(ON)になる。
 上記の如きシンボルコードの選択動作と並行して、差数カウンタ55の更新が行われる。受信側コード変換回路324は、これまで受信側装置が受信したシンボルコードのビット列中の値「0」と値「1」の個数の差を保持する差数カウンタ55を有する。この差数カウンタ55は、10進数で-10~+10までの数値(カウント値)を保持するものであり、典型的には1ビットの符号ビットと4ビットのデータビットを保持するレジスタにより形成可能である。この差数カウンタ55は、送信側コード変換回路315の差数カウンタ47と同じ構成を有するものであっても良い。
 この差数カウンタ55が保持する符号ビットは、従来の8B10Bコード変換回路におけるランニングディスパリティと同様である。即ち、過去に受信したシンボルコードに含まれる値「0」の数と値「1」の数を計算し、符号ビットが正である場合は値「1」の方が多いことを示し、符合ビットが負である場合は値「0」の方が多いことを示す。
 差数カウンタ55の更新値生成回路56では、シンボルコードの値「1」の個数に基づいて、差数カウンタ55のカウント値の更新値を図16の真理値表に従って決定する。差数カウンタ55のカウント値の更新値は、現在受信したシンボルコードの値「0」の数と値「1」の個数の差に対応しており、シンボルコードのビットS0~S8の値「0」が多い場合は負の数値、値「1」の数が多い場合は正の数値となる。例えば、受信したシンボルコードが00_0000_0000の場合、更新値の数値は-10であり、受信したシンボルコードが01_1111_1100の場合、更新値の数値は+4である。入力されるシンボルコードのビット幅が10ビットであるため、差数カウンタ55から出力される有効数値は、-10~+10の範囲の数値となる。
 差数カウンタ55のカウント値の現在値と、更新値生成回路56が出力する差数カウンタ55のカウント値の更新値が加減算回路57で演算を施されて新たな数値が差数カウンタ55にセットされる。差数カウンタ55の有効値及び更新値の何れもが有効数値-10~+10の範囲であるため、加減算回路57の出力値は-20~+20の範囲を取り得る。しかし、送信側コード変換回路315では差数が-10~+10の範囲に収まるようにシンボルコードを選択して出力するので、加減算回路57の出力値が-11以下又は+11以上の場合は、伝送路33を含む何れかの回路でエラーが発生したことを示している。このため、エラー検出回路58は、加減算回路57の出力値が-11以下又は+11以上の場合は、出力するディスパリティエラー信号をオン(ON)にしてエラーの通知をする。
 次に、本発明の他の実施例について図17と共に説明する。図17は、本発明の他の実施例における送信側装置内のコード変換回路及び受信側装置内のコード変換回路を示すブロック図である。
 コード変換回路が高速シリアルインタフェース回路に適用されており、より高帯域のバス性能が必要である場合、複数のシリアルインタフェースを組み合わせて1つの論理インタフェースを形成する場合がある。PCI Express仕様では、単独のシリアルインタフェースをレーン(Lane)と呼ばれる単位で呼称しているが、このPCI Express仕様では1レーン構成の他に、2レーン、4レーン、8レーン、12レーン、16レーン、及び32レーンの構成が定義されている。以下の説明では、このPCI Express仕様と同様に単独のシリアルインタフェースを1レーンと呼称するものとする。
 図17は、コード変換回路を含むシリアルインタフェース回路を8個組み合わせて1つの論理インタフェースを構成した例を示す。即ち、図17において、伝送路133により接続された送信側装置131及び受信側装置132は、夫々8レーン構成である。送信側装置131は、バイト/ビット(Byte-to-Bit)分離回路61、送信側コード変換回路62-0~62-7、及び出力部63-0~63-7を有する。送信側装置131内の各レーン#0~#7の構成は同じであるため、レーン#0の構成のみを示す。送信側コード変換回路62-0~62-7は、夫々図7に示す送信側コード変換回路315と同じ構成を有する。出力部63-0は、図7と同じ構成の並列直列変換回路316及び出力ドライバ317を有する。一方、受信側装置132は、入力部71-0~71-7、受信側コード変換回路72-0~72-7、及びビット/バイト(Bit-to-Byte)組み立て回路73を有する。受信側装置132内の各レーン#0~#7の構成は同じであるため、レーン#0の構成のみを示す。入力部71-0は、図7と同じ構成の入力レシーバ321及び直列並列変換回路323を有する。受信側コード変換回路72-0~72-7は、夫々図7に示す受信側コード変換回路324と同じ構成を有する。尚、送信側制御回路及び受信側制御回路は、図7に示す送信側制御回路314及び受信側制御回路326と同じ構成のものとを使用可能であるため、図17ではこれらの制御回路の図示及び説明は省略する。
 上記実施例と共に説明したように、コード変換回路は9ビットのデータキャラクタを10ビットのシンボルコードに変換する。このため、送信側装置131から見ると、1レーン当たり9ビットのパラレルデータバスを有するので、8レーン構成の場合は9ビット×8レーン=72ビットのパラレルデータバス、即ち、伝送路133を有する構成となる。
 一方、従来び8B10Bコード変換回路を有するシリアルインタフェースでは、伝送路の帯域幅が同等である場合、即ち、1レーンのシンボルコード長が本実施例と同様の10ビットである場合、送信側装置からみて1レーン当たり8ビットのパラレルデータバスを有することになるので、8レーン構成の場合は8ビット×8レーン=64ビットのパラレルデータバスを有する構成となる。
 分離回路51及び組み立て回路73は、複数レーンで構成されるシリアルインタフェース回路の場合に必要となる回路である。分離回路51は、データ送信機(図示せず)からの72ビット幅のパラレルデータバスを受け取り、9ビット毎に各レーンにパラレルデータを供給する機能を有する。又、組み立て回路73は、分離回路と逆の操作、即ち、各レーンからの9ビットパラレルデータを72ビット幅のパラレルデータバスに組み立てて、データ受信機(図示せず)に送信する機能を有する。
 図18は、レーン毎のビット割り当ての一例を説明する図である。図18は、分離回路61による、72ビットパラレルデータバスの各ビットのレーン毎のビット定義を示す。図18中、縦軸は各レーンで転送されるシンボルコード(この例では10ビット幅)を示し、横軸は各レーン番号、即ち、シリアルバス番号を示す。又、図18では、72ビットパラレルデータバスのビット00をD00と表記している。一例を示すと、レーン番号#0には、1ビットの判定制御ビットCntlとデータビットD00~D08を組み合わせて一組のシンボルコードとしている。この例では、有効データバス幅として72ビット幅を確保することができる。尚、一組のシンボルコードに1ビットの反転制御ビットCntlを定義する必要があるが、72ビットパラレルデータのどのビットをどのレーンに割り当てるかは任意であり、図18に示す以外のデータビットを割り当てても良いことは言うまでもない。
 図19は、72ビットパラレルデータバスのビット割り当ての一例を説明する図である。図19は、送信側装置131及び受信側装置132での72ビットのパラレルデータバスのデータの定義を示す。例えば、72ビットのパラレルデータバスのビットBit0~Bit7(Bit0~7)は、データバイト(Byte)Byte0と定義される。尚、72ビットのパラレルデータバスのビットBit64~Bit71(Bit64~71)は、冗長ビット[0:7]と定義される。
 高信頼性の情報処理装置では、8バイトのデータに対して8ビットの冗長ビットを割り当てて、耐故障性能を向上させることが一般的である。このように耐故障性能を向上する一例として、DIMM(Dual Inline Memory Module)が挙げられる。72ビット幅のDIMMの利用形態では、図19と同様に8バイトのデータ、即ち、64ビットのデータに対してエラー訂正コード(ECC:Error Correction Code)等によるチェックビット(CB:Check Bit)を8ビット割り当てることで、1ビット故障を修正し、更に、2ビット故障を検出することを可能として耐故障性能を向上させている。
 上記の如く、8B10Bコード変換回路を有する従来のシリアルインタフェース回路では、8レーン構成であっても64ビット幅のパラレルデータバスしか実現できないので、DIMMに入力する例えば72ビットのDIMMデータを扱う場合、冗長ビットを廃棄するか、或いは、DIMMデータを何らかの形式に変形する等の対策が必要である。
 これに対して、本実施例の如きコード変換回路を有するシリアルインタフェース回路では、8レーン構成の場合、72ビット幅のデータを扱うことが可能であるため、DIMMデータの形式を変更せずに、そのままシリアルインタフェースバスに出力することが可能となる。
 従来の8B10B方式では、8ビットのデータキャラクタを送信するために10ビットのシンボルに変換するので、25%のバスのオーバーヘッドとなる。これに対し、上記各実施例では、9ビットのデータキャラクタを送信するために1ビットの反転制御ビットを付加して10ビットのシンボルに変換するので、バスのオーバーヘッドは11%となる。伝送路の帯域幅で言うと、従来の8B10B方式では帯域の20%がオーバーヘッドになるのに対し、上記各実施例では10%のオーバーヘッドとなり、従来の8B10B方式と比較してオーバーヘッドが10%減少し、バスの帯域幅を有効利用することができる。
 又、上記各実施例によれば、データキャラクタと制御キャラクタを多重化して送信することが可能である。つまり、データキャラクタと12種類以上の制御キャラクタを多重化して転送することが可能である。これにより、送信側装置及び受信側装置の各々では、従来と同様の制御回路を使用することが可能となる。
 更に、上記各実施例によれば、クロック再生に必要なAC特性を有するコード変換回路を提供することができる。つまり、一定数のシンボル(この例では最大で2シンボル)中に、必ず1回以上のビット値遷移(0から1、又は1から0に遷移すること)が含まれている。より具体的には、1個のシンボルコードで同一のビット列になるのは、00_0000_0000の場合か、或いは、11_1111_1111の場合である。そこで、以下の説明では00_0000_0000の場合を例に説明するが、11_1111_1111の場合であっても同様であることは言うまでもない。
 送信側コード変換回路315からシンボルコード00_0000_0000が出力された場合、差数カウンタ47のカウント値は-10となる。即ち、差数カウンタ47のカウント値の極性は負である。送信側コード変換回路315から次のデータキャラクタを出力する際には、図4(a)に従ってDキャラクタに含まれる値「1」の数が0~4個又は6~9個の場合、インバーテッドデコードが選択される。このインバーテッドデコードの場合のシンボルコードの最上位ビットは反転制御ビットCntl=1である。又、Dキャラクタに含まれる値「1」の数が5個の場合、ノーマルデコードが選択されるが、このノーマルデコードの場合のシンボルコードには必ず値「1」が含まれている。値「0」が連続するのは、00_0001_1111の場合である。つまり、前回のシンボルコードが00_0000_0000、今回のシンボルコードが00_0001_1111となり、値「0」が連続する場合には15ビットに渡って値「0」が連続する。このように、最悪であっても15ビット毎にビット値の遷移が発生するので、ビット値の遷移タイミングを用いて受信側装置でクロック再生が可能となる。
 尚、従来は、最大で5ビットのランレングス(Run Length)であるのに対して、上記各実施例では最大で15ビットのランレングスとなる。このランレングスは、クロック再生機能と密接な関係があり、ランレングスが伸びた場合、クロック再生に悪影響が発生すると考えられる。
 これに対しては、例えば特許文献4にて提案されている受信側装置の入力レシーバ内のイコライザを用いることで、ランレングスが5ビットから15ビットに伸びた場合でも安定して受信側装置内でクロックを再生できる。
 又、送信側装置31の送信側コード変換回路315では、差数カウンタ47を用いて受信側装置32に転送するシンボルコードを選択している。これにより、差数カウンタ47のカウント値、即ち、シンボルコードのビット列中の値「0」及び値「1」の個数の累積値は-10~+10の範囲に収まる。従って、DCバランスが調整されて良好な伝送特性を得ることができる。
 以上説明したように、従来の8B10B方式に対し、上記各実施例は一種の9B10B方式とも言える方式を提供するものである。
 以上、開示のデータ転送方法及びコード変換回路を実施例により説明したが、本発明は上記実施例に限定されるものではなく、本発明の範囲内で種々の変形及び改良が可能であることは言うまでもない。
20   情報処理装置

21-0~21-n   システムボード

22   クロスバ装置

23-0~23-n   IO装置

31,131   送信側装置

32,132   受信側装置

33,133   伝送路

211-0~211-m   CPU

212   メモリ

213   メモリ制御装置

315   送信側コード変換回路

324   受信側コード変換回路

Claims (13)


  1.  ビット幅M(Mは3以上の自然数)のデータキャラクタとビット幅N(Nは1以上の自然数)の制御キャラクタを多重化すると共に、反転型シンボルコードであるか否かを示す反転制御ビットを付加してM+1又はN+3の何れか大きい方のビット幅を有するシンボルコードを生成し、

     前記シンボルコードをパラレルデータからシリアルデータに変換して伝送路へ出力することでデータ転送を行い、

     前記シンボルコードの生成は、前記制御キャラクタが有効であるか否かを示す制御キャラクタ有効信号及び前記データキャラクタに含まれる所定論理値の数を示す所定極性のディスパリティ値に基づいて転送データを決定する、データ転送方法。

  2.  M=9、N=4であり、

     前記反転制御ビットは1ビットであり、

     前記シンボルコードのビット幅は10ビットである、請求項1記載のデータ転送方法。

  3.  前記シンボルコードの生成は、

      前記データキャラクタに含まれる所定論理値の数を示す所定極性のディスパリティ値を計測し、既に転送された転送データのランニングディスパリティ値を保持し、

      前記制御キャラクタを転送する場合は、ルックアップテーブルを参照して転送データを決定し、

      前記データキャラクタを転送する場合は、ディスパリティ値を計測して保持されているランニングディスパリティ値との比較の結果が逆極性であれば前記反転制御ビットをオンに設定して前記データキャラクタの全ビットを反転する、請求項1又は2記載のデータ転送方法。

  4.  前記伝送路から入力される前記シリアルデータ中に存在するビット遷移のエッジからクロックを再生し、

     前記伝送路から入力される前記シリアルデータを前記クロックに基づいてパラレルデータである前記シンボルコードに変換し、

     前記シンボルコードをデコードしてシンボルのタイプを検出し、データキャラクタ又は制御キャラクタと、データキャラクタ及び制御キャラクタの有効信号を生成する、請求項1乃至3のいずれか1項記載のデータ転送方法。

  5.  前記データキャラクタはPCI ExpressのDキャラクタであり、前記制御キャラクタは前記PCI ExpressのKキャラクタである、請求項1乃至4のいずれか1項記載のデータ転送方法。

  6.  ビット幅M(Mは3以上の自然数)のデータキャラクタとビット幅N(Nは1以上の自然数)の制御キャラクタを多重化する第1の回路と、

     前記第1の回路の出力に反転型シンボルコードであるか否かを示す反転制御ビットを付加してM+1又はN+3の何れか大きい方のビット幅を有するシンボルコードを生成する第2の回路を備え、

     前記シンボルコードはパラレルデータからシリアルデータに変換されて伝送路へ出力され、

     前記第1の回路は、前記制御キャラクタが有効であるか否かを示す制御キャラクタ有効信号及び前記データキャラクタに含まれる所定論理値の数を示す所定極性のディスパリティ値に基づいて転送データを決定する、コード変換回路。

  7.  M=9、N=4であり、

     前記反転制御ビットは1ビットであり、

     前記シンボルコードのビット幅は10ビットである、請求項6記載のコード変換回路。

  8.  前記第1の回路は、

      前記データキャラクタに含まれる所定論理値の数を示す所定極性のディスパリティ値を計測し、既に転送された転送データのランニングディスパリティ値を保持するカウンタと、

      前記制御キャラクタ有効信号がオンであり前記制御キャラクタを転送する場合は、前記制御キャラクタに基づいて転送データを決定するルックアップテーブルと、

      前記データキャラクタを転送する場合は、ディスパリティ値を計測して保持されているランニングディスパリティ値との比較の結果が逆極性であれば前記制御キャラクタ有効信号をオンに設定して前記データキャラクタの全ビットを反転する回路を有する、請求項6又は7記載のコード変換回路。

  9.  前記データキャラクタはPCI ExpressのDキャラクタであり、前記制御キャラクタは前記PCI ExpressのKキャラクタである、請求項6乃至8のいずれか1項記載のコード変換回路。

  10.  ビット幅M(Mは3以上の自然数)のデータキャラクタとビット幅N(Nは1以上の自然数)の制御キャラクタを多重化する第1の回路と、前記第1の回路の出力に反転型シンボルコードであるか否かを示す反転制御ビットを付加してM+1又はN+3の何れか大きい方のビット幅を有するシンボルコードを生成する第2の回路を有するコード変換回路と、

     前記シンボルコードをパラレルデータからシリアルデータに変換して伝送路へ出力する変換回路を備え、

     前記コード変換回路は、前記制御キャラクタが有効であるか否かを示す制御キャラクタ有効信号及び前記データキャラクタに含まれる所定論理値の数を示す所定極性のディスパリティ値に基づいて転送データを決定する、装置。

  11.  M=9、N=4であり、

     前記制御キャラクタ有効信号は1ビットであり、

     前記シンボルコードのビット幅は10ビットである、請求項10記載の装置。

  12.  前記第1の回路は、

      前記データキャラクタに含まれる所定論理値の数を示す所定極性のディスパリティ値を計測し、既に転送された転送データのランニングディスパリティ値を保持するカウンタと、

      前記制御キャラクタを転送する場合は、前記制御キャラクタに基づいて転送データを決定するルックアップテーブルと、

      前記データキャラクタを転送する場合は、ディスパリティ値を計測して保持されているランニングディスパリティ値との比較の結果が逆極性であれば前記反転制御ビットをオンに設定して前記データキャラクタの全ビットを反転する回路を有する、請求項10又は11記載の装置。

  13.  前記データキャラクタはPCI ExpressのDキャラクタであり、前記制御キャラクタは前記PCI ExpressのKキャラクタである、請求項10乃至12のいずれか1項記載の装置。
PCT/JP2009/061234 2009-06-19 2009-06-19 データ転送方法、コード変換回路及び装置 WO2010146714A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2009/061234 WO2010146714A1 (ja) 2009-06-19 2009-06-19 データ転送方法、コード変換回路及び装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2009/061234 WO2010146714A1 (ja) 2009-06-19 2009-06-19 データ転送方法、コード変換回路及び装置

Publications (1)

Publication Number Publication Date
WO2010146714A1 true WO2010146714A1 (ja) 2010-12-23

Family

ID=43356052

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2009/061234 WO2010146714A1 (ja) 2009-06-19 2009-06-19 データ転送方法、コード変換回路及び装置

Country Status (1)

Country Link
WO (1) WO2010146714A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013153394A (ja) * 2012-01-26 2013-08-08 Keio Gijuku ディジタル通信の伝送路符号の変換方法及びこの変換方法を行う符号の生成方法
JP2013183242A (ja) * 2012-02-29 2013-09-12 Fujitsu Ltd データ伝送装置、データ伝送システムおよびデータ伝送方法
WO2020203548A1 (ja) * 2019-03-29 2020-10-08 ローム株式会社 符号化回路および半導体装置、符号化方法、データ伝送システム、復号回路

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5665314A (en) * 1979-11-02 1981-06-03 Sony Corp Encoder for binary signal
JPS5910056A (ja) * 1982-06-30 1984-01-19 インタ−ナシヨナル ビジネス マシ−ンズ コ−ポレ−シヨン コ−ド生成方法
JPH05336193A (ja) * 1991-11-10 1993-12-17 Hewlett Packard Co <Hp> ハンドシェーク信号の直列伝送方法
JP2006250824A (ja) * 2005-03-11 2006-09-21 Nec Electronics Corp 半導体集積回路およびその半導体集積回路におけるデータ解析方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5665314A (en) * 1979-11-02 1981-06-03 Sony Corp Encoder for binary signal
JPS5910056A (ja) * 1982-06-30 1984-01-19 インタ−ナシヨナル ビジネス マシ−ンズ コ−ポレ−シヨン コ−ド生成方法
JPH05336193A (ja) * 1991-11-10 1993-12-17 Hewlett Packard Co <Hp> ハンドシェーク信号の直列伝送方法
JP2006250824A (ja) * 2005-03-11 2006-09-21 Nec Electronics Corp 半導体集積回路およびその半導体集積回路におけるデータ解析方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013153394A (ja) * 2012-01-26 2013-08-08 Keio Gijuku ディジタル通信の伝送路符号の変換方法及びこの変換方法を行う符号の生成方法
JP2013183242A (ja) * 2012-02-29 2013-09-12 Fujitsu Ltd データ伝送装置、データ伝送システムおよびデータ伝送方法
US8824581B2 (en) 2012-02-29 2014-09-02 Fujitsu Limited Data transmission apparatus, data transmission system and data transmission method
WO2020203548A1 (ja) * 2019-03-29 2020-10-08 ローム株式会社 符号化回路および半導体装置、符号化方法、データ伝送システム、復号回路

Similar Documents

Publication Publication Date Title
US8903000B2 (en) Transmission circuit, reception circuit, transmission method, reception method, communication system and communication method therefor
US6747580B1 (en) Method and apparatus for encoding or decoding data in accordance with an NB/(N+1)B block code, and method for determining such a block code
JP3341845B2 (ja) デジタルビデオ伝送のためのブロックコーディング
US8340005B1 (en) High speed packet interface and method
US7633965B2 (en) Data transfer control device and electronic instrument
US7187307B1 (en) Method and system for encapsulation of multiple levels of communication protocol functionality within line codes
KR100337467B1 (ko) 변환 제어 디지탈 인코딩 장치 및 신호 전송 시스템
JP5382117B2 (ja) データ転送方法、コード変換回路及び装置
US6897793B1 (en) Method and apparatus for run length limited TMDS-like encoding of data
US7899111B2 (en) Link interface technique including data indicator symbols
KR20180073578A (ko) Mipi csi-2 c-phy 에 대한 의사-무작위 2진 시퀀스 시드들을 교번시키기
US8370716B2 (en) USB device and correction method thereof
WO2007047733A1 (en) 64b/66b CODING APPARATUS AND METHOD
JP2000507755A (ja) 遷移制御された平衡エンコード体系
WO2012087973A1 (en) Methods and apparatus for the intelligent association of control symbols
GB2426674A (en) 64b/66b coding with scrambling of the master transition
US9219598B2 (en) Circuit arrangement and method for transmitting signals
WO2010146714A1 (ja) データ転送方法、コード変換回路及び装置
US20140294001A1 (en) Method of transporting data with embedded clock
EP1320208A2 (en) Serial communications system and method
US11777765B2 (en) Signal transmission system, transmitter encoding apparatus and receiver decoding apparatus
US20060015790A1 (en) Low overhead coding techniques
US20230128574A1 (en) Method for data transmission
US20230098067A1 (en) Data transmission and recovery with algorithmic transition codes
US6981206B1 (en) Method and apparatus for generating parity values

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 09846207

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 09846207

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP