WO2018173796A1 - 通信装置、通信方法、プログラム、および、通信システム - Google Patents

通信装置、通信方法、プログラム、および、通信システム Download PDF

Info

Publication number
WO2018173796A1
WO2018173796A1 PCT/JP2018/009153 JP2018009153W WO2018173796A1 WO 2018173796 A1 WO2018173796 A1 WO 2018173796A1 JP 2018009153 W JP2018009153 W JP 2018009153W WO 2018173796 A1 WO2018173796 A1 WO 2018173796A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
transfer
length
communication
communication device
Prior art date
Application number
PCT/JP2018/009153
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 JP2019507539A priority Critical patent/JP7123905B2/ja
Priority to KR1020197022284A priority patent/KR102515186B1/ko
Priority to US16/491,035 priority patent/US11010328B2/en
Priority to CN201880018660.9A priority patent/CN110447020B/zh
Priority to EP18772411.7A priority patent/EP3605348B1/en
Priority to SG11201906694SA priority patent/SG11201906694SA/en
Publication of WO2018173796A1 publication Critical patent/WO2018173796A1/ja
Priority to US17/313,539 priority patent/US11714778B2/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • G06F13/4291Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using a clocked protocol
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4009Coupling between buses with data restructuring
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/40Bus networks
    • H04L12/40006Architecture of a communication node
    • H04L12/40032Details regarding a bus interface enhancer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/40Bus networks
    • H04L12/403Bus networks with centralised control, e.g. polling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L5/00Arrangements affording multiple use of the transmission path
    • H04L5/14Two-way operation using the same type of signal, i.e. duplex
    • H04L5/1438Negotiation of transmission parameters prior to communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/362Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
    • G06F13/364Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control using independent requests or grants, e.g. using separated request and grant lines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0016Inter-integrated circuit (I2C)
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0061Error detection codes
    • H04L1/0063Single parity check
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/40Bus networks
    • H04L12/40143Bus networks involving priority mechanisms
    • H04L12/40156Bus networks involving priority mechanisms by using dedicated slots associated with a priority level

