WO2020209016A1 - 半導体装置及びデバッグシステム - Google Patents
半導体装置及びデバッグシステム Download PDFInfo
- Publication number
- WO2020209016A1 WO2020209016A1 PCT/JP2020/011756 JP2020011756W WO2020209016A1 WO 2020209016 A1 WO2020209016 A1 WO 2020209016A1 JP 2020011756 W JP2020011756 W JP 2020011756W WO 2020209016 A1 WO2020209016 A1 WO 2020209016A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- signal
- data bus
- access
- state
- selector
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/26—Functional testing
- G06F11/273—Tester hardware, i.e. output processing circuits
- G06F11/2736—Tester hardware, i.e. output processing circuits using a dedicated service processor for test
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3648—Software debugging using additional hardware
- G06F11/3656—Software debugging using additional hardware using a specific debug interface
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/26—Functional testing
- G06F11/273—Tester hardware, i.e. output processing circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
- G06F11/364—Software debugging by tracing the execution of the program tracing values on a bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Definitions
- the present invention relates to a semiconductor device and a debug system.
- a debugging system for supporting the debugging work of the program is often used when developing a program to be executed.
- the CPU may be temporarily stopped (break) to access the data memory.
- break the CPU stop after the start of program execution becomes a problem.
- a motor control device when the CPU is stopped, the rotation control of the motor becomes impossible and the device may be destroyed. Therefore, in such a device, it may be required to access the data memory periodically without stopping the CPU as much as possible.
- the circuit mounted on the semiconductor device for debugging has nothing to do with the operation of the original semiconductor device, it is desirable that the circuit be as small as possible. In addition, it is desirable to access the program so as not to interfere with the operation of the program as much as possible.
- Patent Document 1 or 2 requires a large-scale circuit such as a DMA controller and a bus arbitration circuit, which is disadvantageous in terms of cost. Further, the conventional debug system that requires a program break may be difficult to apply to the motor control device, and the application application may be limited. When using a conventional debugging system that requires a break in the program, the behavior of the program may change from the original behavior due to the break, and if it has a large effect on the system operation, it may not be possible to debug correctly. is there.
- An object of the present invention is to provide a semiconductor device and a debugging system that can realize access to a data bus related to debugging with a small-scale configuration and without affecting the program operation.
- the semiconductor device can execute a data bus, a data memory connected to the data bus, a selector connected to the data bus, and access the data bus via the selector.
- a semiconductor device including a processing unit and a debug control unit that is configured to enable bidirectional communication between an external device and can access the data bus via the selector, wherein the selector is the selector.
- the first selection state for transmitting the first signal to the data bus and the second signal based on the control by the debug control unit.
- the signal that takes any of the second selection states of transmitting the signal to the data bus and is output from the processing unit to the selector is a read enable signal for causing the data memory to perform a read operation, and a read enable signal.
- a write enable signal for causing the data memory to perform a write operation is included, and the debug control unit receives a predetermined command from the external device, and each of the read enable signal and the write enable signal from the processing unit. It is a configuration (first configuration) in which the state of the selector is controlled based on the state, and the data bus is accessed via the selector when the selector is in the second selection state.
- the debug control unit accesses the data bus in response to the reception of the predetermined command, if the read enable signal or the write enable signal is in the asserted state, After waiting until both the read enable signal and the write enable signal are in the negate state, the selector is set to the second selection state, access according to the predetermined command is performed to the data bus, and the predetermined command is performed. If both the read enable signal and the write enable signal are in the negate state when accessing the data bus in response to the reception of, the selector is set to the second selection state and the predetermined command is performed without going through the standby.
- the data bus may be accessed according to the above (second configuration).
- the debug control unit includes a circuit that generates a data bus access signal for instructing the debug control unit to access the data bus.
- the data bus access signal is switched from the negate state to the assert state, and the debug control unit performs the read enable when the data bus access signal is switched from the negate state to the assert state. If the signal or the write enable signal is in the assert state, the read enable signal and the write enable signal are both in the negate state, and then the selector is set to the second selection state to respond to the predetermined command.
- the data bus may be accessed according to the predetermined command by setting the selector in the second selection state (third configuration).
- the debug control unit sets the selector to the first selection state when the data bus access signal is in the negate state, and responds to the reception of the predetermined command to receive the data. After switching the bus access signal from the negate state to the assert state, when the selector is set to the second selection state and the data bus is accessed according to the predetermined command, the data bus access signal is released from the assert state.
- the configuration may be such that the selector is returned to the negate state, thereby returning the selector to the first selection state (fourth configuration).
- the debug control unit puts the selector in the first selection state before the predetermined command is received, and after receiving the predetermined command, the selector. Is switched from the first selection state to the second selection state, and when the data bus is accessed according to the predetermined command, the selector is returned to the first selection state (fifth configuration). You may.
- the debug control unit When a read command is received as the predetermined command in the semiconductor device according to any one of the first to fifth configurations, the debug control unit performs the above when the selector is in the second selection state. Even in the configuration (sixth configuration), read access according to a read command is performed to the data bus, and then read data acquired from the data memory by the read access is transmitted to the external device. good.
- the data memory has a plurality of storage areas to which a plurality of addresses are assigned, and any of the plurality of addresses is specified by the read command, and the debug control unit.
- the read access in response to the read command, access for acquiring the data in the storage area of the address specified by the read command as the read data from the data memory is accessed via the selector via the data bus.
- the read data obtained by the above-mentioned reading data may be transmitted to the external device (seventh configuration).
- the debug control unit When a write command is received as the predetermined command in the semiconductor device according to any one of the first to fifth configurations, the debug control unit performs the above when the selector is in the second selection state.
- a configuration (eighth configuration) may be used in which write access corresponding to the write command is performed on the data bus, and data is written in the data memory according to the write command by the write access. ..
- the data memory has a plurality of storage areas to which a plurality of addresses are assigned, and one of the plurality of addresses is specified by the write command and the write data is stored.
- the debug control unit gives access to write the write data to the storage area of the address specified by the write command to the data bus via the selector. It may be a configuration (9th configuration) performed on the contrary.
- the debug system according to the present invention is connected to the semiconductor device semiconductor device according to any one of the first to ninth configurations and the semiconductor device, and transmits the predetermined command to the debug control unit of the semiconductor device. It is a configuration (tenth configuration) including a possible external device.
- the present invention it is possible to provide a semiconductor device and a debugging system that can realize access to a data bus related to debugging with a small-scale configuration and without affecting the program operation.
- (A) and (b) are explanatory views of read access and read operation according to the 1st Embodiment of this invention.
- (A) and (b) are explanatory views of light access and light operation according to the 1st Embodiment of this invention.
- FIG. 1 is a schematic configuration diagram of a debug system 10 according to the first embodiment of the present invention.
- the debug system 10 includes an LSI (Large Scale Integration) 11 having a built-in CPU (Central Processing Unit), an external debug device 12, and a host computer 13 (hereinafter, may be referred to as a host PC 13).
- LSI Large Scale Integration
- CPU Central Processing Unit
- host PC 13 host computer
- the LSI 11 as a semiconductor device includes a CPU (Central Processing Unit) 20, a debug control unit 21, a data bus 22 and a selector 27, and has one or more ROMs (Read only memory) as components connected to the data bus 22. , One or more RAMs (Random access memory), and one or more peripherals, which are one or more peripheral circuits.
- ROM 23 is shown as one ROM included in the one or more ROMs
- RAM 24 is shown as one RAM included in the one or more RAMs
- Peripheral 25 is shown as. In the following, attention will be paid to ROM 23, RAM 24 and peripheral 25 as ROM, RAM and peripheral.
- a register 26 is built in the peripheral 25.
- the Harvard architecture is adopted in LSI11. That is, the LSI 11 is provided with a program bus 28 separately from the data bus 22, and a program memory 29 composed of a flash memory or the like is connected to the program bus 28.
- the program memory 29 stores a program to be executed by the CPU 20.
- the CPU 20 accesses the program memory 29 via the data bus 28.
- a program when simply referred to as a program, it refers to a program stored in the program memory 29.
- the program stored in the program memory 29 consists of a bundle of instructions (instruction codes) to be executed by the CPU 20, and the CPU 20 sequentially reads necessary instructions from the program memory 29 via the data bus 28 in synchronization with the operating clock of the CPU 20. , The program is executed by sequentially executing the instructions read sequentially through decoding and the like.
- the external debug device 12 is connected to the debug control unit 21 via a terminal (not shown) provided in the LSI 11, and functions as an interface between the debug control unit 21 and the host PC 13.
- the external debug device 12 and the host PC 13 are connected to each other in a manner capable of bidirectional communication.
- Debugging software 14 is running on the host PC 13. The user of the debug system 10 can debug the program executed by the CPU 20 by operating the host PC 13 on which the debug software 14 is executed.
- the data memory 30 includes a large number of storage areas capable of storing data of a predetermined size.
- a predetermined address space is defined for the data memory 30, and a unique address is assigned to each storage area constituting the data memory 30.
- the storage circuit constituting the data memory 30 may be any one or two of the ROM 23, the RAM 24, and the register 26.
- the selector 27 has a first input unit 27a, a second input unit 27b, and an output unit 27c.
- the first input unit 27a is connected to the CPU 20
- the second input unit 27b is connected to the debug control unit 21, and the output unit is output.
- 27c is connected to the data bus 22. This will be described in detail.
- the CPU 20 and the debug control unit 21 can output the read enable signal, the write enable signal, the address signal, and the write data, respectively, and can output the read enable signal, the write enable signal, the address signal, and the write data output from the CPU 20.
- the read enable signal RE1, the write enable signal WE1, the address signal ADD1 and the write data WD1 are referred to as the read enable signal RE1, the write enable signal WE1, the address signal ADD1 and the write data WD1, respectively, and the read enable signal, the write enable signal, the address signal and the write data output from the debug control unit 21 are particularly referred to.
- the light data can be said to be a signal indicating the light data.
- the light data WD1 and WD2 may be referred to as signals WD1 and WD2 (also for the light data WD described later). Similarly).
- the first input unit 27a is connected to the wiring that propagates the signals RE1, WE1, ADD1 and WD1 provided between the CPU 20 and the selector 27, and receives the inputs of the signals RE1, WE1, ADD1 and WD1 from the CPU 20.
- the second input unit 27b is connected to the wiring that propagates the signals RE2, WE2, ADD2 and WD2 provided between the debug control unit 21 and the selector 27, and the signals RE2, WE2, ADD2 and WD2 from the debug control unit 21. Receives input.
- a control signal CNT is supplied to the selector 27 from the debug control unit 21, and the selector 27 selectively selects either the first input unit 27a or the second input unit 27b based on the control signal CNT. Is connected to the output unit 27c.
- the control signal CNT is assumed to be a 1-bit signal having a value of "1" or "0", and when the value of the control signal CNT is "0", the state of the selector 27 is the CPU selection state, and the value of the control signal CNT. When is "1", the state of the selector 27 is assumed to be the debugger selection state.
- the state of the selector 27 may be simply referred to as the "CPU selected state”, and similarly, the state of the selector 27 as the debugger selected state is simply referred to as the "debugger selected state”. I have something to express.
- the "debugger” is a general term for parts used for debugging work, and can be interpreted as including all or a part of the debug control unit 21, the external debugging device 12, and the host PC 13.
- the first input unit 27a is connected to the output unit 27c, and as a result, the wiring propagating the signals RE1, WE1, ADD1 and WD1 is connected to the data bus 22 through the output unit 27c, and those signals RE1 , WE1, ADD1 and WD1 are transmitted to the data bus 22.
- the second input unit 27b is connected to the output unit 27c, and as a result, the wiring propagating the signals RE2, WE2, ADD2 and WD2 is connected to the data bus 22 through the output unit 27c, and those signals RE2. , WE2, ADD2 and WD2 are transmitted to the data bus 22.
- control signal CNT When paying attention to the state control of the selector 27, the control signal CNT may be referred to as a selector control signal.
- control signal CNT When paying attention to the function of switching the supply signal to the data bus 22, the control signal CNT may be referred to as a data bus control signal, a switching control signal, or the like.
- the read enable signal, write enable signal, address signal, and write data output from the output unit 27c are particularly referred to as read enable signal RE, write enable signal WE, address signal ADD, and write data WD, respectively.
- the write data (WD, WD1, WD2) is data that is output only when the write access described later is executed.
- the read enable signal RE1, the write enable signal WE1, the address signal ADD1 and the write data WD1 from the CPU 20 are the read enable signal RE and the write enable. It is output from the output unit 27c to the data bus 22 as a signal WE, an address signal ADD, and a write data WD.
- the read enable signal RE2, the write enable signal WE2, the address signal ADD2, and the write data WD2 from the debug control unit 21 are the read enable signal RE.
- the write enable signal WE, the address signal ADD, and the write data WD are output from the output unit 27c to the data bus 22.
- the CPU 20 can access the data bus 22 when the selector 27 is in the CPU selected state
- the debug control unit 21 can access the data bus 22 when the selector 27 is in the debugger selected state. ..
- the read access or write access to the data bus 22 is, in other words, a read access or write access to the data memory 30 through the data bus 22.
- Access to the RAM 24 and the register 26 is either read access or write access, but access to the ROM 23 is limited to read access.
- the data memory 30 (for example, RAM 24) performs a read operation of outputting necessary read data RD to the data bus 22 when a read access is received from the CPU 20 or the debug control unit 21, and receives a write access from the CPU 20 or the debug control unit 21. At that time, a write operation is performed to store data according to the write data WD sent through the data bus 22.
- the read data can be said to be a signal indicating the read data, and in the following, the read data RD may be referred to as a signal RD for convenience of description.
- the data bus 22 is composed of a plurality of wires for individually transmitting signals RE, WE, ADD, RD and WD (that is, signals RE, WE and ADD and data RD and WD).
- the wiring for transmitting the read data RD is connected to the CPU 20 and the debug control unit 21, respectively. Therefore, when the read data RD is output from the data memory 30 to the data bus 22 in response to the read access, the CPU 20 and the debug control unit 21 can acquire the read data RD.
- the read enable signals (RE, RE1, RE2) are signals for causing the data memory 30 to perform a read operation (in other words, a signal specifying whether or not the data memory 30 is to perform a read operation), and are in an assert state (in other words, a signal specifying whether or not the data memory 30 is to perform a read operation). It takes either a valid state) or a negate state (invalid state).
- the read enable signal (RE, RE1, RE2) is a 1-bit signal having a value of "1" or "0". In the read enable signal, the value of "1" is in the asserted state and the value of "0" is negated. It is associated with a state.
- the read enable signal (RE, RE1, RE2) having a value of "1", that is, the read enable signal in the asserted state is a valid signal and functions as a signal instructing or permitting execution of the read operation.
- the read enable signals (RE, RE1, RE2) having a value of "0", that is, the lead enable signals in the negated state are invalid signals that do not instruct the execution of the read operation and are signals that prohibit the read operation. It has a meaning. Therefore, the data memory 30 executes the read operation only when the read enable signal RE of "1" is received from the CPU 20 or the debug control unit 21 through the data bus 22, and reads when the read enable signal RE is "0". Do not perform any action.
- the write enable signal (WE, WE1, WE2) is a signal for causing the data memory 30 to perform a write operation (in other words, a signal for designating whether or not the data memory 30 is to perform a write operation), and is in an assert state (assertion state). It takes either a valid state) or a negate state (invalid state).
- the write enable signal (WE, WE1, WE2) is a 1-bit signal that takes a value of "1" or "0". In the write enable signal, the value of "1" is in the asserted state and the value of "0" is negated. It is associated with a state.
- the write enable signal (WE, WE1, WE2) having a value of "1", that is, the write enable signal in the asserted state is a valid signal and functions as a signal instructing or permitting the execution of the write operation.
- the write enable signal (WE, WE1, WE2) having a value of "0", that is, the write enable signal in the negated state is an invalid signal that does not instruct the execution of the write operation and is a signal that prohibits the write operation. It has a meaning. Therefore, the data memory 30 executes the write operation only when the write enable signal WE of "1" is received from the CPU 20 or the debug control unit 21 through the data bus 22, and writes when the write enable signal WE is "0". Do not perform any action.
- the address signal (ADD, ADD1, ADD2) is a signal that specifies the address of any storage area in the data memory 30, and has a number of bits corresponding to the size of the address space defined in the data memory 30.
- the read data (RD) is data obtained by reading data stored in any storage area in the data memory 30 from the storage area.
- the write data (WD, WD1, WD2) is data to be written in any storage area in the data memory 30.
- the number of bits of each of the read data and the write data is arbitrary (for example, 8 bits).
- the host PC 13 (in other words, the debug software 14) can issue a predetermined command based on the operation of the user of the debug system 10 on the host PC 13, and the issued predetermined command is transmitted to the debug control unit 21 through the external debug device 12. Will be done.
- the predetermined command includes a read command that requests the debug control unit 21 to perform read access, and a write command that requests the debug control unit 21 to perform write access.
- the access target address is specified in the read command.
- the access target address and write data are specified.
- the access target address refers to any address in the address space of the data memory 30.
- the access target address specified by the read command is the address that is the target of read access by the debug control unit 21
- the access target address that is specified by the write command is the address that is the target of write access by the debug control unit 21. is there.
- the write data specified by the write command represents the data to be written to the access target address.
- the debug control unit 21 sets the state of the selector 27 to the CPU selection state by outputting the control signal CNT of "0" to the selector 27.
- the debug control unit 21 outputs the control signal CNT of “1” to the selector 27 when the debug control unit 21 needs to perform read access or write access in response to the reception of the read command or the write command. Switches the state of the selector 27 from the CPU selection state to the debugger selection state. Then, when the necessary read access or write access is completed, the state of the selector 27 is returned to the CPU selection state.
- the debugger selection state of the selector 27 is realized at an appropriate timing, and the debug control unit 21 accesses the data bus 22 in the debugger selection state by performing read access according to the read command.
- the stored data in the storage area of the target address is acquired as the read data RD.
- the acquired read data RD is transmitted from the debug control unit 21 to the external debug device 12, and is sent to the host PC 13 through the external debug device 12.
- the debugger selection state of the selector 27 is realized at an appropriate timing, and the debug control unit 21 accesses the data bus 22 in the debugger selection state by performing write access according to the write command.
- the write data specified by the write command is written to the storage area of the target address.
- the read enable signal RE1 and the write enable signal WE1 are supplied to the debug control unit 21.
- the timing of setting the selector 27 to the debugger selection state in response to the reception of the read command or the write command is controlled based on the read enable signal RE1 and the write enable signal WE1.
- the debug control unit 21 confirms the signals RE1 and WE1 when it receives a read command or a write command. If the signal RE1 or WE1 is in the asserted state (“1”), the CPU 20 is accessing the data bus 22, and both the signals RE1 and WE1 are in the negated state (“0”). After waiting until, the selector 27 is set to the debugger selected state and access is performed according to the received command. On the other hand, if both the signals RE1 and WE1 are in the negate state (“0”) when the read command or the write command is received, the selector 27 is promptly set to the debugger selected state and responds to the received command without going through the above wait. Access. Prior to the description of the configuration for realizing this, the read access and read operation and the write access and write operation will be described.
- the CPU 20 can perform read access based on the program executed by itself, and in the debugger selected state, the debug control unit 21 can perform read access based on the received read command.
- the CPU 20 includes a read enable signal RE1 of “1” and an address signal ADD1 that specifies one of a plurality of addresses defined in the data memory 30 in the read access in the CPU selected state. Is output to the data bus 22 as a read enable signal RE and an address signal ADD via the selector 27, whereby the data memory 30 is made to perform a read operation.
- the debug control unit 21 specifies either the read enable signal RE2 of “1” or a plurality of addresses defined in the data memory 30 in the read access in the debugger selected state.
- the signal ADD2 is output to the data bus 22 as a read enable signal RE and an address signal ADD via the selector 27, whereby the data memory 30 is made to perform a read operation.
- the address specified by the address signal ADD2 matches the access target address specified by the read command.
- the data memory 30 (for example, RAM 24) reads the stored data in the storage area of the address specified by the address signal ADD input from the CPU 20 or the debug control unit 21 via the data bus 22.
- the read data is output to the data bus 22 as read data RD.
- the read data RD output to the data bus 22 by the read operation is input to the CPU 20 and the debug control unit 21 via the wiring between the data bus 22 and the CPU 20 and the debug control unit 21.
- the CPU 20 can perform write access based on the program executed by itself, and in the debugger selected state, the debug control unit 21 can perform write access based on the received write command.
- the CPU 20 includes a write enable signal WE1 of “1” and an address signal ADD1 that specifies one of a plurality of addresses defined in the data memory 30 in the write access in the CPU selected state.
- the write data WD1 to be written in the storage area of the address specified by the address signal ADD1 is output to the data bus 22 as the write enable signal WE, the address signal ADD and the write data WD via the selector 27, thereby.
- the data memory 30 is made to perform a write operation.
- the debug control unit 21 specifies either the write enable signal WE2 of “1” or a plurality of addresses defined in the data memory 30 in the write access in the debugger selected state.
- the signal ADD2 and the write data WD2 to be written in the storage area of the address specified by the address signal ADD2 are output to the data bus 22 as the write enable signal WE, the address signal ADD and the write data WD via the selector 27.
- the data memory 30 is made to perform a write operation.
- the address specified by the address signal ADD2 matches the access target address specified by the write command.
- the write data WD2 matches the write data specified by the write command.
- the data memory 30 receives the CPU 20 or debug with respect to the storage area of the address specified by the address signal ADD input from the CPU 20 or the debug control unit 21 via the data bus 22.
- the data corresponding to the write data WD from the control unit 21 is stored.
- the stored data in the corresponding storage area after the write operation may match the write data WD, and depending on the specifications, the data may be based on the write data WD but may not match the write data WD.
- FIG. 5 shows an example of the internal configuration of the debug control unit 21 together with its peripheral configuration.
- the CPU clock refers to the operating clock of the CPU 20.
- the CPU clock is referred to by the symbol "CLK".
- the debugger clock is an operating clock of a part of the circuit elements of the debug control unit 21 and the external debug device 12. Some other circuit elements of the debug control unit 21 (including FF53 and 56 described later and a latch circuit 59) operate in synchronization with the operating clock of the CPU 20.
- the debugger clock is generated by, for example, a clock generation circuit (not shown) in the external debug device 12, and is provided to the debug control unit 21 via a communication line between the external debug device 12 and the debug control unit 21.
- the CPU clock and the debugger clock are asynchronous with each other. It does not matter whether the frequencies of the CPU clock and the debugger clock match / do not match. Usually, the frequency of the debugger clock is lower than the frequency of the CPU clock.
- Any clock including the debugger clock and CPU clock, is a square wave signal that alternates and periodically takes high and low levels.
- the high level has a higher potential than the low level.
- the switching from low level to high level is called up edge, and the timing of switching from low level to high level is called up edge timing.
- the switching from high level to low level is referred to as down edge, and the timing of switching from high level to low level is referred to as down edge timing.
- the debug control unit 21 of FIG. 5 includes a digital circuit including an OR circuit 51, a one-shot pulse circuit 52, an FF53, an OR circuit 54, an AND circuit 55, an FF56, an AND circuit 57, a selector 58, and a latch circuit 59.
- the input / output signals of the constituent elements of the circuit and the signals handled by the constituent elements of the digital circuit are binarized signals having a low level or a high level signal level. First, the input / output signals of each component and the basic operation contents will be described.
- the OR circuit 51 receives the input of the read request signal RD_PLS and the write request signal WR_PLS, and outputs the logical sum signal of the signals RD_PLS and WR_PLS.
- the signals RD_PLS and WR_PLS are signals synchronized with the debugger clock.
- the signal RD_PLS is set to a low level in principle, and is set to a high level by one clock (that is, one cycle) of the debugger clock when a read command is received.
- the signal WR_PLS is set to a low level in principle, and is set to a high level by one clock of the debugger clock when a write command is received. Therefore, when a read command or a write command is received by the debug control unit 21, a signal having a high level equal to the length of one clock of the debugger clock is output from the OR circuit 51.
- the one-shot pulse circuit 52 outputs a one-shot pulse signal in which the output signal of the OR circuit 51 is synchronized with the CPU clock as a data bus access start signal S_DB_ACS.
- the signal S_DB_ACS is in principle low level.
- the signal S_DB_ACS becomes high level by one clock (that is, one cycle) of the CPU clock after a predetermined delay.
- the FF53 is an RS-type flip-flop that operates in synchronization with the CPU clock, includes a clock input terminal for receiving the CPU clock, a data output terminal (Q terminal), and a set terminal (S terminal) and a set terminal (S terminal) as synchronous input terminals. It has a reset terminal (R terminal).
- the data bus access start signal S_DB_ACS is input to the set terminal
- the control signal CNT is input to the reset terminal
- the data bus access signal DB_ACS is output from the data output terminal.
- the data bus access signal DB_ACS is a signal for instructing that the debug control unit 21 can access the data bus 22.
- the signal DB_ACS is in the asserted state at the high level and in the negated state at the low level. That is, the high-level signal DB_ACS is a valid signal and indicates that the debug control unit 21 can access the data bus 22, and the low-level signal DB_ACS is an invalid signal and debug control. It does not instruct the unit 21 to allow access to the data bus 22.
- the FF53 sets the signal DB_ACS to a high level if the signal S_DB_ACS is at a high level at the up edge timing of the CPU clock. After the signal DB_ACS is set to high level, the signal DB_ACS is maintained at high level until the input signal to the reset terminal of the FF53 is set to high level. The FF53 sets the signal DB_ACS to a low level if the control signal CNT is at a high level at the up edge timing of the CPU clock. After the signal DB_ACS is set to low level, the signal DB_ACS is maintained at low level until the input signal to the set terminal of the FF53 is set to high level.
- the OR circuit 54 is connected to the wiring provided between the CPU 20 and the selector 27 for propagating the read enable signal RE1 and the wiring for propagating the write enable signal WE1.
- the OR circuit 54 receives the signals RE1 and WE1 as input signals, and outputs an inverted signal of the OR signal of the signals RE1 and WE1.
- a value of "0" ie, negate state
- a value of "1” ie, asserted state
- the OR circuit 54 outputs a high-level signal only when both the signals RE1 and WE1 are low-level (“0”), and outputs a low-level signal at other times.
- the AND circuit 55 outputs a logical product signal of the data bus access signal DB_ACS from the FF53 and the output signal of the OR circuit 54 as a control signal CNT.
- the control signal CNT is high level only when the data bus access signal DB_ACS is at a high level (assert state) and both the read enable signal RE1 and the write enable signal WE1 from the CPU 20 are at a low level (negate state). At other times, the control signal CNT becomes low level. In the signal CNT, a value of "0" is assigned a low level, and a value of "1" is assigned a low level.
- the selector 27 is in the CPU selection state when the control signal CNT is at the low level, and is in the debugger selection state when the control signal CNT is at the high level.
- the control signal CNT output from the AND circuit 55 is input to the reset terminal of the FF53 and also to the data input terminal of the FF56.
- the FF56 is a D-type flip-flop that operates in synchronization with the CPU clock, and includes a clock input terminal that receives the CPU clock, a data input terminal (D terminal), and a data output terminal (Q terminal).
- the FF56 captures and holds an input signal (CNT) to its own data input terminal in synchronization with the up edge of the CPU clock, and outputs the held signal from its own data output terminal.
- the output signal of the FF56 is referred to as a data bus access end signal and is represented by the code "END_DB_ACS_D".
- the data bus access end signal END_DB_ACS_D is a signal obtained by delaying the control signal CNT by one clock in the CPU clock.
- the AND circuit 57 outputs a logical product signal of the data bus access end signal END_DB_ACS_D from the FF 56 and the mode signal M_RD provided by a circuit (not shown). Therefore, the output signal of the AND circuit 57 becomes high level only when both the signals END_DB_ACS and M_RD are high level, and low level otherwise.
- the mode signal M_RD is set to a high level, and at other times, the mode signal M_RD is set to a low level.
- the selector 58 has a first input terminal, a second input terminal, and an output terminal, and when the output signal of the AND circuit 57 is low level, the data applied to the first input terminal is output from its own output terminal and ANDed. When the output signal of the circuit 57 is high level, the data applied to the second input terminal is output from its own output terminal.
- the output data of the latch circuit 59 is input to the first input terminal of the selector 58.
- the second input terminal of the selector 58 is connected to the wiring for propagating the read data RD in the data bus 22. Therefore, when the read data RD is output from the data memory 30 to the data bus 22, the read data RD is input to the second input terminal of the selector 58.
- the latch circuit 59 includes a clock input terminal that receives a CPU clock, a data input terminal (D terminal) connected to the output terminal of the selector 58, and a data output terminal (Q terminal) connected to the first input terminal of the selector 58. And.
- the latch circuit 59 is composed of D-type flip-flops for the number of bits of the read data RD.
- the latch circuit 59 latches (takes in and holds) the data from the output terminal of the selector 58 in synchronization with the up edge of the CPU clock, and outputs the latched data from its own data output terminal.
- the output data from the data output terminal of the latch circuit 59 is referred to as debugger read data, and is referred to by the reference numeral “DB_RD”.
- the lead data RD latch in the latch circuit 59 realized by the output signal of the AND circuit 57 becoming a high level is obtained by the selector 58 and the latch circuit 59 described above after the output signal of the AND circuit 57 becomes a low level. The output signal of the AND circuit 57 is maintained until the next high level.
- the data bus access start signal S_DB_ACS is set to a high level, so that the debug control unit 21 is requested to start access to the data bus 22, and this request is made. It is transmitted to the AND circuit 55 as a high-level data bus access signal DB_ACS.
- the read access signal is output from the debug control unit 21 to the selector 27.
- the read access signal includes an address signal ADD2 corresponding to a read command and a read enable signal RE2 of "1".
- the address specified by the address signal ADD2 matches the access target address specified by the read command.
- the output of the signal for read access to the selector 27 starts at the same time as the up edge of the signal DB_ACS or before the up edge of the signal DB_ACS occurs, and ends when the read access in response to the read command is completed.
- the write access signal is output from the debug control unit 21 to the selector 27.
- the signal for write access includes an address signal ADD2 and a write data WD2 corresponding to a write command, and a write enable signal WE2 of "1".
- the address specified by the address signal ADD2 matches the access target address specified by the write command.
- the write data WD2 matches the write data specified by the write command.
- the output of the signal for write access to the selector 27 is started at the same time as the up edge of the signal DB_ACS or before the up edge of the signal DB_ACS occurs, and ends when the write access in response to the write command is completed.
- the debugger selection state of the selector 27 is realized, and the desired access (read access or write access) by the debug control unit 21 is executed.
- the desired access is realized by outputting the read access signals (ADD2, RE2) to the data bus 22 via the selector 27 when the read command is received, and the write command is received. If so, it is realized by outputting the light access signals (ADD2, WD2, WE2) to the data bus 22 via the selector 27.
- the read data RD corresponding to the read access appears on the data bus 22 at a timing delayed by one clock of the CPU clock from the read access. Therefore, the read data RD is latched by the latch circuit 59 by using a signal (END_DB_ACS_D) in which the control signal CNT is delayed by one clock.
- the latched read data RD is transmitted from the debug control unit 21 to the external debug device 12 as the debugger read data DB_RD, and is sent to the host PC 13 through the external debug device 12.
- a configuration may also be adopted in which the read data RD is output to the data bus 22 when the address signal ADD is input to the data bus 22 together with the write enable signal RE of "1" without synchronizing with the CPU clock.
- the read data RD may be latched by the latch circuit 59 at the timing when the control signal CNT is set to a high level. ..
- the debug control unit 21 selects the selector 27 based on the reception state of a predetermined command (read command or write command) from the external debug device 12 and each state of the read enable signal RE1 and the write enable signal WE1 from the CPU 20. It is configured to control the state of the data bus 22 and access the data bus 22 via the selector 27 when the selector 27 is in the debugger selected state.
- a predetermined command read command or write command
- the debug control unit 21 accesses the data bus 22 in response to the reception of a predetermined command
- the signal RE1 or WE1 is in the assert state (high level)
- both the signals RE1 and WE1 are in the negate state.
- the selector 27 is set to the debugger selected state and the data bus 22 is accessed according to a predetermined command. That is, a standby operation is performed to wait until both the signals RE1 and WE1 are in the negated state, and the selector 27 is set to the debugger selected state in response to the fact that both the signals RE1 and WE1 are in the negated state, and access according to a predetermined command is performed. This is performed for the data bus 22.
- the debug control unit 21 accesses the data bus 22 in response to the reception of a predetermined command, if both the signals RE1 and WE1 are in the negated state, the debug control unit 21 immediately does not go through the above standby (without going through the standby operation).
- the selector 27 can be set to the debugger selected state, and access according to a predetermined command can be performed on the data bus 22.
- the debug control unit 21 provides circuits (51, 52, 53) that generate a data bus access signal DB_ACS for instructing the debug control unit 21 to access the data bus 22. Have.
- the data bus access signal DB_ACS is switched from the negate state (low level) to the assert state (high level). Then, when the data bus access signal DB_ACS is switched from the negate state to the assert state, the debug control unit 21 negates both the signals RE1 and WE1 if the signal RE1 or WE1 from the CPU 20 is in the assert state (high level).
- the selector 27 After waiting until the state (low level) is reached, the selector 27 is set to the debugger selected state and the data bus 22 is accessed according to a predetermined command. That is, a standby operation is performed to wait until both the signals RE1 and WE1 are in the negated state, and the selector 27 is set to the debugger selected state in response to the fact that both the signals RE1 and WE1 are in the negated state, and access according to a predetermined command is performed. This is performed for the data bus 22.
- the data bus access signal DB_ACS is switched from the negate state (low level) to the assert state (high level) and both the signals RE1 and WE1 are in the negate state, the debug control unit 21 does not go through the above standby.
- the selector 27 can be immediately set to the debugger selected state to access the data bus 22 according to a predetermined command.
- the debug control unit 21 sets the selector 27 to the CPU selection state when the data bus access signal DB_ACS is in the negate state (low level). Then, the debug control unit 21 switches the data bus access signal DB_ACS from the negate state (low level) to the assert state (high level) in response to the reception of the predetermined command, and then sets the selector 27 to the debugger selected state and sets the predetermined command.
- the data bus access signal DB_ACS is returned from the assert state (high level) to the negate state (low level), whereby the selector 27 is returned to the CPU selection state.
- the selector 27 is basically set to the CPU selected state, and the debugger selected state is realized in a form that does not interfere with the operation of the CPU 20 only when the debug control unit 21 needs to access the data bus 22. become. That is, the operation of the CPU 20 is not affected at all.
- the debug control unit 21 when a read command is received, the debug control unit 21 performs read access according to the read command via the selector 27 by outputting a signal for read access in the debugger selected state to the data bus 22. (In other words, read access according to the read command is performed on the data memory 30 via the selector 27 and the data bus 22). Specifically, in this read access, the debug control unit 21 selects the access for acquiring the data in the storage area of the address (access target address) specified by the read command as the read data RD from the data memory 30. (In other words, it is performed on the data memory 30 via the selector 27 and the data bus 22), and the read data RD obtained thereby is transmitted to the external debug device 12.
- the debug control unit 21 performs write access to the data bus 22 in response to the write command via the selector 27 by outputting a light access signal in the debugger selected state (in other words,). , Write access according to the write command to the data memory 30 via the selector 27 and the data bus 22). Specifically, in this write access, the debug control unit 21 accesses the storage area of the address (access target address) specified by the write command to write the write data specified by the write command via the selector 27. It is performed on the data bus 22 (in other words, it is performed on the data memory 30 via the selector 27 and the data bus 22).
- [Timing chart] 6 and 7 show the timing chart of the LSI 11 in response to the reception of the read command
- FIGS. 8 and 9 show the timing chart of the LSI 11 in response to the reception of the write command.
- FIGS. 6, 7, 8 and 9 show timing charts in cases C_R1, C_R2, case C_W1 and case C_W2, respectively.
- Case C_R1 of FIG. 6 is a case in which a conflict does not occur with the access of the CPU 20 when the debug control unit 21 tries to perform read access.
- Case C_R2 of FIG. 7 is a case in which a conflict occurs with the access of the CPU 20 when the debug control unit 21 tries to perform read access.
- Case C_W2 in FIG. 9 is a case in which a conflict occurs with the access of the CPU 20 when the debug control unit 21 tries to perform write access.
- Waveforms y1 to y19 shown in FIGS. 6 to 9 show waveforms of the same signal between FIGS. 6 to 9, but the details of these waveforms are partially different between FIGS. 6 to 9. First, what each waveform points to will be described.
- the waveform y1 shows the waveform of the debugger clock
- the waveform y5 shows the waveform of the CPU clock.
- a part of the debug control unit 21 operates in synchronization with the debugger clock, and takes the input signal to itself or changes the level of the signal to be output, triggered by the up edge of the debugger clock. , Change its own state.
- the rest of the debug control unit 21 and the CPU 20 that operate in synchronization with the CPU clock take in the input signal to themselves, change the level of the signal to be output, and their own state, triggered by the up edge of the CPU clock. To change.
- Timing t 1 is one up-edge timing in the debugger clock.
- the up-edge of the CPU clock is generated.
- time t 2 and t 3 and t 4 between time t 4 and t 5, between time t 5 and t 6, the time length between the timing t 6 and t 7 are all of the CPU clock Equal to one cycle.
- the waveform y2 represents the debugger data, and schematically shows the signal transmitted from the external debug device 12 to the debug control unit 21.
- Debugger data includes data that constitutes a read command or a write command.
- the waveform y3 is the waveform of the read request signal RD_PLS based on the read command
- the waveform y4 is the write request signal WR_PLS based on the write command (see also FIG. 5).
- the CPU 20 is provided with a program counter that counts and specifies an address (hereinafter referred to as a program memory address) on the program memory 29 in which an instruction to be fetched next is stored, and a program memory read enable signal is provided. Only when the level is high, the program memory address is synchronized with the CPU clock by using the program counter and is sequentially updated in the cycle of the CPU clock.
- a program memory address is synchronized with the CPU clock by using the program counter and is sequentially updated in the cycle of the CPU clock.
- “y6” represents a time-series change in the program memory address
- “y7” indicates a program memory read enable signal.
- the program memory read enable signal is maintained at a high level.
- fetching The operation of reading and acquiring the necessary instructions from the program memory 29 is called fetching.
- the state in which the instructions constituting the program are fetched and executed is referred to as a fetch state.
- the CPU 20 fetches and latches the instruction indicated by the program memory address.
- y8 represents a time-series change of the instruction (instruction code) latched through fetching
- y9 represents a time-series change of the state of the state machine.
- the state machine is composed of registers provided in the CPU 20 and controls the execution state of the program in the CPU 20. In the section assumed in FIGS. 6 to 9, the state of the CPU 20 is maintained in the fetch state.
- the waveforms y10 and y11 represent the waveforms of the read enable signal RE1 and the write enable signal WE1 from the CPU 20, respectively.
- the waveforms y12, y13, y14, and y18 are the waveforms of the data bus access start signal S_DB_ACS, the data bus access signal DB_ACS, the control signal CNT, and the data bus access end signal END_DB_ACS_D, respectively, by the debug control unit 21. Shown.
- the waveforms y15 and y16 represent the waveforms of the read enable signal RE and the write enable signal WE in the data bus 22, respectively.
- Y17 represents the read data RD appearing on the data bus 22
- y19 represents the debugger read data DB_RD latched by the latch circuit 59 (see FIG. 5).
- Data RD and DB_RD having no significant values in “y17” and “y19” are shown by "0".
- Case C_R1 The operation in the case C_R1 of FIG. 6 will be described.
- Case C_R1 (which occurs up edge to a read request signal RD_PLS at a timing t 1) pulse is generated starting at time t 1 based on the received read command to the read request signal RD_PLS.
- the pulse of the read request signal RD_PLS is synchronized with the CPU clock to generate a pulse in the data bus access start signal S_DB_ACS. That is, the signal S_DB_ACS goes high at between timing t 2 and t 3. Then, rising edge on the data bus access signal DB_ACS at a timing t 3 by the function of the FF53 in FIG. 5 occurs.
- the output of the signal for read access from the debug control unit 21 to the selector 27 is performed at the same time as the up edge of the signal DB_ACS or before the up edge of the signal DB_ACS occurs. Therefore, the control signal CNT is in the interval at the high level (i.e. between time t 3 and t 4), the signal RE2 (i.e. a high level of "1" s contained in the signal for read access from the debug control unit 21 Signal RE2) appears on the data bus 22 as signal RE.
- Case C_R2 The operation in the case C_R2 of FIG. 7 will be described.
- the operation of at the timing t 3 to up edge occurs on the data bus access signal DB_ACS is similar to the case C_R1 in FIG.
- interval between time t 3 and t 4 corresponds to a section of signal RE1 and WE1 is waiting both of the negated state ( "0").
- the length of the standby is one cycle of the CPU clock, but it may extend to a plurality of cycles of the CPU clock.
- the standby factor is the high level signal RE1 in the example of FIG. 7, but can be the high level WE1.
- the CPU 20 does not need to stop the program execution operation, and the fetch state is set including while the debug control unit 21 is accessing the data bus 22. It is maintained and the instructions are being executed sequentially.
- the transmission of the debugger read data DB_RD to the external debug device 12 is also performed in parallel with the execution of the program by the CPU 20, and does not affect the execution of the program by the CPU 20.
- Case C_W1 The operation in the case C_W1 of FIG. 8 will be described.
- pulse occurs in the write request signal WR_PLS timing t 1 to a starting point based on the received write command (up edge at a timing t 1 in the write request signal WR_PLS occurs).
- a pulse is generated in the data bus access start signal S_DB_ACS. That is, the signal S_DB_ACS goes high at between timing t 2 and t 3. Then, rising edge on the data bus access signal DB_ACS at a timing t 3 by the function of the FF53 in FIG. 5 occurs.
- the output of the light access signal from the debug control unit 21 to the selector 27 is performed at the same time as the up edge of the signal DB_ACS or before the up edge of the signal DB_ACS occurs. Therefore, the control signal CNT is in the interval at the high level (i.e. between time t 3 and t 4), the signal WE2 (i.e. a high level of "1" s contained in the signal for write access from the debug control unit 21 Signal WE2) appears on the data bus 22 as a signal WE, and the write access of the debug control unit 21 based on the write command is executed in the section.
- the control signal CNT is in the interval at the high level (i.e. between time t 3 and t 4)
- the signal WE2 i.e. a high level of "1" s contained in the signal for write access from the debug control unit 21 Signal WE2
- the write access of the debug control unit 21 based on the write command is executed in the section.
- Case C_W2 The operation in the case C_W2 of FIG. 9 will be described.
- the operation of at the timing t 3 to up edge occurs on the data bus access signal DB_ACS is similar to the case C_W1 in FIG.
- CPU 20 does not perform access to the data bus 22 at a clock interval between timing t 4 and t 5 (i.e. signals RE1 and WE1 is at a low level both). Therefore, a rising edge of the control signal CNT is generated at a timing t 4.
- a rising edge of the control signal CNT is produced, down edge occurs at the up-edge timing t 5 of the next CPU clock to a data bus access signal DB_ACS and control signal CNT of the function of the FF 53.
- the signal of "1" s contained in the signal for write access from the debug control unit 21 WE2 i.e. a high-level signal WE2
- the write access of the debug control unit 21 based on the write command is executed in the section.
- interval between time t 3 and t 4 corresponds to a section of signal RE1 and WE1 is waiting both of the negated state ( "0").
- the standby length is one cycle of the CPU clock, but it may extend to a plurality of cycles of the CPU clock.
- the standby factor is the high level signal RE1 in the example of FIG. 9, but can be the high level WE1.
- Second Embodiment A second embodiment of the present invention will be described. In the second embodiment, some applied techniques, deformation techniques, and the like applicable to the above-described first embodiment will be described.
- the second embodiment includes the following Examples EX2_1 to EX2_5.
- Example EX2_1 will be described.
- Two or more CPUs 20 that access the data bus 22 may be provided in the LSI 11.
- the LSI 11 is provided with an arbitration circuit (not shown) for preventing two or more CPUs 20 from accessing the data bus 22 at the same time.
- the access authority to the data bus 22 is given to one CPU of the two or more CPUs 20, and the output signal and the output data of the CPU 20 to which the access authority is given among the two or more CPUs 20s. Only is transmitted to the data bus 22.
- Example EX2_2 will be described.
- the CPU 20 is an example of a processing unit that accesses the data bus 22, but in the present invention, such a processing unit is not limited to the CPU, and is arbitrary to access the data bus 22.
- the part of can be a processing part.
- Example EX2_1 when two or more CPUs 20 are provided in the LSI 11, it can be considered that the processing unit is composed of the two or more CPUs 20 and the arbitration circuit, or the access authority. It can be considered that the CPU 20 to which is assigned corresponds to the processing unit.
- Example EX2_3 will be described.
- the relationship between high level and low level may be reversed for any signal without compromising the above-mentioned gist.
- positive logic or negative logic is adopted for any signal.
- Example EX2_4 will be described.
- Each circuit element constituting the LSI 11 is formed in the form of a semiconductor integrated circuit, and the semiconductor device is configured by enclosing the semiconductor integrated circuit in a housing (package) made of resin.
- a circuit equivalent to the circuit in the LSI 11 may be configured by using a plurality of discrete components.
- Example EX2_5 will be described.
- the debug system according to the present invention includes a semiconductor device exemplified by LSI 11 and an external device connected to the semiconductor device.
- the external device here may be understood to refer to the external debug device 12, or may be understood to include both the external debug device 12 and the host PC 13.
- Debug system 11 LSI 12 External debug device 13 Host computer 14 Debug software 20 CPU 21 Debug control unit 22 Data bus 23 ROM 24 RAM 25 Peripherals 26 Registers 27 Selectors 28 Program Bus 29 Program Memory 30 Data Memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Human Computer Interaction (AREA)
- Debugging And Monitoring (AREA)
Abstract
LSIは、CPU(20)、デバッグ制御部(21)、データバス(22)及びセレクタ(27)を備える。セレクタは、デバッグ制御部からの制御信号(CNT)に基づき、CPUからの信号をデータバスに伝達するCPU選択状態と、デバッグ制御部からの信号をデータバスに伝達するデバッガ選択状態の何れかとなる。デバッグ制御部は、外部装置からの所定コマンドの受信状態並びにCPUが出力するリードイネーブル信号(RE1)及びライトイネーブル信号(WE1)の各状態に基づいてセレクタの状態を制御し、セレクタがデバッガ選択状態であるときにセレクタを介してデータバスにアクセスする。
Description
本発明は、半導体装置及びデバッグシステムに関する。
プログラムを実行するCPU等を備えた半導体装置において、実行されるプログラムを開発する際に、プログラムのデバッグ作業を支援するためのデバッグシステムが用いられることが多い。
デバッグ作業において、プログラムの動作中に外部から半導体装置内のデータメモリへアクセスを行いたいという要望がある。この要望に応えるべく、多くのデバッグシステムは、LSI等にて構成された半導体装置の外部からシリアル通信などを利用して、データメモリへのアクセスを行い、必要な読み書きをできるような仕組みを有している。
その際、CPUを一旦停止(ブレーク)させてデータメモリへのアクセスを行うこともある。但し、プログラム実行開始後のCPU停止が問題となる装置もある。例えば、モータ制御装置では、CPUが停止するとモータの回転制御が不能となって装置が破壊されることがある。このため、そのような装置では、CPUをなるだけ停止させずに、定期的にデータメモリにアクセスすることが要求されることもある。
デバッグのために半導体装置に搭載される回路は、本来の半導体装置の動作に関係のないものであるため、なるだけ小規模の回路とされることが望まれる。また、プログラムの動作をできるだけ妨げないようにアクセスを行うことが望まれる。
尚、特許文献1又は2に代表される従来のデバッグシステムでは、DMAコントローラやバス調停回路といった大規模の回路が必要とされ、コスト面で不利である。また、プログラムのブレークを必要とする従来のデバッグシステムは、モータ制御装置に適用し難いことがあるなど、適用用途が限定されることもある。プログラムのブレークを必要とする従来のデバッグシステムを用いたとき、ブレークによりプログラムの動きが本来の動きから変わってしまうこともあり、それがシステム動作に大きな影響を与えると、正しくデバッグができないこともある。
本発明は、デバッグに関わるデータバスへのアクセスを小規模な構成で且つプログラム動作に影響を与えることなく実現可能な半導体装置及びデバッグシステムを提供することを目的とする。
本発明に係る半導体装置は、データバスと、前記データバスに接続されたデータメモリと、前記データバスに接続されたセレクタと、プログラムを実行し且つ前記セレクタを介して前記データバスにアクセス可能な処理部と、外部装置との間で双方向通信が可能に構成され且つ前記セレクタを介して前記データバスにアクセス可能なデバッグ制御部と、を備えた半導体装置であって、前記セレクタは、前記デバッグ制御部による制御に基づき、前記処理部からの第1信号及び前記デバッグ制御部からの第2信号の内、前記第1信号を前記データバスに伝達する第1選択状態、及び、前記第2信号を前記データバスに伝達する第2選択状態の何れかの状態をとり、前記処理部から前記セレクタに出力される信号は、前記データメモリにリード動作を行わせるためのリードイネーブル信号、及び、前記データメモリにライト動作を行わせるためのライトイネーブル信号を含み、前記デバッグ制御部は、前記外部装置からの所定コマンドの受信状態並びに前記処理部からの前記リードイネーブル信号及び前記ライトイネーブル信号の各状態に基づいて、前記セレクタの状態を制御し、前記セレクタが前記第2選択状態であるときに前記セレクタを介して前記データバスにアクセスする構成(第1の構成)である。
上記第1の構成に係る半導体装置において、前記デバッグ制御部は、前記所定コマンドの受信に応答して前記データバスにアクセスする際、前記リードイネーブル信号又は前記ライトイネーブル信号がアサート状態であれば、前記リードイネーブル信号及び前記ライトイネーブル信号が共にネゲート状態になるまで待機してから、前記セレクタを前記第2選択状態にして前記所定コマンドに応じたアクセスを前記データバスに対して行い、前記所定コマンドの受信に応答して前記データバスにアクセスする際、前記リードイネーブル信号及び前記ライトイネーブル信号が共にネゲート状態であれば、前記待機を経ずに前記セレクタを前記第2選択状態にして前記所定コマンドに応じたアクセスを前記データバスに対して行う構成(第2の構成)であっても良い。
上記第2の構成に係る半導体装置において、前記デバッグ制御部は、前記デバッグ制御部による前記データバスへのアクセスを可能にすることを指示するためのデータバスアクセス信号を生成する回路を有し、前記所定コマンドの受信に応答して前記データバスアクセス信号はネゲート状態からアサート状態に切り替えられ、前記デバッグ制御部は、前記データバスアクセス信号がネゲート状態からアサート状態に切り替えられたときに前記リードイネーブル信号又は前記ライトイネーブル信号がアサート状態であれば、前記リードイネーブル信号及び前記ライトイネーブル信号が共にネゲート状態になるまで待機してから、前記セレクタを前記第2選択状態にして前記所定コマンドに応じたアクセスを前記データバスに対して行い、前記データバスアクセス信号がネゲート状態からアサート状態に切り替えられたときに前記リードイネーブル信号及び前記ライトイネーブル信号が共にネゲート状態であれば、前記待機を経ずに前記セレクタを前記第2選択状態にして前記所定コマンドに応じたアクセスを前記データバスに対して行う構成(第3の構成)であっても良い。
上記第3の構成に係る半導体装置において、前記デバッグ制御部は、前記データバスアクセス信号がネゲート状態であるときにおいて前記セレクタを前記第1選択状態とし、前記所定コマンドの受信に応答して前記データバスアクセス信号をネゲート状態からアサート状態に切り替えた後、前記セレクタを前記第2選択状態にして前記所定コマンドに応じたアクセスを前記データバスに対して行うと、前記データバスアクセス信号をアサート状態からネゲート状態に戻し、これによって前記セレクタを前記第1選択状態に戻す構成(第4の構成)であっても良い。
上記第1~第4の構成の何れかに係る半導体装置において、前記デバッグ制御部は、前記所定コマンドが受信される前において前記セレクタを前記第1選択状態とし、前記所定コマンドの受信後に前記セレクタを前記第1選択状態から前記第2選択状態に切り替え、前記所定コマンドに応じたアクセスを前記データバスに対して行うと前記セレクタを前記第1選択状態に戻す構成(第5の構成)であっても良い。
上記第1~第5の構成の何れかに係る半導体装置において、前記所定コマンドとしてリードコマンドが受信された場合、前記デバッグ制御部は、前記セレクタが前記第2選択状態とされているときに前記リードコマンドに応じたリードアクセスを前記データバスに対して行い、その後、前記リードアクセスにより前記データメモリから取得したリードデータを前記外部装置に対して送信する構成(第6の構成)であっても良い。
上記第7の構成に係る半導体装置において、前記データメモリは複数のアドレスが割り当てられた複数の記憶領域を有し、前記リードコマンドにて前記複数のアドレスの何れかが指定され、前記デバッグ制御部は、前記リードコマンドに応じた前記リードアクセスにおいて、前記リードコマンドにて指定されたアドレスの記憶領域内のデータを前記リードデータとして前記データメモリから取得するためのアクセスを前記セレクタを介し前記データバスに対して行い、これによって得られた前記リードデータを前記外部装置に対して送信する構成(第7の構成)であっても良い。
上記第1~第5の構成の何れかに係る半導体装置において、前記所定コマンドとしてライトコマンドが受信された場合、前記デバッグ制御部は、前記セレクタが前記第2選択状態とされているときに前記ライトコマンドに応じたライトアクセスを前記データバスに対して行い、前記ライトアクセスにより、前記ライトコマンドに応じたデータの書き込みが前記データメモリにて行われる構成(第8の構成)であっても良い。
上記第8の構成に係る半導体装置において、前記データメモリは複数のアドレスが割り当てられた複数の記憶領域を有し、前記ライトコマンドにて前記複数のアドレスの何れかが指定されるとともにライトデータが指定され、前記デバッグ制御部は、前記ライトコマンドに応じた前記ライトアクセスにおいて、前記ライトコマンドにて指定されたアドレスの記憶領域に前記ライトデータを書き込むためのアクセスを前記セレクタを介し前記データバスに対して行う構成(第9の構成)であっても良い。
本発明に係るデバッグシステムは、上記第1~第9の構成の何れかに係る半導体装置半導体装置と、前記半導体装置に接続され、前記半導体装置の前記デバッグ制御部に対して前記所定コマンドを送信可能な外部装置と、を備えた構成(第10の構成)である。
本発明によれば、デバッグに関わるデータバスへのアクセスを小規模な構成で且つプログラム動作に影響を与えることなく実現可能な半導体装置及びデバッグシステムを提供することが可能となる。
以下、本発明の実施形態の例を、図面を参照して具体的に説明する。参照される各図において、同一の部分には同一の符号を付し、同一の部分に関する重複する説明を原則として省略する。尚、本明細書では、記述の簡略化上、情報、信号、物理量、素子又は部位等を参照する記号又は符号を記すことによって、該記号又は符号に対応する情報、信号、物理量、素子又は部位等の名称を省略又は略記することがある。例えば、後述の“RE”によって参照されるリードイネーブル信号は(図1参照)、リードイネーブル信号REと表記されることもあるし、信号REと略記されることもあり得るが、それらは全て同じものを指す。
<<第1実施形態>>
本発明の第1実施形態を説明する。図1は、本発明の第1実施形態に係るデバッグシステム10の概略構成図である。デバッグシステム10は、CPU(Central Processing Unit)を内蔵したLSI(Large Scale Integration)11と、外部デバッグ装置12と、ホストコンピュータ13(以下、ホストPC13と称され得る)と、を備える。
本発明の第1実施形態を説明する。図1は、本発明の第1実施形態に係るデバッグシステム10の概略構成図である。デバッグシステム10は、CPU(Central Processing Unit)を内蔵したLSI(Large Scale Integration)11と、外部デバッグ装置12と、ホストコンピュータ13(以下、ホストPC13と称され得る)と、を備える。
半導体装置としてのLSI11は、CPU(Central Processing Unit)20、デバッグ制御部21、データバス22及びセレクタ27を備えると共に、データバス22に接続される構成要素として、1以上のROM(Read only memory)と、1以上のRAM(Random access memory)と、1以上の周辺回路である1以上のペリフェラルと、を備える。図1には、上記1以上のROMに含まれる1つのROMとしてROM23が示され、上記1以上のRAMに含まれる1つのRAMとしてRAM24が示され、上記1以上のペリフェラルに含まれる1つのペリフェラルとしてペリフェラル25が示されている。以下では、ROM、RAM及びペリフェラルとしてROM23、RAM24及びペリフェラル25に注目する。ペリフェラル25にはレジスタ26が内蔵されている。
また、LSI11ではハーバードアーキテクチャが採用されている。即ち、LSI11には、データバス22とは別にプログラムバス28が設けられており、プログラムバス28に対して、フラッシュメモリ等にて構成されたプログラムメモリ29が接続されている。プログラムメモリ29にはCPU20にて実行されるべきプログラムが格納される。CPU20はデータバス28を介してプログラムメモリ29にアクセスする。以下の説明において、単にプログラムと称した場合、それはプログラムメモリ29に格納されたプログラムを指すものとする。
プログラムメモリ29に格納されるプログラムはCPU20が実行すべき命令(命令コード)の束から成り、CPU20は、CPU20の動作クロックに同期してプログラムメモリ29からデータバス28を介し必要な命令を順次読み出し、順次読み出した命令を、デコード等を経て順次実行することによりプログラムを実行してゆく。
外部デバッグ装置12は、LSI11に設けられた図示されない端子を介してデバッグ制御部21に接続され、デバッグ制御部21とホストPC13との間のインターフェースとして機能する。外部デバッグ装置12及びホストPC13は双方向通信が可能な態様で互いに接続される。ホストPC13ではデバッグソフトウェア14が実行されている。デバッグシステム10のユーザは、デバッグソフトウェア14が実行されているホストPC13を操作することで、CPU20が実行するプログラムのデバッグ作業を行うことができる。
図2を参照し、以下では、便宜上、LSI11に設けられた記憶回路であって、ROM23、RAM24及びレジスタ26を含む記憶回路をデータメモリ30と称する。データメモリ30には、所定サイズのデータを格納可能な記憶領域が多数含まれる。データメモリ30に対して所定のアドレス空間が定義されており、データメモリ30を構成する各記憶領域には固有のアドレスが割り当てられる。尚、データメモリ30を構成する記憶回路は、ROM23、RAM24及びレジスタ26の内の、任意の1つ又は2つであっても良い。
セレクタ27は、第1入力部27a、第2入力部27b及び出力部27cを有し、第1入力部27aはCPU20に接続され、第2入力部27bはデバッグ制御部21に接続され、出力部27cはデータバス22に接続される。これについて、詳細に説明する。
CPU20及びデバッグ制御部21は、夫々に、リードイネーブル信号、ライトイネーブル信号、アドレス信号及びライトデータを出力可能であり、CPU20から出力されるリードイネーブル信号、ライトイネーブル信号、アドレス信号及びライトデータを、特に、夫々、リードイネーブル信号RE1、ライトイネーブル信号WE1、アドレス信号ADD1及びライトデータWD1と称し、且つ、デバッグ制御部21から出力されるリードイネーブル信号、ライトイネーブル信号、アドレス信号及びライトデータを、特に、夫々、リードイネーブル信号RE2、ライトイネーブル信号WE2、アドレス信号ADD2及びライトデータWD2と称する。ライトデータは、換言すれば、ライトデータを示す信号であるとも言え、以下では、記述の便宜上、ライトデータWD1、WD2を、信号WD1、WD2と表記することもある(後述のライトデータWDについても同様)。
第1入力部27aは、CPU20及びセレクタ27間に設けられた、信号RE1、WE1、ADD1及びWD1を伝搬する配線に接続され、CPU20からの信号RE1、WE1、ADD1及びWD1の入力を受ける。第2入力部27bは、デバッグ制御部21及びセレクタ27間に設けられた、信号RE2、WE2、ADD2及びWD2を伝搬する配線に接続され、デバッグ制御部21からの信号RE2、WE2、ADD2及びWD2の入力を受ける。
また、セレクタ27に対してはデバッグ制御部21から制御信号CNTが供給されており、セレクタ27は制御信号CNTに基づいて、第1入力部27a及び第2入力部27bの何れか一方を選択的に出力部27cに接続する。制御信号CNTは“1”又は“0”の値をとる1ビット信号であるものとし、制御信号CNTの値が“0”であるときにはセレクタ27の状態はCPU選択状態となり、制御信号CNTの値が“1”であるときにはセレクタ27の状態はデバッガ選択状態となるものとする。以下では、セレクタ27の状態がCPU選択状態であることを単に“CPU選択状態”と表現することがあり、同様に、セレクタ27の状態がデバッガ選択状態であることを単に“デバッガ選択状態”と表現することがある。尚、“デバッガ”とは、デバッグ作業に供される部位の総称であり、デバッグ制御部21、外部デバッグ装置12及びホストPC13の全部又は一部を含むと解釈することができる。
CPU選択状態においては、第1入力部27aが出力部27cに接続され、結果、信号RE1、WE1、ADD1及びWD1を伝搬する配線が出力部27cを通じデータバス22に接続されて、それらの信号RE1、WE1、ADD1及びWD1がデータバス22に伝達される。デバッガ選択状態においては、第2入力部27bが出力部27cに接続され、結果、信号RE2、WE2、ADD2及びWD2を伝搬する配線が出力部27cを通じデータバス22に接続されて、それらの信号RE2、WE2、ADD2及びWD2がデータバス22に伝達される。
尚、セレクタ27の状態制御に注目した場合、制御信号CNTはセレクタ制御信号と称され得る。データバス22への供給信号の切り替え機能に注目した場合、制御信号CNTはデータバス制御信号や切替制御信号などと称され得る。
出力部27cから出力されるリードイネーブル信号、ライトイネーブル信号、アドレス信号及びライトデータを、特に、夫々、リードイネーブル信号RE、ライトイネーブル信号WE、アドレス信号ADD及びライトデータWDと称する。尚、ライトデータ(WD、WD1、WD2)は、後述のライトアクセスの実行時においてのみ出力されるデータである。
CPU選択状態においては、第1入力部27aが出力部27cに接続されるため、CPU20からのリードイネーブル信号RE1、ライトイネーブル信号WE1、アドレス信号ADD1及びライトデータWD1が、リードイネーブル信号RE、ライトイネーブル信号WE、アドレス信号ADD及びライトデータWDとして出力部27cからデータバス22に出力される。デバッガ選択状態においては、第2入力部27bが出力部27cに接続されるため、デバッグ制御部21からのリードイネーブル信号RE2、ライトイネーブル信号WE2、アドレス信号ADD2及びライトデータWD2が、リードイネーブル信号RE、ライトイネーブル信号WE、アドレス信号ADD及びライトデータWDとして出力部27cからデータバス22に出力される。
このように、CPU20はセレクタ27がCPU選択状態にあるときにデータバス22へアクセスすることができ、デバッグ制御部21はセレクタ27がデバッガ選択状態にあるときにデータバス22へアクセスすることができる。データバス22へのアクセスとして、リードアクセスとライトアクセスがある。データバス22へのリードアクセス又はライトアクセスは、換言すれば、データバス22を通じたデータメモリ30へのリードアクセス又はライトアクセスである。RAM24及びレジスタ26に対するアクセスはリードアクセス及びライトアクセスの何れかであるが、ROM23に対するアクセスはリードアクセスに限定される。
データメモリ30(例えばRAM24)は、CPU20又はデバッグ制御部21からリードアクセスを受けたとき必要なリードデータRDをデータバス22に出力するリード動作を行い、CPU20又はデバッグ制御部21からライトアクセスを受けたときデータバス22を通じて送られてきたライトデータWDに応じたデータを記憶するライト動作を行う。リードデータは、換言すれば、リードデータを示す信号であるとも言え、以下では、記述の便宜上、リードデータRDを信号RDと表記することもある。
データバス22は、信号RE、WE、ADD、RD及びWD(即ち信号RE、WE及びADD並びにデータRD及びWD)を個別に伝送するための複数の配線から成る。データバス22を構成する配線の内、リードデータRDを伝送するための配線は、CPU20及びデバッグ制御部21の夫々に接続されている。故に、リードアクセスに応答してデータメモリ30からデータバス22に対しリードデータRDが出力されているとき、CPU20及びデバッグ制御部21は当該リードデータRDを取得することができる。
リードイネーブル信号(RE、RE1、RE2)はデータメモリ30にリード動作を行わせるための信号(換言すればデータメモリ30にリード動作を行わせるか否かを指定する信号)であり、アサート状態(有効状態)及びネゲート状態(無効状態)の何れかをとる。リードイネーブル信号(RE、RE1、RE2)は“1”又は“0”の値をとる1ビット信号であり、リードイネーブル信号において、“1”の値がアサート状態に、“0”の値がネゲート状態に対応付けられている。“1”の値を持つリードイネーブル信号(RE、RE1、RE2)、即ちアサート状態のリードイネーブル信号は、有効な信号であってリード動作の実行を指示又は許可する信号として機能する。“0”の値を持つリードイネーブル信号(RE、RE1、RE2)、即ちネゲート状態のリードイネーブル信号は、無効な信号であってリード動作の実行を指示せず、リード動作を禁止する信号としての意味合いを持つ。故に、データメモリ30は、CPU20又はデバッグ制御部21からデータバス22を通じ “1”のリードイネーブル信号REを受けた場合に限りリード動作を実行し、リードイネーブル信号REが“0”であるときにはリード動作を実行しない。
ライトイネーブル信号(WE、WE1、WE2)はデータメモリ30にライト動作を行わせるための信号(換言すればデータメモリ30にライト動作を行わせるか否かを指定する信号)であり、アサート状態(有効状態)及びネゲート状態(無効状態)の何れかをとる。ライトイネーブル信号(WE、WE1、WE2)は“1”又は“0”の値をとる1ビット信号であり、ライトイネーブル信号において、“1”の値がアサート状態に、“0”の値がネゲート状態に対応付けられている。“1”の値を持つライトイネーブル信号(WE、WE1、WE2)、即ちアサート状態のライトイネーブル信号は、有効な信号であってライト動作の実行を指示又は許可する信号として機能する。“0”の値を持つライトイネーブル信号(WE、WE1、WE2)、即ちネゲート状態のライトイネーブル信号は、無効な信号であってライト動作の実行を指示せず、ライト動作を禁止する信号としての意味合いを持つ。故に、データメモリ30は、CPU20又はデバッグ制御部21からデータバス22を通じ “1”のライトイネーブル信号WEを受けた場合に限りライト動作を実行し、ライトイネーブル信号WEが“0”であるときにはライト動作を実行しない。
アドレス信号(ADD、ADD1、ADD2)は、データメモリ30内の何れかの記憶領域のアドレスを指定する信号であり、データメモリ30に定義されたアドレス空間の大きさに応じたビット数を有する。リードデータ(RD)は、データメモリ30内の何れかの記憶領域に格納されたデータを当該記憶領域から読み出したデータである。ライトデータ(WD、WD1、WD2)は、データメモリ30内の何れかの記憶領域に書き込まれるべきデータである。リードデータ及びライトデータの夫々のビット数は任意である(例えば8ビットである)。
ホストPC13(換言すればデバッグソフトウェア14)は、デバッグシステム10のユーザによるホストPC13への操作に基づき所定コマンドを発行可能であり、発行された所定コマンドは外部デバッグ装置12を通じてデバッグ制御部21に送信される。
上記所定コマンドとして、デバッグ制御部21にリードアクセスを行わせることを要求するリードコマンドと、デバッグ制御部21にライトアクセスを行わせることを要求するライトコマンドと、がある。リードコマンドではアクセス対象アドレスが指定される。ライトコマンドではアクセス対象アドレスとライトデータが指定される。外部デバッグ装置12からデバッグ制御部21に対してリードコマンドが送信されるときに、アクセス対象アドレスを示す信号がリードコマンドに付加されて送信されると考えても良い。同様に、外部デバッグ装置12からデバッグ制御部21に対してライトコマンドが送信されるときに、アクセス対象アドレスを示す信号及びライトデータを示す信号がライトコマンドに付加されて送信されると考えても良い。
アクセス対象アドレスは、データメモリ30のアドレス空間における何れかのアドレスを指す。リードコマンドで指定されるアクセス対象アドレスは、デバッグ制御部21によるリードアクセスの対象となるアドレスであり、ライトコマンドで指定されるアクセス対象アドレスは、デバッグ制御部21によるライトアクセスの対象となるアドレスである。ライトコマンドで指定されるライトデータは、アクセス対象アドレスに書き込まれるべきデータを表す。
デバッグ制御部21は、原則として 、“0”の制御信号CNTをセレクタ27に出力することでセレクタ27の状態をCPU選択状態とする。デバッグ制御部21は、リードコマンド又はライトコマンドの受信に応答してデバッグ制御部21がリードアクセス又はライトアクセスを行う必要があるときに、“1”の制御信号CNTをセレクタ27に出力し、これによってセレクタ27の状態をCPU選択状態からデバッガ選択状態に切り替える。そして、必要なリードアクセス又はライトアクセスが完了するとセレクタ27の状態をCPU選択状態に戻す。
リードコマンドが発行されたときには、適切なタイミングでセレクタ27のデバッガ選択状態が実現され、デバッガ選択状態にてデバッグ制御部21がリードコマンドに応じたリードアクセスをデータバス22に対して行うことでアクセス対象アドレスの記憶領域の格納データをリードデータRDとして取得する。取得されたリードデータRDは、デバッグ制御部21から外部デバッグ装置12に送信され、外部デバッグ装置12を通じてホストPC13に送られる。
ライトコマンドが発行されたときには、適切なタイミングでセレクタ27のデバッガ選択状態が実現され、デバッガ選択状態にてデバッグ制御部21がライトコマンドに応じたライトアクセスをデータバス22に対して行うことでアクセス対象アドレスの記憶領域にライトコマンドにて指定されるライトデータが書き込まれる。
CPU20からセレクタ27に出力される信号の内、リードイネーブル信号RE1及びライトイネーブル信号WE1がデバッグ制御部21に供給されている。リードコマンド又はライトコマンドの受信に応答してセレクタ27をデバッガ選択状態とするタイミングの制御は、リードイネーブル信号RE1及びライトイネーブル信号WE1に基づいて行われる。
端的に言えば、デバッグ制御部21は、リードコマンド又はライトコマンドを受信したとき、信号RE1及びWE1を確認する。そして、信号RE1又はWE1がアサート状態(“1”)であるならば、CPU20がデータバス22にアクセスしている最中であるので、信号RE1及びWE1が共にネゲート状態(“0”)になるまで待機してからセレクタ27をデバッガ選択状態にして受信コマンドに応じたアクセスを行う。一方、リードコマンド又はライトコマンドを受信したとき、信号RE1及びWE1が共にネゲート状態(“0”)であるならば、上記待機を経ずに速やかにセレクタ27をデバッガ選択状態にして受信コマンドに応じたアクセスを行う。これを実現するための構成の説明に先立ち、リードアクセス及びリード動作並びにライトアクセス及びライト動作について説明を加えておく。
図3(a)及び(b)を参照し、リードアクセス及びリード動作について説明を加える。CPU選択状態においてCPU20は自身が実行するプログラムに基づきリードアクセスを行うことができ、デバッガ選択状態においてデバッグ制御部21は受信したリードコマンドに基づきリードアクセスを行うことができる。
図3(a)に示す如く、CPU20は、CPU選択状態におけるリードアクセスにおいて、“1”のリードイネーブル信号RE1と、データメモリ30に定義された複数のアドレスの何れかを指定するアドレス信号ADD1とをセレクタ27を介し、リードイネーブル信号RE及びアドレス信号ADDとしてデータバス22に出力し、これによってデータメモリ30にリード動作を行わせる。
図3(b)に示す如く、デバッグ制御部21は、デバッガ選択状態におけるリードアクセスにおいて、“1”のリードイネーブル信号RE2と、データメモリ30に定義された複数のアドレスの何れかを指定するアドレス信号ADD2とをセレクタ27を介し、リードイネーブル信号RE及びアドレス信号ADDとしてデータバス22に出力し、これによってデータメモリ30にリード動作を行わせる。アドレス信号ADD2にて指定されるアドレスは、リードコマンドにて指定されるアクセス対象アドレスと一致する。
リードアクセスに応答するリード動作において、データメモリ30(例えばRAM24)は、データバス22を介しCPU20又はデバッグ制御部21から入力されたアドレス信号ADDにより指定されるアドレスの記憶領域の格納データを読み出し、読み出したデータをリードデータRDとしてデータバス22に出力する。リード動作によりデータバス22に出力されたリードデータRDは、データバス22とCPU20及びデバッグ制御部21との間の配線を介してCPU20及びデバッグ制御部21に入力される。
図4(a)及び(b)を参照して、ライトアクセス及びライト動作について説明を加える。CPU選択状態においてCPU20は自身が実行するプログラムに基づきライトアクセスを行うことができ、デバッガ選択状態においてデバッグ制御部21は受信したライトコマンドに基づきライトアクセスを行うことができる。
図4(a)に示す如く、CPU20は、CPU選択状態におけるライトアクセスにおいて、“1”のライトイネーブル信号WE1と、データメモリ30に定義された複数のアドレスの何れかを指定するアドレス信号ADD1と、アドレス信号ADD1により指定されるアドレスの記憶領域に書き込まれるべきライトデータWD1とを、セレクタ27を介し、ライトイネーブル信号WE、アドレス信号ADD及びライトデータWDとして、データバス22に出力し、これによってデータメモリ30にライト動作を行わせる。
図4(b)に示す如く、デバッグ制御部21は、デバッガ選択状態におけるライトアクセスにおいて、“1”のライトイネーブル信号WE2と、データメモリ30に定義された複数のアドレスの何れかを指定するアドレス信号ADD2と、アドレス信号ADD2により指定されるアドレスの記憶領域に書き込まれるべきライトデータWD2とを、セレクタ27を介し、ライトイネーブル信号WE、アドレス信号ADD及びライトデータWDとして、データバス22に出力し、これによってデータメモリ30にライト動作を行わせる。アドレス信号ADD2にて指定されるアドレスは、ライトコマンドにて指定されるアクセス対象アドレスと一致する。ライトデータWD2は、ライトコマンドにて指定されるライトデータと一致する。
ライトアクセスに応答するライト動作において、データメモリ30(例えばRAM24)は、データバス22を介しCPU20又はデバッグ制御部21から入力されたアドレス信号ADDにより指定されるアドレスの記憶領域に対し、CPU20又はデバッグ制御部21からのライトデータWDに応じたデータを格納する。ライト動作後における対応する記憶領域の格納データはライトデータWDと一致することもあるし、仕様によっては、ライトデータWDに基づくデータではあるもののライトデータWDとは一致しないこともある。
図5に、デバッグ制御部21の内部構成の例を、その周辺構成と共に示す。以下の説明において、CPUクロックとはCPU20の動作クロックを指す。CPUクロックは符号“CLK”にて参照される。デバッガクロックとは、デバッグ制御部21の一部の回路素子と外部デバッグ装置12の動作クロックである。デバッグ制御部21の他の一部の回路素子(後述のFF53及び56並びにラッチ回路59を含む)はCPU20の動作クロックに同期して動作する。デバッガクロックは、例えば、外部デバッグ装置12内のクロック生成回路(不図示)にて生成されて、外部デバッグ装置12及びデバッグ制御部21間の通信線を介してデバッグ制御部21に提供される。CPUクロックとデバッガクロックは互いに非同期である。CPUクロック及びデバッガクロックの周波数の一致/不一致は問わない。通常、デバッガクロックの周波数がCPUクロックの周波数よりも低い。
デバッガクロック及びCPUクロックを含む任意のクロックは、ハイレベル及びローレベルを交互に且つ周期的にとる矩形波信号である。任意のクロック又は信号について、ハイレベルはローレベルよりも電位が高い。任意の信号において、ローレベルからハイレベルへの切り替わりをアップエッジと称し、ローレベルからハイレベルへの切り替わりのタイミングをアップエッジタイミングと称する。任意の信号において、ハイレベルからローレベルへの切り替わりをダウンエッジと称し、ハイレベルからローレベルへの切り替わりのタイミングをダウンエッジタイミングと称する。
図5のデバッグ制御部21は、OR回路51、ワンショットパルス回路52、FF53、OR回路54、AND回路55、FF56、AND回路57、セレクタ58及びラッチ回路59を含むデジタル回路を備え、当該デジタル回路の構成素子の入出力信号及び当該デジタル回路の構成素子で取り扱われる信号は、ローレベル又はハイレベルの信号レベルをとる二値化信号である。まず、各構成素子の入出力信号及び基本的な動作内容について説明する。
OR回路51はリード要求信号RD_PLS及びライト要求信号WR_PLSの入力を受け、信号RD_PLS及びWR_PLSの論理和信号を出力する。信号RD_PLS及びWR_PLSは、デバッガクロックに同期した信号である。信号RD_PLSは原則としてローレベルとされ、リードコマンドの受信時においてデバッガクロックの1クロック分(即ち1周期分)だけハイレベルとされる。信号WR_PLSは原則としてローレベルとされ、ライトコマンドの受信時においてデバッガクロックの1クロック分だけハイレベルとされる。故に、デバッグ制御部21にてリードコマンド又はライトコマンドが受信されたとき、デバッガクロックの1クロック分の長さだけハイレベルとなる信号がOR回路51から出力される。
ワンショットパルス回路52は、OR回路51の出力信号をCPUクロックにて同期化したワンショットパルス信号をデータバスアクセス開始信号S_DB_ACSとして出力する。信号S_DB_ACSは原則としてローレベルとされる。回路51及び52の機能により、リードコマンド又はライトコマンドが受信されたとき、所定の遅延を経て、信号S_DB_ACSがCPUクロックの1クロック分(即ち1周期分)だけハイレベルとなる。
FF53は、CPUクロックに同期して動作するRS型のフリップフロップであり、CPUクロックを受けるクロック入力端子と、データ出力端子(Q端子)を備えると共に、同期入力端子としてセット端子(S端子)及びリセット端子(R端子)を備える。FF53において、セット端子にはデータバスアクセス開始信号S_DB_ACSが入力され、リセット端子には制御信号CNTが入力され、データ出力端子からデータバスアクセス信号DB_ACSが出力される。
データバスアクセス信号DB_ACSは、デバッグ制御部21によるデータバス22へのアクセスを可能にすることを指示すための信号である。信号DB_ACSは、ハイレベルにおいてアサート状態にあり、ローレベルにおいてネゲート状態にある。即ち、ハイレベルの信号DB_ACSは、有効な信号であってデバッグ制御部21によるデータバス22へのアクセスを可能にすることを指示し、ローレベルの信号DB_ACSは、無効な信号であってデバッグ制御部21によるデータバス22へのアクセスを可能にすることを指示しない。
FF53は、CPUクロックのアップエッジタイミングにおいて信号S_DB_ACSがハイレベルであれば、信号DB_ACSをハイレベルにする。信号DB_ACSがハイレベルとされた後、FF53のリセット端子への入力信号がハイレベルとされるまで信号DB_ACSはハイレベルに維持される。
FF53は、CPUクロックのアップエッジタイミングにおいて制御信号CNTがハイレベルであれば、信号DB_ACSをローレベルにする。信号DB_ACSがローレベルとされた後、FF53のセット端子への入力信号がハイレベルとされるまで信号DB_ACSはローレベルに維持される。
FF53は、CPUクロックのアップエッジタイミングにおいて制御信号CNTがハイレベルであれば、信号DB_ACSをローレベルにする。信号DB_ACSがローレベルとされた後、FF53のセット端子への入力信号がハイレベルとされるまで信号DB_ACSはローレベルに維持される。
OR回路54は、CPU20とセレクタ27との間に設けられた、リードイネーブル信号RE1を伝搬するための配線及びライトイネーブル信号WE1を伝搬するための配線に接続される。OR回路54は信号RE1及びWE1を入力信号として受け、信号RE1及びWE1の論理和信号の反転信号を出力する。信号RE1及びWE1の夫々において、“0”の値(即ちネゲート状態)にローレベルが割り当てられ、“1”の値(即ちアサート状態)にハイレベルが割り当てられる。故に、OR回路54は、信号RE1及びWE1が共にローレベル(“0”)であるときにのみハイレベルの信号を出力し、それ以外のときにはローレベルの信号を出力する。
AND回路55は、FF53からのデータバスアクセス信号DB_ACSと、OR回路54の出力信号との論理積信号を制御信号CNTとして出力する。データバスアクセス信号DB_ACSがハイレベル(アサート状態)であって、且つ、CPU20からのリードイネーブル信号RE1及びライトイネーブル信号WE1が共にローレベル(ネゲート状態)であるときにのみ、制御信号CNTはハイレベルとなり、それ以外のときにおいて制御信号CNTはローレベルとなる。信号CNTにおいて、“0”の値にローレベルが割り当てられ、“1”の値にローレベルが割り当てられる。故に、セレクタ27は、制御信号CNTがローレベルであるときにCPU選択状態となり、制御信号CNTがハイレベルであるときにデバッガ選択状態となる。AND回路55から出力される制御信号CNTは、FF53のリセット端子に入力されると共にFF56のデータ入力端子に入力される。
FF56は、CPUクロックに同期して動作するD型のフリップフロップであり、CPUクロックを受けるクロック入力端子と、データ入力端子(D端子)及びデータ出力端子(Q端子)を備える。FF56は、自身のデータ入力端子への入力信号(CNT)をCPUクロックのアップエッジに同期して取り込み及び保持し、保持した信号を自身のデータ出力端子から出力する。FF56の出力信号を、データバスアクセス終了信号と称し、符号“END_DB_ACS_D”にて表す。データバスアクセス終了信号END_DB_ACS_Dは、制御信号CNTを、CPUクロックにおける1クロック分だけ遅延させた信号となる。
AND回路57は、FF56からのデータバスアクセス終了信号END_DB_ACS_Dと、図示されない回路から提供されるモード信号M_RDとの論理積信号を出力する。故に、信号END_DB_ACS及びM_RDが共にハイレベルであるときにのみ、AND回路57の出力信号はハイレベルとなり、それ以外ではローレベルとなる。リードコマンドの受信に応答してデバッグ制御部21によりリードアクセスが行われるとき、モード信号M_RDはハイレベルとされており、それ以外のときにおいてモード信号M_RDはローレベルとされている。
セレクタ58は、第1入力端子、第2入力端子及び出力端子を有し、AND回路57の出力信号がローレベルであるときには、第1入力端子に加わるデータを自身の出力端子から出力し、AND回路57の出力信号がハイレベルであるときには、第2入力端子に加わるデータを自身の出力端子から出力する。セレクタ58の第1入力端子にはラッチ回路59の出力データが入力される。セレクタ58の第2入力端子は、データバス22におけるリードデータRDを伝搬するための配線に接続される。故に、データメモリ30からリードデータRDがデータバス22に出力されているとき、当該リードデータRDがセレクタ58の第2入力端子に入力される。
ラッチ回路59は、CPUクロックを受けるクロック入力端子と、セレクタ58の出力端子に接続されたデータ入力端子(D端子)と、セレクタ58の第1入力端子に接続されたデータ出力端子(Q端子)と、を備える。ラッチ回路59はリードデータRDのビット数分のD型フリップフロップから成る。ラッチ回路59は、CPUクロックのアップエッジに同期して、セレクタ58の出力端子からのデータをラッチし(取り込んで保持し)、ラッチしたデータを自身のデータ出力端子から出力する。ラッチ回路59のデータ出力端子からの出力データをデバッガリードデータと称し、符号“DB_RD”にて参照する。
AND回路57の出力信号がハイレベルとなることで実現されるラッチ回路59でのリードデータRDのラッチは、AND回路57の出力信号がローレベルとなった後、上述のセレクタ58及びラッチ回路59の協働により、AND回路57の出力信号が次回にハイレベルとなるまで維持される。
リードコマンド又はライトコマンドの受信に関わる動作の流れについて説明する。リードコマンド又はライトコマンドの受信が無い場合においては、信号S_DB_ACS及びDB_ACSがローレベルに維持されており、セレクタ27はCPU選択状態にあってCPU20のみがデータバス22にアクセス可能となる。
デバッグ制御部21においてリードコマンド又はライトコマンドが受信されると、データバスアクセス開始信号S_DB_ACSがハイレベルとされることで、デバッグ制御部21によるデータバス22へのアクセス開始が要求され、この要求はハイレベルのデータバスアクセス信号DB_ACSとしてAND回路55に伝達される。
一方において、デバッグ制御部21にてリードコマンドを受信した場合には、リードアクセス用の信号がデバッグ制御部21からセレクタ27に出力される。リードアクセス用の信号は、リードコマンドに応じたアドレス信号ADD2と、“1”のリードイネーブル信号RE2と、から成る。この際、アドレス信号ADD2にて指定されるアドレスは、リードコマンドにて指定されるアクセス対象アドレスと一致する。セレクタ27に対するリードアクセス用の信号の出力は、信号DB_ACSのアップエッジと同時に或いは信号DB_ACSのアップエッジが生じる前から開始され、リードコマンドに応答したリードアクセスの完了とともに終了する。
これに対し、デバッグ制御部21にてライトコマンドを受信した場合には、ライトアクセス用の信号がデバッグ制御部21からセレクタ27に出力される。ライトアクセス用の信号は、ライトコマンドに応じたアドレス信号ADD2及びライトデータWD2と、“1”のライトイネーブル信号WE2と、から成る。この際、アドレス信号ADD2にて指定されるアドレスは、ライトコマンドにて指定されるアクセス対象アドレスと一致する。ライトデータWD2は、ライトコマンドにて指定されるライトデータと一致する。セレクタ27に対するライトアクセス用の信号の出力は、信号DB_ACSのアップエッジと同時に或いは信号DB_ACSのアップエッジが生じる前から開始され、ライトコマンドに応答したライトアクセスの完了とともに終了する。
データバスアクセス信号DB_ACSがハイレベルであっても、CPU20からのリードイネーブル信号RE1及びライトイネーブル信号WE1の何れかがハイレベルであるときには、CPU20がデータバス22に何らかのアクセスしていることになるので、CPU20のアクセスを阻害しないようCPU選択状態を維持し、デバッグ制御部21による実際のアクセスを待機する。
データバスアクセス信号DB_ACSがハイレベルである場合において、CPU20からのリードイネーブル信号RE1及びライトイネーブル信号WE1が共にローレベルであるときには、CPU20によるデータバス22へのアクセスが行われていないことになるので、AND回路55からハイレベルの制御信号CNTを出力することでセレクタ27のデバッガ選択状態を実現し、デバッグ制御部21による所望のアクセス(リードアクセス又はライトアクセス)を実行する。ここにおける所望のアクセスは、リードコマンドが受信されていた場合には上記リードアクセス用の信号(ADD2、RE2)をセレクタ27を介してデータバス22に出力することで実現され、ライトコマンドが受信されていた場合には上記ライトアクセス用の信号(ADD2、WD2、WE2)をセレクタ27を介してデータバス22に出力することで実現される。
制御信号CNTがハイレベルとされると、FF53の機能によりCPUクロックの次のアップエッジで信号DC_ACSがクリアされる(即ちローレベルに切り替えられる)。この時点では、デバッグ制御部21による所望のアクセス(リードアクセス又はライトアクセス)は完了している。
デバッグ制御部21がリードアクセスを行った場合には、リードアクセスからCPUクロックの1クロック分遅れたタイミングにおいて、リードアクセスに対応するリードデータRDがデータバス22に現れる。このため、制御信号CNTを1クロック分遅延させた信号(END_DB_ACS_D)を用いて、当該リードデータRDをラッチ回路59にてラッチさせる。ラッチされたリードデータRDは、デバッガリードデータDB_RDとして、デバッグ制御部21から外部デバッグ装置12に送信され、外部デバッグ装置12を通じてホストPC13に送られる。
尚、CPUクロックに同期することなく、“1”のライトイネーブル信号REと共にアドレス信号ADDがデータバス22に入力された時点でリードデータRDがデータバス22に出力される構成も採用されうる。この場合にあっては、制御信号CNTを遅延させた信号(END_DB_ACS_D)を生成する必要はなく、制御信号CNTがハイレベルとされているタイミングでラッチ回路59によりリードデータRDをラッチさせれば良い。
このように、デバッグ制御部21は、外部デバッグ装置12からの所定コマンド(リードコマンド又はライトコマンド)の受信状態並びにCPU20からのリードイネーブル信号RE1及びライトイネーブル信号WE1の各状態に基づいて、セレクタ27の状態を制御し、セレクタ27がデバッガ選択状態であるときにセレクタ27を介してデータバス22にアクセスするよう、構成されている。
これにより、小規模な構成で且つCPU20のプログラム動作に一切の影響を与えることなく、データバス22にアクセスできるデバッグシステムを構築できる。
具体的には、デバッグ制御部21は、所定コマンドの受信に応答してデータバス22にアクセスする際、信号RE1又はWE1がアサート状態(ハイレベル)であれば、信号RE1及びWE1が共にネゲート状態(ローレベル)になるまで待機してから、セレクタ27をデバッガ選択状態にして所定コマンドに応じたアクセスをデータバス22に対して行う。即ち、信号RE1及びWE1が共にネゲート状態になるまで待機する待機動作を行い、信号RE1及びWE1が共にネゲート状態になったことを受けてセレクタ27をデバッガ選択状態にし、所定コマンドに応じたアクセスをデータバス22に対して行う。
デバッグ制御部21は、所定コマンドの受信に応答してデータバス22にアクセスする際、信号RE1及びWE1が共にネゲート状態であれば、上記待機を経ずに(待機動作を経ずに)、即時、セレクタ27をデバッガ選択状態にして所定コマンドに応じたアクセスをデータバス22に対して行うことができる。
デバッグ制御部21は、所定コマンドの受信に応答してデータバス22にアクセスする際、信号RE1及びWE1が共にネゲート状態であれば、上記待機を経ずに(待機動作を経ずに)、即時、セレクタ27をデバッガ選択状態にして所定コマンドに応じたアクセスをデータバス22に対して行うことができる。
より具体的には、デバッグ制御部21は、デバッグ制御部21によるデータバス22へのアクセスを可能にすることを指示するためのデータバスアクセス信号DB_ACSを生成する回路(51、52、53)を有する。所定コマンドの受信に応答してデータバスアクセス信号DB_ACSはネゲート状態(ローレベル)からアサート状態(ハイレベル)に切り替えられる。
そして、デバッグ制御部21は、データバスアクセス信号DB_ACSがネゲート状態からアサート状態に切り替えられたときにCPU20からの信号RE1又はWE1がアサート状態(ハイレベル)であれば、信号RE1及びWE1が共にネゲート状態(ローレベル)になるまで待機してから、セレクタ27をデバッガ選択状態にして所定コマンドに応じたアクセスをデータバス22に対して行う。即ち、信号RE1及びWE1が共にネゲート状態になるまで待機する待機動作を行い、信号RE1及びWE1が共にネゲート状態になったことを受けてセレクタ27をデバッガ選択状態にし、所定コマンドに応じたアクセスをデータバス22に対して行う。
一方、デバッグ制御部21は、データバスアクセス信号DB_ACSがネゲート状態(ローレベル)からアサート状態(ハイレベル)に切り替えられたときに信号RE1及びWE1が共にネゲート状態であれば、上記待機を経ずに(待機動作を経ずに)、即時、セレクタ27をデバッガ選択状態にして所定コマンドに応じたアクセスをデータバス22に対して行うことができる。
そして、デバッグ制御部21は、データバスアクセス信号DB_ACSがネゲート状態からアサート状態に切り替えられたときにCPU20からの信号RE1又はWE1がアサート状態(ハイレベル)であれば、信号RE1及びWE1が共にネゲート状態(ローレベル)になるまで待機してから、セレクタ27をデバッガ選択状態にして所定コマンドに応じたアクセスをデータバス22に対して行う。即ち、信号RE1及びWE1が共にネゲート状態になるまで待機する待機動作を行い、信号RE1及びWE1が共にネゲート状態になったことを受けてセレクタ27をデバッガ選択状態にし、所定コマンドに応じたアクセスをデータバス22に対して行う。
一方、デバッグ制御部21は、データバスアクセス信号DB_ACSがネゲート状態(ローレベル)からアサート状態(ハイレベル)に切り替えられたときに信号RE1及びWE1が共にネゲート状態であれば、上記待機を経ずに(待機動作を経ずに)、即時、セレクタ27をデバッガ選択状態にして所定コマンドに応じたアクセスをデータバス22に対して行うことができる。
また、上記構成を前提とし、デバッグ制御部21は、データバスアクセス信号DB_ACSがネゲート状態(ローレベル)であるときにおいてセレクタ27をCPU選択状態とする。そして、デバッグ制御部21は、所定コマンドの受信に応答してデータバスアクセス信号DB_ACSをネゲート状態(ローレベル)からアサート状態(ハイレベル)に切り替えた後、セレクタ27をデバッガ選択状態にして所定コマンドに応じたアクセスをデータバス22に対して行うと、データバスアクセス信号DB_ACSをアサート状態(ハイレベル)からネゲート状態(ローレベル)に戻し、これによってセレクタ27をCPU選択状態に戻す。
これにより、基本的にはセレクタ27がCPU選択状態とされ、デバッグ制御部21によるデータバス22へのアクセスが必要なときにのみ、CPU20の動作を阻害しない形でデバッガ選択状態が実現されるようになる。つまり、CPU20の動作に何ら影響が生じることはない。
また上述の説明から理解されるが、リードコマンドを受信した場合、デバッグ制御部21は、デバッガ選択状態においてリードアクセス用の信号の出力によりセレクタ27を介しリードコマンドに応じたリードアクセスをデータバス22に対して行う(換言すれば、リードコマンドに応じたリードアクセスをセレクタ27及びデータバス22を介しデータメモリ30に対して行う)。詳細には、このリードアクセスにおいて、デバッグ制御部21は、リードコマンドにより指定されたアドレス(アクセス対象アドレス)の記憶領域内のデータをリードデータRDとしてデータメモリ30から取得するためのアクセスをセレクタ27を介しデータバス22に対して行い(換言すれば、セレクタ27及びデータバス22を介しデータメモリ30に対して行い)、これによって得られたリードデータRDを外部デバッグ装置12に対して送信する。
一方、ライトコマンドを受信した場合、デバッグ制御部21は、デバッガ選択状態においてライトアクセス用の信号の出力によりセレクタ27を介しライトコマンドに応じたライトアクセスをデータバス22に対して行う(換言すれば、ライトコマンドに応じたライトアクセスをセレクタ27及びデータバス22を介しデータメモリ30に対して行う)。詳細には、このライトアクセスにおいて、デバッグ制御部21は、ライトコマンドにより指定されたアドレス(アクセス対象アドレス)の記憶領域に対しライトコマンドにより指定されたライトデータを書き込むためのアクセスをセレクタ27を介しデータバス22に対して行う(換言すれば、セレクタ27及びデータバス22を介しデータメモリ30に対して行う)。
[タイミングチャート]
図6及び図7にリードコマンドの受信に応答したLSI11のタイミングチャートを示し、図8及び図9にライトコマンドの受信に応答したLSI11のタイミングチャートを示す。但し、図6、図7、図8、図9には、夫々、ケースC_R1、C_R2、ケースC_W1、ケースC_W2におけるタイミングチャートが示されている。
図6のケースC_R1は、デバッグ制御部21がリードアクセスを行おうとした際にCPU20のアクセスと競合が生じなかったケースである。
図7のケースC_R2は、デバッグ制御部21がリードアクセスを行おうとした際にCPU20のアクセスと競合が生じたケースである。
図8のケースC_W1は、デバッグ制御部21がライトアクセスを行おうとした際にCPU20のアクセスと競合が生じなかったケースである。
図9のケースC_W2は、デバッグ制御部21がライトアクセスを行おうとした際にCPU20のアクセスと競合が生じたケースである。
図6及び図7にリードコマンドの受信に応答したLSI11のタイミングチャートを示し、図8及び図9にライトコマンドの受信に応答したLSI11のタイミングチャートを示す。但し、図6、図7、図8、図9には、夫々、ケースC_R1、C_R2、ケースC_W1、ケースC_W2におけるタイミングチャートが示されている。
図6のケースC_R1は、デバッグ制御部21がリードアクセスを行おうとした際にCPU20のアクセスと競合が生じなかったケースである。
図7のケースC_R2は、デバッグ制御部21がリードアクセスを行おうとした際にCPU20のアクセスと競合が生じたケースである。
図8のケースC_W1は、デバッグ制御部21がライトアクセスを行おうとした際にCPU20のアクセスと競合が生じなかったケースである。
図9のケースC_W2は、デバッグ制御部21がライトアクセスを行おうとした際にCPU20のアクセスと競合が生じたケースである。
図6~図9に示される波形y1~y19は、図6~図9間で互いに同じ信号の波形を示しているが、それらの波形の詳細は図6~図9間で部分的に異なる。まず、各波形が指し示すものについて説明する。
波形y1はデバッガクロックの波形を示し、波形y5はCPUクロックの波形を示す。上述したように、デバッグ制御部21の一部はデバッガクロックに同期して動作し、デバッガクロックのアップエッジを契機に、自身への入力信号を取り込んだり、出力すべき信号のレベルを変化させたり、自身の状態を変化させたりする。CPUクロックに同期して動作するデバッグ制御部21の残部及びCPU20は、CPUクロックのアップエッジを契機に、自身への入力信号を取り込んだり、出力すべき信号のレベルを変化させたり、自身の状態を変化させたりする。時間の経過につれて、タイミングt1、t2、t3、t4、t5、t6及びt7が、この順番で訪れる。タイミングt1はデバッガクロックにおける或る1つのアップエッジタイミングである。タイミングt2、t3、t4、t5、t6及びt7の夫々において、CPUクロックのアップエッジが生じる。タイミングt2及びt3間、タイミングt3及びt4間、タイミングt4及びt5間、タイミングt5及びt6間、タイミングt6及びt7間の時間長さは、全て、CPUクロックの1周期に等しい。
波形y2は、デバッガデータを表しており、外部デバッグ装置12からデバッグ制御部21へ送信される信号を模式的に示したものである。デバッガデータは、リードコマンド又はライトコマンドを構成するデータを含む。
波形y3はリードコマンドに基づくリード要求信号RD_PLSの波形であり、波形y4はライトコマンドに基づくライト要求信号WR_PLSである(図5も参照)。
CPU20には、次にフェッチされるべき命令が格納された、プログラムメモリ29上の番地(以下、プログラムメモリアドレスと称する)をカウント及び指定するプログラムカウンタが設けられており、プログラムメモリリードイネーブル信号がハイレベルであるときのみ、プログラムカウンタを利用してプログラムメモリアドレスがCPUクロックに同期し且つCPUクロックの周期にて順次更新されてゆく。図6~図9において、“y6”はプログラムメモリアドレスの時系列変化を表しており、“y7”にてプログラムメモリリードイネーブル信号が示されている。図6~図9にて想定される区間では、プログラムメモリリードイネーブル信号がハイレベルに維持されている。
プログラムメモリ29から必要な命令を読み出して取得する動作はフェッチと称される。CPU20におけるプログラムの実行状態を示すステートの内、プログラムを構成する命令のフェッチ及び実行が行われるステートはフェッチステートと称される。フェッチステートにおいて、CPU20はプログラムメモリアドレスに示された命令をフェッチしてラッチする。図6~図9において、“y8”はフェッチを通じてラッチされた命令(命令コード)の時系列変化を表しており、“y9”はステートマシンの状態の時系列変化を表している。ステートマシンは、CPU20に設けられたレジスタにて構成され、CPU20におけるプログラムの実行状態を制御する。図6~図9にて想定される区間では、CPU20のステートがフェッチステートに維持されている。
図6~図9において、波形y10、y11は、夫々、CPU20からのリードイネーブル信号RE1、ライトイネーブル信号WE1の波形を示す。図6~図9において、波形y12、y13、y14、y18は、夫々、デバッグ制御部21によるデータバスアクセス開始信号S_DB_ACS、データバスアクセス信号DB_ACS、制御信号CNT、データバスアクセス終了信号END_DB_ACS_Dの波形を示す。図6~図9において、波形y15、y16は、夫々、データバス22におけるリードイネーブル信号RE、ライトイネーブル信号WEの波形を示す。“y17”はデータバス22に表れるリードデータRDを表しており、“y19”はラッチ回路59(図5参照)にてラッチされるデバッガリードデータDB_RDを表している。“y17” 及び“y19”において有意な値を持たないデータRD及びDB_RDを“ 0”で図示している。
―――ケースC_R1―――
図6のケースC_R1における動作を説明する。ケースC_R1では、リードコマンドの受信に基づきタイミングt1を起点にリード要求信号RD_PLSにパルスが生じている(タイミングt1にてリード要求信号RD_PLSにアップエッジが生じている)。リード要求信号RD_PLSのパルスがCPUクロックにて同期されることでデータバスアクセス開始信号S_DB_ACSにパルスが生じる。即ち、タイミングt2及びt3間にて信号S_DB_ACSがハイレベルとなる。そうすると、図5のFF53の機能によりタイミングt3にてデータバスアクセス信号DB_ACSにアップエッジが生じる。
図6のケースC_R1における動作を説明する。ケースC_R1では、リードコマンドの受信に基づきタイミングt1を起点にリード要求信号RD_PLSにパルスが生じている(タイミングt1にてリード要求信号RD_PLSにアップエッジが生じている)。リード要求信号RD_PLSのパルスがCPUクロックにて同期されることでデータバスアクセス開始信号S_DB_ACSにパルスが生じる。即ち、タイミングt2及びt3間にて信号S_DB_ACSがハイレベルとなる。そうすると、図5のFF53の機能によりタイミングt3にてデータバスアクセス信号DB_ACSにアップエッジが生じる。
図6のケースC_R1では、タイミングt3及びt4間のクロック区間でCPU20がデータバス22へのアクセスを行っていない(即ち信号RE1及びWE1が共にローレベルである)。故に、タイミングt3にて制御信号CNTにもアップエッジが生じる。制御信号CNTにアップエッジが生じると、FF53の機能により次のCPUクロックのアップエッジタイミングt4にてデータバスアクセス信号DB_ACS及び制御信号CNTにダウンエッジが生じる。
上述したように、デバッグ制御部21からセレクタ27に対するリードアクセス用の信号の出力は、信号DB_ACSのアップエッジと同時に或いは信号DB_ACSのアップエッジが生じる前から行われている。このため、制御信号CNTがハイレベルとなっている区間(即ちタイミングt3及びt4間)において、デバッグ制御部21からのリードアクセス用の信号に含まれる“1”の信号RE2(即ちハイレベルの信号RE2)が信号REとしてデータバス22に現れる。
次のクロック区間であるタイミングt4及びt5間では、デバッグ制御部21からのリードアクセス用の信号に基づいてデータメモリ30から出力されるリードデータRDがデータバス22に現れ、またFF56の機能により信号END_DB_ACS_Dがハイレベルとなる。結果、タイミングt4及びt5間にてデータバス22に現れていたリードデータRDが、タイミングt5におけるCPUクロックのアップエッジに応答してラッチ回路59によりデバッガリードデータDB_RDとしてラッチされる。
―――ケースC_R2―――
図7のケースC_R2における動作を説明する。図7のケースC_R2において、タイミングt3にてデータバスアクセス信号DB_ACSにアップエッジが生じるまでの動作は、図6のケースC_R1と同様である。
図7のケースC_R2における動作を説明する。図7のケースC_R2において、タイミングt3にてデータバスアクセス信号DB_ACSにアップエッジが生じるまでの動作は、図6のケースC_R1と同様である。
図7のケースC_R2では、タイミングt3及びt4間のクロック区間でCPU20がデータバス22へリードアクセスを行っている(即ち信号RE1がハイレベルである)。このため、タイミングt3及びt4間でデータバスアクセス信号DB_ACSがハイレベルであるものの制御信号CNTはローレベルに維持される。タイミングt3及びt4間におけるハイレベルの信号REはCPU20からのハイレベルの信号RE1に基づいている。
その後、図7のケースC_R2では、タイミングt4及びt5間のクロック区間でCPU20がデータバス22へのアクセスを行っていない(即ち信号RE1及びWE1が共にローレベルである)。このため、タイミングt4にて制御信号CNTにアップエッジが生じる。制御信号CNTにアップエッジが生じると、FF53の機能により次のCPUクロックのアップエッジタイミングt5にてデータバスアクセス信号DB_ACS及び制御信号CNTにダウンエッジが生じる。制御信号CNTがハイレベルとなっている区間(即ちタイミングt4及びt5間)において、デバッグ制御部21からのリードアクセス用の信号に含まれる“1”の信号RE2(即ちハイレベルの信号RE2)が信号REとしてデータバス22に現れる。
次のクロック区間であるタイミングt5及びt6間では、デバッグ制御部21からのリードアクセス用の信号に基づいてデータメモリ30から出力されるリードデータRDがデータバス22に現れ、またFF56の機能により信号END_DB_ACS_Dがハイレベルとなる。結果、タイミングt5及びt6間にてデータバス22に現れていたリードデータRDが、タイミングt6におけるCPUクロックのアップエッジに応答してラッチ回路59によりデバッガリードデータDB_RDとしてラッチされる。
図7のケースC_R2では、タイミングt3及びt4間の区間が、信号RE1及びWE1が共にネゲート状態(“0”)になるまで待機している区間に相当する。待機の長さは、図7の例ではCPUクロックの1周期分となっているが、CPUクロックの複数周期分に及ぶこともある。また、待機の要因は、図7の例ではハイレベルの信号RE1であるが、ハイレベルのWE1であり得る。
図6のケースC_R1及び図7のケースC_R2の何れにおいても、CPU20はプログラムの実行動作を停止させる必要は無く、デバッグ制御部21がデータバス22にアクセスしている最中を含め、フェッチステートが維持されて命令が順次実行されている。外部デバッグ装置12に対するデバッガリードデータDB_RDの送信もCPU20によるプログラムの実行に並行して行われ、CPU20によるプログラムの実行に影響を与えない。
―――ケースC_W1―――
図8のケースC_W1における動作を説明する。ケースC_W1では、ライトコマンドの受信に基づきタイミングt1を起点にライト要求信号WR_PLSにパルスが生じている(タイミングt1にてライト要求信号WR_PLSにアップエッジが生じている)。ライト要求信号WR_PLSのパルスがCPUクロックにて同期されることでデータバスアクセス開始信号S_DB_ACSにパルスが生じる。即ち、タイミングt2及びt3間にて信号S_DB_ACSがハイレベルとなる。そうすると、図5のFF53の機能によりタイミングt3にてデータバスアクセス信号DB_ACSにアップエッジが生じる。
図8のケースC_W1における動作を説明する。ケースC_W1では、ライトコマンドの受信に基づきタイミングt1を起点にライト要求信号WR_PLSにパルスが生じている(タイミングt1にてライト要求信号WR_PLSにアップエッジが生じている)。ライト要求信号WR_PLSのパルスがCPUクロックにて同期されることでデータバスアクセス開始信号S_DB_ACSにパルスが生じる。即ち、タイミングt2及びt3間にて信号S_DB_ACSがハイレベルとなる。そうすると、図5のFF53の機能によりタイミングt3にてデータバスアクセス信号DB_ACSにアップエッジが生じる。
図8のケースC_W1では、タイミングt3及びt4間のクロック区間でCPU20がデータバス22へのアクセスを行っていない(即ち信号RE1及びWE1が共にローレベルである)。故に、タイミングt3にて制御信号CNTにもアップエッジが生じる。制御信号CNTにアップエッジが生じると、FF53の機能により次のCPUクロックのアップエッジタイミングt4にてデータバスアクセス信号DB_ACS及び制御信号CNTにダウンエッジが生じる。
上述したように、デバッグ制御部21からセレクタ27に対するライトアクセス用の信号の出力は、信号DB_ACSのアップエッジと同時に或いは信号DB_ACSのアップエッジが生じる前から行われている。このため、制御信号CNTがハイレベルとなっている区間(即ちタイミングt3及びt4間)において、デバッグ制御部21からのライトアクセス用の信号に含まれる“1”の信号WE2(即ちハイレベルの信号WE2)が信号WEとしてデータバス22に現れ、当該区間においてライトコマンドに基づくデバッグ制御部21のライトアクセスが実行される。
次のクロック区間であるタイミングt4及びt5間では、FF56の機能により信号END_DB_ACS_Dがハイレベルとなるが、ライトアクセスの実行時には信号END_DB_ACS_Dは有意に機能しない。
―――ケースC_W2―――
図9のケースC_W2における動作を説明する。図9のケースC_W2において、タイミングt3にてデータバスアクセス信号DB_ACSにアップエッジが生じるまでの動作は、図8のケースC_W1と同様である。
図9のケースC_W2における動作を説明する。図9のケースC_W2において、タイミングt3にてデータバスアクセス信号DB_ACSにアップエッジが生じるまでの動作は、図8のケースC_W1と同様である。
図9のケースC_W2では、タイミングt3及びt4間のクロック区間でCPU20がデータバス22へリードアクセスを行っている(即ち信号RE1がハイレベルである)。このため、タイミングt3及びt4間でデータバスアクセス信号DB_ACSがハイレベルであるものの制御信号CNTはローレベルに維持される。タイミングt3及びt4間におけるハイレベルの信号REはCPU20からのハイレベルの信号RE1に基づいている。
その後、図9のケースC_W2では、タイミングt4及びt5間のクロック区間でCPU20がデータバス22へのアクセスを行っていない(即ち信号RE1及びWE1が共にローレベルである)。このため、タイミングt4にて制御信号CNTにアップエッジが生じる。制御信号CNTにアップエッジが生じると、FF53の機能により次のCPUクロックのアップエッジタイミングt5にてデータバスアクセス信号DB_ACS及び制御信号CNTにダウンエッジが生じる。制御信号CNTがハイレベルとなっている区間(即ちタイミングt4及びt5間)において、デバッグ制御部21からのライトアクセス用の信号に含まれる“1”の信号WE2(即ちハイレベルの信号WE2)が信号WEとしてデータバス22に現れ、当該区間においてライトコマンドに基づくデバッグ制御部21のライトアクセスが実行される。
次のクロック区間であるタイミングt5及びt6間では、FF56の機能により信号END_DB_ACS_Dがハイレベルとなるが、ライトアクセスの実行時には信号END_DB_ACS_Dは有意に機能しない。
図9のケースC_W2では、タイミングt3及びt4間の区間が、信号RE1及びWE1が共にネゲート状態(“0”)になるまで待機している区間に相当する。待機の長さは、図9の例ではCPUクロックの1周期分となっているが、CPUクロックの複数周期分に及ぶこともある。また、待機の要因は、図9の例ではハイレベルの信号RE1であるが、ハイレベルのWE1であり得る。
図8のケースC_W1及び図9のケースC_W2の何れにおいても、CPU20はプログラムの実行動作を停止させる必要は無く、デバッグ制御部21がデータバス22にアクセスしている最中を含め、フェッチステートが維持されて命令が順次実行されている。
<<第2実施形態>>
本発明の第2実施形態を説明する。第2実施形態では、上述の第1実施形態に対して適用可能な幾つかの応用技術、変形技術などを説明する。第2実施形態は以下の実施例EX2_1~EX2_5を含む。
本発明の第2実施形態を説明する。第2実施形態では、上述の第1実施形態に対して適用可能な幾つかの応用技術、変形技術などを説明する。第2実施形態は以下の実施例EX2_1~EX2_5を含む。
[実施例EX2_1]
実施例EX2_1を説明する。LSI11内にデータバス22に対してアクセスを行うCPU20が2以上設けられていても良い。この場合、2以上のCPU20が同時にデータバス22に対してアクセスを行うことが無いようにするための調停回路(不図示)がLSI11に設けられる。調停回路の機能により、2以上のCPU20の内の1つのCPUに対してデータバス22へのアクセス権限が付与され、2以上のCPU20の内、アクセス権限が付与されたCPU20の出力信号及び出力データのみがデータバス22に伝達される。
実施例EX2_1を説明する。LSI11内にデータバス22に対してアクセスを行うCPU20が2以上設けられていても良い。この場合、2以上のCPU20が同時にデータバス22に対してアクセスを行うことが無いようにするための調停回路(不図示)がLSI11に設けられる。調停回路の機能により、2以上のCPU20の内の1つのCPUに対してデータバス22へのアクセス権限が付与され、2以上のCPU20の内、アクセス権限が付与されたCPU20の出力信号及び出力データのみがデータバス22に伝達される。
このような構成に対して第1実施形態の方法を適用する場合にあっては、アクセス権限が付与されたCPU20から、セレクタ27に対して信号RE1、WE1、ADD1及びWD1が供給されると考えれば良い。
[実施例EX2_2]
実施例EX2_2を説明する。図1の構成においてCPU20はデータバス22に対してアクセスを行う処理部の例であるが、本発明において、そのような処理部はCPUに限定されず、データバス22に対してアクセスを行う任意の部位が処理部に成り得る。実施例EX2_1に示したように、2以上のCPU20がLSI11に設けられている場合には、2以上のCPU20と調停回路とで処理部が構成されていると考えることができる、或いは、アクセス権限が付与されたCPU20が処理部に相当すると考えることができる。
実施例EX2_2を説明する。図1の構成においてCPU20はデータバス22に対してアクセスを行う処理部の例であるが、本発明において、そのような処理部はCPUに限定されず、データバス22に対してアクセスを行う任意の部位が処理部に成り得る。実施例EX2_1に示したように、2以上のCPU20がLSI11に設けられている場合には、2以上のCPU20と調停回路とで処理部が構成されていると考えることができる、或いは、アクセス権限が付与されたCPU20が処理部に相当すると考えることができる。
[実施例EX2_3]
実施例EX2_3を説明する。上述の主旨を損なわない形で、任意の信号に関して、ハイレベルとローレベルの関係を逆にしても良い。これに関連するが、任意の信号について正論理及び負論理の何れを採用するかは任意である。
実施例EX2_3を説明する。上述の主旨を損なわない形で、任意の信号に関して、ハイレベルとローレベルの関係を逆にしても良い。これに関連するが、任意の信号について正論理及び負論理の何れを採用するかは任意である。
[実施例EX2_4]
実施例EX2_4を説明する。LSI11を構成する各回路素子は半導体集積回路の形態で形成され、当該半導体集積回路を、樹脂にて構成された筐体(パッケージ)内に封入することで半導体装置が構成される。但し、複数のディスクリート部品を用いてLSI11内の回路と同等の回路を構成するようにしても良い。
実施例EX2_4を説明する。LSI11を構成する各回路素子は半導体集積回路の形態で形成され、当該半導体集積回路を、樹脂にて構成された筐体(パッケージ)内に封入することで半導体装置が構成される。但し、複数のディスクリート部品を用いてLSI11内の回路と同等の回路を構成するようにしても良い。
[実施例EX2_5]
実施例EX2_5を説明する。本発明に係るデバッグシステムは、LSI11にて例示される半導体装置と、半導体装置に接続された外部装置と、を備える。ここにおける外部装置は、図1の構成においては、外部デバッグ装置12を指すと解しても良いし、外部デバッグ装置12及びホストPC13の双方を含むと解しても良い。
実施例EX2_5を説明する。本発明に係るデバッグシステムは、LSI11にて例示される半導体装置と、半導体装置に接続された外部装置と、を備える。ここにおける外部装置は、図1の構成においては、外部デバッグ装置12を指すと解しても良いし、外部デバッグ装置12及びホストPC13の双方を含むと解しても良い。
本発明の実施形態は、特許請求の範囲に示された技術的思想の範囲内において、適宜、種々の変更が可能である。以上の実施形態は、あくまでも、本発明の実施形態の例であって、本発明ないし各構成要件の用語の意義は、以上の実施形態に記載されたものに制限されるものではない。上述の説明文中に示した具体的な数値は、単なる例示であって、当然の如く、それらを様々な数値に変更することができる。
10 デバッグシステム
11 LSI
12 外部デバッグ装置
13 ホストコンピュータ
14 デバッグソフトウェア
20 CPU
21 デバッグ制御部
22 データバス
23 ROM
24 RAM
25 ペリフェラル
26 レジスタ
27 セレクタ
28 プログラムバス
29 プログラムメモリ
30 データメモリ
11 LSI
12 外部デバッグ装置
13 ホストコンピュータ
14 デバッグソフトウェア
20 CPU
21 デバッグ制御部
22 データバス
23 ROM
24 RAM
25 ペリフェラル
26 レジスタ
27 セレクタ
28 プログラムバス
29 プログラムメモリ
30 データメモリ
Claims (10)
- データバスと、前記データバスに接続されたデータメモリと、前記データバスに接続されたセレクタと、プログラムを実行し且つ前記セレクタを介して前記データバスにアクセス可能な処理部と、外部装置との間で双方向通信が可能に構成され且つ前記セレクタを介して前記データバスにアクセス可能なデバッグ制御部と、を備えた半導体装置であって、
前記セレクタは、前記デバッグ制御部による制御に基づき、前記処理部からの第1信号及び前記デバッグ制御部からの第2信号の内、前記第1信号を前記データバスに伝達する第1選択状態、及び、前記第2信号を前記データバスに伝達する第2選択状態の何れかの状態をとり、
前記処理部から前記セレクタに出力される信号は、前記データメモリにリード動作を行わせるためのリードイネーブル信号、及び、前記データメモリにライト動作を行わせるためのライトイネーブル信号を含み、
前記デバッグ制御部は、前記外部装置からの所定コマンドの受信状態並びに前記処理部からの前記リードイネーブル信号及び前記ライトイネーブル信号の各状態に基づいて、前記セレクタの状態を制御し、前記セレクタが前記第2選択状態であるときに前記セレクタを介して前記データバスにアクセスする
ことを特徴とする半導体装置。 - 前記デバッグ制御部は、
前記所定コマンドの受信に応答して前記データバスにアクセスする際、前記リードイネーブル信号又は前記ライトイネーブル信号がアサート状態であれば、前記リードイネーブル信号及び前記ライトイネーブル信号が共にネゲート状態になるまで待機してから、前記セレクタを前記第2選択状態にして前記所定コマンドに応じたアクセスを前記データバスに対して行い、
前記所定コマンドの受信に応答して前記データバスにアクセスする際、前記リードイネーブル信号及び前記ライトイネーブル信号が共にネゲート状態であれば、前記待機を経ずに前記セレクタを前記第2選択状態にして前記所定コマンドに応じたアクセスを前記データバスに対して行う
ことを特徴とする請求項1に記載の半導体装置。 - 前記デバッグ制御部は、前記デバッグ制御部による前記データバスへのアクセスを可能にすることを指示するためのデータバスアクセス信号を生成する回路を有し、
前記所定コマンドの受信に応答して前記データバスアクセス信号はネゲート状態からアサート状態に切り替えられ、
前記デバッグ制御部は、
前記データバスアクセス信号がネゲート状態からアサート状態に切り替えられたときに前記リードイネーブル信号又は前記ライトイネーブル信号がアサート状態であれば、前記リードイネーブル信号及び前記ライトイネーブル信号が共にネゲート状態になるまで待機してから、前記セレクタを前記第2選択状態にして前記所定コマンドに応じたアクセスを前記データバスに対して行い、
前記データバスアクセス信号がネゲート状態からアサート状態に切り替えられたときに前記リードイネーブル信号及び前記ライトイネーブル信号が共にネゲート状態であれば、前記待機を経ずに前記セレクタを前記第2選択状態にして前記所定コマンドに応じたアクセスを前記データバスに対して行う
ことを特徴とする請求項2に記載の半導体装置。 - 前記デバッグ制御部は、
前記データバスアクセス信号がネゲート状態であるときにおいて前記セレクタを前記第1選択状態とし、
前記所定コマンドの受信に応答して前記データバスアクセス信号をネゲート状態からアサート状態に切り替えた後、前記セレクタを前記第2選択状態にして前記所定コマンドに応じたアクセスを前記データバスに対して行うと、前記データバスアクセス信号をアサート状態からネゲート状態に戻し、これによって前記セレクタを前記第1選択状態に戻す
ことを特徴とする請求項3に記載の半導体装置。 - 前記デバッグ制御部は、前記所定コマンドが受信される前において前記セレクタを前記第1選択状態とし、前記所定コマンドの受信後に前記セレクタを前記第1選択状態から前記第2選択状態に切り替え、前記所定コマンドに応じたアクセスを前記データバスに対して行うと前記セレクタを前記第1選択状態に戻す
ことを特徴とする請求項1~4の何れかに記載の半導体装置。 - 前記所定コマンドとしてリードコマンドが受信された場合、
前記デバッグ制御部は、前記セレクタが前記第2選択状態とされているときに前記リードコマンドに応じたリードアクセスを前記データバスに対して行い、その後、前記リードアクセスにより前記データメモリから取得したリードデータを前記外部装置に対して送信する
ことを特徴とする請求項1~5の何れかに記載の半導体装置。 - 前記データメモリは複数のアドレスが割り当てられた複数の記憶領域を有し、
前記リードコマンドにて前記複数のアドレスの何れかが指定され、
前記デバッグ制御部は、前記リードコマンドに応じた前記リードアクセスにおいて、前記リードコマンドにて指定されたアドレスの記憶領域内のデータを前記リードデータとして前記データメモリから取得するためのアクセスを前記セレクタを介し前記データバスに対して行い、これによって得られた前記リードデータを前記外部装置に対して送信する
ことを特徴とする請求項6に記載の半導体装置。 - 前記所定コマンドとしてライトコマンドが受信された場合、
前記デバッグ制御部は、前記セレクタが前記第2選択状態とされているときに前記ライトコマンドに応じたライトアクセスを前記データバスに対して行い、
前記ライトアクセスにより、前記ライトコマンドに応じたデータの書き込みが前記データメモリにて行われる
ことを特徴とする請求項1~5の何れかに記載の半導体装置。 - 前記データメモリは複数のアドレスが割り当てられた複数の記憶領域を有し、
前記ライトコマンドにて前記複数のアドレスの何れかが指定されるとともにライトデータが指定され、
前記デバッグ制御部は、前記ライトコマンドに応じた前記ライトアクセスにおいて、前記ライトコマンドにて指定されたアドレスの記憶領域に前記ライトデータを書き込むためのアクセスを前記セレクタを介し前記データバスに対して行う
ことを特徴とする請求項8に記載の半導体装置。 - 請求項1~9の何れかに記載の半導体装置と、
前記半導体装置に接続され、前記半導体装置の前記デバッグ制御部に対して前記所定コマンドを送信可能な外部装置と、を備えた
ことを特徴とするデバッグシステム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021513538A JP7532344B2 (ja) | 2019-04-10 | 2020-03-17 | 半導体装置及びデバッグシステム |
US17/442,868 US11841782B2 (en) | 2019-04-10 | 2020-03-17 | Semiconductor device and debugging system |
DE112020001914.4T DE112020001914T5 (de) | 2019-04-10 | 2020-03-17 | Halbleitervorrichtung und fehlersuchsystem |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019074565 | 2019-04-10 | ||
JP2019-074565 | 2019-04-10 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2020209016A1 true WO2020209016A1 (ja) | 2020-10-15 |
Family
ID=72752011
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2020/011756 WO2020209016A1 (ja) | 2019-04-10 | 2020-03-17 | 半導体装置及びデバッグシステム |
Country Status (4)
Country | Link |
---|---|
US (1) | US11841782B2 (ja) |
JP (1) | JP7532344B2 (ja) |
DE (1) | DE112020001914T5 (ja) |
WO (1) | WO2020209016A1 (ja) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08286947A (ja) * | 1995-04-14 | 1996-11-01 | Mitsubishi Electric Corp | マイクロコンピュータ |
JP2001056803A (ja) * | 1999-08-19 | 2001-02-27 | Mitsubishi Electric Corp | マイクロコンピュータ |
JP2010225094A (ja) * | 2009-03-25 | 2010-10-07 | Fujitsu Semiconductor Ltd | 集積回路、デバッグ回路、デバッグコマンド制御方法 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5337107A (en) | 1977-08-20 | 1978-04-06 | Sumitomo Metal Ind Ltd | Mounting method for cooling apparatus of blast furnace |
JP2000242523A (ja) | 1999-02-22 | 2000-09-08 | Toshiba Corp | マイクロプロセッサおよびデバッグ装置 |
JP2002358232A (ja) * | 2001-05-31 | 2002-12-13 | Mitsubishi Electric Corp | メモリアクセス装置 |
JP2004086447A (ja) | 2002-08-26 | 2004-03-18 | Renesas Technology Corp | マイクロコンピュータ |
JP4976817B2 (ja) | 2006-11-06 | 2012-07-18 | オンセミコンダクター・トレーディング・リミテッド | プログラム処理装置及びプログラム処理方法 |
JP2009070195A (ja) | 2007-09-14 | 2009-04-02 | Sanyo Electric Co Ltd | プログラム処理システムおよびプログラム処理装置 |
JP2009276985A (ja) | 2008-05-14 | 2009-11-26 | Toshiba Corp | 半導体集積回路装置 |
JP2014186376A (ja) | 2013-03-21 | 2014-10-02 | Fujitsu Ltd | 障害箇所特定方法、スイッチング装置、障害箇所特定装置、及び情報処理装置 |
-
2020
- 2020-03-17 JP JP2021513538A patent/JP7532344B2/ja active Active
- 2020-03-17 US US17/442,868 patent/US11841782B2/en active Active
- 2020-03-17 WO PCT/JP2020/011756 patent/WO2020209016A1/ja active Application Filing
- 2020-03-17 DE DE112020001914.4T patent/DE112020001914T5/de active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08286947A (ja) * | 1995-04-14 | 1996-11-01 | Mitsubishi Electric Corp | マイクロコンピュータ |
JP2001056803A (ja) * | 1999-08-19 | 2001-02-27 | Mitsubishi Electric Corp | マイクロコンピュータ |
JP2010225094A (ja) * | 2009-03-25 | 2010-10-07 | Fujitsu Semiconductor Ltd | 集積回路、デバッグ回路、デバッグコマンド制御方法 |
Also Published As
Publication number | Publication date |
---|---|
US11841782B2 (en) | 2023-12-12 |
DE112020001914T5 (de) | 2022-01-20 |
JPWO2020209016A1 (ja) | 2020-10-15 |
US20220179770A1 (en) | 2022-06-09 |
JP7532344B2 (ja) | 2024-08-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US4112490A (en) | Data transfer control apparatus and method | |
US20150178426A1 (en) | Hardware simulation controller, system and method for functional verification | |
US20020143512A1 (en) | System simulator, simulation method and simulation program | |
JP5102789B2 (ja) | 半導体装置及びデータプロセッサ | |
US20070038795A1 (en) | Asynchronous bus interface and processing method thereof | |
JP2007310565A (ja) | システムlsi検証装置及びシステムlsi検証プログラム | |
WO2020209016A1 (ja) | 半導体装置及びデバッグシステム | |
JP2006268753A (ja) | Dma回路及びコンピュータシステム | |
JP5309938B2 (ja) | 要求処理装置、要求処理システムおよびアクセス試験方法 | |
TWI397855B (zh) | 減少接腳數之方法以及使用其之微處理器 | |
JP7202225B2 (ja) | 半導体装置及びデバッグシステム | |
JP2020140380A (ja) | 半導体装置及びデバッグシステム | |
Pereira et al. | Co-designed FreeRTOS deployed on FPGA | |
Mauroner et al. | Task priority aware SoC-bus for embedded systems | |
JP5850732B2 (ja) | 半導体装置及びその制御方法 | |
JP2004013289A (ja) | マイクロコントローラのオンチップデバッグ方法 | |
US6493775B2 (en) | Control for timed access of devices to a system bus | |
JP6416488B2 (ja) | 半導体装置 | |
US20070220331A1 (en) | Processor comprising an integrated debugging interface controlled by the processing unit of the processor | |
WO2011030498A1 (ja) | データ処理装置及びデータ処理方法 | |
JP3006487B2 (ja) | エミュレーション装置 | |
JPH11110342A (ja) | バス接続方法及び装置 | |
JP2004185060A (ja) | マイクロコンピュータ | |
CN118838648A (en) | Multi-flash memory control method and device, computer equipment and storage medium | |
KR19980059782A (ko) | 프로세서의 메모리 다중 액세스 회로 |
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: 20787235 Country of ref document: EP Kind code of ref document: A1 |
|
ENP | Entry into the national phase |
Ref document number: 2021513538 Country of ref document: JP Kind code of ref document: A |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 20787235 Country of ref document: EP Kind code of ref document: A1 |