Definitions

  • the present disclosure relates to a communication device, a communication method, a program, and a communication system, and more particularly, to a communication device, a communication method, a program, and a communication system that can perform communication more reliably.
  • CCI Chip Control Interface
  • I2C Inter-Integrated Circuit
  • the system controller when starting data transfer, notifies the controlled device in advance of the start address (Index) of the register to which data is to be read or written. In addition, the system controller determines whether or not a desired amount of data has been read or written each time one byte of data is transferred. Then, when the system controller determines that reading or writing of a desired amount of data has been performed on the register, control for ending the data transfer is performed.
  • Index start address
  • the system controller determines whether or not a desired amount of data has been read or written each time one byte of data is transferred. Then, when the system controller determines that reading or writing of a desired amount of data has been performed on the register, control for ending the data transfer is performed.
  • Patent Document 1 discloses a technique in which a slave device writes to a register by serially outputting a slave device address, a write instruction, a write target register address, and write data to an I2C bus. It is disclosed.
  • C2 uses the I2C standard for the physical layer. For this reason, since the transmission rate is a low speed of 1 Mbps at the maximum, it has been required to realize further higher speed. Therefore, as a next-generation standard, a high-speed I3C (Improved Inter Integrated Integrated Circuit) rule with a maximum transmission rate of 37.5 Mbps has been formulated and is being revised. A new CCI using I3C for the physical layer is also being studied.
  • I3C Inter Integrated Integrated Circuit
  • the present disclosure has been made in view of such a situation, and is intended to enable more reliable communication.
  • a communication device is a communication device that performs communication via a bus, and at least one that performs communication according to control by the first communication device that has the initiative of communication and the first communication device. Communication is performed by two or more second communication devices, and the first communication device has a maximum transfer length indicating a maximum transfer length that the second communication device can transfer in one data transfer, When performing data transfer with the acquisition unit acquired from the second communication device and the second communication device, the data length of data transferred in one data transfer is less than or equal to the maximum transfer length
  • a transmission / reception control unit that controls transmission / reception of data, and a transmission unit that transmits transfer length information indicating a data length of data to be transferred prior to data transfer of the data.
  • a communication method or program is a communication method for performing communication via a bus, and performs communication according to control by the first communication device having the initiative of communication with the first communication device.
  • Communication is performed by at least one or more second communication devices, and the first communication device indicates a maximum transfer length indicating a maximum transfer length that the second communication device can transfer in one data transfer. Is obtained from the second communication device, and when performing data transfer with the second communication device, the data length of the data transferred in one data transfer is less than or equal to the maximum transfer length. And transmitting transfer length information indicating the data length of the transferred data prior to data transfer of the data.
  • a communication system includes a first communication device having initiative of communication via a bus, and at least one second communication device that performs communication according to control by the first communication device.
  • the first communication device has a maximum transfer length that indicates a maximum transfer length that the second communication device can transfer in one data transfer, and When performing data transfer with the acquisition unit acquired from the communication device and the second communication device, data transmission / reception is performed so that the data length of data transferred in one data transfer is equal to or less than the maximum transfer length.
  • a maximum transfer length indicating a maximum transfer length that the second communication device can transfer in one data transfer is acquired from the second communication device, and the second communication device and the data When transferring, data transmission / reception is controlled so that the data length of the data transferred in one data transfer is less than or equal to the maximum transfer length, and the data transferred prior to data transfer is transferred. Transfer length information indicating the data length is transmitted.
  • communication can be performed more reliably.
  • FIG. 18 is a block diagram illustrating a configuration example of an embodiment of a computer to which the present technology is applied.
  • FIG. 1 is a block diagram illustrating a configuration example of an embodiment of a bus IF to which the present technology is applied.
  • the bus IF 11 shown in FIG. 1 is configured by connecting an I3C master 12 and three I3C slaves 13-1 to 13-3 via a data signal line 14-1 and a clock signal line 14-2. Therefore, communication according to the I3C standard can be performed.
  • the I3C master 12 has control over the bus IF 11, and can communicate with the I3C slaves 13-1 to 13-3 via the data signal line 14-1 and the clock signal line 14-2. it can.
  • the I3C slaves 13-1 to 13-3 can communicate with the I3C master 12 via the data signal line 14-1 and the clock signal line 14-2 according to the control by the I3C master 12.
  • the I3C slaves 13-1 to 13-3 are configured in the same manner. Hereinafter, when it is not necessary to distinguish them, they are simply referred to as I3C slave 13 and the same applies to each block constituting the I3C slave 13. And
  • the data signal line 14-1 and the clock signal line 14-2 are used to transmit signals between the I3C master 12 and the I3C slave 13.
  • serial data SDA: Serial : Data
  • SCL Serial Clock
  • the I3C master 12 includes a data transmission unit 21, a data reception unit 22, a command transmission unit 23, a mode control unit 24, and a transmission / reception control unit 25.
  • Each of these blocks includes a circuit, a module, and the like.
  • the data transmission unit 21 transmits data to the I3C slave 13 via the data signal line 14-1 and the clock signal line 14-2.
  • the data transmission unit 21 drives the data signal line 14-1 in accordance with the timing of the serial clock to be transmitted by driving the clock signal line 14-2 (switches the potential to H level or L level). As a result, data can be transmitted to the I3C slave 13.
  • the data receiving unit 22 receives data transmitted from the I3C slave 13 via the data signal line 14-1 and the clock signal line 14-2. For example, the data receiving unit 22 drives the data signal line 14-1 by the I3C slave 13 in accordance with the timing of the serial clock of the clock signal line 14-2, so that the data transmitted from the I3C slave 13 is transmitted. Can be received.
  • the command transmission unit 23 transmits various commands as described later to the I3C slave 13 through the data signal line 14-1 and the clock signal line 14-2 in the same manner as the data transmission unit 21.
  • the mode control unit 24 selects one of a plurality of transfer modes defined by the I3C standard in accordance with a request from an upper layer (for example, the CCI layer processing unit 42 in FIG. 2 described later), and selects the selected mode.
  • the transmission / reception control unit 25 is controlled to perform communication in the transfer mode.
  • the SDR Standard Data Rate
  • the HDR High Data Data Rate
  • three transfer modes are defined in the standard: a DDR (Double Data Rate) mode, a TSP (Ternary Symbol Symbol Pure-Bus) mode, and a TSL (Ternary Symbol Symbol Legacy-inclusive-Bus) mode.
  • the mode control unit 24 selects any one of the SDR mode, the DDR mode, the TSP mode, and the TSL mode, and controls the transmission / reception control unit 25 so as to perform communication in the selected transfer mode.
  • the transmission / reception control unit 25 performs data transmission / reception by the data transmission unit 21 and the data reception unit 22 and command transmission by the command transmission unit 23 in accordance with a request from the upper layer. Control.
  • the I3C master 12 is configured, and the transfer mode is switched as necessary. For example, data to be written to the register is transmitted by the data transmitting unit 21 or data to be read from the register is transmitted to the data receiving unit 22. Can be received.
  • the I3C slave 13 includes a data transmission unit 31, a data reception unit 32, a command interpretation unit 33, a mode control unit 34, and a transmission / reception control unit 35. Each of these blocks includes a circuit, a module, and the like.
  • the data transmission unit 31 transmits data to the I3C master 12 via the data signal line 14-1 and the clock signal line 14-2.
  • the data transmission unit 31 transmits data to the I3C master 12 by driving the data signal line 14-1 in accordance with the serial clock timing of the clock signal line 14-2 driven by the I3C master 12. can do.
  • the data receiving unit 32 receives data transmitted from the I3C master 12 via the data signal line 14-1 and the clock signal line 14-2. For example, the data receiving unit 32 drives the data signal line 14-1 to drive the data transmitted from the I3C master 12 in accordance with the timing of the serial clock of the clock signal line 14-2. Can be received.
  • the command interpretation unit 33 receives a command transmitted from the command transmission unit 23 of the I3C master 12 via the data signal line 14-1 and the clock signal line 14-2, interprets the command, and instructs the command Various processes based on the above are performed. For example, when receiving a command for instructing start of communication in the HDR mode, the command interpretation unit 33 performs processing for notifying the mode control unit 34 that communication in the HDR mode is started. In addition, when receiving a command for instructing data writing or a command for instructing data reading, the command interpretation unit 33 performs processing for notifying the transmission / reception control unit 35 that data writing or data reading is to be performed. .
  • the mode control unit 34 selects one of the SDR mode, the DDR mode, the TSP mode, and the TSL mode in the same manner as the mode control unit 24 of the I3C master 12 in accordance with an instruction by the command received by the command interpretation unit 33. Then, the mode control unit 34 controls the transmission / reception control unit 25 so as to perform communication in the selected transfer mode.
  • the transmission / reception control unit 35 controls the data transmission / reception by the data transmission unit 31 and the data reception unit 32 in accordance with the command received by the command interpretation unit 33 in the transfer mode selected by the mode control unit 24.
  • the I3C slave 13 is configured, and the transfer mode is switched according to the control by the I3C master 12, for example, data read from the register is transmitted by the data transmission unit 31, or data to be written to the register is transmitted to the data reception unit. 32 can be received.
  • the I3C master 12 and the I3C slave 13 configured as described above are mounted on the system controller and the controlled device, respectively, and can execute processing in the physical layer in communication performed by them.
  • FIG. 2 is a block diagram showing a configuration example of a system controller in which the I3C master 12 of FIG. 1 is mounted.
  • the system controller 41 shown in FIG. 2 includes an I3C master 12 connected to the data signal line 14-1 and the clock signal line 14-2, a CCI layer processing unit 42, a CPU 43, and an internal bus 44. ing. Further, as shown in the figure, the I3C master 12 is connected to a CCI layer processing unit 42 that performs processing higher than the I3C master 12, and the CCI layer processing unit 42 controls the entire system controller 41 via an internal bus 44. It is connected to CPU43 which performs.
  • the CCI layer processing unit 42 includes a register address management unit 51, a transfer length information holding unit 52, a write transfer end control unit 53, an invalid data processing unit 54, and a transfer length information transmission unit 55.
  • the register address management unit 51 manages the address of each register connected to the bus IF 11 in FIG.
  • the transfer length information holding unit 52 holds transfer length information (Length) indicating the data length (number of bytes) of data to be transferred in the data transfer performed with the I3C slave 13.
  • the write transfer end control unit 53 performs control when the write transfer for writing the data transferred from the I3C master 12 to the I3C slave 13 to the register is ended.
  • the invalid data processing unit 54 is a dummy used when transferring odd-numbered bytes of data in the HDR mode in which one word, which is the minimum unit for transferring data, is defined as 2 bytes (16 bits). Process to add or delete data.
  • the transfer length information transmission unit 55 causes the I3C slave 13 to transmit the transfer length information held in the transfer length information holding unit 52 via the I3C master 12.
  • FIG. 3 is a block diagram showing a configuration example of a controlled device on which the I3C slave 13 of FIG. 1 is mounted.
  • the controlled device 61 shown in FIG. 3 includes a CCI layer processing unit 62, a device control unit 63, and an internal bus 64 in addition to the I3C slave 13 connected to the data signal line 14-1 and the clock signal line 14-2. It is prepared for. Further, as shown in the figure, the I3C slave 13 is connected to a CCI layer processing unit 62 that performs higher-order processing than the I3C slave 13, and the CCI layer processing unit 62 is connected to the entire controlled device 61 via an internal bus 64. It is connected to a device control unit 63 that performs control.
  • the CCI layer processing unit 62 includes a register address management unit 71, a register R / W (Read / Write) control unit 72, a read transfer end control unit 73, an invalid data processing unit 74, and a transfer length information holding unit 75. Is done.
  • the register address management unit 71 manages the address of the register provided in the controlled device 61.
  • the register R / W control unit 72 performs control to write data transferred from the I3C master 12 to the I3C slave 13 to the register, and control to read data from the register to transmit from the I3C slave 13 to the I3C master 12. .
  • the read transfer end control unit 73 performs control when the read transfer for transferring the data read from the register from the I3C slave 13 to the I3C master 12 is ended.
  • the invalid data processing unit 74 performs a process of adding or deleting invalid data used when transferring odd-numbered bytes of data in the HDR mode.
  • the transfer length information holding unit 75 holds transfer length information (Length) transmitted from the I3C master 12 when data transfer is performed with the I3C master 12.
  • the device control unit 63 performs control to write the data received by the I3C slave 13 to the state register according to control by the register R / W control unit 72 of the CCI layer processing unit 62, for example.
  • the device control unit 63 performs control to read out data to be transmitted by the I3C slave 13 from the state register, and the data is transmitted according to control by the register R / W control unit 72 of the CCI layer processing unit 62.
  • data to be written to a register is transferred from the system controller 41 to the controlled device 61, and data read from the register is transferred from the controlled device 61 to the system controller. 41.
  • FIG. 4 shows a format of a signal transmitted / received between the I3C master 12 and the I3C slave 13 when the transfer mode is the DDR mode.
  • the upper side of FIG. 4 shows a format for performing read transfer processing for transferring data read from the register from the I3C slave 13 to the I3C master 12.
  • the lower side of FIG. 4 shows a format for performing write transfer processing for transferring data to be written to the register from the I3C master 12 to the I3C slave 13.
  • the I3C master 12 When performing read transfer processing, the I3C master 12 first transmits a command (ENTHDR or HDR_Restart) instructing the start or restart of communication in the HDR mode. Subsequently, the I3C master 12 transmits a write command (DDR_Cmd (W)) instructing to perform writing for notifying the I3C slave 13 of the data length of data read from the register and transferred. Then, following the write command, the I3C master 12 transmits an index (Index) for notifying a leading address at which data reading is started, transfer length information (Length) indicating the data length of data to be transferred, and CRC (Cyclic Redundancy Check) word is transmitted. Thereafter, the I3C master 12 transmits a command (HDR_Restart) instructing restart of communication in the HDR mode, and transmits a read command (DDR_Cmd (R)) instructing data reading.
  • a command ENTHDR or HDR_Restart
  • the I3C slave 13 transfers data for each word (16 bits) in the DDR mode in order from the head of the address according to the index, and finishes transmitting the read byte number data according to the transfer length information. And send a CRC word. Thereafter, the I3C master 12 transmits a command (HDR_Restart or HDR_Exit) instructing restart or termination of communication in the HDR mode.
  • a command HDR_Restart or HDR_Exit
  • the I3C master 12 When performing the write transfer process, the I3C master 12 first transmits a command (ENTHDR or HDR_Restart) instructing start or restart of communication in the HDR mode. Subsequently, the I3C master 12 indicates a write command (DDR_Cmd (W)) for instructing data writing, an index (Index) for notifying a leading address at which data writing is started, and a data length of data to be transferred. Transfer length information (Length) is transmitted. Then, the I3C master 12 transfers the data for each word (16 bits) in the DDR mode in order from the top of the address according to the index, and when the transmission of the number of write bytes according to the transfer length information is completed, Send a word. Thereafter, the I3C master 12 transmits a command (HDR_Restart or HDR_Exit) instructing restart or termination of communication in the HDR mode.
  • a command ENTHDR or HDR_Restart
  • FIG. 5 shows a format of a signal transmitted / received between the I3C master 12 and the I3C slave 13 when the transfer mode is the TSL mode or the TSP mode.
  • the upper side of FIG. 5 shows a format for performing read transfer processing for transferring data read from the register from the I3C slave 13 to the I3C master 12.
  • the lower part of FIG. 5 shows a format for performing write transfer processing for transferring data to be written to the register from the I3C master 12 to the I3C slave 13.
  • the TSL mode or the TSP mode is different from the DDR mode in that the CRC word shown in FIG. 4 is not transmitted, and has a common format in other points.
  • the transfer length information is transmitted from the I3C slave 13 to the I3C master 12 when data is transferred.
  • the transfer length information is held in the transfer length information holding unit 52 of the CCI layer processing unit 42 on the system controller 41 side, and is stored in the transfer length information holding unit 75 of the CCI layer processing unit 62 on the controlled device 61 side. Retained.
  • the data length of the data requested to be transferred is an odd number of bytes
  • the dummy data is recognized based on the transfer length information. Can be discarded.
  • one word which is the minimum unit for transferring data, is 2 bytes (16 bits)
  • a maximum read length MRL
  • MWL Max Write Length
  • the write length may be a fixed value at the time of design for convenience of implementation of each controlled device 61, or may be variable, for example, when resources are shared with others.
  • the I3C master 12 is set to be equal to or less than the maximum read length or the maximum write length. Controls dividing and transferring data.
  • FIG. 6 is a flowchart for explaining processing performed in the I3C master 12.
  • step S11 the I3C master 12 transmits a command (GETMWL / MRL) instructing transmission of the maximum read length and maximum write length of each I3C slave 13 to each I3C slave 13 connected to the bus IF 11. To do. Then, the I3C master 12 acquires the maximum read length and the maximum write length transmitted from each I3C slave 13 in accordance with the command.
  • GETMWL / MRL a command instructing transmission of the maximum read length and maximum write length of each I3C slave 13 to each I3C slave 13 connected to the bus IF 11.
  • the I3C master 12 determines whether or not it is necessary to adjust the maximum read length or the maximum write length of each I3C slave 13 acquired in step S11. For example, the I3C master 12 compares the data length of data assumed to be requested for data transfer from the CCI layer processing unit 42 with the maximum read length and the maximum write length of the I3C slave 13. Then, when at least one of the maximum read length and the maximum write length of the I3C slave 13 is equal to or less than the data length of the assumed data, the I3C master 12 determines the maximum read length or the maximum write less than the data length of the assumed data. Determine that the length needs to be adjusted. Further, for example, the I3C master 12 may compare the maximum read length and the maximum write length of the I3C master 12 as the data length of the assumed data.
  • step S12 If it is determined in step S12 that the I3C master 12 needs to adjust the maximum read length or the maximum write length of the I3C slave 13, the process proceeds to step S13.
  • the I3C master 12 adjusts the maximum read length or the maximum write length of the I3C slave 13 determined to be adjusted, and sets the adjusted maximum read length and maximum write length (SETMWL / MRL) is transmitted to the I3C slave 13.
  • the I3C master 12 sets the maximum read length or the maximum write length of the I3C slave 13 that is equal to or less than the data length of the data that is expected to be requested for data transfer from the CCI layer processing unit 42 to the expected data. Adjust to the data length.
  • the I3C master 12 may adjust the maximum read length or the maximum write length of the I3C slave 13 so as to be the maximum read length and the maximum write length of the I3C master 12 itself, for example.
  • step S13 or when it is determined in step S12 that there is no need to adjust the maximum read length or the maximum write length of the I3C slave 13, the process proceeds to step S14.
  • step S14 the I3C master 12 waits for a data transfer request from the upper layer CCI layer processing unit 42, and receives the data transfer request.
  • step S15 the I3C master 12 determines whether the data length of the data requested for data transfer from the CCI layer processing unit 42 in step S14 is longer than the maximum read length or the maximum write length of the I3C slave 13 that is the target of data transfer. Determine whether or not. For example, if the maximum read length or the maximum write length of the I3C slave 13 has been adjusted in step S13, the determination is made based on the adjusted maximum read length or maximum write length.
  • step S15 when the I3C master 12 determines that the data length of the data requested to be transferred is longer than the maximum read length or the maximum write length of the I3C slave 13 to which the data transfer is performed, the process proceeds to step S16. move on.
  • step S16 the I3C master 12 divides the data requested for data transfer into a length equal to or less than the maximum read length or the maximum write length of the I3C slave 13 that is the target of data transfer, and performs read transfer processing or write transfer. Process.
  • step S15 the I3C master 12 determines that the data length of the data requested to be transferred is not longer than the maximum read length or maximum write length of the I3C slave 13 to which data transfer is to be performed (maximum read length or maximum write length). If it is determined that the length is equal to or less than the length, the process proceeds to step S17. In step S17, the I3C master 12 performs normal read transfer processing or write transfer processing without dividing the data.
  • step S16 or S17 the process returns to step S14, and the I3C master 12 waits for a data transfer request from the CCI layer processing unit 42 which is an upper layer, and thereafter the same process is repeated. Done.
  • the I3C master 12 can divide and transfer the data.
  • the data data transferred in one data transfer Data transmission / reception can be controlled by the transmission / reception control unit 25 so that the length is equal to or shorter than the maximum read length and the maximum write length.
  • the CCI layer processing unit 42 sets a data length equal to or less than the maximum read length and the maximum write length in the transfer length information indicating the data length of the transferred data. Prior to data transfer, the transfer length information can be transmitted to the I3C slave 13.
  • the I3C slave 13 performs data transfer set in the CCI layer processing unit 42 so as not to exceed the maximum read length and the maximum write length.
  • step S16 when the read transfer process or the write transfer process is performed by dividing it into a length equal to or less than the maximum read length or the maximum write length, the I3C slave 13 performs the data transfer so as to transmit the data in a plurality of times. Do. At this time, the I3C slave 13 can transmit the transfer length information for each data transfer, for example. Or, as will be described later, when performing read transfer processing, the I3C slave 13 can transmit transfer length information indicating the data length of the entire data requested to be transferred only once, thereby reducing overhead. Thus, it is possible to avoid a decrease in transfer efficiency.
  • I3C slave 13 that does not support commands (GETMRL, GETMWL) for instructing transmission of the maximum read length and the maximum write length.
  • I3C master 12 unintentionally sets a length exceeding the maximum read length or the maximum write length in the transfer length information.
  • the I3C slave 13 normally writes data until the FIFO overflows, discards all data after the FIFO overflows, and indicates that an error has occurred that overflows the FIFO. Set a flag (over MWL error) and hold the error flag until it is cleared. The I3C slave 13 ignores all signals until the next HDR end command or HDR restart command (HDR_ExitExor HDR_Restart) is received.
  • the I3C slave 13 performs processing (Slave Abort) for interrupting communication from the I3C slave 13 side.
  • the I3C master 12 can stop communication and stop by the HDR end command (HDR_Exit), or issue the HDR restart command (HDR_Restart) to continue the transfer of the remaining data. .
  • the I3C slave 13 can recognize that it exceeds the maximum write length when it receives the transfer length information, and then immediately suspends communication from the I3C slave 13 side. (Slave Abort) is performed. In response to this, the I3C master 12 can stop communication and stop by the HDR end command (HDR_Exit), or issue the HDR restart command (HDR_Restart) to continue the transfer of the remaining data. .
  • HDR_Exit the HDR end command
  • HDR_Restart HDR restart command
  • the I3C slave 13 returns a NACK immediately after receiving a read command because it is difficult to transfer data to the end, and terminates communication.
  • the I3C slave 13 sets an error flag (over (MRL error) indicating the occurrence of an error due to an instruction to read data having a data length longer than the maximum read length, and holds the error flag until it is cleared.
  • MRL error over
  • the I3C slave 13 transfers data to the I3C master 12 for the time being up to the upper limit of the maximum read length.
  • an error flag (over MRL error) is set and a CRC word as an end packet is sent to the I3C master 12 in the DDR mode, and a data signal line in the TSP / TSL mode. 14-1 and the clock signal line 14-2 are stopped and the bus is released.
  • the I3C master 12 recognizes that the I3C slave 13 has an error (over MRL ⁇ error) when the CRC word is received before reaching the data length indicated in the transfer length information. . If no CRC error has occurred, the I3C master 12 accepts data up to that point.
  • the data signal line 14-1 and the clock signal line 14-2 are not driven (not toggled) before reaching the data length indicated in the transfer length information.
  • the I3C slave 13 has an error (over MRL error).
  • the I3C master 12 After the I3C master 12 recognizes the error (over MRL error) of the I3C slave 13 in either the DDR mode or the TSL / TSP mode, the I3C master 12 performs HDR read processing with a data length that does not exceed the maximum read length. Retransmit data as you do.
  • FIG. 7 shows a format for performing read transfer processing in which data exceeding the maximum read length is divided and transferred and data is read from the I3C slave 13 to the I3C master 12 when the transfer mode is the DDR mode. ing.
  • FIG. 7 shows an example when a transfer of 300 bytes of data is requested when the maximum read length is 200 bytes.
  • the I3C master 12 transmits a command (ENTHDR or HDR_Restart) instructing start or restart of communication in the HDR mode. Subsequently, the I3C master 12 transmits a write command (DDR_Cmd (W)) instructing to perform writing for notifying the I3C slave 13 of the data length of data read from the register and transferred.
  • a command ENTHDR or HDR_Restart
  • DDR_Cmd (W) instructing to perform writing for notifying the I3C slave 13 of the data length of data read from the register and transferred.
  • the I3C master 12 includes an index (Index) for notifying the head address at which data reading is started, transfer length information (Length) indicating the data length of data to be transferred, and a CRC word. Send. Thereafter, the I3C master 12 transmits a command (HDR_Restart) instructing restart of communication in the HDR mode, and transmits a read command (DDR_Cmd (R)) instructing data reading.
  • HDR_Restart instructing restart of communication in the HDR mode
  • DDR_Cmd (R) instructing data reading.
  • the start address at which data reading is started is address 0
  • the data length of the data to be transferred is 300 bytes
  • the data is divided every 200 bytes, which is the maximum read length. Transferred.
  • the I3C slave 13 transfers data for each word (16 bits) in the DDR mode in order from the address of address 0 according to the index, and after transmitting 200 bytes of data that is the maximum read length, Send CRC word.
  • the I3C master 12 transmits a read command (DDR_Cmd (R)) for instructing data reading following transmission of a command (HDR_Restart) for instructing restart of communication in the HDR mode.
  • DDR_Cmd (R) a read command for instructing data reading following transmission of a command (HDR_Restart) for instructing restart of communication in the HDR mode.
  • the I3C slave 13 since the I3C slave 13 has already transmitted 200 bytes of data among the 300 bytes indicated by the transfer length information, the head address that follows is 200 addresses, and the remaining 100 bytes. It can be recognized that a byte needs to be transmitted. Therefore, the I3C slave 13 transfers data for each word (16 bits) in the DDR mode in order from the address of address 200, and transmits a CRC word when 100 bytes of data have been transmitted.
  • the I3C master 12 transmits the index and the transfer length information before reading data from the I3C slave 13 as described with reference to FIG. As a result, the I3C slave 13 is notified of the leading address at which data reading is started and the data length of the data to be transferred.
  • the I3C master 12 first transmits the index and transfer length information for the entire data.
  • the I3C slave 13 updates the transmission remaining amount each time data is transmitted. Thus, it is possible to recognize the index and data length of data read out.
  • the overhead can be reduced correspondingly, and the data transfer efficiency can be improved.
  • FIG. 8 shows a format for performing read transfer processing in which data exceeding the maximum read length is divided and transferred and data is read from the I3C slave 13 to the I3C master 12 when the transfer mode is TSL mode or TSP mode. It is shown. 8 shows an example of transferring 300 bytes of data when the maximum read length is 200 bytes, as in FIG.
  • the TSL mode or the TSP mode is different from the DDR mode in that the CRC word shown in FIG. 7 is not transmitted, and has a common format in other points. That is, in the TSL mode or the TSP mode, the data transfer efficiency can be improved as in the DDR mode.
  • step S21 the I3C master 12 performs an initial setting process based on each I3C slave 13 connected to the bus IF 11 (for example, the processes in steps S11 to S13 in FIG. 6 described above).
  • step S22 the CCI layer processing unit 42 waits for a data transfer request from the upper layer CPU 43, and receives the data transfer request.
  • step S23 the CCI layer processing unit 42 determines that the transfer mode for performing data transfer with the controlled device 61 is DDR mode, TSL / TSP mode, and SDR according to the data transfer request received in step S22. Determine which mode is in effect.
  • step S23 when the CCI layer processing unit 42 determines that the transfer mode is the DDR mode, the process proceeds to step S24, and the register R / W in the DDR mode is described later with reference to FIGS. 10 to 13. Transfer processing is performed.
  • step S23 when the CCI layer processing unit 42 determines in step S23 that the transfer mode is the TSL / TSP mode, the process proceeds to step S25, and the TSL / TSP is described later with reference to FIGS. Register R / W transfer processing according to mode is performed.
  • step S23 determines in step S23 that the transfer mode is the SDR mode
  • the process proceeds to step S26, and register R / W transfer is performed in the SDR mode.
  • register R / W transfer is performed in the SDR mode, it is not necessary to transmit / receive the transfer length information as described above.
  • step S24 After step S24, step S25, or step S26, the process returns to step S22, and the system controller 41 repeats the same process thereafter.
  • step S24 in FIG. 9 the register R / W transfer process (step S24 in FIG. 9) in the DDR mode executed by the system controller 41 will be described with reference to FIGS.
  • FIG. 10 is a flowchart for explaining register R / W transfer processing in the DDR mode.
  • step S31 in the I3C master 12, the command transmission unit 23 starts communication in the HDR mode to all I3C slaves 13 connected to the bus IF 11, and starts an HDR start command ( ENTHDR0).
  • step S32 the CCI layer processing unit 42 indicates the data length of the data requested for data transfer from the upper layer CPU 43 in step S22 of FIG. Set the remaining transfer amount.
  • step S33 the CCI layer processing unit 42 determines whether the data transfer direction requested by the CPU 43 is read transfer or write transfer.
  • step S33 when the CCI layer processing unit 42 determines that the data transfer direction is read transfer, the process proceeds to step S34, and DDR read transfer processing is performed as described later with reference to FIG.
  • step S33 determines in step S33 that the data transfer direction is write transfer
  • the process proceeds to step S35, and DDR write transfer processing is performed as described later with reference to FIG. Is called.
  • step S34 After the DDR read transfer process in step S34 or the DDR write transfer process in step S35, the process proceeds to step S36.
  • step S36 the CCI layer processing unit 42 determines whether or not data transfer by the next HDR is requested from the CPU 43 which is the upper layer.
  • step S36 when the CCI layer processing unit 42 determines that data transfer by the next HDR is requested, the process proceeds to step S37.
  • step S37 in the I3C master 12, the command transmission unit 23 transmits an HDR restart command instructing restart of communication in the HDR mode. Thereafter, the process returns to step S32, and the same process is repeated thereafter.
  • step S36 determines in step S36 that data transfer by the next HDR is not requested.
  • step S38 in the I3C master 12, after the command transmission unit 23 transmits a command instructing the end of communication in the HDR mode, the register R / W transfer processing in the DDR mode is ended, and the processing is performed in step S22 of FIG. Return to.
  • FIG. 11 is a flowchart illustrating the DDR read transfer process performed in step S34 of FIG.
  • step S41 the CCI layer processing unit 42 sets the transfer remaining amount set in step S32 of FIG. 10 to transfer length information indicating the data length of the data to be transmitted to the controlled device 61, and the transfer length information holding unit 52. To hold.
  • step S42 the I3C master 12 performs an HDR write transfer process (see FIG. 12) for transmitting transfer length information to the I3C slave 13 in order to notify the I3C slave 13 of the data length of the data read from the register and transferred.
  • the command transmission unit 23 transmits an HDR restart command in step S43, and transmits a read command in step S44.
  • step S45 the I3C master 12 stops driving the data signal line 14-1, and when the I3C slave 13 drives the data signal line 14-1 and transmits a signal, the data receiving unit 22 sends a signal. Starts to be received.
  • step S46 the I3C master 12 performs determination based on the preamble of the signal transmitted from the I3C slave 13. In step S46, when the I3C master 12 determines that data is transmitted from the I3C slave 13 based on the preamble, the process proceeds to step S47.
  • step S47 in the I3C master 12, the data receiving unit 22 receives data and parity transmitted from the I3C slave 13.
  • step S48 the I3C master 12 determines whether or not an error has occurred in the data received in step S47, using the parity received in step S47. If the I3C master 12 determines that no parity error has occurred, the process proceeds to step S49.
  • step S49 the CCI layer processing unit 42 determines whether the current transfer remaining amount is 2 bytes or more, 1 byte, or 0 bytes.
  • step S49 if the CCI layer processing unit 42 determines that the current transfer remaining amount is 2 bytes or more, the process proceeds to step S50.
  • step S50 the CCI layer processing unit 42 acquires 2-byte data read from the register and transferred from the I3C slave 13 to the I3C master 12, and in step S51, the remaining transfer amount is decremented by 2 bytes and updated. .
  • step S49 determines in step S49 that the remaining transfer amount is 1 byte
  • the process proceeds to step S52.
  • step S52 the CCI layer processing unit 42 discards 1 byte of dummy data out of 2 bytes of data transferred from the I3C slave 13 to the I3C master 12, and reads it from the register. One byte of data is acquired.
  • step S53 the I3C master 12 updates the transfer remaining amount by deducting 1 byte.
  • step S49 determines in step S49 that the remaining transfer amount is 0 bytes
  • the process proceeds to step S54. That is, in this case, since there is no data transferred from the I3C slave 13 (0 byte), it is a violation of the CCI protocol, so the CCI layer processing unit 42 transfers the 2 bytes transferred from the I3C slave 13 to the I3C master 12. Both are discarded.
  • step S51 After step S51, step S53, or step S54, the process proceeds to step S55, and the I3C master 12 makes a determination based on the preamble of the signal transmitted from the I3C slave 13.
  • step S55 when the I3C master 12 determines that data is transmitted from the I3C slave 13 based on the preamble, the process returns to step S47, and the same process is repeated thereafter.
  • step S55 when the I3C master 12 determines in step S55 that a CRC word is transmitted based on the preamble, the process proceeds to step S56, and the data receiving unit 22 receives the CRC word.
  • the I3C slave 13 transmits a CRC word when all the data requested to be transferred is transmitted or when the maximum read length data is transmitted.
  • step S57 the I3C master 12 determines whether or not an error has occurred in the CRC word received by the data receiving unit 22 in step S56.
  • step S57 if the I3C master 12 determines that no error has occurred in the CRC word, the process proceeds to step S58, and the driving of the data signal line 14-1 is resumed.
  • step S59 the I3C master 12 determines whether or not the current transfer remaining amount has become 0 after the transfer remaining amount is updated in step S51 or S53, for example. For example, when data having a data length indicated by the transfer length information, that is, all data for which data transfer is requested, is transmitted, the current transfer remaining amount is zero. On the other hand, for example, when the data is divided and transferred because the data length indicated by the transfer length information is longer than the maximum read length, all the data requested for data transfer may not be transmitted. , CRC words may be transmitted. In this case, the current remaining transfer amount is not zero.
  • step S59 if the I3C master 12 determines that the current transfer remaining amount is not 0, the process returns to step S43, and the process is continued from the transmission of the HDR restart command.
  • step S46 when it is determined in step S46 that the I3C master 12 has transmitted a NACK response indicating that the I3C slave 13 has not been able to normally receive data, commands, or the like based on the preamble, Alternatively, if it is detected that a framing error has occurred, the process proceeds to step S60. Similarly, if the I3C master 12 determines that a parity error has occurred in step S48, if it detects a framing error in step S55, it determines that an error has occurred in the CRC word in step S57. If so, the process proceeds to step S60.
  • step S60 the I3C master 12 transmits a serial clock 19 times to the I3C slave 13.
  • step S61 the I3C master 12 notifies the CCI layer processing unit 42 of an error, and in step S62, the CCI layer processing unit 42 notifies the upper layer CPU 43 of the error.
  • step S62 After the process of step S62, or when it is determined in step S59 that the current transfer remaining amount is 0, the DDR read transfer process is terminated, and the process proceeds to step S36 of FIG.
  • FIG. 12 is a flowchart for explaining the HDR write transfer process performed in step S42 of FIG.
  • step S71 the command transmission unit 23 transmits the write command to the I3C slave 13, and in step S72, the data transmission unit 21 transmits the index to the I3C slave 13.
  • step S73 the data transmission unit 21 transmits to the I3C slave 13 the transfer length information according to the data transfer request received in step S22 of FIG.
  • step S74 after the data transmission unit 21 transmits the CRC word, the HDR write transfer process is terminated, and the process proceeds to step S43 in FIG.
  • FIG. 13 is a flowchart illustrating the DDR write transfer process performed in step S35 of FIG.
  • step S81 the CCI layer processing unit 42 of the system controller 41 determines whether or not the data length of the remaining transfer amount set in step S32 of FIG. 10 is longer than the data length that can be transmitted in one transfer.
  • step S81 when the CCI layer processing unit 42 determines that the data length of the remaining transfer amount is longer than the data length that can be transmitted in one transfer, the process proceeds to step S82.
  • step S82 the CCI layer processing unit 42 sets a data length that can be transmitted in one transfer in the transfer length information and stores it in the transfer length information holding unit 52, and the process proceeds to step S84.
  • step S81 determines in step S81 that the data length of the remaining transfer amount is not longer (shorter) than the data length that can be transmitted in one transfer, the process proceeds to step S83.
  • step S83 the CCI layer processing unit 42 sets the remaining transfer amount in the transfer length information and holds it in the transfer length information holding unit 52, and the process proceeds to step S84.
  • step S84 the command transmission unit 23 transmits a write command to the I3C slave 13, and in step S85, the data transmission unit 21 transmits an index to the I3C slave 13. Thereafter, in step S86, the transfer length information transmission unit 55 causes the data transmission unit 21 to transmit the transfer length information held in the transfer length information holding unit 52 to the I3C slave 13.
  • step S87 the CCI layer processing unit 42 sets the transfer length information currently held in the transfer length information holding unit 52 as the data length of the remaining data to be written to the register.
  • step S88 the CCI layer processing unit 42 determines whether the current remaining data length is 2 bytes or more, 1 byte, or 0 byte.
  • step S88 when the CCI layer processing unit 42 determines that the current remaining data length is 2 bytes or more, the process proceeds to step S89.
  • step S89 the CCI layer processing unit 42 supplies the I3C master 12 with 2 bytes of data transferred from the I3C master 12 to the I3C slave 13 and written to the register.
  • step S90 the remaining data length is reduced by 2 bytes. Update.
  • step S91 the CCI layer processing unit 42 supplies 1-byte data transferred from the I3C master 12 to the I3C slave 13 and written to the register to the I3C master 12, and the invalid data processing unit 54 outputs 1-byte dummy data. Is added. Then, in step S92, the CCI layer processing unit 42 updates the remaining data length by deducting 1 byte.
  • step S90 or S92 the process proceeds to step S93, and the I3C master 12 transmits the data supplied from the CCI layer processing unit 42 to the I3C slave 13 by the data transmission unit 21 in step S89 or S91.
  • the process returns to step S88.
  • step S88 determines in step S88 that the current remaining data length is 0 bytes
  • the process proceeds to step S94. That is, in this case, all data transfer according to the data transfer request received in step S22 of FIG. 9 has been completed, and in step S94, the I3C master 12 transmits a CRC word.
  • step S96 the CCI layer processing unit 42 determines whether or not the updated transfer remaining amount has become zero.
  • step S96 if the CCI layer processing unit 42 determines that the updated transfer remaining amount is not 0, the process proceeds to step S97.
  • step S97 the I3C master 12 transmits a command instructing restart of communication in the HDR mode, and then the process returns to step S81. Thereafter, the same process is repeated.
  • step S96 determines in step S96 that the updated transfer remaining amount has become 0
  • the DDR write transfer process ends, and the process proceeds to step S36 in FIG.
  • the system controller 41 can perform a register R / W transfer process in the DDR mode.
  • FIG. 14 is a flowchart for explaining register R / W transfer processing in the TSL / TSP mode.
  • step S101 the I3C master 12 starts communication in the HDR mode to all the I3C slaves 13 connected to the bus IF 11, and starts an HDR start command (ENTHDR1 / 2) for performing communication in the TSL / TSP mode. Send.
  • ENTHDR1 / 2 an HDR start command for performing communication in the TSL / TSP mode.
  • step S102 the CCI layer processing unit 42 indicates the data length of the data requested to be transferred by the CPU 43, which is the upper layer in step S22 of FIG. Set the remaining transfer amount.
  • step S103 the CCI layer processing unit 42 determines whether the data transfer direction requested by the CPU 43 is read transfer or write transfer.
  • step S103 when the CCI layer processing unit 42 determines that the data transfer direction is read transfer, the process proceeds to step S104, and TSL / TSP read transfer processing is performed as described later with reference to FIG. Is called.
  • step S103 determines in step S103 that the data transfer direction is write transfer
  • the process proceeds to step S105, and TSL / TSP write transfer processing is performed as described later with reference to FIG. Is done.
  • step S104 After the TSL / TSP read transfer process in step S104 or the TSL / TSP write transfer process in step S105, the process proceeds to step S106.
  • steps S106 to S108 processing similar to that in steps S36 to S38 in FIG. 10 is performed.
  • the register R / W transfer processing in the TSL / TSP mode is ended, and the processing returns to step S22 in FIG.
  • FIG. 15 is a flowchart for explaining the TSL / TSP read transfer process performed in step S104 of FIG.
  • steps S111 to S114 processing similar to that in steps S41 to S44 in FIG. 11 is performed.
  • step S115 the I3C master 12 stops driving the data signal line 14-1 and the clock signal line 14-2.
  • TSL / TSP mode the turnaround procedure is different from that in DDR mode.
  • step S116 the I3C master 12 determines whether data transmitted from the I3C slave 13 has been received.
  • TSL / TSP mode unlike the DDR mode, no preamble is transmitted.
  • step S116 If it is determined in step S116 that the data transmitted from the I3C slave 13 has been received, the process proceeds to step S117, and the data receiving unit 22 receives the data and parity transmitted from the I3C slave 13.
  • step S118 the I3C master 12 determines whether or not the data received by the data receiving unit 22 in step S117 includes an error. If it is determined that no error is included, the process proceeds to step S119. .
  • steps S119 to S124 the CCI layer processing unit 42 performs the same processing as steps S49 to S54 in FIG.
  • step S125 the I3C master 12 determines whether or not the data transmitted from the I3C slave 13 has been received. If it is determined that the data has been received, the process returns to step S117, and the same processing is performed hereinafter. Is repeated.
  • step S125 if it is determined in step S125 that data has not been received, the process proceeds to step S126, and the I3C master 12 resumes driving the data signal line 14-1 and the clock signal line 14-2.
  • the CRC word is not transmitted, and the turnaround procedure is different from that in the DDR mode.
  • step S118 determines in step S118 that the data received by the data receiving unit 22 in step S117 contains an error
  • the process proceeds to step S128.
  • error detection conditions are different from those in DDR mode. For example, when a parity error is detected, or when a symbol 2 ⁇ 2 or more is received outside a data word boundary, an error occurs in data. It is determined that it is included.
  • step S1208 the I3C master 12 waits for the signal change to stop, and when the signal change stops, the process proceeds to step S129. That is, in the TSL / TSP mode, the error recovery procedure is different from that in the DDR mode.
  • step S116 If it is determined in step S116 that the data transmitted from the I3C slave 13 is not received, for example, if a NACK response (symbol 2 ⁇ 3 times) is received, the process proceeds to step S129.
  • step S129 the I3C master 12 notifies an error to the CCI layer processing unit 42, and in step S130, the CCI layer processing unit 42 notifies the CPU 43 which is an upper layer of the error.
  • step S130 After the process of step S130 or when it is determined in step S127 that the current transfer remaining amount has become 0, the TSL / TSP read transfer process is terminated, and the process proceeds to step S106 of FIG.
  • FIG. 16 is a flowchart for explaining the HDR write transfer process performed in step S112 of FIG.
  • steps S141 to S143 processing similar to that in steps S71 to 73 of FIG. 12 is performed, and after the write command, index, and transfer length information are transmitted and the HDR write transfer processing is completed, the processing is performed in step S113 of FIG. Proceed to That is, the HDR write transfer process in the TSL / TSP read transfer process shown in FIG. 16 is different from the HDR write transfer process in the DDR read transfer process described above with reference to FIG. 12 in that no CRC word is transmitted.
  • FIG. 17 is a flowchart illustrating the TSL / TSP write transfer process performed in step S105 of FIG.
  • steps S151 through S163 the same processing as in steps S81 through S93 in FIG. 13 is performed. If it is determined in step S158 that the current remaining data length is 0 bytes, that is, if all data transfer according to the data transfer request received in step S22 of FIG. Advances to step S164.
  • steps S164 to S166 the same processing as in steps S95 to S97 in FIG. 13 is performed, and then the TSL / TSP write transfer processing is terminated, and the processing proceeds to step S106 in FIG. That is, the TSL / TSP write transfer process shown in FIG. 17 is different from the DDR write transfer process described above with reference to FIG. 13 in that no CRC word is transmitted.
  • the system controller 41 can perform a register R / W transfer process in the TSL / TSP mode.
  • FIG. 18 is a flowchart for explaining data transfer processing performed in the controlled device 61 in response to the system controller 41 executing the register R / W transfer processing in the DDR mode described above with reference to FIG.
  • step S171 the I3C slave 13 performs determination based on the preamble of the signal transmitted from the I3C master 12 following the HDR start command. If the I3C slave 13 determines in step S171 that a command is transmitted from the I3C master 12 based on the preamble, the process proceeds to step S172.
  • step S172 in the I3C slave 13, the command interpretation unit 33 receives the command and parity transmitted from the I3C master 12.
  • step S173 the command interpretation unit 33 determines whether an error has occurred in the command received in step S172, using the parity received in step S172. If the command interpretation unit 33 determines that no parity error has occurred, the process proceeds to step S174.
  • step S174 the command interpretation unit 33 determines whether the command code of the command received in step S172 is a read command or a write command.
  • step S174 if the command interpretation unit 33 determines that the command code is a read command, the process proceeds to step S175, and a DDR read transfer process is performed as described later with reference to FIG.
  • step S174 determines in step S174 that the command code is a write command
  • the process proceeds to step S176, and a DDR write transfer process is performed as described later with reference to FIG.
  • step S175 After the DDR read transfer process in step S175 or the DDR write transfer process in step S176, the process proceeds to step S179.
  • step S171 if it is detected in step S171 that a framing error has occurred based on the preamble, or if it is determined in step S173 that a parity error has occurred, the process proceeds to step S177.
  • step S177 the I3C slave 13 notifies the CCI layer processing unit 62 of an error.
  • step S178 the CCI layer processing unit 62 sets the remaining transfer amount to 0, and then the process proceeds to step S179.
  • step S179 the I3C slave 13 determines whether the command interpretation unit 33 has received a command for instructing restart of communication in the HDR mode or a command for instructing termination of communication in the HDR mode. .
  • step S179 if the command interpretation unit 33 determines that a command instructing restart of communication in the HDR mode has been received, the process returns to step S171, and the same process is repeated thereafter.
  • step S179 when the command interpretation unit 33 determines in step S179 that a command for instructing termination of communication in the HDR mode has been received, the data transfer process in the controlled device 61 is terminated.
  • FIG. 19 is a flowchart illustrating the DDR read transfer process performed in step S175 of FIG.
  • step S181 the CCI layer processing unit 62 determines whether the current transfer remaining amount is greater than 0 bytes and less than the maximum read length, greater than or equal to the maximum read length, and 0 bytes.
  • step S181 if the CCI layer processing unit 62 determines that the current transfer remaining amount is greater than 0 bytes and less than the maximum read length, the process proceeds to step S182. In step S182, the CCI layer processing unit 62 sets the current transfer remaining amount as the remaining transmission amount of data to be transmitted in response to the current read command.
  • step S183 the CCI layer processing unit 62 sets the maximum read length to the remaining transmission amount of data to be transmitted in response to the current read command.
  • step S182 or S183 the process proceeds to step S184, and the I3C slave 13 starts driving the data signal line 14-1.
  • step S185 the CCI layer processing unit 62 determines whether the remaining transmission amount to be transmitted according to the current read command is 2 bytes or more, 1 byte, or 0 byte.
  • step S185 when the CCI layer processing unit 62 determines that the remaining transmission amount of data to be transmitted in response to the current read command is 2 bytes or more, the process proceeds to step S186.
  • step S186 the CCI layer processing unit 62 reads out 2-byte data from the register. Then, in step S187, the CCI layer processing unit 62 supplies the 2-byte data read in step S186 to the I3C slave 13. In step S188, the CCI layer processing unit 62 increments the index by 2 bytes, updates the transmission remaining amount of data to be transmitted according to the current command by 2 bytes, and updates the transfer remaining amount by 2 bytes.
  • step S185 when the CCI layer processing unit 62 determines in step S185 that the transmission remaining amount of data to be transmitted in response to the current read command is 1 byte, the process proceeds to step S189.
  • step S189 the CCI layer processing unit 62 reads 1-byte data from the register.
  • step S190 the CCI layer processing unit 62 adds 1-byte dummy data to the 1-byte data read in step S189 and supplies the data to the I3C slave 13.
  • step S191 the CCI layer processing unit 62 increments the index by 1 byte, updates the transmission remaining amount of data to be transmitted by 1 byte according to the current command, and updates the transfer remaining amount by 1 byte.
  • step S188 or S191 the process proceeds to step S192, and the I3C slave 13 transmits the data supplied from the CCI layer processing unit 62 in step S187 or S190 to the I3C master 12 by the data transmission unit 31.
  • step S193 the I3C slave 13 determines whether or not a master abort that instructs the I3C master 12 to cut off the communication is performed.
  • step S193 if the I3C slave 13 determines that the master abort has not been performed, the process returns to step S185, and the same process is repeated thereafter. On the other hand, if the I3C slave 13 determines in step S193 that a master abort has been performed, the process proceeds to step S195.
  • step S185 when the CCI layer processing unit 62 determines in step S185 that the remaining transmission amount to be transmitted in response to the current read command is 0 bytes, the process proceeds to step S194.
  • step S194 the I3C slave 13 transmits a CRC word, and the process proceeds to step S195.
  • step S195 the I3C slave 13 stops driving the data signal line 14-1.
  • step S181 determines that the current transfer remaining amount is 0 bytes. If it is determined in step S181 that the current transfer remaining amount is 0 bytes, the process proceeds to step S196. That is, in this case, since the CCI protocol is violated, the I3C slave 13 transmits NACK to the I3C master 12 in step S196.
  • step S195 or S196 the DDR read transfer process is terminated, and the process proceeds to step S179 of FIG.
  • FIG. 20 is a flowchart illustrating the DDR write transfer process performed in step S176 of FIG.
  • step S201 the I3C slave 13 performs determination based on the preamble of the signal transmitted from the I3C master 12.
  • step S201 when the I3C slave 13 determines that data is transmitted from the I3C master 12 based on the preamble, the process proceeds to step S202.
  • step S202 in the I3C slave 13, the data receiving unit 32 receives data and parity transmitted from the I3C master 12.
  • step S203 the I3C slave 13 uses the parity received in step S202 to determine whether or not an error has occurred in the data received in step S202. If the I3C slave 13 determines that no parity error has occurred, the process proceeds to step S204.
  • step S204 the CCI layer processing unit 62 acquires the data received by the data receiving unit 32 in step S202, that is, the index transmitted by the I3C master 12.
  • step S205 the I3C slave 13 determines whether data is transmitted, a CRC word is transmitted, or an error occurs based on the preamble of the signal transmitted from the I3C master 12. Determine if there is.
  • step S205 when the I3C slave 13 determines that data is transmitted, the process proceeds to step S206.
  • step S206 in the I3C slave 13, the data receiving unit 32 receives data and parity transmitted from the I3C master 12.
  • step S207 the I3C slave 13 determines whether an error has occurred in the data received in step S206, using the parity received in step S206. If the I3C slave 13 determines that no parity error has occurred, the process proceeds to step S208.
  • step S208 the CCI layer processing unit 62 acquires the data received by the data receiving unit 32 in step S206, that is, the transfer length information transmitted by the I3C master 12, as the remaining transfer amount.
  • step S209 the I3C slave 13 determines whether data is transmitted, a CRC word is transmitted, or an error is generated based on the preamble of the signal transmitted from the I3C master 12. Determine if there is.
  • step S209 if the I3C slave 13 determines that data is transmitted, the process proceeds to step S210, and a write process (FIG. 21) is performed.
  • step S209 determines in step S209 that a CRC word is transmitted
  • the process proceeds to step S211 and the data receiving unit 32 receives the CRC word.
  • step S212 the I3C slave 13 determines whether or not an error has occurred in the CRC word received by the data receiving unit 32 in step S211. If it is determined in step S212 that no error has occurred in the CRC word, the process proceeds to step S213, and the I3C slave 13 determines that the read is random.
  • step S205 when the I3C slave 13 determines in step S205 that a CRC word is transmitted, the process proceeds to step S214, and the data receiving unit 32 receives the CRC word.
  • step S215 the I3C slave 13 determines whether or not an error has occurred in the CRC word received by the data receiving unit 32 in step S214. If the I3C slave 13 determines in step S215 that no error has occurred in the CRC word, the process proceeds to step S216. That is, in this case, since the CCI protocol is violated, the CCI layer processing unit 62 sets the remaining transfer amount to 0 in step S216.
  • step S201 if it is detected in step S201, step S205, or step S209 that a framing error has occurred based on the preamble, the process proceeds to step S217. Similarly, when it is determined in steps S203 and S207 that a parity error has occurred, the process proceeds to step S217. Furthermore, if it is determined in step S212 or S215 that a CRC error has occurred, the process proceeds to step S217.
  • step S217 the I3C slave 13 notifies the CCI layer processing unit 62 of an error, and in step S218, the CCI layer processing unit 62 sets the remaining transfer amount to 0.
  • step S210 step S213, step S216, or step S218, the DDR write transfer process is terminated, and the process proceeds to step S179 of FIG.
  • FIG. 21 is a flowchart for explaining the write process performed in step S210 of FIG.
  • step S221 in the I3C slave 13, the data receiving unit 32 receives data and parity transmitted from the I3C master 12.
  • step S222 the I3C slave 13 determines whether an error has occurred in the data received in step S221, using the parity received in step S221. If the I3C slave 13 determines that a parity error has not occurred, the process proceeds to step S223, and the CCI layer processing unit 62 starts write transfer because data can be normally received. Judge that.
  • step S224 the CCI layer processing unit 62 determines whether the remaining transfer amount is 2 bytes or more, 1 byte, or 0 byte.
  • step S224 If it is determined in step S224 that the remaining transfer amount is 2 bytes or more, the process proceeds to step S225, and the CCI layer processing unit 62 uses the 2-byte data received by the I3C slave 13 as data to be written to the register. get.
  • step S226 the CCI layer processing unit 62 performs a register write process of the 2-byte data.
  • step S227 the CCI layer processing unit 62 updates the index by 2 bytes and updates the transfer remaining amount by 2 bytes.
  • step S224 determines whether the remaining transfer amount is 1 byte. If it is determined in step S224 that the remaining transfer amount is 1 byte, the process proceeds to step S228.
  • step S2208 the CCI layer processing unit 62 discards 1 byte of dummy data from the 2-byte data received by the I3C slave 13 by the invalid data processing unit 74, and obtains the remaining 1 byte as data to be written to the register. Is done.
  • step S229 the CCI layer processing unit 62 performs a register write process of the 1-byte data, and in step S230, updates the index by 1 byte and the transfer remaining amount by 1 byte.
  • step S224 determines whether the remaining transfer amount is 0 bytes. If it is determined in step S224 that the remaining transfer amount is 0 bytes, the process proceeds to step S231. That is, in this case, since it is a violation of the CCI protocol, in step S231, the CCI layer processing unit 62 discards both bytes received by the I3C slave 13.
  • step S232 the I3C slave 13 determines whether data is transmitted, a CRC word is transmitted, or an error is generated based on the preamble of the signal transmitted from the I3C master 12. Determine if there is.
  • step S232 when the I3C slave 13 determines that data is transmitted, the process returns to step S221, and thereafter the same process is repeated.
  • step S232 determines in step S232 that a CRC word is transmitted
  • the process proceeds to step S233, and the data receiving unit 32 receives the CRC word.
  • step S234 the I3C slave 13 determines whether or not an error has occurred in the CRC word received by the data receiving unit 32 in step S233. If it is determined in step S234 that no error has occurred in the CRC word, the process proceeds to step S235. That is, in this case, the CCI layer processing unit 62 determines that the write transfer is terminated in step S235 because the CRC word has been normally received, and sets the remaining transfer amount to 0 in step S236. .
  • step S222 determines whether a parity error has occurred. If it is determined in step S232 that a parity error has occurred, if it is determined in step S232 that a framing error has occurred based on the preamble, or if a CRC error has occurred in step S234. If so, the process proceeds to step S237.
  • step S237 the I3C slave 13 notifies the CCI layer processing unit 62 of an error, and in step S238, the CCI layer processing unit 62 sets the remaining transfer amount to 0.
  • step S236 or S2308 the write process is terminated, and the process proceeds to step S179 of FIG.
  • the controlled device 61 can perform the register R / W transfer process in the DDR mode.
  • FIG. 22 is a flowchart for explaining data transfer processing performed in the controlled device 61 in response to the system controller 41 executing the register R / W transfer processing in the TSL / TSP mode described above with reference to FIG. is there.
  • step S241 in the I3C slave 13, the command interpretation unit 33 receives the command and parity transmitted from the I3C master 12.
  • the TSL / TSP mode unlike the DDR mode, no preamble is transmitted.
  • step S242 the command interpretation unit 33 determines whether an error has occurred in the command received in step S172.
  • error detection conditions are different from those in DDR mode. For example, when a parity error is detected, or when a symbol of 2 ⁇ 2 or more is received outside the boundary of a data word, an error occurs in the command. It is determined that it has occurred.
  • step S242 determines in step S242 that no error has occurred, the process proceeds to step S243.
  • step S243 the command interpretation unit 33 determines whether the command code of the command received in step S242 is a read command or a write command.
  • step S243 if the command interpretation unit 33 determines that the command code is a read command, the process proceeds to step S244, and a TSL / TSP read transfer process is performed as described later with reference to FIG.
  • step S243 determines in step S243 that the command code is a write command
  • the process proceeds to step S245, and a TSL / TSP write transfer process is performed as described later with reference to FIG. .
  • step S244 After the TSL / TSP read transfer process in step S244 or the TSL / TSP write transfer process in step S245, the process proceeds to step S248.
  • step S242 determines in step S242 that an error has occurred
  • the process proceeds to step S246.
  • steps S246 to S248 processing similar to that in steps S177 to S179 in FIG. 18 is performed.
  • FIG. 23 is a flowchart illustrating the TSL / TSP read transfer process performed in step S244 of FIG.
  • steps S251 through S253 the same processing as in steps S181 through S183 in FIG. 19 is performed.
  • step S252 or S253 in step S254, the I3C slave 13 starts driving the data signal line 14-1 and the clock signal line 14-2.
  • steps S255 to S262 processing similar to that in steps S185 to S192 in FIG. 19 is performed, and it is determined in step S255 that the remaining transmission amount of data to be transmitted according to the current read command is 0 bytes. The process is repeated.
  • TSL / TSP mode unlike DDR mode, master abort is not performed.
  • step S255 If it is determined in step S255 that the remaining transmission amount is 0 bytes, the process proceeds to step S263, and the I3C slave 13 transmits a signal (symbol 2 ⁇ 3 times) indicating the end of transfer.
  • the I3C slave 13 transmits a signal (symbol 2 ⁇ 3 times) indicating the end of transfer.
  • the TSL / TSP mode unlike the DDR mode, no CRC word is transmitted.
  • step S251 determines whether the current transfer remaining amount is 0 bytes. If it is determined in step S251 that the current transfer remaining amount is 0 bytes, the process proceeds to step S264. That is, in this case, since the CCI protocol is violated, the I3C slave 13 starts driving the data signal line 14-1 and the clock signal line 14-2 in step S264, and in step S265, NACK (symbol 2 ⁇ 3 Times). In the TSL / TSP mode, the NACK format is different from the DDR mode.
  • step S266 After step S263 or S265, the process proceeds to step S266.
  • step S66 after the I3C slave 13 stops driving the data signal line 14-1 and the clock signal line 14-2, the TSL / TSP read transfer process is terminated, and the process proceeds to step S248 in FIG. In TSL / TSP mode, the turnaround procedure is different from DDR mode.
  • FIG. 24 is a flowchart illustrating the TSL / TSP write transfer process performed in step S245 of FIG.
  • step S271 in the I3C slave 13, the data receiving unit 32 receives data and parity transmitted from the I3C master 12.
  • the TSL / TSP mode unlike the DDR mode, no preamble is transmitted.
  • step S272 the I3C slave 13 determines whether or not an error has occurred in the data received in step S271.
  • error detection conditions are different from those in DDR mode. For example, when a parity error is detected, or when a symbol 2 ⁇ 2 or more is received outside a data word boundary, an error occurs in data. It is determined that it has occurred.
  • step S272 If it is determined in step S272 that no error has occurred in the data, the process proceeds to step S273, and the CCI layer processing unit 62 receives the data received by the data receiving unit 32 in step S271, that is, the I3C master 12 Get the sent index.
  • step S274 the I3C slave 13 determines whether or not data transmitted from the I3C master 12 has been received.
  • step S274 If it is determined in step S274 that data transmitted from the I3C master 12 has been received, the process proceeds to step S275, and the data receiving unit 32 receives data and parity transmitted from the I3C master 12.
  • step S276 the I3C slave 13 determines whether an error has occurred in the data received in step S275. If it is determined that no error has occurred, the process proceeds to step S277. move on.
  • step S277 the CCI layer processing unit 62 acquires the data received by the data receiving unit 32 in step S275, that is, the transfer length information transmitted by the I3C master 12, as the remaining transfer amount.
  • step S278 the I3C slave 13 determines whether data transmitted from the I3C master 12 has been received.
  • TSL / TSP mode unlike the DDR mode, no preamble is transmitted.
  • step S278 If it is determined in step S278 that the I3C slave 13 has received data, the process proceeds to step S279, and a write process (FIG. 25) is performed.
  • step S278 determines that the read is random.
  • step S274 if it is determined in step S274 that the data transmitted from the I3C master 12 has not been received, the process proceeds to step S281. That is, in this case, since the CCI protocol is violated, the CCI layer processing unit 62 sets the remaining transfer amount to 0 in step S281. In the TSL / TSP mode, unlike the DDR mode, no CRC word is transmitted.
  • step S272 or S276 determines whether an error has occurred in the received data. If it is determined in step S272 or S276 that an error has occurred in the received data, the process proceeds to step S282.
  • step S282 the I3C slave 13 notifies the CCI layer processing unit 62 of an error, and in step S283, the CCI layer processing unit 62 sets the remaining transfer amount to 0.
  • step S279 the TSL / TSP write transfer process is terminated, and the process proceeds to step S248 of FIG.
  • FIG. 25 is a flowchart for explaining the write process performed in step S279 of FIG.
  • step S291 in the I3C slave 13, the data receiving unit 32 receives data and parity transmitted from the I3C master 12.
  • step S292 the I3C slave 13 determines whether an error has occurred in the data received in step S291.
  • error detection conditions are different from those in DDR mode. For example, when a parity error is detected, or when a symbol 2 ⁇ 2 or more is received outside a data word boundary, an error occurs in data. It is determined that it has occurred.
  • step S292 determines in step S292 that no error has occurred in the data
  • the process proceeds to step S293, and the CCI layer processing unit 62 has received the data normally. It is determined that the transfer is started.
  • steps S294 through S301 the same processing as in steps S224 through S231 in FIG. 21 is performed, and then in step S302, the I3C slave 13 determines whether or not the data transmitted from the I3C master 12 has been received. .
  • the TSL / TSP mode unlike the DDR mode, no preamble is transmitted.
  • step S302 If it is determined in step S302 that the I3C slave 13 has received data, the process returns to step S291, and the same process is repeated thereafter.
  • step S302 determines that the I3C slave 13 has not received data. If it is determined in step S302 that the I3C slave 13 has not received data, the process proceeds to step S303. Then, the CCI layer processing unit 62 determines that the write transfer is to be terminated in step S303 because no data is transmitted, and sets the remaining transfer amount to 0 in step S304.
  • step S305 the I3C slave 13 notifies the CCI layer processing unit 62 of an error, and in step S306, the CCI layer processing unit 62 sets the remaining transfer amount to zero.
  • step S304 or S306 the write process is terminated, and the process proceeds to step S248 of FIG.
  • the controlled device 61 can perform the register R / W transfer process in the TSL / TSP mode.
  • FIG. 26 shows an example of processing when an error occurs when data is continuously read in the read transfer processing in the TSL / TSP mode.
  • the I3C slave 13 when the I3C slave 13 detects any error, the I3C slave 13 does not receive any HDR until the HDR end command (HDR_Exit) or the HDR restart command (HDR_Restart) is received. It is stipulated that communication is resumed when communication is ignored and either one is detected.
  • the I3C slave 13 After that, the I3C slave 13 returns the communication by receiving the HDR restart command, and transfers the read command transmitted following the HDR restart command to the CCI layer processing unit 62.
  • the CCI layer processing unit 62 does not grasp the index and the transfer length information, a state occurs in which it is not known where to read data.
  • the I3C slave 13 notifies the CCI layer processing unit 62 of the detection of the error (for example, step S217 in FIG. 20 or step S282 in FIG. 24). Stipulated in In response to this error notification, the CCI layer processing unit 62 is defined to set the transfer remaining amount to 0 (for example, step S218 in FIG. 20 or step S283 in FIG. 24).
  • the CCI layer processing unit 62 receives the read command when the index and the transfer length information cannot be recognized due to the occurrence of an error, for example, the transfer remaining amount is determined to be 0. It becomes. Therefore, after the I3C slave 13 detects an error, the CCI layer processing unit 62 receives a combination of the HDR restart command and the write command (HDR_Restart + TSL / TSP_Cmd (W)) or until an HDR end command is received. Any communication can be ignored.
  • the controlled device 61 can avoid writing data with a possibility of error to the register and reading out data with a possibility of error from the register, and the communication is unstable due to such an error. Therefore, communication can be performed more reliably.
  • the processes described with reference to the flowcharts described above do not necessarily have to be processed in chronological order in the order described in the flowcharts, but are performed in parallel or individually (for example, parallel processes or objects). Processing).
  • the program may be processed by one CPU, or may be distributedly processed by a plurality of CPUs.
  • the above-described series of processing can be executed by hardware or can be executed by software.
  • a program constituting the software executes various functions by installing a computer incorporated in dedicated hardware or various programs.
  • the program is installed in a general-purpose personal computer from a program recording medium on which the program is recorded.
  • FIG. 27 is a block diagram showing an example of the hardware configuration of a computer that executes the above-described series of processing by a program.
  • a CPU Central Processing Unit
  • ROM Read Only Memory
  • RAM Random Access Memory
  • EEPROM Electrically Erasable Memory and Programmable Read Only Memory
  • the CPU 101 loads the program stored in the ROM 102 and the EEPROM 104 to the RAM 103 via the bus 105 and executes the program, thereby performing the above-described series of processing.
  • the program executed by the computer can be written in the ROM 102 in advance, and can be installed or updated in the EEPROM 104 from the outside via the input / output interface 106.
  • a communication device for performing communication via a bus Communication is performed by the first communication device having communication initiative and at least one second communication device that performs communication according to the control by the first communication device,
  • the first communication device is: An acquisition unit that acquires from the second communication device a maximum transfer length indicating a maximum transfer length that can be transferred in one data transfer by the second communication device;
  • a transmission / reception control unit for controlling transmission / reception of data so that a data length of data transferred in one data transfer is equal to or less than the maximum transfer length when performing data transfer with the second communication device;
  • a communication apparatus comprising: a transmission unit that transmits transfer length information indicating a data length of data to be transferred prior to data transfer of the data.
  • the transmission / reception control unit When the transmission / reception control unit is requested to transfer data having a data length greater than or equal to the maximum transfer length, the transmission / reception control unit performs data transfer by dividing the data requested to be transferred to the maximum transfer length or less.
  • the communication device wherein the transmission unit transmits the transfer length information indicating a data length of data divided by the transmission / reception control unit.
  • the acquisition unit acquires a maximum write length that is the maximum transfer length in the write transfer by the second communication device,
  • the transmission / reception control unit When the transmission / reception control unit is requested to transfer data having a data length longer than the maximum write length, the transmission / reception control unit divides the requested data into the maximum write length or less and divides the data into a plurality of times.
  • Data transfer to send data The communication device according to (1) or (2), wherein the transmission unit transmits the transfer length information indicating a data length of data divided by the transmission / reception control unit for each transfer of the data.
  • the acquisition unit acquires a maximum read length that is the maximum transfer length in the read transfer by the second communication device,
  • the transmission / reception control unit When the transmission / reception control unit is requested to transfer data having a data length greater than or equal to the maximum read length, the transmission / reception control unit divides the requested data into the maximum read length or less and divides the data into multiple times.
  • Data transfer to send data The communication device according to any one of (1) to (3), wherein the transmission unit transmits the transfer length information indicating a data length of the data divided by the transmission / reception control unit for each transfer of the data. .
  • the acquisition unit acquires a maximum read length that is the maximum transfer length in the read transfer by the second communication device
  • the transmission / reception control unit When the transmission / reception control unit is requested to transfer data having a data length greater than or equal to the maximum read length, the transmission / reception control unit divides the requested data into the maximum read length or less and divides the data into multiple times.
  • Data transfer to send data The communication device according to any one of (1) to (3), wherein the transmission unit transmits the transfer length information indicating a data length of the entire data requested to be transferred only once.
  • the second communication device is: When detecting the occurrence of an error that can not normally receive at least the transfer length information, an error notification unit for notifying the occurrence of the error to a processing unit that performs processing in an upper layer, The upper layer ignores any communication until a combination of a command for instructing restart of communication and a command for instructing writing of data is received or a command for instructing termination of communication is received.
  • the communication device according to any one of (1) to (5).
  • a communication method for performing communication via a bus Communication is performed by the first communication device having communication initiative and at least one second communication device that performs communication according to the control by the first communication device,
  • the first communication device is: Obtaining a maximum transfer length indicating the maximum transfer length transferable in one data transfer by the second communication device from the second communication device;
  • a communication method including a step of transmitting transfer length information indicating a data length of data to be transferred.
  • the first communication device is: Obtaining a maximum transfer length indicating the maximum transfer length transferable in one data transfer by the second communication device from the second communication device;
  • a program for causing a computer to execute a communication process including a step of transmitting transfer length information indicating a data length of data to be transferred prior to transferring the data.
  • a communication system in which communication is performed by a first communication device having the initiative of communication via a bus and at least one second communication device that performs communication according to control by the first communication device.
  • the first communication device is: An acquisition unit that acquires from the second communication device a maximum transfer length indicating a maximum transfer length that can be transferred in one data transfer by the second communication device;
  • a transmission / reception control unit for controlling transmission / reception of data so that a data length of data transferred in one data transfer is equal to or less than the maximum transfer length when performing data transfer with the second communication device;
  • a communication system comprising: a transmission unit that transmits transfer length information indicating a data length of data to be transferred prior to data transfer of the data.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Information Transfer Systems (AREA)
  • Communication Control (AREA)
  • Stereo-Broadcasting Methods (AREA)
  • Bus Control (AREA)

Abstract

本開示は、より確実に通信を行うことができるようにする通信装置、通信方法、プログラム、および、通信システムに関する。 I3Cマスタは、I3Cスレーブから最大リード長および最大ライト長を受信する。そして、I3Cスレーブに対してデータ転送を行う際に、1回のデータ転送において転送されるデータのデータ長が最大リード長および最大ライト長以下となるようにデータの送受信を制御するとともに、データをデータ転送するのに先立って、転送されるデータのデータ長を示す転送長情報を送信する。本技術は、例えば、バスIFに適用できる。

Description

通信装置、通信方法、プログラム、および、通信システム
 本開示は、通信装置、通信方法、プログラム、および、通信システムに関し、特に、より確実に通信を行うことができるようにした通信装置、通信方法、プログラム、および、通信システムに関する。
 従来、各種のデバイスにおけるレジスタを制御するためのバスIF(Interface)としてCCI(Camera Control Interface)が広く使用されており、CCIでは、物理層にI2C(Inter-Integrated Circuit)規格が採用されている。
 例えば、CCIでは、データ転送を開始する際に、システムコントローラから被制御デバイスに対し、データの読み出しまたは書き込みが行われる対象となるレジスタの先頭アドレス(Index)が予め通知される。その上で、システムコントローラは、1バイトのデータ転送を行う度に、所望のデータ量の読み出しまたは書き込みがレジスタに対して行われたか否かを判定する。そして、システムコントローラが、所望のデータ量の読み出しまたは書き込みがレジスタに対して行われたと判定した場合に、データ転送を終了する制御が行われる。
 例えば、特許文献1には、マスタデバイスが、スレーブデバイスのアドレスとライト指示とライト対象のレジスタアドレスとライトデータとをI2Cバスへシリアルに出力することにより、スレーブデバイスがレジスタに対するライトを行う技術が開示されている。
特開2016-018319号公報
 上述したように、CCIでは、物理層にI2C規格が採用されている。このため、伝送レートが最大1Mbpsと低速であることより、さらなる高速化を実現することが求められていた。そこで、次世代の規格として、伝送レートが最大37.5Mbpsと高速なI3C(Improved Inter Integrated Circuit)の規定が策定され、その改定が進められている。また、物理層にI3Cを使用した新たなCCIの検討も行われている。
 ところで、I3CのHDRモードにおいて、データ転送において転送するデータのデータ長(バイト数)を含んだフレーム構成を採用することを検討したとき、新たなCCIとI3Cとの間で競合が発生することが懸念され、通信を正常に行うことができなくなる恐れがある。
 本開示は、このような状況に鑑みてなされたものであり、より確実に通信を行うことができるようにするものである。
 本開示の一側面の通信装置は、バスを介して通信を行う通信装置であって、通信の主導権を有する第1の通信装置と、前記第1の通信装置による制御に従って通信を行う少なくとも1台以上の第2の通信装置とにより通信が行われ、前記第1の通信装置は、前記第2の通信装置が1回のデータ転送において転送可能な最大の転送長を示す最大転送長を、前記第2の通信装置から取得する取得部と、前記第2の通信装置とデータ転送を行う際に、1回のデータ転送において転送されるデータのデータ長が前記最大転送長以下となるようにデータの送受信を制御する送受信制御部と、前記データをデータ転送するのに先立って、転送されるデータのデータ長を示す転送長情報を送信する送信部とを備える。
 本開示の一側面の通信方法またはプログラムは、バスを介して通信を行う通信方法であって、通信の主導権を有する第1の通信装置と、前記第1の通信装置による制御に従って通信を行う少なくとも1台以上の第2の通信装置とにより通信が行われ、前記第1の通信装置は、前記第2の通信装置が1回のデータ転送において転送可能な最大の転送長を示す最大転送長を、前記第2の通信装置から取得し、前記第2の通信装置とデータ転送を行う際に、1回のデータ転送において転送されるデータのデータ長が前記最大転送長以下となるようにデータの送受信を制御し、前記データをデータ転送するのに先立って、転送されるデータのデータ長を示す転送長情報を送信するステップを含む。
 本開示の一側面の通信システムは、バスを介した通信の主導権を有する第1の通信装置と、前記第1の通信装置による制御に従って通信を行う少なくとも1台以上の第2の通信装置とにより通信が行われる通信システムであって、前記第1の通信装置は、前記第2の通信装置が1回のデータ転送において転送可能な最大の転送長を示す最大転送長を、前記第2の通信装置から取得する取得部と、前記第2の通信装置とデータ転送を行う際に、1回のデータ転送において転送されるデータのデータ長が前記最大転送長以下となるようにデータの送受信を制御する送受信制御部と、前記データをデータ転送するのに先立って、転送されるデータのデータ長を示す転送長情報を送信する送信部とを備える。
 本開示の一側面においては、第2の通信装置が1回のデータ転送において転送可能な最大の転送長を示す最大転送長が、第2の通信装置から取得され、第2の通信装置とデータ転送を行う際に、1回のデータ転送において転送されるデータのデータ長が最大転送長以下となるようにデータの送受信が制御され、そのデータをデータ転送するのに先立って、転送されるデータのデータ長を示す転送長情報が送信される。
 本開示の一側面によれば、より確実に通信を行うことができる。
本技術を適用したバスIFの一実施の形態の構成例を示すブロック図である。 I3Cマスタを実装したシステムコントローラの構成例を示すブロック図である。 I3Cスレーブを実装した被制御デバイスの構成例を示すブロック図である。 DDRモードでのフォーマットを示す図である。 TSL/TSPモードでのフォーマットを示す図である。 I3Cマスタにおいて行われる処理を説明するフローチャートである。 DDRモードでデータを分割して転送するリード転送処理におけるフォーマットを示す図である。 TSL/TSPモードでデータを分割して転送するリード転送処理におけるフォーマットを示す図である。 システムコントローラにおいて実行されるデータ転送処理を説明するフローチャートである。 DDRモードによるレジスタR/W転送処理を説明するフローチャートである。 DDRリード転送処理を説明するフローチャートである。 DDRモードでのHDRライト転送処理を説明するフローチャートである。 DDRライト転送処理を説明するフローチャートである。 TSL/TSPモードによるレジスタR/W転送処理を説明するフローチャートである。 TSL/TSPリード転送処理を説明するフローチャートである。 TSL/TSPリードでのHDRライト転送処理を説明するフローチャートである。 TSL/TSPライト転送処理について説明するフローチャートである。 DDRモードのときに被制御デバイスにおいて実行されるデータ転送処理を説明するフローチャートである。 DDRリード転送処理を説明するフローチャートである。 DDRライト転送処理を説明するフローチャートである。 ライト処理を説明するフローチャートである。 TSL/TSPモードのときに被制御デバイスにおいて実行されるデータ転送処理を説明するフローチャートである。 TSL/TSPリード転送処理を説明するフローチャートである。 TSL/TSPライト転送処理を説明するフローチャートである。 ライト処理を説明するフローチャートである。 I3CスレーブおよびCCIレイヤ処理部によるエラー対策について説明する図である。 本技術を適用したコンピュータの一実施の形態の構成例を示すブロック図である。
 以下、本技術を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。
 <バスIFの構成例>
 図1は、本技術を適用したバスIFの一実施の形態の構成例を示すブロック図である。
 図1に示されているバスIF11は、I3Cマスタ12と3台のI3Cスレーブ13-1乃至13-3とが、データ信号線14-1およびクロック信号線14-2を介して接続されて構成されており、I3Cの規格に準じた通信を行うことができる。
 I3Cマスタ12は、バスIF11における制御の主導権を有しており、データ信号線14-1およびクロック信号線14-2を介して、I3Cスレーブ13-1乃至13-3と通信を行うことができる。
 I3Cスレーブ13-1乃至13-3は、I3Cマスタ12による制御に従って、データ信号線14-1およびクロック信号線14-2を介して、I3Cマスタ12と通信を行うことができる。なお、I3Cスレーブ13-1乃至13-3は、それぞれ同様に構成されており、以下、それらを区別する必要がない場合、単にI3Cスレーブ13と称し、I3Cスレーブ13を構成する各ブロックについても同様とする。
 データ信号線14-1およびクロック信号線14-2は、I3Cマスタ12およびI3Cスレーブ13の間で信号を伝送するのに用いられる。例えば、バスIF11では、データ信号線14-1を介して、1ビットずつ逐次的にシリアルデータ(SDA:Serial Data)が伝送され、クロック信号線14-2を介して、所定の周波数のシリアルクロック(SCL:Serial Clock)が伝送される。
 I3Cマスタ12は、データ送信部21、データ受信部22、コマンド送信部23、モード制御部24、および送受信制御部25を備えており、これらの各ブロックは、回路やモジュールなどにより構成される。
 データ送信部21は、データ信号線14-1およびクロック信号線14-2を介して、I3Cスレーブ13にデータを送信する。例えば、データ送信部21は、クロック信号線14-2を駆動することにより送信するシリアルクロックのタイミングに合わせて、データ信号線14-1に対する駆動を行う(電位をHレベルまたはLレベルに切り替える)ことにより、I3Cスレーブ13にデータを送信することができる。
 データ受信部22は、データ信号線14-1およびクロック信号線14-2を介して、I3Cスレーブ13から送信されてくるデータを受信する。例えば、データ受信部22は、クロック信号線14-2のシリアルクロックのタイミングに合わせて、I3Cスレーブ13がデータ信号線14-1に対する駆動を行うことによって、I3Cスレーブ13から送信されてくるデータを受信することができる。
 コマンド送信部23は、データ送信部21と同様に、データ信号線14-1およびクロック信号線14-2を介して、I3Cスレーブ13に対し、後述するような各種のコマンドを送信する。
 モード制御部24は、上位層(例えば、後述する図2のCCIレイヤ処理部42)からの要求に従って、I3Cの規格で規定されている複数の転送モードのうち、いずれかを選択し、その選択した転送モードで通信を行うように送受信制御部25に対する制御を行う。
 例えば、バスIF11では、データの転送レートに応じて、通常の転送レートでデータ転送を行うSDR(Standard Data Rate)モードと、SDRモードよりも高い転送レートでデータ転送を行うHDR(High Data Rate)モードとが規定されている。また、HDRモードでは、DDR(Double Data Rate)モード、TSP(Ternary Symbol Pure-Bus)モード、および、TSL(Ternary Symbol Legacy-inclusive-Bus)モードの3つの転送モードが規格で定義されている。
 従って、モード制御部24は、SDRモード、DDRモード、TSPモード、および、TSLモードのいずれかを選択し、その選択した転送モードで通信を行うように送受信制御部25に対する制御を行う。
 送受信制御部25は、モード制御部24により選択された転送モードで、上位層からの要求に従って、データ送信部21およびデータ受信部22によるデータの送受信や、コマンド送信部23によるコマンドの送信などを制御する。
 このようにI3Cマスタ12は構成されており、必要に応じて転送モードを切り替えて、例えば、レジスタに書き込ませるデータをデータ送信部21により送信させたり、レジスタから読み出させるデータをデータ受信部22により受信させたりすることができる。
 I3Cスレーブ13は、データ送信部31、データ受信部32、コマンド解釈部33、モード制御部34、および送受信制御部35を備えており、これらの各ブロックは、回路やモジュールなどにより構成される。
 データ送信部31は、データ信号線14-1およびクロック信号線14-2を介して、I3Cマスタ12にデータを送信する。例えば、データ送信部31は、I3Cマスタ12により駆動されるクロック信号線14-2のシリアルクロックのタイミングに合わせて、データ信号線14-1に対する駆動を行うことにより、I3Cマスタ12にデータを送信することができる。
 データ受信部32は、データ信号線14-1およびクロック信号線14-2を介して、I3Cマスタ12から送信されてくるデータを受信する。例えば、データ受信部32は、クロック信号線14-2のシリアルクロックのタイミングに合わせて、I3Cマスタ12がデータ信号線14-1に対する駆動を行うことによって、I3Cマスタ12から送信されてくるデータを受信することができる。
 コマンド解釈部33は、I3Cマスタ12のコマンド送信部23からデータ信号線14-1およびクロック信号線14-2を介して送信されてくるコマンドを受信し、そのコマンドを解釈して、コマンドによる指示に基づいた各種の処理を行う。例えば、コマンド解釈部33は、HDRモードによる通信の開始を指示するコマンドを受信した場合、モード制御部34に対してHDRモードによる通信が開始されることを通知する処理を行う。また、コマンド解釈部33は、データの書き込みを指示するコマンドまたはデータの読み出しを指示するコマンドを受信した場合、送受信制御部35に対して、データの書き込みまたは読み出しを行うことを通知する処理を行う。
 モード制御部34は、コマンド解釈部33が受信したコマンドによる指示に従って、I3Cマスタ12のモード制御部24と同様に、SDRモード、DDRモード、TSPモード、および、TSLモードのいずれかを選択する。そして、モード制御部34は、その選択した転送モードで通信を行うように送受信制御部25に対する制御を行う。
 送受信制御部35は、モード制御部24により選択された転送モードで、コマンド解釈部33が受信したコマンドに従って、データ送信部31およびデータ受信部32によるデータの送受信を制御する。
 このようにI3Cスレーブ13は構成されており、I3Cマスタ12による制御に応じて転送モードを切り替えて、例えば、レジスタから読み出すデータをデータ送信部31により送信させたり、レジスタに書き込むデータをデータ受信部32に受信させたりすることができる。
 以上のように構成されるI3Cマスタ12およびI3Cスレーブ13は、それぞれシステムコントローラおよび被制御デバイスに実装され、それらが行う通信における物理層での処理を実行することができる。
 図2は、図1のI3Cマスタ12を実装したシステムコントローラの構成例を示すブロック図である。
 図2に示すシステムコントローラ41は、データ信号線14-1およびクロック信号線14-2に接続されているI3Cマスタ12の他、CCIレイヤ処理部42、CPU43、および内部バス44を備えて構成されている。また、図示するように、I3Cマスタ12は、I3Cマスタ12より上位の処理を行うCCIレイヤ処理部42に接続され、CCIレイヤ処理部42は、内部バス44を介して、システムコントローラ41全体の制御を行うCPU43に接続される。
 CCIレイヤ処理部42は、レジスタアドレス管理部51、転送長情報保持部52、ライト転送終了制御部53、無効データ処理部54、および転送長情報送信部55を備えて構成される。
 レジスタアドレス管理部51は、図1のバスIF11に接続されている各レジスタのアドレスを管理する。
 転送長情報保持部52は、I3Cスレーブ13との間で行うデータ転送において転送するデータのデータ長(バイト数)を示す転送長情報(Length)を保持する。
 ライト転送終了制御部53は、I3Cマスタ12からI3Cスレーブ13に転送したデータをレジスタに書き込むライト転送を終了する際の制御を行う。
 無効データ処理部54は、例えば、データを転送する際の最低単位である1ワードが、2バイト(16bit)として規定されているHDRモードにおいて、奇数バイトのデータを転送する際に利用されるダミーデータを付加したり、削除したりする処理を行う。
 転送長情報送信部55は、転送長情報保持部52に保持されている転送長情報を、I3Cマスタ12を介してI3Cスレーブ13に送信させる。
 図3は、図1のI3Cスレーブ13を実装した被制御デバイスの構成例を示すブロック図である。
 図3に示す被制御デバイス61は、データ信号線14-1およびクロック信号線14-2に接続されているI3Cスレーブ13の他、CCIレイヤ処理部62、デバイス制御部63、および内部バス64を備えて構成されている。また、図示するように、I3Cスレーブ13は、I3Cスレーブ13より上位の処理を行うCCIレイヤ処理部62に接続され、CCIレイヤ処理部62は、内部バス64を介して、被制御デバイス61全体の制御を行うデバイス制御部63に接続される。
 CCIレイヤ処理部62は、レジスタアドレス管理部71、レジスタR/W(Read/Write)制御部72、リード転送終了制御部73、無効データ処理部74、および転送長情報保持部75を備えて構成される。
 レジスタアドレス管理部71は、被制御デバイス61に備えられているレジスタのアドレスを管理する。
 レジスタR/W制御部72は、I3Cマスタ12からI3Cスレーブ13に転送されてくるデータをレジスタに書き込む制御、および、I3Cスレーブ13からI3Cマスタ12に送信するためにレジスタからデータを読み出す制御を行う。
 リード転送終了制御部73は、レジスタから読み出したデータをI3Cスレーブ13からI3Cマスタ12に転送するリード転送を終了する際の制御を行う。
 無効データ処理部74は、HDRモードにおいて、奇数バイトのデータを転送する際に利用される無効データを付加したり、削除したりする処理を行う。
 転送長情報保持部75は、I3Cマスタ12との間でデータ転送を行う際に、I3Cマスタ12から送信されてくる転送長情報(Length)を保持する。
 そして、デバイス制御部63は、例えば、CCIレイヤ処理部62のレジスタR/W制御部72による制御に従って、I3Cスレーブ13が受信したデータをステートレジスタへ書き込む制御を行う。また、デバイス制御部63は、例えば、I3Cスレーブ13により送信させるデータをステートレジスタから読み出す制御を行い、CCIレイヤ処理部62のレジスタR/W制御部72による制御に従って、そのデータが送信される。
 以上のように構成されるシステムコントローラ41および被制御デバイス61では、例えば、レジスタへ書き込むデータをシステムコントローラ41から被制御デバイス61へ転送したり、レジスタから読み出したデータを被制御デバイス61からシステムコントローラ41へ転送したりすることができる。
 <データ転送の第1の処理例>
 図4乃至図6を参照して、バスIF11においてデータを転送する第1のデータ転送処理の一例について説明する。
 図4は、転送モードがDDRモードである場合に、I3Cマスタ12とI3Cスレーブ13との間で送受信される信号のフォーマットを示している。図4の上側には、レジスタから読み出したデータをI3Cスレーブ13からI3Cマスタ12へ転送するリード転送処理を行う際のフォーマットが示されている。図4の下側には、レジスタに書き込むデータをI3Cマスタ12からI3Cスレーブ13へ転送するライト転送処理を行う際のフォーマットが示されている。
 リード転送処理を行う場合、まず、I3Cマスタ12は、HDRモードによる通信の開始またはリスタートを指示するコマンド(ENTHDR or HDR_Restart)を送信する。続いて、I3Cマスタ12は、レジスタから読み出して転送するデータのデータ長をI3Cスレーブ13に通知するための書き込みを行うことを指示するライトコマンド(DDR_Cmd(W))を送信する。そして、I3Cマスタ12は、ライトコマンドに続いて、データの読み出しを開始する先頭のアドレスを通知するインデックス(Index)、転送するデータのデータ長を示す転送長情報(Length)、および、CRC(Cyclic Redundancy Check)ワードを送信する。その後、I3Cマスタ12は、HDRモードによる通信のリスタートを指示するコマンド(HDR_Restart)を送信し、データの読み出しを指示するリードコマンド(DDR_Cmd(R))を送信する。
 これに応じて、I3Cスレーブ13は、インデックスに従ったアドレスの先頭から順に、DDRモードにおける1ワード(16bit)ごとにデータを転送し、転送長情報に従った読み込みバイト数のデータを送信し終わると、CRCワードを送信する。その後、I3Cマスタ12は、HDRモードによる通信のリスタートまたは終了を指示するコマンド(HDR_Restart or HDR_Exit)を送信する。
 ライト転送処理を行う場合、まず、I3Cマスタ12は、HDRモードによる通信の開始またはリスタートを指示するコマンド(ENTHDR or HDR_Restart)を送信する。続いて、I3Cマスタ12は、データの書き込みを指示する書き込みコマンド(DDR_Cmd(W))、データの書き込みを開始する先頭のアドレスを通知するインデックス(Index)、および、転送するデータのデータ長を示す転送長情報(Length)を送信する。そして、I3Cマスタ12は、インデックスに従ったアドレスの先頭から順に、DDRモードにおける1ワード(16bit)ごとにデータを転送し、転送長情報に従った書き込みバイト数のデータを送信し終わると、CRCワードを送信する。その後、I3Cマスタ12は、HDRモードによる通信のリスタートまたは終了を指示するコマンド(HDR_Restart or HDR_Exit)を送信する。
 図5は、転送モードがTSLモードまたはTSPモードである場合に、I3Cマスタ12とI3Cスレーブ13との間で送受信される信号のフォーマットを示している。図5の上側には、レジスタから読み出したデータをI3Cスレーブ13からI3Cマスタ12へ転送するリード転送処理を行う際のフォーマットが示されている。図5の下側には、レジスタに書き込むデータをI3Cマスタ12からI3Cスレーブ13へ転送するライト転送処理を行う際のフォーマットが示されている。
 ここで、TSLモードまたはTSPモードは、図4に示したCRCワードの送信が行われない点でDDRモードとは異なっており、その他の点で共通するフォーマットとなっている。
 このように、第1のデータ転送処理では、データを転送する際に、I3Cスレーブ13からI3Cマスタ12に転送長情報が送信される。そして、その転送長情報は、システムコントローラ41側では、CCIレイヤ処理部42の転送長情報保持部52に保持され、被制御デバイス61側では、CCIレイヤ処理部62の転送長情報保持部75に保持される。
 これにより、例えば、転送が要求されたデータのデータ長が奇数バイトであった場合、1バイトのダミーデータを付加して転送しても、転送長情報に基づいて、そのダミーデータを認識して破棄することができる。これにより、データを転送する際の最低単位である1ワードが2バイト(16bit)であっても、奇数バイトのデータの転送を確実に行うことができる。
 ところで、I3Cでは、1回あたりのリード転送において転送可能なバイト数の上限(以下、最大リード長(MRL:Max Read Length)と称する)が規定されている。同様に、I3Cでは、1回あたりのライト転送において転送可能な最大のバイト数の上限(以下、最大ライト長(MWL:Max Write Lengthと称する)が規定されている。通常、最大リード長および最大ライト長は、被制御デバイス61それぞれの実装上の都合によって設計時点で固定値とする他、例えば、他とリソースをシェアしている場合などには可変とすることができる。
 例えば、I3Cマスタ12は、CCIレイヤ処理部42からデータ転送が要求されたデータのデータ長が、最大リード長または最大ライト長より長い場合には、最大リード長または最大ライト長以下となるようにデータを分割して転送する制御を行う。
 図6は、I3Cマスタ12において行われる処理について説明するフローチャートである。
 ステップS11において、I3Cマスタ12は、バスIF11に接続されている各I3Cスレーブ13に対して、それぞれのI3Cスレーブ13の最大リード長および最大ライト長の送信を指示するコマンド(GETMWL/MRL)を送信する。そして、I3Cマスタ12は、そのコマンドに応じて、それぞれのI3Cスレーブ13から送信されてくる最大リード長および最大ライト長を取得する。
 ステップS12において、I3Cマスタ12は、ステップS11で取得した各I3Cスレーブ13の最大リード長または最大ライト長を調整する必要があるか否かを判定する。例えば、I3Cマスタ12は、CCIレイヤ処理部42からデータ転送が要求されることが想定されるデータのデータ長と、I3Cスレーブ13の最大リード長および最大ライト長それぞれと比較する。そして、I3Cマスタ12は、I3Cスレーブ13の最大リード長および最大ライト長の少なくとも一方が、想定されるデータのデータ長以下である場合、想定されるデータのデータ長以下の最大リード長または最大ライト長を調整する必要があると判定する。また、I3Cマスタ12は、例えば、I3Cマスタ12自身の最大リード長および最大ライト長を、想定されるデータのデータ長として比較を行ってもよい。
 ステップS12において、I3Cマスタ12が、I3Cスレーブ13の最大リード長または最大ライト長を調整する必要があると判定した場合、処理はステップS13に進む。
 ステップS13において、I3Cマスタ12は、調整する必要があると判定されたI3Cスレーブ13の最大リード長または最大ライト長を調整し、調整後の最大リード長および最大ライト長を設定するコマンド(SETMWL/MRL)をI3Cスレーブ13に送信する。例えば、I3Cマスタ12は、CCIレイヤ処理部42からデータ転送が要求されることが想定されるデータのデータ長以下であるI3Cスレーブ13の最大リード長または最大ライト長を、その想定されるデータのデータ長となるように調整する。また、I3Cマスタ12は、例えば、I3Cマスタ12自身の最大リード長および最大ライト長となるように、I3Cスレーブ13の最大リード長または最大ライト長を調整してもよい。
 ステップS13の処理後、または、ステップS12においてI3Cスレーブ13の最大リード長または最大ライト長を調整する必要がないと判定された場合、処理はステップS14に進む。
 ステップS14において、I3Cマスタ12は、上位層であるCCIレイヤ処理部42からデータ転送が要求されるのを待機し、データ転送の要求があると受信する。
 ステップS15において、I3Cマスタ12は、ステップS14でCCIレイヤ処理部42からデータ転送が要求されたデータのデータ長が、データ転送を行う対象のI3Cスレーブ13の最大リード長または最大ライト長より長いか否かを判定する。例えば、ステップS13においてI3Cスレーブ13の最大リード長または最大ライト長が調整されていた場合には、調整後の最大リード長または最大ライト長に基づいて判定が行われる。
 ステップS15において、I3Cマスタ12が、データ転送が要求されたデータのデータ長が、データ転送を行う対象のI3Cスレーブ13の最大リード長または最大ライト長より長いと判定した場合、処理はステップS16に進む。ステップS16において、I3Cマスタ12は、データ転送が要求されたデータを、データ転送を行う対象のI3Cスレーブ13の最大リード長または最大ライト長以下の長さに分割して、リード転送処理またはライト転送処理を行う。
 一方、ステップS15において、I3Cマスタ12が、データ転送が要求されたデータのデータ長が、データ転送を行う対象のI3Cスレーブ13の最大リード長または最大ライト長より長くない(最大リード長または最大ライト長以下の長さである)と判定した場合、処理はステップS17に進む。ステップS17において、I3Cマスタ12は、データを分割することなく、通常のリード転送処理またはライト転送処理を行う。
 ステップS16またはS17の処理後、処理はステップS14に戻り、I3Cマスタ12は、上位層であるCCIレイヤ処理部42からデータ転送が要求されるのを待機して、以下、同様の処理が繰り返して行われる。
 このように、I3Cマスタ12は、I3Cスレーブ13に設定されている最大リード長または最大ライト長より長いデータのデータ転送が要求された場合、そのデータを分割して転送することができる。
 即ち、システムコントローラ41では、I3Cマスタ12が、I3Cスレーブ13の最大リード長および最大ライト長を取得し、I3Cスレーブ13とデータ転送を行う際に、1回のデータ転送において転送されるデータのデータ長が最大リード長および最大ライト長以下となるように、送受信制御部25によりデータの送受信を制御することができる。そして、システムコントローラ41では、CCIレイヤ処理部42は、転送されるデータのデータ長を示す転送長情報に、最大リード長および最大ライト長以下のデータ長を設定して、I3Cマスタ12は、データをデータ転送するのに先立って、その転送長情報をI3Cスレーブ13に送信することができる。
 例えば、ステップS17において通常のリード転送処理またはライト転送処理を行うとき、I3Cスレーブ13は、CCIレイヤ処理部42において最大リード長および最大ライト長を超えないように設定されたデータ転送を行う。
 また、ステップS16において最大リード長または最大ライト長以下の長さに分割してリード転送処理またはライト転送処理を行うとき、I3Cスレーブ13は、複数回に分けてデータを送信するようにデータ転送を行う。このとき、I3Cスレーブ13は、例えば、データの転送ごとに転送長情報を送信することができる。または、後述するように、I3Cスレーブ13は、リード転送処理を行う際に、転送が要求されたデータ全体のデータ長を示す転送長情報を1回だけ送信することができ、これによりオーバヘッドを低減して転送効率が低下することを回避することができる。
 ところで、最大リード長および最大ライト長の送信を指示するコマンド(GETMRL,GETMWL)に対応していないI3Cスレーブ13が存在することも想定される。または、I3Cマスタ12が意図せずに、最大リード長または最大ライト長を超える長さを転送長情報に設定してしまうことも想定される。
 そのため、最大ライト長より長いデータ長のデータを書き込むとき、I3Cスレーブ13側のFIFO(First In, First Out)が溢れてしまう事態が発生する。
 このような事態に対する第1の対策として、I3Cスレーブ13は、FIFOが溢れるまではデータを通常に書き込み、FIFOが溢れた後のデータを全て破棄し、FIFOが溢れるエラーが発生したことを示すエラーフラグ(over MWL error)を立て、クリアするまでエラーフラグを保持する。そして、I3Cスレーブ13は、次のHDR終了コマンドまたはHDRリスタートコマンド(HDR_Exit or HDR_Restart)を受信するまでは、一切の信号を無視する。
 また、第2の対策として、I3Cスレーブ13は、最大ライト長に達したら、I3Cスレーブ13側から通信を中断する処理(Slave Abort)を行う。これに応じて、I3Cマスタ12は、通信を止めて、HDR終了コマンド(HDR_Exit)により停止させたり、HDRリスタートコマンド(HDR_Restart)を発行して残りのデータの転送を継続したりすることができる。
 また、第3の対策として、I3Cスレーブ13は、転送長情報を受信した時点で、最大ライト長を超えていることを認識することができるので、その後、すぐにI3Cスレーブ13側から通信を中断する処理(Slave Abort)を行う。これに応じて、I3Cマスタ12は、通信を止めて、HDR終了コマンド(HDR_Exit)により停止させたり、HDRリスタートコマンド(HDR_Restart)を発行して残りのデータの転送を継続したりすることができる。
 さらに、最大リード長より長いデータ長のデータを読み出すときにも対策を行う必要がある。
 例えば、第1の対策として、I3Cスレーブ13は、最後までデータ転送を行うことが困難であることより、リードコマンドを受信したらすぐに、NACKを返して通信を終了させる。そして、I3Cスレーブ13は、最大リード長より長いデータ長のデータの読み出しが指示されたことによるエラーの発生を示すエラーフラグ(over MRL error)を立て、クリアするまではエラーフラグを保持する。
 また、第2の対策として、I3Cスレーブ13は、最大リード長の上限まで、とりあえずデータをI3Cマスタ12に転送する。そして、最大リード長に達した時点でエラーフラグ(over MRL error)を立てて、DDRモードの場合は終了パケットであるCRCワードをI3Cマスタ12に送り、TSP/TSLモードの場合は、データ信号線14-1およびクロック信号線14-2に対する駆動を停止して、バスを手放す。
 一方、I3Cマスタ12側では、DDRモードの場合、転送長情報に示すデータ長に達する前に、CRCワードを受理した段階で、I3Cスレーブ13がエラー(over MRL error)となったことを認識する。そして、I3Cマスタ12は、CRCエラーが発生していなければ、その時点までのデータを受理する。
 また、I3Cマスタ12側では、TSL/TSPモードの場合、転送長情報に示すデータ長に達する前に、データ信号線14-1およびクロック信号線14-2に対する駆動が行われない(トグルしない)状態を検出した段階で、I3Cスレーブ13がエラー(over MRL error)となったことを認識する。
 そして、I3Cマスタ12は、DDRモードおよびTSL/TSPモードのどちらであっても、I3Cスレーブ13のエラー(over MRL error)を認識した以降では、最大リード長を超えないデータ長でHDRリード処理を行うように、データの再送信を行う。
 <データ転送の第2の処理例>
 図7乃至図25を参照して、バスIF11においてデータを転送する第2のデータ転送処理について、さらに詳細に説明する。
 図7には、転送モードがDDRモードである場合に、最大リード長を超えるデータを分割して転送し、I3Cスレーブ13からI3Cマスタ12にデータを読み出すリード転送処理を行う際のフォーマットが示されている。なお、図7では、最大リード長が200バイトであるときに、300バイトのデータの転送が要求されたときの例が示されている。
 まず、I3Cマスタ12は、HDRモードによる通信の開始またはリスタートを指示するコマンド(ENTHDR or HDR_Restart)を送信する。続いて、I3Cマスタ12は、レジスタから読み出して転送するデータのデータ長をI3Cスレーブ13に通知するための書き込みを行うことを指示するライトコマンド(DDR_Cmd(W))を送信する。
 そして、I3Cマスタ12は、ライトコマンドに続いて、データの読み出しを開始する先頭のアドレスを通知するインデックス(Index)、転送するデータのデータ長を示す転送長情報(Length)、および、CRCワードを送信する。その後、I3Cマスタ12は、HDRモードによる通信のリスタートを指示するコマンド(HDR_Restart)を送信し、データの読み出しを指示するリードコマンド(DDR_Cmd(R))を送信する。図7に示す例では、データの読み出しを開始する先頭のアドレスは0番地とされ、転送するデータのデータ長は300バイトとされており、最大リード長である200バイトごとに分割してデータが転送される。
 これに応じて、I3Cスレーブ13は、インデックスに従って、0番地のアドレスから順に、DDRモードにおける1ワード(16bit)ごとにデータを転送し、最大リード長となる200バイトのデータを送信し終わると、CRCワードを送信する。
 その後、I3Cマスタ12は、HDRモードによる通信のリスタートを指示するコマンド(HDR_Restart)を送信するのに続いて、データの読み出しを指示するリードコマンド(DDR_Cmd(R))を送信する。
 このとき、I3Cスレーブ13は、転送長情報で示された300バイトのうち、200バイトのデータを既に送信していることより、その続きとなる先頭のアドレスは200番地であって、残りの100バイトを送信する必要があると認識することができる。従って、I3Cスレーブ13は、200番地のアドレスから順に、DDRモードにおける1ワード(16bit)ごとにデータを転送し、100バイトのデータを送信し終わると、CRCワードを送信する。
 これにより、転送が要求された300バイトのデータを読み出したことになり、I3Cマスタ12は、HDRモードによる通信のリスタートまたは終了を指示するコマンド(HDR_Restart or HDR_Exit)を送信する。
 以上のように、I3Cマスタ12は、リード転送処理を行う際に、上述の図4を参照して説明したように、I3Cスレーブ13からデータを読み出す前に、インデックスおよび転送長情報を送信することにより、データの読み出しを開始する先頭のアドレスおよび転送するデータのデータ長をI3Cスレーブ13に通知する。ここで、I3Cマスタ12は、例えば、最大リード長を超えたデータを分割して読み出す場合には、最初に、全体のデータについてのインデックスおよび転送長情報を送信する。
 これより、I3Cマスタ12が、連接して読み出されるデータごとにインデックスおよび転送長情報を送信しなくても、I3Cスレーブ13において、データを送信するたびに送信残量を更新することで、連接して読み出されるデータのインデックスおよびデータ長を認識することができる。
 これにより、連接して転送されるデータごとにインデックスおよび転送長情報を送信しなくてもよく、その分だけオーバヘッドを削減することができ、データの転送効率を向上させることができる。
 図8には、転送モードがTSLモードまたはTSPモードである場合に、最大リード長を超えるデータを分割して転送し、I3Cスレーブ13からI3Cマスタ12にデータを読み出すリード転送処理を行う際のフォーマットが示されている。なお、図8では、図7と同様に、最大リード長が200バイトであるときに、300バイトのデータを転送する例が示されている。
 ここで、TSLモードまたはTSPモードは、図7に示したCRCワードの送信が行われない点でDDRモードとは異なっており、その他の点で共通するフォーマットとなっている。即ち、TSLモードまたはTSPモードにおいて、DDRモードと同様に、データの転送効率を向上させることができる。
 <システムコントローラのデータ転送処理>
 図9乃至図17に示すフローチャートを参照して、システムコントローラ41において実行されるデータ転送処理について説明する。
 ステップS21において、I3Cマスタ12は、バスIF11に接続されている各I3Cスレーブ13に基づいた初期設定プロセス(例えば、上述した図6のステップS11乃至S13の処理)を行う。
 ステップS22において、CCIレイヤ処理部42は、上位層であるCPU43からデータ転送が要求されるのを待機し、データ転送の要求があると受信する。
 ステップS23において、CCIレイヤ処理部42は、ステップS22で受信したデータ転送の要求に従って、被制御デバイス61との間でデータ転送を行う際の転送モードが、DDRモード、TSL/TSPモード、およびSDRモードのいずれであるかを判定する。
 ステップS23において、CCIレイヤ処理部42が、転送モードがDDRモードであると判定した場合、処理はステップS24に進み、図10乃至図13を参照して後述するようにDDRモードによるレジスタR/W転送処理が行われる。
 一方、ステップS23において、CCIレイヤ処理部42が、転送モードがTSL/TSPモードであると判定した場合、処理はステップS25に進み、図14乃至図17を参照して後述するようにTSL/TSPモードによるレジスタR/W転送処理が行われる。
 一方、ステップS23において、CCIレイヤ処理部42が、転送モードがSDRモードであると判定した場合、処理はステップS26に進み、SDRモードによりレジスタR/W転送が行われる。なお、SDRモードによりレジスタR/W転送が行われる場合には、上述したような転送長情報を送受信する必要はない。
 ステップS24、ステップS25、またはステップS26の処理後、処理はステップS22に戻って、システムコントローラ41では、以下、同様の処理が繰り返して行われる。
 次に、図10乃至図13を参照して、システムコントローラ41が実行するDDRモードによるレジスタR/W転送処理(図9のステップS24)について説明する。
 図10は、DDRモードによるレジスタR/W転送処理を説明するフローチャートである。
 ステップS31において、I3Cマスタ12では、コマンド送信部23が、バスIF11に接続されている全てのI3Cスレーブ13に対して、HDRモードによる通信を開始して、DDRモードで通信を行うHDR開始コマンド(ENTHDR0)を送信する。
 ステップS32において、CCIレイヤ処理部42は、図9のステップS22で上位層であるCPU43からデータ転送が要求されたデータのデータ長を、被制御デバイス61との間で転送されるデータの残り示す転送残量に設定する。
 ステップS33において、CCIレイヤ処理部42は、CPU43により要求されたデータの転送方向が、リード転送およびライト転送のどちらであるかを判定する。
 ステップS33において、CCIレイヤ処理部42が、データの転送方向がリード転送であると判定した場合、処理はステップS34に進み、図11を参照して後述するようにDDRリード転送処理が行われる。
 一方、ステップS33において、CCIレイヤ処理部42が、データの転送方向がライト転送であると判定した場合、処理はステップS35に進み、図13を参照して後述するようにDDRライト転送処理が行われる。
 ステップS34のDDRリード転送処理、または、ステップS35のDDRライト転送処理の処理後、処理はステップS36に進む。
 ステップS36において、CCIレイヤ処理部42は、上位層であるCPU43から次のHDRによるデータ転送が要求されたか否かを判定する。
 ステップS36において、CCIレイヤ処理部42が、次のHDRによるデータ転送が要求されたと判定した場合、処理はステップS37に進む。ステップS37において、I3Cマスタ12では、コマンド送信部23が、HDRモードによる通信のリスタートを指示するHDRリスタートコマンドを送信する。その後、処理はステップS32に戻り、以下、同様の処理が繰り返して行われる。
 一方、ステップS36において、CCIレイヤ処理部42が、次のHDRによるデータ転送が要求されていないと判定した場合、処理はステップS38に進む。
 ステップS38において、I3Cマスタ12では、コマンド送信部23が、HDRモードによる通信の終了を指示するコマンドを送信した後、DDRモードによるレジスタR/W転送処理は終了され、処理は図9のステップS22に戻る。
 図11は、図10のステップS34において行われるDDRリード転送処理を説明するフローチャートである。
 ステップS41において、CCIレイヤ処理部42は、図10のステップS32で設定した転送残量を、被制御デバイス61に送信するデータのデータ長を示す転送長情報に設定し、転送長情報保持部52に保持させる。
 ステップS42において、I3Cマスタ12は、レジスタから読み出して転送するデータのデータ長をI3Cスレーブ13に通知するために、転送長情報をI3Cスレーブ13に送信するHDRライト転送処理(図12参照)を行う。その処理後、I3Cマスタ12では、コマンド送信部23が、ステップS43において、HDRリスタートコマンドを送信し、ステップS44において、リードコマンドを送信する。
 ステップS45において、I3Cマスタ12は、データ信号線14-1に対する駆動を停止し、I3Cスレーブ13がデータ信号線14-1に対する駆動を行って信号を送信してくると、データ受信部22により信号の受信が開始される。
 ステップS46において、I3Cマスタ12は、I3Cスレーブ13から送信されてくる信号のプリアンブルに基づく判定を行う。ステップS46において、I3Cマスタ12が、プリアンブルに基づいて、I3Cスレーブ13からデータが送信されてくると判定した場合、処理はステップS47に進む。
 ステップS47において、I3Cマスタ12では、データ受信部22が、I3Cスレーブ13から送信されてくるデータおよびパリティを受信する。
 ステップS48において、I3Cマスタ12は、ステップS47で受信したパリティを用いて、ステップS47で受信したデータにエラーが発生しているか否かを判定する。そして、I3Cマスタ12が、パリティエラーが発生していないと判定した場合、処理はステップS49に進む。
 ステップS49において、CCIレイヤ処理部42は、現在の転送残量が、2バイト以上、1バイト、および0バイトのいずれであるかを判定する。
 ステップS49において、CCIレイヤ処理部42が、現在の転送残量が2バイト以上であると判定した場合、処理はステップS50に進む。ステップS50において、CCIレイヤ処理部42は、レジスタから読み出されてI3Cスレーブ13からI3Cマスタ12へ転送された2バイトのデータを取得し、ステップS51において、転送残量を2バイト繰り下げて更新する。
 一方、ステップS49において、CCIレイヤ処理部42が、転送残量が1バイトであると判定した場合、処理はステップS52に進む。ステップS52において、CCIレイヤ処理部42では、I3Cスレーブ13からI3Cマスタ12へ転送されたデータの2バイトのうち、1バイトのダミーデータが無効データ処理部54により破棄され、レジスタから読み出された1バイトのデータが取得される。その後、I3Cマスタ12は、ステップS53において、転送残量を1バイト繰り下げて更新する。
 一方、ステップS49において、CCIレイヤ処理部42が、転送残量が0バイトであると判定した場合、処理はステップS54に進む。即ち、この場合、I3Cスレーブ13から転送されてくるデータはない(0バイト)ことより、CCIプロトコル違反であるため、CCIレイヤ処理部42は、I3Cスレーブ13からI3Cマスタ12へ転送された2バイトとも破棄する。
 ステップS51、ステップS53、またはステップS54の処理後、処理はステップS55に進み、I3Cマスタ12は、I3Cスレーブ13から送信されてくる信号のプリアンブルに基づく判定を行う。
 ステップS55において、I3Cマスタ12が、プリアンブルに基づいて、I3Cスレーブ13からデータが送信されてくると判定した場合、処理はステップS47に戻り、以下、同様の処理が繰り返して行われる。
 一方、ステップS55において、I3Cマスタ12が、プリアンブルに基づいて、CRCワードが送信されてくると判定した場合、処理はステップS56に進み、データ受信部22はCRCワードを受信する。例えば、I3Cスレーブ13は、データ転送が要求された全てのデータを送信した場合、または、最大リード長のデータを送信した場合、CRCワードを送信する。
 ステップS57において、I3Cマスタ12は、ステップS56でデータ受信部22が受信したCRCワードにエラーが発生しているか否かを判定する。
 ステップS57において、I3Cマスタ12が、CRCワードにエラーが発生していないと判定した場合、処理はステップS58に進み、データ信号線14-1に対する駆動を再開する。
 ステップS59において、I3Cマスタ12は、例えば、ステップS51またはS53で転送残量が更新された後、現在の転送残量が0となったか否かを判定する。例えば、転送長情報により示されるデータ長のデータ、即ち、データ転送が要求された全てのデータが送信された場合には、現在の転送残量は0となっている。これに対し、例えば、転送長情報により示されるデータ長が最大リード長より長いことより、データを分割して転送する場合には、データ転送が要求された全てのデータが送信されていなくても、CRCワードが送信される場合があり、この場合には、現在の転送残量は0となっていない。
 ステップS59において、I3Cマスタ12が、現在の転送残量が0となっていないと判定した場合、処理はステップS43に戻り、HDRリスタートコマンドの送信から処理が継続して行われる。
 一方、ステップS46において、I3Cマスタ12が、プリアンブルに基づいて、例えば、I3Cスレーブ13が正常にデータやコマンドなどを受信することができなかったことを示すNACK応答が送信されてきたと判定した場合、または、フレーミングエラー(Framing Error)が発生したことを検出した場合、処理はステップS60に進む。同様に、I3Cマスタ12が、ステップS48においてパリティエラーが発生していると判定した場合、ステップS55においてフレーミングエラーであることを検出した場合、ステップS57においてCRCワードにエラーが発生していると判定した場合、処理はステップS60に進む。
 ステップS60において、I3Cマスタ12は、I3Cスレーブ13に対してシリアルクロックを19回送信する。
 そして、ステップS61において、I3Cマスタ12は、CCIレイヤ処理部42に対してエラーを通知し、ステップS62において、CCIレイヤ処理部42は、上位層であるCPU43に対してエラーを通知する。
 ステップS62の処理後、または、ステップS59において現在の転送残量が0となったと判定された場合、DDRリード転送処理は終了され、処理は図10のステップS36に進む。
 図12は、図11のステップS42において行われるHDRライト転送処理を説明するフローチャートである。
 ステップS71において、コマンド送信部23がライトコマンドをI3Cスレーブ13送信し、ステップS72において、データ送信部21がインデックスをI3Cスレーブ13に送信する。
 ステップS73において、データ送信部21が、図9のステップS22で受信したデータ転送の要求に従った転送長情報を、I3Cスレーブ13に送信する。ステップS74において、データ送信部21が、CRCワードを送信した後、HDRライト転送処理は終了され、処理は図11のステップS43に進む。
 図13は、図10のステップS35において行われるDDRライト転送処理について説明するフローチャートである。
 ステップS81において、システムコントローラ41のCCIレイヤ処理部42は、図10のステップS32で設定されている転送残量のデータ長が、1回の転送で送信可能なデータ長より長いか否かを判定する。ここで、1回の転送で送信可能なデータ長は、書き込み先となるI3Cスレーブ13の最大ライト長から、データの書き込みを開始する先頭のアドレスを通知するインデックと、転送するデータのデータ長とを減算した値(=MWL-Index-Length)である。
 ステップS81において、CCIレイヤ処理部42が、転送残量のデータ長が、1回の転送で送信可能なデータ長より長いと判定した場合、処理はステップS82に進む。ステップS82において、CCIレイヤ処理部42は、転送長情報に、1回の転送で送信可能なデータ長を設定して転送長情報保持部52に保持させ、処理はステップS84に進む。
 一方、ステップS81において、CCIレイヤ処理部42が、転送残量のデータ長が、1回の転送で送信可能なデータ長より長くない(短い)と判定した場合、処理はステップS83に進む。ステップS83において、CCIレイヤ処理部42は、転送長情報に、転送残量を設定して転送長情報保持部52に保持させ、処理はステップS84に進む。
 ステップS84において、コマンド送信部23は、ライトコマンドをI3Cスレーブ13に送信し、ステップS85において、データ送信部21はインデックスをI3Cスレーブ13に送信する。その後、ステップS86において、転送長情報送信部55は、転送長情報保持部52に保持されている転送長情報を、データ送信部21によりI3Cスレーブ13に送信させる。
 ステップS87において、CCIレイヤ処理部42は、現時点で転送長情報保持部52に保持されている転送長情報を、レジスタに書き込みを行う残りのデータのデータ長として設定する。
 ステップS88において、CCIレイヤ処理部42は、現在の残りのデータ長が、2バイト以上、1バイト、および0バイトのいずれであるかを判定する。
 ステップS88において、CCIレイヤ処理部42が、現在の残りのデータ長が、2バイト以上であると判定した場合、処理はステップS89に進む。ステップS89において、CCIレイヤ処理部42は、I3Cマスタ12からI3Cスレーブ13へ転送してレジスタに書き込む2バイトのデータをI3Cマスタ12に供給し、ステップS90において、残りのデータ長を2バイト繰り下げて更新する。
 一方、ステップS88において、CCIレイヤ処理部42が、現在の残りのデータ長が、1バイトであると判定した場合、処理はステップS91に進む。ステップS91において、CCIレイヤ処理部42では、I3Cマスタ12からI3Cスレーブ13へ転送してレジスタに書き込む1バイトのデータがI3Cマスタ12に供給されるとともに、無効データ処理部54により1バイトのダミーデータが付加される。そして、CCIレイヤ処理部42は、ステップS92において、残りのデータ長を1バイト繰り下げて更新する。
 ステップS90またはS92の処理後、処理はステップS93に進み、I3Cマスタ12は、ステップS89またはS91においてCCIレイヤ処理部42から供給されたデータをデータ送信部21によりI3Cスレーブ13に送信し、処理はステップS88に戻る。
 一方、ステップS88において、CCIレイヤ処理部42が、現在の残りのデータ長が、0バイトであると判定した場合、処理はステップS94に進む。即ち、この場合、図9のステップS22で受信したデータ転送の要求に従った全てのデータの転送が完了しており、ステップS94において、I3Cマスタ12は、CRCワードを送信する。
 ステップS95において、CCIレイヤ処理部42は、現在の転送残量から転送長情報を減算して転送残量(=転送残量-Length)を更新する。
 ステップS96において、CCIレイヤ処理部42は、更新された転送残量が0となったか否かを判定する。
 ステップS96において、CCIレイヤ処理部42が、更新された転送残量が0となっていないと判定した場合、処理はステップS97に進む。ステップS97において、I3Cマスタ12は、HDRモードによる通信のリスタートを指示するコマンドを送信した後、処理はステップS81に戻り、以下、同様の処理が繰り返される。
 一方、ステップS96において、CCIレイヤ処理部42が、更新された転送残量が0となったと判定した場合、DDRライト転送処理は終了し、処理は図10のステップS36に進む。
 図10乃至図13を参照して説明したように、システムコントローラ41は、DDRモードによるレジスタR/W転送処理を行うことができる。
 次に、図14乃至図17を参照して、TSL/TSPモードによるレジスタR/W転送処理(図9のステップS25)について説明する。
 図14は、TSL/TSPモードによるレジスタR/W転送処理を説明するフローチャートである。
 ステップS101において、I3Cマスタ12は、バスIF11に接続されている全てのI3Cスレーブ13に対して、HDRモードによる通信を開始して、TSL/TSPモードで通信を行うHDR開始コマンド(ENTHDR1/2)を送信する。
 ステップS102において、CCIレイヤ処理部42は、図9のステップS22で上位層であるCPU43からデータ転送が要求されたデータのデータ長を、被制御デバイス61との間で転送されるデータの残り示す転送残量に設定する。
 ステップS103において、CCIレイヤ処理部42は、CPU43により要求されたデータの転送方向が、リード転送およびライト転送のどちらであるかを判定する。
 ステップS103において、CCIレイヤ処理部42が、データの転送方向がリード転送であると判定した場合、処理はステップS104に進み、図15を参照して後述するようにTSL/TSPリード転送処理が行われる。
 一方、ステップS103において、CCIレイヤ処理部42が、データの転送方向がライト転送であると判定した場合、処理はステップS105に進み、図17を参照して後述するようにTSL/TSPライト転送処理が行われる。
 ステップS104のTSL/TSPリード転送処理の処理後、または、ステップS105のTSL/TSPライト転送処理の処理後、処理はステップS106に進む。そして、ステップS106乃至S108において、図10のステップS36乃至S38と同様の処理が行われた後、TSL/TSPモードによるレジスタR/W転送処理は終了され、処理は図9のステップS22に戻る。
 図15は、図14のステップS104において行われるTSL/TSPリード転送処理を説明するフローチャートである。
 ステップS111乃至S114において、図11のステップS41乃至S44と同様の処理が行われる。そして、ステップS115において、I3Cマスタ12は、データ信号線14-1およびクロック信号線14-2に対する駆動を停止する。なお、TSL/TSPモードでは、ターンアラウンド(Turnaround)の手順が、DDRモードとは異なっている。
 ステップS116において、I3Cマスタ12は、I3Cスレーブ13から送信されてくるデータを受信したか否かを判定する。なお、TSL/TSPモードでは、DDRモードと異なり、プリアンブルの送信は行われない。
 ステップS116において、I3Cスレーブ13から送信されてくるデータを受信したと判定された場合、処理はステップS117に進み、データ受信部22は、I3Cスレーブ13から送信されてくるデータおよびパリティを受信する。
 ステップS118において、I3Cマスタ12は、ステップS117でデータ受信部22が受信したデータにエラーが含まれているか否かを判定し、エラーが含まれていないと判定した場合、処理はステップS119に進む。
 ステップS119乃至S124において、CCIレイヤ処理部42は、図11のステップS49乃至S54と同様の処理を行う。
 ステップS125において、I3Cマスタ12は、I3Cスレーブ13から送信されてくるデータを受信したか否かを判定し、データを受信したと判定した場合、処理はステップS117に戻って、以下、同様の処理が繰り返して行われる。
 一方、ステップS125において、データを受信していないと判定された場合、処理はステップS126に進み、I3Cマスタ12は、データ信号線14-1およびクロック信号線14-2に対する駆動を再開する。なお、TSL/TSPモードでは、CRCワードの送信は行われないとともに、ターンアラウンドの手順がDDRモードとは異なる。
 一方、ステップS118において、I3Cマスタ12が、ステップS117でデータ受信部22が受信したデータにエラーが含まれていると判定した場合、処理はステップS128に進む。なお、TSL/TSPモードでは、エラー検出条件がDDRモードと異なっており、例えば、パリティエラーを検出した場合、または、データワードの境界以外でシンボル2×2以上を受信した場合、データにエラーが含まれていると判定される。
 ステップS128において、I3Cマスタ12は、信号の変化が停止するのを待機し、信号の変化が停止すると、処理はステップS129に進む。即ち、TSL/TSPモードでは、エラーリカバリの手順がDDRモードとは異なる。
 また、ステップS116において、I3Cスレーブ13から送信されてくるデータを受信していないと判定された場合、例えば、NACK応答(シンボル2×3回)を受信した場合、処理はステップS129に進む。
 ステップS129において、I3Cマスタ12は、CCIレイヤ処理部42に対してエラーを通知し、ステップS130において、CCIレイヤ処理部42は、上位層であるCPU43に対してエラーを通知する。
 ステップS130の処理後、または、ステップS127において現在の転送残量が0となったと判定された場合、TSL/TSPリード転送処理は終了され、処理は図14のステップS106に進む。
 図16は、図15のステップS112において行われるHDRライト転送処理を説明するフローチャートである。
 ステップS141乃至S143において、図12のステップS71乃至73と同様の処理が行われ、ライトコマンド、インデックス、および転送長情報が送信されてHDRライト転送処理が終了した後、処理は図15のステップS113に進む。即ち、図16に示すTSL/TSPリード転送処理におけるHDRライト転送処理は、CRCワードを送信しない点で、図12を参照して上述したDDRリード転送処理におけるHDRライト転送処理と異なっている。
 図17は、図14のステップS105において行われるTSL/TSPライト転送処理について説明するフローチャートである。
 ステップS151乃至ステップS163において、図13のステップS81乃至ステップS93と同様の処理が行われる。そして、ステップS158において、現在の残りのデータ長が0バイトであると判定された場合、即ち、図9のステップS22で受信したデータ転送の要求に従った全てのデータの転送が完了すると、処理はステップS164に進む。
 ステップS164乃至S166において、図13のステップS95乃至S97と同様の処理が行われた後、TSL/TSPライト転送処理は終了され、処理は図14のステップS106に進む。即ち、図17に示すTSL/TSPライト転送処理は、CRCワードを送信しない点で、図13を参照して上述したDDRライト転送処理と異なっている。
 図14乃至図17を参照して説明したように、システムコントローラ41は、TSL/TSPモードによるレジスタR/W転送処理を行うことができる。
 <被制御デバイスのデータ転送処理>
 図18乃至図25を参照して、被制御デバイス61において実行されるデータ転送処理について説明する。
 図18は、システムコントローラ41が、図10を参照して上述したDDRモードによるレジスタR/W転送処理を実行するのに応じて被制御デバイス61において行われるデータ転送処理を説明するフローチャートである。
 例えば、I3Cスレーブ13が、I3Cマスタ12から送信されてくる、DDRモードで通信を行うHDR開始コマンド(ENTHDR0)を受信すると処理が開始される。そして、ステップS171において、I3Cスレーブ13は、I3Cマスタ12がHDR開始コマンドに続けて送信してくる信号のプリアンブルに基づく判定を行う。ステップS171において、I3Cスレーブ13が、プリアンブルに基づいて、I3Cマスタ12からコマンドが送信されてくると判定した場合、処理はステップS172に進む。
 ステップS172において、I3Cスレーブ13では、コマンド解釈部33が、I3Cマスタ12から送信されてくるコマンドおよびパリティを受信する。
 ステップS173において、コマンド解釈部33は、ステップS172で受信したパリティを用いて、ステップS172で受信したコマンドにエラーが発生しているか否かを判定する。そして、コマンド解釈部33が、パリティエラーが発生していないと判定した場合、処理はステップS174に進む。
 ステップS174において、コマンド解釈部33は、ステップS172で受信したコマンドのコマンドコードが、リードコマンドおよびライトコマンドのどちらであるかを判定する。
 ステップS174において、コマンド解釈部33が、コマンドコードがリードコマンドであると判定した場合、処理はステップS175に進み、図19を参照して後述するようにDDRリード転送処理が行われる。
 一方、ステップS174において、コマンド解釈部33が、コマンドコードがライトコマンドであると判定した場合、処理はステップS176に進み、図20を参照して後述するようにDDRライト転送処理が行われる。
 ステップS175のDDRリード転送処理、または、ステップS176のDDRライト転送処理の処理後、処理はステップS179に進む。
 一方、ステップS171において、プリアンブルに基づいて、フレーミングエラーが発生したことが検出された場合、または、ステップS173において、パリティエラーが発生していると判定された場合、処理はステップS177に進む。
 ステップS177において、I3Cスレーブ13は、CCIレイヤ処理部62に対してエラーを通知し、ステップS178において、CCIレイヤ処理部62は、転送残量を0に設定した後、処理はステップS179に進む。
 ステップS179において、I3Cスレーブ13は、コマンド解釈部33がHDRモードによる通信のリスタートを指示するコマンドと、HDRモードによる通信の終了を指示するコマンドとの、どちらを受信したか否かを判定する。
 ステップS179において、コマンド解釈部33が、HDRモードによる通信のリスタートを指示するコマンドを受信したと判定した場合、処理はステップS171に戻り、以下、同様の処理が繰り返して行われる。
 一方、ステップS179において、コマンド解釈部33が、HDRモードによる通信の終了を指示するコマンドを受信したと判定した場合、被制御デバイス61におけるデータ転送処理は終了される。
 図19は、図18のステップS175において行われるDDRリード転送処理を説明するフローチャートである。
 ステップS181において、CCIレイヤ処理部62は、現在の転送残量が、0バイトより大きくかつ最大リード長未満、最大リード長以上、および0バイトのいずれであるかを判定する。
 ステップS181において、CCIレイヤ処理部62が、現在の転送残量は0バイトより大きくかつ最大リード長未満であると判定した場合、処理はステップS182に進む。ステップS182において、CCIレイヤ処理部62は、現在のリードコマンドに応じて送信するデータの送信残量に、現在の転送残量を設定する。
 一方、ステップS181において、CCIレイヤ処理部62が、現在の転送残量は最大リード長以上であると判定した場合、処理はステップS183に進む。ステップS183において、CCIレイヤ処理部62は、現在のリードコマンドに応じて送信するデータの送信残量に、最大リード長を設定する。
 ステップS182またはS183の処理後、処理はステップS184に進み、I3Cスレーブ13は、データ信号線14-1に対する駆動を開始する。
 ステップS185において、CCIレイヤ処理部62は、現在のリードコマンドに応じて送信する送信残量が、2バイト以上、1バイト、および0バイトのいずれであるかを判定する。
 ステップS185において、CCIレイヤ処理部62が、現在のリードコマンドに応じて送信するデータの送信残量が、2バイト以上であると判定した場合、処理はステップS186に進む。
 ステップS186において、CCIレイヤ処理部62は、レジスタから2バイトのデータを読み出す。そして、CCIレイヤ処理部62は、ステップS187において、ステップS186で読み出した2バイトのデータをI3Cスレーブ13に供給する。ステップS188において、CCIレイヤ処理部62は、インデックスを2バイト繰り上げ、現在のコマンドに応じて送信するデータの送信残量を2バイト繰り下げ、転送残量を2バイト繰り下げる更新を行う。
 一方、ステップS185において、CCIレイヤ処理部62が、現在のリードコマンドに応じて送信するデータの送信残量が、1バイトであると判定した場合、処理はステップS189に進む。
 ステップS189において、CCIレイヤ処理部62は、レジスタから1バイトのデータを読み出す。そして、CCIレイヤ処理部62は、ステップS190において、ステップS189で読み出した1バイトのデータに1バイトのダミーデータを付加してI3Cスレーブ13に供給する。ステップS191において、CCIレイヤ処理部62は、インデックスを1バイト繰り上げ、現在のコマンドに応じて送信するデータの送信残量を1バイト繰り下げ、転送残量を1バイト繰り下げる更新を行う。
 ステップS188またはS191の処理後、処理はステップS192に進み、I3Cスレーブ13は、ステップS187またはS190においてCCIレイヤ処理部62から供給されたデータを、データ送信部31によりI3Cマスタ12に送信する。
 ステップS193において、I3Cスレーブ13は、I3Cマスタ12により通信を途中で遮断することを指示するマスタアボートが行われたか否かを判定する。
 ステップS193において、I3Cスレーブ13が、マスタアボートが行われていないと判定した場合、処理はステップS185に戻り、以下、同様の処理が繰り返される。一方、ステップS193において、I3Cスレーブ13が、マスタアボートが行われたと判定した場合、処理はステップS195に進む。
 一方、ステップS185において、CCIレイヤ処理部62が、現在のリードコマンドに応じて送信する送信残量が、0バイトであると判定した場合、処理はステップS194に進む。ステップS194において、I3Cスレーブ13は、CRCワードを送信して、処理はステップS195に進む。
 ステップS195において、I3Cスレーブ13は、データ信号線14-1に対する駆動を停止する。
 一方、ステップS181において、現在の転送残量が0バイトであると判定された場合、処理はステップS196に進む。即ち、この場合、CCIプロトコル違反であるため、ステップS196において、I3Cスレーブ13はNACKをI3Cマスタ12に送信する。
 ステップS195またはS196の処理後、DDRリード転送処理は終了され、処理は図18のステップS179に進む。
 図20は、図18のステップS176において行われるDDRライト転送処理を説明するフローチャートである。
 ステップS201において、I3Cスレーブ13は、I3Cマスタ12から送信されてくる信号のプリアンブルに基づく判定を行う。
 ステップS201において、I3Cスレーブ13が、プリアンブルに基づいて、I3Cマスタ12からデータが送信されてくると判定した場合、処理はステップS202に進む。
 ステップS202において、I3Cスレーブ13では、データ受信部32が、I3Cマスタ12から送信されてくるデータおよびパリティを受信する。
 ステップS203において、I3Cスレーブ13は、ステップS202で受信したパリティを用いて、ステップS202で受信したデータにエラーが発生しているか否かを判定する。そして、I3Cスレーブ13が、パリティエラーが発生していないと判定した場合、処理はステップS204に進む。
 ステップS204において、CCIレイヤ処理部62は、ステップS202でデータ受信部32が受信したデータ、即ち、I3Cマスタ12が送信したインデックスを取得する。
 ステップS205において、I3Cスレーブ13は、I3Cマスタ12から送信されてくる信号のプリアンブルに基づいて、データが送信されてくるのか、CRCワードが送信されてくるのか、エラーが発生しているのかいずれであるかを判定する。
 ステップS205において、I3Cスレーブ13が、データが送信されてくると判定した場合、処理はステップS206に進む。
 ステップS206において、I3Cスレーブ13では、データ受信部32が、I3Cマスタ12から送信されてくるデータおよびパリティを受信する。
 ステップS207において、I3Cスレーブ13は、ステップS206で受信したパリティを用いて、ステップS206で受信したデータにエラーが発生しているか否かを判定する。そして、I3Cスレーブ13が、パリティエラーが発生していないと判定した場合、処理はステップS208に進む。
 ステップS208において、CCIレイヤ処理部62は、ステップS206でデータ受信部32が受信したデータ、即ち、I3Cマスタ12が送信した転送長情報を、転送残量として取得する。
 ステップS209において、I3Cスレーブ13は、I3Cマスタ12から送信されてくる信号のプリアンブルに基づいて、データが送信されてくるのか、CRCワードが送信されてくるのか、エラーが発生しているのかいずれであるかを判定する。
 ステップS209において、I3Cスレーブ13が、データが送信されてくると判定した場合、処理はステップS210に進んでライト処理(図21)が行われる。
 一方、ステップS209において、I3Cスレーブ13が、CRCワードが送信されてくると判定した場合、処理はステップS211に進み、データ受信部32はCRCワードを受信する。
 ステップS212において、I3Cスレーブ13は、ステップS211でデータ受信部32が受信したCRCワードにエラーが発生しているか否かを判定する。ステップS212において、CRCワードにエラーが発生していないと判定された場合、処理はステップS213に進み、I3Cスレーブ13は、ランダムリードであると判断する。
 一方、ステップS205において、I3Cスレーブ13が、CRCワードが送信されてくると判定した場合、処理はステップS214に進み、データ受信部32はCRCワードを受信する。
 ステップS215において、I3Cスレーブ13は、ステップS214でデータ受信部32が受信したCRCワードにエラーが発生しているか否かを判定する。ステップS215において、I3Cスレーブ13が、CRCワードにエラーが発生していないと判定した場合、処理はステップS216に進む。即ち、この場合、CCIプロトコル違反であるため、ステップS216において、CCIレイヤ処理部62は、転送残量を0に設定する。
 一方、ステップS201、ステップS205、またはステップS209において、プリアンブルに基づいてフレーミングエラーが発生したことが検出された場合、処理はステップS217に進む。同様に、ステップS203およびS207において、パリティエラーが発生していると判定された場合、処理はステップS217に進む。さらに、ステップS212またはS215において、CRCエラーが発生していると判定された場合、処理はステップS217に進む。
 ステップS217において、I3Cスレーブ13は、CCIレイヤ処理部62に対してエラーを通知し、ステップS218において、CCIレイヤ処理部62は、転送残量を0に設定する。
 そして、ステップS210、ステップS213、ステップS216、またはステップS218の処理後、DDRライト転送処理は終了され、処理は図18のステップS179に進む。
 図21は、図20のステップS210において行われるライト処理を説明するフローチャートである。
 ステップS221において、I3Cスレーブ13では、データ受信部32が、I3Cマスタ12から送信されてくるデータおよびパリティを受信する。
 ステップS222において、I3Cスレーブ13は、ステップS221で受信したパリティを用いて、ステップS221で受信したデータにエラーが発生しているか否かを判定する。そして、I3Cスレーブ13が、パリティエラーが発生していないと判定した場合、処理はステップS223に進み、CCIレイヤ処理部62は、正常にデータを受信することができたことより、ライト転送を開始すると判断する。
 ステップS224において、CCIレイヤ処理部62は、転送残量が、2バイト以上、1バイト、および0バイトのいずれであるかを判定する。
 ステップS224において、転送残量が2バイト以上であると判定された場合、処理はステップS225に進み、CCIレイヤ処理部62は、I3Cスレーブ13が受信した2バイトのデータを、レジスタに書き込むデータとして取得する。そして、CCIレイヤ処理部62は、ステップS226において、その2バイトのデータのレジスタ書き込み処理を行い、ステップS227において、インデックスを2バイト繰り上げ、転送残量を2バイト繰り下げる更新を行う。
 一方、ステップS224において、転送残量が1バイトであると判定された場合、処理はステップS228に進む。ステップS228において、CCIレイヤ処理部62では、I3Cスレーブ13が受信した2バイトのデータのうち、ダミーデータの1バイトが無効データ処理部74により破棄され、残りの1バイトがレジスタに書き込むデータとして取得される。そして、CCIレイヤ処理部62は、ステップS229において、その1バイトのデータのレジスタ書き込み処理を行い、ステップS230において、インデックスを1バイト繰り上げ、転送残量を1バイト繰り下げる更新を行う。
 一方、ステップS224において、転送残量が0バイトであると判定された場合、処理はステップS231に進む。即ち、この場合、CCIプロトコル違反であるため、ステップS231において、CCIレイヤ処理部62は、I3Cスレーブ13が受信したデータを2バイトとも破棄する。
 ステップS227、ステップS230、またはステップS231の処理後、処理はステップS232に進む。ステップS232において、I3Cスレーブ13は、I3Cマスタ12から送信されてくる信号のプリアンブルに基づいて、データが送信されてくるのか、CRCワードが送信されてくるのか、エラーが発生しているのかいずれであるかを判定する。
 ステップS232において、I3Cスレーブ13が、データが送信されてくると判定した場合、処理はステップS221に戻り、以下、同様の処理が繰り返される。
 一方、ステップS232において、I3Cスレーブ13が、CRCワードが送信されてくると判定した場合、処理はステップS233に進み、データ受信部32はCRCワードを受信する。
 ステップS234において、I3Cスレーブ13は、ステップS233でデータ受信部32が受信したCRCワードにエラーが発生しているか否かを判定する。ステップS234において、CRCワードにエラーが発生していないと判定された場合、処理はステップS235に進む。即ち、この場合、正常にCRCワードを受信することができたことより、CCIレイヤ処理部62は、ステップS235において、ライト転送を終了すると判断し、ステップS236において、転送残量を0に設定する。
 一方、ステップS222において、パリティエラーが発生したと判定された場合、ステップS232において、プリアンブルに基づいてフレーミングエラーが発生したと判定された場合、または、ステップS234において、CRCエラーが発生していると判定された場合、処理はステップS237に進む。
 ステップS237において、I3Cスレーブ13は、CCIレイヤ処理部62に対してエラーを通知し、ステップS238において、CCIレイヤ処理部62は、転送残量を0に設定する。
 そして、ステップS236またはS238の処理後、ライト処理は終了され、処理は図18のステップS179に進む。
 図18乃至図21を参照して説明したように、被制御デバイス61は、DDRモードによるレジスタR/W転送処理を行うことができる。
 図22は、システムコントローラ41が、図14を参照して上述したTSL/TSPモードによるレジスタR/W転送処理を実行するのに応じて被制御デバイス61において行われるデータ転送処理を説明するフローチャートである。
 例えば、I3Cスレーブ13が、I3Cマスタ12から送信されてくる、DDRモードで通信を行うHDR開始コマンド(ENTHDR1/2)を受信すると処理が開始される。そして、ステップS241において、I3Cスレーブ13では、コマンド解釈部33が、I3Cマスタ12から送信されてくるコマンドおよびパリティを受信する。なお、TSL/TSPモードでは、DDRモードと異なり、プリアンブルの送信は行われない。
 ステップS242において、コマンド解釈部33は、ステップS172で受信したコマンドにエラーが発生しているか否かを判定する。なお、TSL/TSPモードでは、エラー検出条件がDDRモードと異なっており、例えば、パリティエラーを検出した場合、または、データワードの境界以外でシンボル2×2以上を受信した場合、コマンドにエラーが発生していると判定される。
 ステップS242において、コマンド解釈部33が、エラーが発生していないと判定した場合、処理はステップS243に進む。
 ステップS243において、コマンド解釈部33は、ステップS242で受信したコマンドのコマンドコードが、リードコマンドおよびライトコマンドのどちらであるかを判定する。
 ステップS243において、コマンド解釈部33が、コマンドコードがリードコマンドであると判定した場合、処理はステップS244に進み、図23を参照して後述するようにTSL/TSPリード転送処理が行われる。
 一方、ステップS243において、コマンド解釈部33が、コマンドコードがライトコマンドであると判定した場合、処理はステップS245に進み、図24を参照して後述するようにTSL/TSPライト転送処理が行われる。
 ステップS244のTSL/TSPリード転送処理、または、ステップS245のTSL/TSPライト転送処理の処理後、処理はステップS248に進む。
 一方、ステップS242において、コマンド解釈部33が、エラーが発生していると判定した場合、処理はステップS246に進む。そして、ステップS246乃至S248において、図18のステップS177乃至S179と同様の処理が行われる。
 図23は、図22のステップS244において行われるTSL/TSPリード転送処理を説明するフローチャートである。
 ステップS251乃至S253において、図19のステップS181乃至S183と同様の処理が行われる。そして、ステップS252またはS253の処理後、ステップS254において、I3Cスレーブ13は、データ信号線14-1およびクロック信号線14-2に対する駆動を開始する。
 その後、ステップS255乃至S262において、図19のステップS185乃至S192と同様の処理が行われ、ステップS255で現在のリードコマンドに応じて送信するデータの送信残量が0バイトであると判定されるまで、処理が繰り返して行われる。なお、TSL/TSPモードでは、DDRモードと異なり、マスタアボートは行われない。
 ステップS255において、送信残量が0バイトであると判定されると、処理はステップS263に進み、I3Cスレーブ13は、転送終了を示す信号(シンボル2×3回)を送信する。なお、TSL/TSPモードでは、DDRモードと異なり、CRCワードの送信は行われない。
 一方、ステップS251において、現在の転送残量が0バイトであると判定された場合、処理はステップS264に進む。即ち、この場合、CCIプロトコル違反であるため、I3Cスレーブ13は、ステップS264において、データ信号線14-1およびクロック信号線14-2に対する駆動を開始し、ステップS265において、NACK(シンボル2×3回)を送信する。なお、TSL/TSPモードでは、NACKの形式がDDRモードとは異なっている。
 ステップS263またはS265の処理後、処理はステップS266に進む。ステップS66において、I3Cスレーブ13は、データ信号線14-1およびクロック信号線14-2に対する駆動を停止した後、TSL/TSPリード転送処理は終了され、処理は図22のステップS248に進む。なお、TSL/TSPモードでは、ターンアラウンドの手順が、DDRモードとは異なっている。
 図24は、図22のステップS245において行われるTSL/TSPライト転送処理を説明するフローチャートである。
 ステップS271において、I3Cスレーブ13では、データ受信部32が、I3Cマスタ12から送信されてくるデータおよびパリティを受信する。なお、TSL/TSPモードでは、DDRモードと異なり、プリアンブルの送信は行われない。
 ステップS272において、I3Cスレーブ13は、ステップS271で受信したデータにエラーが発生しているか否かを判定する。なお、TSL/TSPモードでは、エラー検出条件がDDRモードと異なっており、例えば、パリティエラーを検出した場合、または、データワードの境界以外でシンボル2×2以上を受信した場合、データにエラーが発生していると判定される。
 ステップS272において、データにエラーが発生していないと判定された場合、処理はステップS273に進み、CCIレイヤ処理部62は、ステップS271でデータ受信部32が受信したデータ、即ち、I3Cマスタ12が送信したインデックスを取得する。
 ステップS274において、I3Cスレーブ13は、I3Cマスタ12から送信されてくるデータを受信したか否かを判定する。
 ステップS274において、I3Cマスタ12から送信されてくるデータを受信したと判定された場合、処理はステップS275に進み、データ受信部32は、I3Cマスタ12から送信されてくるデータおよびパリティを受信する。
 ステップS276において、I3Cスレーブ13は、ステップS272と同様に、ステップS275で受信したデータにエラーが発生しているか否かを判定し、エラーが発生していないと判定した場合、処理はステップS277に進む。
 ステップS277において、CCIレイヤ処理部62は、ステップS275でデータ受信部32が受信したデータ、即ち、I3Cマスタ12が送信した転送長情報を、転送残量として取得する。
 ステップS278において、I3Cスレーブ13は、I3Cマスタ12から送信されてくるデータを受信したか否かを判定する。なお、TSL/TSPモードでは、DDRモードと異なり、プリアンブルの送信は行われない。
 ステップS278において、I3Cスレーブ13が、データを受信したと判定した場合、処理はステップS279に進んでライト処理(図25)が行われる。
 一方、ステップS278において、データを受信していないと判定された場合、処理はステップS280に進み、I3Cスレーブ13は、ランダムリードであると判断する。
 一方、ステップS274において、I3Cマスタ12から送信されてくるデータを受信していないと判定された場合、処理はステップS281に進む。即ち、この場合、CCIプロトコル違反であるため、ステップS281において、CCIレイヤ処理部62は、転送残量を0に設定する。なお、TSL/TSPモードでは、DDRモードと異なり、CRCワードの送信は行われない。
 一方、ステップS272またはS276において、受信したデータにエラーが発生していると判定された場合、処理はステップS282に進む。ステップS282において、I3Cスレーブ13は、CCIレイヤ処理部62に対してエラーを通知し、ステップS283において、CCIレイヤ処理部62は、転送残量を0に設定する。
 そして、ステップS279、ステップS280、ステップS281、またはステップS283の処理後、TSL/TSPライト転送処理は終了され、処理は図22のステップS248に進む。
 図25は、図24のステップS279において行われるライト処理を説明するフローチャートである。
 ステップS291において、I3Cスレーブ13では、データ受信部32が、I3Cマスタ12から送信されてくるデータおよびパリティを受信する。
 ステップS292において、I3Cスレーブ13は、ステップS291で受信したデータにエラーが発生しているか否かを判定する。なお、TSL/TSPモードでは、エラー検出条件がDDRモードと異なっており、例えば、パリティエラーを検出した場合、または、データワードの境界以外でシンボル2×2以上を受信した場合、データにエラーが発生していると判定される。
 ステップS292において、I3Cスレーブ13が、データにエラーが発生していないと判定した場合、処理はステップS293に進み、CCIレイヤ処理部62は、正常にデータを受信することができたことより、ライト転送を開始すると判断する。
 ステップS294乃至S301において、図21のステップS224乃至S231と同様の処理が行われた後、ステップS302において、I3Cスレーブ13は、I3Cマスタ12から送信されてくるデータを受信したか否かを判定する。なお、TSL/TSPモードでは、DDRモードと異なり、プリアンブルの送信は行われない。
 ステップS302において、I3Cスレーブ13が、データを受信したと判定した場合、処理はステップS291に戻り、以下、同様の処理が繰り返して行われる。
 一方、ステップS302において、I3Cスレーブ13が、データを受信していないと判定した場合、処理はステップS303に進む。そして、CCIレイヤ処理部62は、データが送信されてこないことより、ステップS303において、ライト転送を終了すると判断し、ステップS304において、転送残量を0に設定する。
 一方、ステップS292において、I3Cスレーブ13が、データにエラーが発生していると判定した場合、処理はステップS305に進む。ステップS305において、I3Cスレーブ13は、CCIレイヤ処理部62に対してエラーを通知し、ステップS306において、CCIレイヤ処理部62は、転送残量を0に設定する。
 そして、ステップS304またはS306の処理後、ライト処理は終了され、処理は図22のステップS248に進む。
 図22乃至図25を参照して説明したように、被制御デバイス61は、TSL/TSPモードによるレジスタR/W転送処理を行うことができる。
 <I3CスレーブおよびCCIレイヤ処理部によるエラー対策>
 図26を参照して、I3CスレーブおよびCCIレイヤ処理部によるエラー対策について説明する。図26には、TSL/TSPモードによるリード転送処理において連続的にデータを読み出す際にエラーが発生したときの処理の一例が示されている。
 例えば、HDRモード(TSP/TSL/DDR)において、I3Cスレーブ13が何らかのエラーを検出したとき、I3Cスレーブ13は、HDR終了コマンド(HDR_Exit)またはHDRリスタートコマンド(HDR_Restart)を受信するまで、一切の通信を無視し、いずれか一方を検出すると、通信を復帰するように規定されている。
 ここで、図26に示すように、例えば、アドレス設定用のライトコマンド(TSL/TSP_Cmd(W))を受信してからリードコマンド(TSL/TSP_Cmd(R))の直前のHDRリスタートコマンドを受信するまでの間にエラーが発生した場合の処理について説明する。即ち、このタイミングでエラーが発生すると、I3Cスレーブ13は、エラーを検出してからHDRリスタートコマンドを受信するまでの間(無視区間)の処理を停止することになる。従って、この場合、インデックス(Index)および転送長情報(Length)は、CCIレイヤ処理部62に通知されないことになる。
 そして、その後、I3Cスレーブ13は、HDRリスタートコマンドを受信することにより通信を復帰し、HDRリスタートコマンドに続いて送信されるリードコマンドをCCIレイヤ処理部62に転送する。しかしながら、CCIレイヤ処理部62は、インデックスおよび転送長情報を把握していないため、どこからデータを読み出すべきかが分からない状態が発生してしまう。
 そこで、本実施の形態のI3Cスレーブ13は、エラーを検出した場合には、そのエラーの検出をCCIレイヤ処理部62に通知(例えば、図20のステップS217や図24のステップS282など)するように規定される。そして、このエラーの通知に応じて、CCIレイヤ処理部62は、転送残量を0に設定(例えば、図20のステップS218や図24のステップS283など)するように規定される。
 これにより、CCIレイヤ処理部62が、例えば、エラーの発生によってインデックスおよび転送長情報を認識できない場合にリードコマンドを受信しても、転送残量が0であると判定される結果、CCIプロトコル違反となる。従って、CCIレイヤ処理部62は、I3Cスレーブ13がエラーを検出した後、HDRリスタートコマンドおよびライトコマンドの組み合わせ(HDR_Restart+TSL/TSP_Cmd(W))を受信するまで、または、HDR終了コマンドを受信するまで、一切の通信を無視することができる。
 このように、CCIレイヤ処理部62が、どこからデータを読み出すべきか分からない状態が発生してしまうことを回避して、I3Cスレーブ13の規定と同様の動作を行うことができる。従って、I3Cスレーブ13とCCIレイヤ処理部62とのエラー対応にズレが発生することが回避され、確実にリード処理を実行することができる。
 従って、被制御デバイス61は、エラーの可能性のあるデータをレジスタに書き込むことや、エラーの可能性があるデータをレジスタから読み出すことを回避することができ、そのようなエラーによって通信が不安定になることもなく、より確実に通信を行うことができる。
 なお、上述のフローチャートを参照して説明した各処理は、必ずしもフローチャートとして記載された順序に沿って時系列に処理する必要はなく、並列的あるいは個別に実行される処理(例えば、並列処理あるいはオブジェクトによる処理)も含むものである。また、プログラムは、1のCPUにより処理されるものであっても良いし、複数のCPUによって分散処理されるものであっても良い。
 また、上述した一連の処理(通信方法)は、ハードウエアにより実行することもできるし、ソフトウエアにより実行することもできる。一連の処理をソフトウエアにより実行する場合には、そのソフトウエアを構成するプログラムが、専用のハードウエアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、プログラムが記録されたプログラム記録媒体からインストールされる。
 図27は、上述した一連の処理をプログラムにより実行するコンピュータのハードウエアの構成例を示すブロック図である。
 コンピュータにおいて、CPU(Central Processing Unit)101,ROM(Read Only Memory)102,RAM(Random Access Memory)103、およびEEPROM(Electronically Erasable and Programmable Read Only Memory)104は、バス105により相互に接続されている。バス105には、さらに、入出力インタフェース106が接続されており、入出力インタフェース106が外部に接続される。
 以上のように構成されるコンピュータでは、CPU101が、例えば、ROM102およびEEPROM104に記憶されているプログラムを、バス105を介してRAM103にロードして実行することにより、上述した一連の処理が行われる。また、コンピュータ(CPU101)が実行するプログラムは、ROM102に予め書き込んでおく他、入出力インタフェース106を介して外部からEEPROM104にインストールしたり、更新したりすることができる。
 <構成の組み合わせ例>
 なお、本技術は以下のような構成も取ることができる。
(1)
 バスを介して通信を行う通信装置であって、
 通信の主導権を有する第1の通信装置と、前記第1の通信装置による制御に従って通信を行う少なくとも1台以上の第2の通信装置とにより通信が行われ、
 前記第1の通信装置は、
  前記第2の通信装置が1回のデータ転送において転送可能な最大の転送長を示す最大転送長を、前記第2の通信装置から取得する取得部と、
  前記第2の通信装置とデータ転送を行う際に、1回のデータ転送において転送されるデータのデータ長が前記最大転送長以下となるようにデータの送受信を制御する送受信制御部と、
  前記データをデータ転送するのに先立って、転送されるデータのデータ長を示す転送長情報を送信する送信部と
 を備える通信装置。
(2)
 前記送受信制御部は、前記最大転送長以上の長さのデータ長のデータの転送が要求された場合、その転送が要求されたデータを前記最大転送長以下に分割してデータ転送を行い、
 前記送信部は、前記送受信制御部により分割されたデータのデータ長を示す前記転送長情報を送信する
 上記(1)に記載の通信装置。
(3)
 前記第2の通信装置に書き込むデータを転送するライト転送を行うとき、
 前記取得部は、前記第2の通信装置によるライト転送における前記最大転送長である最大ライト長を取得し、
 前記送受信制御部は、前記最大ライト長以上の長さのデータ長のデータの転送が要求された場合、その転送が要求されたデータを前記最大ライト長以下に分割して、複数回に分けてデータを送信するようにデータ転送を行い、
 前記送信部は、前記送受信制御部により分割されたデータのデータ長を示す前記転送長情報を、前記データの転送ごとに送信する
 上記(1)または(2)に記載の通信装置。
(4)
 前記第2の通信装置から読み出したデータを転送するリード転送を行うとき、
 前記取得部は、前記第2の通信装置によるリード転送における前記最大転送長である最大リード長を取得し、
 前記送受信制御部は、前記最大リード長以上の長さのデータ長のデータの転送が要求された場合、その転送が要求されたデータを前記最大リード長以下に分割して、複数回に分けてデータを送信するようにデータ転送を行い、
 前記送信部は、前記送受信制御部により分割されたデータのデータ長を示す前記転送長情報を、前記データの転送ごとに送信する
 上記(1)から(3)までのいずれかに記載の通信装置。
(5)
 前記第2の通信装置から読み出したデータを転送するリード転送を行うとき、
 前記取得部は、前記第2の通信装置によるリード転送における前記最大転送長である最大リード長を取得し、
 前記送受信制御部は、前記最大リード長以上の長さのデータ長のデータの転送が要求された場合、その転送が要求されたデータを前記最大リード長以下に分割して、複数回に分けてデータを送信するようにデータ転送を行い、
 前記送信部は、転送が要求されたデータ全体のデータ長を示す前記転送長情報を1回だけ送信する
 上記(1)から(3)までのいずれかに記載の通信装置。
(6)
 前記第2の通信装置は、
 少なくとも前記転送長情報を正常に受信することができないエラーの発生を検出した場合、そのエラーの発生を上位層で処理を行う処理部に通知するエラー通知部を備え、
 前記上位層では、通信のリスタートを指示するコマンドと前記データの書き込みを指示するコマンドとの組み合わせを受信するまで、または、通信の終了を指示するコマンドを受信するまで一切の通信を無視する
 上記(1)から(5)までのいずれかに記載の通信装置。
(7)
 バスを介して通信を行う通信方法であって、
 通信の主導権を有する第1の通信装置と、前記第1の通信装置による制御に従って通信を行う少なくとも1台以上の第2の通信装置とにより通信が行われ、
 前記第1の通信装置は、
  前記第2の通信装置が1回のデータ転送において転送可能な最大の転送長を示す最大転送長を、前記第2の通信装置から取得し、
  前記第2の通信装置とデータ転送を行う際に、1回のデータ転送において転送されるデータのデータ長が前記最大転送長以下となるようにデータの送受信を制御し、
  前記データをデータ転送するのに先立って、転送されるデータのデータ長を示す転送長情報を送信する
 ステップを含む通信方法。
(8)
 バスを介して通信を行う通信装置のコンピュータに実行させるプログラムであって、
 通信の主導権を有する第1の通信装置と、前記第1の通信装置による制御に従って通信を行う少なくとも1台以上の第2の通信装置とにより通信が行われ、
 前記第1の通信装置は、
  前記第2の通信装置が1回のデータ転送において転送可能な最大の転送長を示す最大転送長を、前記第2の通信装置から取得し、
  前記第2の通信装置とデータ転送を行う際に、1回のデータ転送において転送されるデータのデータ長が前記最大転送長以下となるようにデータの送受信を制御し、
  前記データをデータ転送するのに先立って、転送されるデータのデータ長を示す転送長情報を送信する
 ステップを含む通信処理をコンピュータに実行させるプログラム。
(9)
 バスを介した通信の主導権を有する第1の通信装置と、前記第1の通信装置による制御に従って通信を行う少なくとも1台以上の第2の通信装置とにより通信が行われる通信システムであって、
 前記第1の通信装置は、
  前記第2の通信装置が1回のデータ転送において転送可能な最大の転送長を示す最大転送長を、前記第2の通信装置から取得する取得部と、
  前記第2の通信装置とデータ転送を行う際に、1回のデータ転送において転送されるデータのデータ長が前記最大転送長以下となるようにデータの送受信を制御する送受信制御部と、
  前記データをデータ転送するのに先立って、転送されるデータのデータ長を示す転送長情報を送信する送信部と
 を備える通信システム。
 なお、本実施の形態は、上述した実施の形態に限定されるものではなく、本開示の要旨を逸脱しない範囲において種々の変更が可能である。
 11 バスIF, 12 I3Cマスタ, 13 I3Cスレーブ, 14-1 データ信号線, 14-2 クロック信号線, 21 データ送信部, 22 データ受信部, 23 コマンド送信部, 24 モード制御部, 25 送受信制御部, 31 データ送信部, 32 データ受信部, 33 コマンド解釈部, 34 モード制御部, 35 受信制御部, 41 システムコントローラ, 42 CCIレイヤ処理部, 43 CPU, 44 内部バス, 51 レジスタアドレス管理部, 52 転送長情報保持部, 53 ライト転送終了制御部, 54 無効データ処理部, 55 転送長情報送信部, 61 被制御デバイス, 62 CCIレイヤ処理部, 63 デバイス制御部, 64 内部バス, 71 レジスタアドレス管理部, 72 レジスタR/W制御部, 73 リード転送終了制御部, 74 無効データ処理部, 75 転送長情報保持部

Claims (9)

  1.  バスを介して通信を行う通信装置であって、
     通信の主導権を有する第1の通信装置と、前記第1の通信装置による制御に従って通信を行う少なくとも1台以上の第2の通信装置とにより通信が行われ、
     前記第1の通信装置は、
      前記第2の通信装置が1回のデータ転送において転送可能な最大の転送長を示す最大転送長を、前記第2の通信装置から取得する取得部と、
      前記第2の通信装置とデータ転送を行う際に、1回のデータ転送において転送されるデータのデータ長が前記最大転送長以下となるようにデータの送受信を制御する送受信制御部と、
      前記データをデータ転送するのに先立って、転送されるデータのデータ長を示す転送長情報を送信する送信部と
     を備える通信装置。
  2.  前記送受信制御部は、前記最大転送長以上の長さのデータ長のデータの転送が要求された場合、その転送が要求されたデータを前記最大転送長以下に分割してデータ転送を行い、
     前記送信部は、前記送受信制御部により分割されたデータのデータ長を示す前記転送長情報を送信する
     請求項1に記載の通信装置。
  3.  前記第2の通信装置に書き込むデータを転送するライト転送を行うとき、
     前記取得部は、前記第2の通信装置によるライト転送における前記最大転送長である最大ライト長を取得し、
     前記送受信制御部は、前記最大ライト長以上の長さのデータ長のデータの転送が要求された場合、その転送が要求されたデータを前記最大ライト長以下に分割して、複数回に分けてデータを送信するようにデータ転送を行い、
     前記送信部は、前記送受信制御部により分割されたデータのデータ長を示す前記転送長情報を、前記データの転送ごとに送信する
     請求項1に記載の通信装置。
  4.  前記第2の通信装置から読み出したデータを転送するリード転送を行うとき、
     前記取得部は、前記第2の通信装置によるリード転送における前記最大転送長である最大リード長を取得し、
     前記送受信制御部は、前記最大リード長以上の長さのデータ長のデータの転送が要求された場合、その転送が要求されたデータを前記最大リード長以下に分割して、複数回に分けてデータを送信するようにデータ転送を行い、
     前記送信部は、前記送受信制御部により分割されたデータのデータ長を示す前記転送長情報を、前記データの転送ごとに送信する
     請求項1に記載の通信装置。
  5.  前記第2の通信装置から読み出したデータを転送するリード転送を行うとき、
     前記取得部は、前記第2の通信装置によるリード転送における前記最大転送長である最大リード長を取得し、
     前記送受信制御部は、前記最大リード長以上の長さのデータ長のデータの転送が要求された場合、その転送が要求されたデータを前記最大リード長以下に分割して、複数回に分けてデータを送信するようにデータ転送を行い、
     前記送信部は、転送が要求されたデータ全体のデータ長を示す前記転送長情報を1回だけ送信する
     請求項1に記載の通信装置。
  6.  前記第2の通信装置は、
     少なくとも前記転送長情報を正常に受信することができないエラーの発生を検出した場合、そのエラーの発生を上位層で処理を行う処理部に通知するエラー通知部を備え、
     前記上位層では、通信のリスタートを指示するコマンドと前記データの書き込みを指示するコマンドとの組み合わせを受信するまで、または、通信の終了を指示するコマンドを受信するまで一切の通信を無視する
     請求項1に記載の通信装置。
  7.  バスを介して通信を行う通信方法であって、
     通信の主導権を有する第1の通信装置と、前記第1の通信装置による制御に従って通信を行う少なくとも1台以上の第2の通信装置とにより通信が行われ、
     前記第1の通信装置は、
      前記第2の通信装置が1回のデータ転送において転送可能な最大の転送長を示す最大転送長を、前記第2の通信装置から取得し、
      前記第2の通信装置とデータ転送を行う際に、1回のデータ転送において転送されるデータのデータ長が前記最大転送長以下となるようにデータの送受信を制御し、
      前記データをデータ転送するのに先立って、転送されるデータのデータ長を示す転送長情報を送信する
     ステップを含む通信方法。
  8.  バスを介して通信を行う通信装置のコンピュータに実行させるプログラムであって、
     通信の主導権を有する第1の通信装置と、前記第1の通信装置による制御に従って通信を行う少なくとも1台以上の第2の通信装置とにより通信が行われ、
     前記第1の通信装置は、
      前記第2の通信装置が1回のデータ転送において転送可能な最大の転送長を示す最大転送長を、前記第2の通信装置から取得し、
      前記第2の通信装置とデータ転送を行う際に、1回のデータ転送において転送されるデータのデータ長が前記最大転送長以下となるようにデータの送受信を制御し、
      前記データをデータ転送するのに先立って、転送されるデータのデータ長を示す転送長情報を送信する
     ステップを含む通信処理をコンピュータに実行させるプログラム。
  9.  バスを介した通信の主導権を有する第1の通信装置と、前記第1の通信装置による制御に従って通信を行う少なくとも1台以上の第2の通信装置とにより通信が行われる通信システムであって、
     前記第1の通信装置は、
      前記第2の通信装置が1回のデータ転送において転送可能な最大の転送長を示す最大転送長を、前記第2の通信装置から取得する取得部と、
      前記第2の通信装置とデータ転送を行う際に、1回のデータ転送において転送されるデータのデータ長が前記最大転送長以下となるようにデータの送受信を制御する送受信制御部と、
      前記データをデータ転送するのに先立って、転送されるデータのデータ長を示す転送長情報を送信する送信部と
     を備える通信システム。
PCT/JP2018/009153 2017-03-23 2018-03-09 通信装置、通信方法、プログラム、および、通信システム WO2018173796A1 (ja)

Priority Applications (7)

Application Number Priority Date Filing Date Title
JP2019507539A JP7123905B2 (ja) 2017-03-23 2018-03-09 通信装置、通信方法、プログラム、および、通信システム
KR1020197022284A KR102515186B1 (ko) 2017-03-23 2018-03-09 통신 장치, 통신 방법, 프로그램 및 통신 시스템
US16/491,035 US11010328B2 (en) 2017-03-23 2018-03-09 Communication apparatus, communication method, program, and communication system
CN201880018660.9A CN110447020B (zh) 2017-03-23 2018-03-09 通信装置、通信方法、程序和通信系统
EP18772411.7A EP3605348B1 (en) 2017-03-23 2018-03-09 Communication device, communication method, program, and communication system
SG11201906694SA SG11201906694SA (en) 2017-03-23 2018-03-09 Communication apparatus, communication method, program, and communication system
US17/313,539 US11714778B2 (en) 2017-03-23 2021-05-06 Communication apparatus, communication method, program, and communication system

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2017058247 2017-03-23
JP2017-058247 2017-03-23

Related Child Applications (2)

Application Number Title Priority Date Filing Date
US16/491,035 A-371-Of-International US11010328B2 (en) 2017-03-23 2018-03-09 Communication apparatus, communication method, program, and communication system
US17/313,539 Continuation US11714778B2 (en) 2017-03-23 2021-05-06 Communication apparatus, communication method, program, and communication system

Publications (1)

Publication Number Publication Date
WO2018173796A1 true WO2018173796A1 (ja) 2018-09-27

Family

ID=63585444

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2018/009153 WO2018173796A1 (ja) 2017-03-23 2018-03-09 通信装置、通信方法、プログラム、および、通信システム

Country Status (8)

Country Link
US (2) US11010328B2 (ja)
EP (1) EP3605348B1 (ja)
JP (1) JP7123905B2 (ja)
KR (1) KR102515186B1 (ja)
CN (1) CN110447020B (ja)
SG (1) SG11201906694SA (ja)
TW (1) TWI767997B (ja)
WO (1) WO2018173796A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021230117A1 (ja) * 2020-05-11 2021-11-18 ソニーセミコンダクタソリューションズ株式会社 通信装置及び通信システム

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI767997B (zh) * 2017-03-23 2022-06-21 日商索尼半導體解決方案公司 通信裝置、通信方法、程式及通信系統
US11030142B2 (en) * 2017-06-28 2021-06-08 Intel Corporation Method, apparatus and system for dynamic control of clock signaling on a bus
CN113031486B (zh) * 2021-03-18 2022-12-02 深圳市度信科技有限公司 基于fpga的i3c逻辑控制器实现方法、i3c读写测试装置和系统
CN117435518B (zh) * 2023-12-21 2024-03-22 沐曦集成电路(上海)有限公司 一种用于主从读写数据的保护方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015014951A (ja) * 2013-07-05 2015-01-22 株式会社日立製作所 データ転送システム、計算機システム及びプログラム
JP2015153279A (ja) * 2014-02-18 2015-08-24 三菱電機株式会社 プラント制御装置
JP2016018319A (ja) 2014-07-07 2016-02-01 富士通株式会社 バス制御装置、データ転送システム、及びバス制御方法

Family Cites Families (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS582496B2 (ja) * 1978-04-28 1983-01-17 日本電信電話株式会社 デ−タ転送方式
JPH01258525A (ja) 1988-04-08 1989-10-16 Hitachi Ltd データ転送方式
JPH0522345A (ja) * 1991-07-12 1993-01-29 Hitachi Ltd 最大転送単位の最適値管理決定方式
JPH07160628A (ja) * 1993-12-09 1995-06-23 Fujitsu Ltd データ並列転送システム
US7590133B2 (en) * 1998-02-24 2009-09-15 Canon Kabushiki Kaisha Data communication system, data communication method, and data communication apparatus
JP4046846B2 (ja) * 1998-04-28 2008-02-13 キヤノン株式会社 データ通信システム及びデータ通信装置
US6711178B1 (en) * 1998-09-08 2004-03-23 Cisco Technology, Inc. Enhanced claw packing protocol
JP3557998B2 (ja) * 2000-04-28 2004-08-25 日本電気株式会社 フラグメンテーション処理デバイスおよびこれを用いたフラグメンテーション処理装置
JP2002290459A (ja) * 2001-03-27 2002-10-04 Nec Corp パケット転送装置および方法
US7236501B1 (en) * 2002-03-22 2007-06-26 Juniper Networks, Inc. Systems and methods for handling packet fragmentation
US7382788B2 (en) * 2002-12-24 2008-06-03 Applied Micro Circuit Corporation Method and apparatus for implementing a data frame processing model
US8090801B1 (en) * 2003-10-07 2012-01-03 Oracle America, Inc. Methods and apparatus for performing remote access commands between nodes
US7359405B2 (en) * 2003-10-17 2008-04-15 Asix Electronics Corporation Ltd. Burst transfer mechanism of network packets having MAC frames over USB bus
TW200622810A (en) * 2004-12-29 2006-07-01 Pixart Imaging Inc Method for communicating a usb device with a host
US20080034147A1 (en) * 2006-08-01 2008-02-07 Robert Stubbs Method and system for transferring packets between devices connected to a PCI-Express bus
JP4356765B2 (ja) * 2007-04-20 2009-11-04 ソニー株式会社 情報処理装置および方法、並びにプログラム
JP5057833B2 (ja) * 2007-04-24 2012-10-24 株式会社日立製作所 転送システム、イニシエータデバイス及びデータ転送方法
US7653773B2 (en) * 2007-10-03 2010-01-26 International Business Machines Corporation Dynamically balancing bus bandwidth
US8400942B2 (en) * 2008-11-12 2013-03-19 Emulex Design & Manufacturing Corporation Large frame path MTU discovery and communication for FCoE devices
US20100262726A1 (en) * 2009-01-13 2010-10-14 Tauscher Brian E Method and apparatus for implementing a limited functionality embedded universal serial (USB) host controller on a fully functional downstream USB port
US8401111B2 (en) * 2009-03-13 2013-03-19 Qualcomm Incorporated Method and apparatus for sequencing and correlating a positioning reference signal
US8352600B2 (en) * 2009-04-21 2013-01-08 Alcatel Lucent System and method for determining a maximum packet data unit (PDU) payload transmission size for communicating in a managed computer network system
US9210622B2 (en) * 2009-08-12 2015-12-08 Qualcomm Incorporated Method and apparatus for relay backhaul design in a wireless communication system
US8402180B2 (en) * 2010-03-26 2013-03-19 Atmel Corporation Autonomous multi-packet transfer for universal serial bus
JP5533252B2 (ja) * 2010-05-21 2014-06-25 富士通株式会社 ディスクアレイ装置及びディスクアレイ装置の制御方法
JP2012133643A (ja) 2010-12-22 2012-07-12 Sony Corp 情報処理装置、情報処理システム、情報処理方法、およびプログラム
CN103124275B (zh) * 2011-11-18 2016-01-20 腾讯科技(深圳)有限公司 一种获取文件的方法和装置
JP5932571B2 (ja) 2012-08-28 2016-06-08 ルネサスエレクトロニクス株式会社 転送制御装置、転送制御方法及び転送制御プログラム
US9182996B2 (en) * 2013-03-12 2015-11-10 Midnight Mosaic Llc Methods and apparatus for USB tunneling through USB printer device class
US8989328B2 (en) * 2013-03-14 2015-03-24 Qualcomm Incorporated Systems and methods for serial communication
US9471521B2 (en) * 2013-05-15 2016-10-18 Stmicroelectronics S.R.L. Communication system for interfacing a plurality of transmission circuits with an interconnection network, and corresponding integrated circuit
US9785595B2 (en) * 2013-09-09 2017-10-10 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Multi-channel universal serial bus (USB) to subrate channel systems
CN104216840B (zh) * 2014-09-11 2018-03-23 青岛海信移动通信技术股份有限公司 一种usb设置和对外部设备进行操作的方法及装置
JP5921734B2 (ja) 2015-02-16 2016-05-24 株式会社日立製作所 ストレージシステム、ストレージシステム管理方法、及び計算機システム
US9755821B2 (en) * 2015-04-02 2017-09-05 Samsung Electronics Co., Ltd. Device including single wire interface and data processing system including the same
US10740270B2 (en) * 2015-06-26 2020-08-11 Hewlett Packard Enterprise Development Lp Self-tune controller
US9960981B2 (en) * 2015-10-08 2018-05-01 Sony Corporation Communication device, communication method, program, and communication system
US9973564B2 (en) * 2015-10-30 2018-05-15 Hewlett Packard Enterprise Development Lp Determining variable chunk size for transfer of a file
US10263830B2 (en) * 2017-01-23 2019-04-16 Wyse Technology L.L.C. Optimized data transfer for redirected UASP devices
TWI767997B (zh) * 2017-03-23 2022-06-21 日商索尼半導體解決方案公司 通信裝置、通信方法、程式及通信系統
JP6731553B2 (ja) * 2017-07-20 2020-07-29 株式会社日立製作所 分散ストレージシステム及び分散ストレージ制御方法
US10761775B2 (en) * 2018-02-09 2020-09-01 Samsung Electronics Co., Ltd. System and method for NVMe inter command association in SSD storage using a bridge device
US10558367B2 (en) * 2018-03-08 2020-02-11 Western Digital Technologies, Inc. Adaptive transaction layer packet for latency balancing

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015014951A (ja) * 2013-07-05 2015-01-22 株式会社日立製作所 データ転送システム、計算機システム及びプログラム
JP2015153279A (ja) * 2014-02-18 2015-08-24 三菱電機株式会社 プラント制御装置
JP2016018319A (ja) 2014-07-07 2016-02-01 富士通株式会社 バス制御装置、データ転送システム、及びバス制御方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP3605348A4

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021230117A1 (ja) * 2020-05-11 2021-11-18 ソニーセミコンダクタソリューションズ株式会社 通信装置及び通信システム

Also Published As

Publication number Publication date
US20220058156A1 (en) 2022-02-24
EP3605348A4 (en) 2020-03-11
CN110447020A (zh) 2019-11-12
US11714778B2 (en) 2023-08-01
JPWO2018173796A1 (ja) 2020-01-23
EP3605348A1 (en) 2020-02-05
TW201837728A (zh) 2018-10-16
KR20190131016A (ko) 2019-11-25
US11010328B2 (en) 2021-05-18
SG11201906694SA (en) 2019-08-27
US20200012615A1 (en) 2020-01-09
KR102515186B1 (ko) 2023-03-29
TWI767997B (zh) 2022-06-21
CN110447020B (zh) 2024-03-26
EP3605348B1 (en) 2023-06-28
JP7123905B2 (ja) 2022-08-23

Similar Documents

Publication Publication Date Title
WO2018173796A1 (ja) 通信装置、通信方法、プログラム、および、通信システム
JP5103371B2 (ja) 長い伝送遅延の存在下でusb大容量記憶装置の性能を改善する方法及び装置
JP2019047146A (ja) 電子機器および電力管理方法
CN110945491B (zh) 通信设备、通信方法、程序和通信系统
TW201822010A (zh) 資料儲存裝置與資料傳輸速率控制方法
US10230656B2 (en) Method and apparatus for controlling message over heterogeneous network
WO2020162075A1 (ja) 異常判定方法、異常判定装置およびプログラム
US11593033B2 (en) Electronic device for communicating with host and operating method of the electronic device
CN110945490B (zh) 通信设备、通信方法、程序和通信系统
KR19990072916A (ko) 데이터통신시스템,데이터통신방법및데이터통신장치
US6594239B1 (en) Transmission managing apparatus, information processing apparatus and information transmitting system
JP6903645B2 (ja) 通信装置、通信方法、プログラム、および、通信システム
JP5601090B2 (ja) 通信装置
EP2693703A1 (en) Transfer control device, integrated circuit thereof, transfer control method, and transfer control system
JP4458873B2 (ja) シリアルデータ転送方法とその装置
JP2010183408A (ja) デバイスワイヤアダプタ及び通信制御方法
TW202133001A (zh) 內部積體電路匯流排之從屬裝置的測試方法
US20190163407A1 (en) Storage device and storage system
JPWO2006090714A1 (ja) 情報中継装置、情報中継方法及び情報中継用プログラム並びに情報記録媒体
JP2016096493A (ja) 通信システムおよび画像形成装置
CN109885508A (zh) 高速外设组件互连标准总线系统及其数据传输方法、装置
JP2005159920A (ja) メッセージ交換管理方法、ネットワークシステム、そのマスタノード、ノード、プログラム
JP2004326350A (ja) データ処理装置、およびデータ処理方法
JP2010152558A (ja) プログラマブルコントローラおよび電文作成方法
JP2007004227A (ja) データ通信装置、データ通信方法、プログラム

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: 18772411

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 20197022284

Country of ref document: KR

Kind code of ref document: A

ENP Entry into the national phase

Ref document number: 2019507539

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

ENP Entry into the national phase

Ref document number: 2018772411

Country of ref document: EP

Effective date: 20191023