A circuit having at least one processor and a microprogrammed machine for processing the data which enters or leaves the processor in order to input or output the data into/from the circuit in compliance with a communication protocol.
|
1. A circuit comprising at least one processor including a microprogrammed machine for processing data which enter or leave the processor in order to input or output the data into/from the circuit via pins in compliance with a communication protocol, wherein each pin allows the input or output of one bit of information, and the microprogrammed machine determines, in each of its clock cycles and in a single instruction:
which pins are in input mode and which pins are in output mode;
which value to assign to each pin;
which values to transmit to the processor; and
which signals to await before continuing to send or receive data.
2. The circuit as claimed in
a field allowing determination of which pins are in input mode and which pins are in output mode;
at least one field allowing determination of which value to assign to each pin in output mode;
a field allowing determination of which values to transmit to the processor; and
a field allowing determination of which signals to await before continuing to send or receive data;
such that the input/output mode of each pin, the value to be assigned to each pin, the values to be transmitted to the processor and the signals to await are determined in one clock cycle.
3. The circuit as claimed in
4. The circuit as claimed in
5. The circuit as claimed in
6. The circuit as claimed in
7. The circuit as claimed in
an operating frequency provided by an external peripheral; or
an operating frequency obtained by multiplying or dividing the operating frequency of the processor by an adjustable coefficient.
8. The circuit as claimed in
9. The circuit as claimed in
10. The circuit as claimed in
11. The circuit as claimed in
12. The circuit as claimed in
13. The circuit as claimed in
14. The circuit as claimed in
15. The circuit as claimed in
16. The circuit as claimed in
17. The circuit as claimed in
18. The circuit as claimed in
19. The circuit as claimed in
20. The circuit as claimed in
21. The circuit as claimed in
22. The circuit as claimed in
23. The circuit as claimed in
|
This application is the U.S. National Phase application under 35 U.S.C. §371 of International Application No. PCT/EP2008/065019, filed Nov. 5, 2008, and claims the benefit of French Patent Application No. 0708292, filed Nov. 27, 2007, all of which are incorporated by reference herein. The International Application was published on Jun. 4, 2009 as WO 2009/068419.
The present invention relates to a circuit having at least one processor. The circuit has a microprogrammed machine for processing the data which enter or leave the processor in order to input or output the data into/from the circuit in compliance with a communication protocol. It can be used in all fields using microprocessors or multiprocessor circuits.
Professional fields such as video surveillance, but also consumer fields such as that of cell phones, employ integrated circuits having one or more microprocessors. Often, these circuits are aimed at applications which, although very specific, are able to make use of numerous input/output interfaces.
On the one hand, these circuits often have to send and receive data in various formats which are not the one for the processor or processors. If each processor manages its own inputs/outputs, that takes all of its computation power. There is no longer any time for it to perform its application software processing. In fact, as it involves controlling the logic state of the outputs in each clock cycle, a processor does not even have the computation power necessary to manage its inputs/outputs. It therefore appears desirable for the circuit to have dedicated peripherals for managing the inputs and the outputs so as to free the processors.
On the other hand, however, these circuits, when in general use and not dedicated to an application defined during their design stage, will no doubt be required, in the course of their use, to send and receive data according to input/output protocols which are not yet known at the time of manufacture of the circuit! In this case, the provision of peripherals for managing the inputs/outputs is a problem.
A current solution implemented on general-use microprocessor or multiprocessor circuits involves implementing a large number of dedicated peripherals for managing the inputs/outputs aimed at various input/output protocols. This is a matter of providing the widest possible coverage, qualitatively and quantitatively, for the range of input/output interfaces which are liable to be used. An example of one such circuit according to the prior art can be found in an article which was presented to the ISSCC conference in February 2007 by B. Khailany et al. under the number 15.2. The article is entitled “A Programmable 512GOPS Stream Processor for Signal, Image and Video Processing”. This circuit has numerous peripherals for managing permanently wired inputs/outputs. Thus, the circuit will be permanently unsuited to an application which uses a new interface, for which no dedicated peripheral has been wired during manufacture. Moreover, an application may require the use of a given type of interface more times than there are dedicated peripherals for this type of interface. The circuit is thus permanently unsuited to such an application. Furthermore, it should not be forgotten that, in practice, most peripherals for managing inputs/outputs on such a circuit remain unused. This is because a given application uses only a limited number of interfaces among all the types of interface which are known at the time of manufacture of the circuit. Therefore, the circuit is often very bulky for no reason, since the majority of its surface holds unused peripherals.
To attempt to make up for these drawbacks, current processors use standard registers called “GPIOs”, according to the acronym for “General Purpose Inputs/Outputs”. The direction of use, whether at the input, at the output or at high impedance, is controlled by a register which can be loaded by the processor. The value of the outputs is programmed by another register, which is likewise loaded by the processor. The value of the inputs can be read by the processor. Thus, the inputs/outputs by a GPIO register are managed by the processor itself. This solution can therefore be applied only to interfaces which are sufficiently slow for the processor to be able to control them while retaining sufficient time for its application software tasks.
Another current solution is disclosed in the American patent U.S. Pat. No. 6,931,466. A low-level part of the protocol is managed by a processing processor, since some pins can be programmed as GPIOs and therefore controlled directly by the processing processor. An intermediate part of the protocol is managed by a dedicated DMA (“Direct Memory Access”) machine, the DMA machine being situated outside of the input/output peripherals. The low part of the protocol is managed by a state machine of “Pin State Machine” type, which is itself made up of a state register and a PLA (“Programmable Logic Array”). A major drawback of this solution is that a PLA is programmed by masking. Thus, even if it is possible to change the protocol by changing only a single manufacturing mask and not the whole set, it should be noted that once the circuit has been produced it is no longer possible to change the program! This solution therefore lacks flexibility and allows only fairly simple protocols to be addressed. In any case, it does not allow the processing processors to be freed completely.
A notable aim of an embodiment of the present invention is to provide programmable input/output peripherals which allow the circuit which receives them to be adapted to all the new input/output protocols. Thus, the circuit's processor or processors are permanently relieved of managing the inputs/outputs and can devote themselves fully to their application software tasks. In return, the inputs/outputs are seen as memories by the program of the processor or processors. The processors write their output data to a memory area corresponding to the desired peripheral and signal the availability of a certain quantity of data to the peripheral by means of a message. The peripheral according to the invention transmits the data from this memory area to the circuit's pins, according to the protocol for which it has been specifically programmed. Conversely, the peripheral according to the invention samples the data received on the pins according to the protocol for which the peripheral has been programmed. It arranges them in its memory area and signals to the processors the arrival of a certain quantity of data by means of a message or an interrupt. The processor first starts to read these data from the corresponding memory area when it wishes. To that end, the invention relates to a circuit having at least one processor and a microprogrammed machine for processing data which enter or leave the processor in order to input or output them into/from the circuit via pins in compliance with a communication protocol. Each pin allows the input or output of one bit of information. The microprogrammed machine determines, in each of its clock cycles and in a single instruction, which pins are in input mode and which pins are in output mode, which value to assign to each pin, which values to transmit to the processor or else which signals to await before continuing to send or receive data.
In one preferred embodiment, an instruction from the microprogrammed machine may have a field allowing determination of which pins are in input mode and which pins are in output mode, at least one field allowing determination of which value to assign to each pin in output mode, a field allowing determination of which values to transmit to the processor or else a field allowing determination of which signals to await before continuing to send or receive data. Thus, the input/output mode of each pin, the value to be assigned to each pin, the values to be transmitted to the processor and the signals to await can be determined in one clock cycle.
In one preferred embodiment, the microprogrammed machine may have an instruction register and a microprogram memory containing instructions which form a microprogram, wherein the register can be loaded with instructions from the microprogram and wherein the instructions allow processing of the data which enter or leave the processor in order to input or output them into/from the circuit in compliance with the communication protocol. Advantageously, the instructions can be modified in the microprogram memory such that the circuit can be adapted to any communication protocol.
By way of example, each instruction may have at least one field allowing deduction of the address of the next instruction to be executed in the microprogram memory.
In one embodiment, the circuit may have a network interface module between the microprogrammed machine and a communication network used by the processor. The processor and the microprogrammed machine can interchange the data by writing then reading them to/from a memory, wherein the memory contains the data only temporarily.
By way of example, a given set of adjacent pins may thus form an input/output port which can be used by the microprogrammed machine in order to input into the circuit the data on their way to the processor or in order to output from the circuit the data coming from the processor, in compliance with the communication protocol.
In one embodiment, each pin can be connected to an amplifier allowing a signal to be sent or received on the pin. The circuit may thus have a pin interface module between the memory and the amplifiers, wherein the instructions forming the microprogram control the transfer of the data between the memory and the amplifiers through the pin interface module.
In one preferred embodiment, the circuit may have a module allowing conversion of words in the format of the memory into words in a format suited to the number of pins available for inputting or outputting the data into/from the circuit in compliance with the communication protocol, the latter format being advantageously determined by the instructions forming the microprogram. 32-bit parallel data can be converted into 16-, 8-, 4- or 2-bit parallel data, and vice versa. 32-bit parallel data can be converted into serial data, and vice versa.
Advantageously, the circuit may have at least two microprogrammed machines for processing data which enter or leave the processor in order to input or output them into/from the circuit in compliance with communication protocols. Since two adjacent sets of pins can respectively be used by two machines, the circuit may have a shift module allowing a first machine to use, in addition to its own set of pins, pins in the adjacent set of the second machine, wherein the instructions forming the microprogram allow control of the shift module. The circuit may also have a shift module allowing the second machine to use, in turn, pins in an adjacent set of pins from a third microprogrammed machine. Since two spaces in the memory can respectively be used by two machines using adjacent ports, wherein the two spaces are divided into a plurality of memory buffers, a first machine can use, in addition to its own memory buffers and in proportion to the volume of data which it processes, memory buffers from the second machine. The second machine can likewise use, in turn, in proportion to the volume of data which it processes, memory buffers from a third microprogrammed machine using a port adjacent to its own.
Since the microprogrammed machine has a clock for clocking its processing cycles, the clock can provide an operating frequency from an external peripheral. The clock can likewise provide an operating frequency obtained by multiplying or dividing the operating frequency of the processor. The instructions forming the microprogram can allow selection of an operating frequency provided by an external peripheral or an operating frequency obtained by multiplying or dividing the operating frequency of the processor by an adjustable coefficient.
The circuit may have a module for recognizing the control data of the communication protocol, wherein the control data to be recognized are provided by the microprogrammed machine.
The microprogrammed machine may have a loop counting module.
The invention again has the main advantages that it allows optimization of the use of the memory and pin resources of the circuit. This is because the peripherals according to the invention can share the memory and pin resources among one another. If several input/output peripherals are necessary in order to communicate with several other circuits simultaneously, it is possible that the needs in terms of memory space and in terms of the number of pins are different. It is thus beneficial to be able to distribute these resources among the peripherals on the best terms, so as to limit the total number of pins on the circuit and the size of the memory.
Other features and advantages of the invention will emerge with the aid of the description which follows and which refers to appended drawings, in which:
Advantageously, the invention proposes by way of example the use of a memory 26 to provide the interchanges between the processor 20 and the machine 21. At the output, the processor 20 can temporarily write its data to the memory 26 by means of a data bus or a data distribution network (“Network on Chip” or NoC) 27 and an interface 28 with this bus or this NoC, for example. The machine 21 transfers the data from the memory 26 to the circuit's output pins 25. At the input, the machine 21 temporarily transfers the data received on the circuit's input pins 25 to the memory 26, and the processor 20 reads the data from the memory 26 by means of the data bus 27 and the interface 28. Thus, from a purely logical point of view, the processor 20 sees the inputs/outputs as memory spaces from and to which it reads and writes in its own format and at its own clock rate. In parallel, the machine 21 transfers the data to and from these very memory spaces. However, only the machine 21 takes on the format conversion tasks for the data. At the input, it picks up the control data, for example, so as to transfer to the memory 26 only useful data and so as not to pollute the processor 20, which would not know how to process the control data. At the output, it adds control data, for example, to the useful data that it has transferred from the memory 26. All of these read and write operations in the memory 26 by the machine 21 are performed at the clock rate of the input/output interface, independently of the operating clock rate of the processor 20.
In the simplified embodiment in
As illustrated by
The circuit illustrated by
At the input, the data can be processed in a very similar manner by the input register 41 and a module 43 for converting the format of the input data. According to the state of the configuration registers loaded in the controller 24, the module 43 may allow, by way of example, serial inputs, 2-bit inputs, 4-bit inputs, byte inputs or 16-bit word inputs to be converted into 32-bit words or may even allow 32-bit word inputs to be processed directly. The data converted into 32-bit words are thus stored in the memory 26 organized into 32-bit words. When the chosen format is more than 32 bits, loading takes place in two cycles. Optionally, the module 43 may comprise a programmable error correction unit for the purpose of correcting transmission errors. This is supported by a certain number of communication protocols, such as the USB standard.
Each pin among the pins 25 may have an amplifier or “driver” connected to it, for example. The drivers are bidirectional. As in the GPIOs of some microprocessors and as explained in detail below, the drivers are controlled by control signals through registers by the controller 24. As far as the outputs are concerned, the register 40 contains 1 bit per pin indicating the value 0 or 1 to be output on the pin. Another register, situated in the controller 24, indicates whether or not the output drivers are at high impedance. In order to simplify control of the drivers, it is proposed here that the outputs be controlled by groups of 8 bits. A certain number of 8-bit groups are configured at the input, and the others are configured at the output. Optionally, however, to retain a little flexibility, one of the groups can be configured at the input or at the output independently bit by bit. To implement this functionality, the register indicating the high-impedance outputs is organized in 2 parts. One part contains 1 high-impedance bit per byte. Another part contains 1 high-impedance bit per bit for 8 bits. A configuration register indicates which byte is controlled bit by bit. The data which are present at the inputs are sampled by a third register, the register 41. Alternatively, the bits from the first register can be reused for this purpose by means of appropriate multiplexing.
In some communication standards, it may be necessary to recognize some control data structures or “patterns”. These are specific data blocks indicating the start or end of a data block and/or allowing the transmitter and receiver to be synchronized, for example. Advantageously, a pattern detection module 44 may allow comparison of the outputs of the format conversion and one or more patterns supplied by the controller 24, which may furthermore indicate the bits or bytes whose value cannot be taken into account for the comparison. The results of the comparison are thus supplied in return to the controller 24.
Finally, shift modules 45 and 46 may advantageously allow the input/output peripheral according to the invention illustrated by
In the example in
By way of example, the shift module 55 receives a 64-bit bus at its input. This input bus is formed from the concatenation of the 32-bit data bus coming from the format conversion of the module 52 from its own port N+1 for low significances and of the 32-bit data bus coming from port N on the left for high significances. The module 55 supplies an output shifted by a programmable number of bits, for example 0, 8, 16, 24, 32, 40 or 56 bits, on a 64-bit output bus. This output bus is connected to the registers 50 for controlling the pins 57 of its own port N+1 for the 32 most significant bits and is connected to the registers for controlling the pins of port N+2 situated on its right for the 32 least significant bits. Port N+2 is not shown in
Of course, a single circuit may have many more than two interconnected peripherals according to the invention, so as to be able to use a large number of input/output interfaces simultaneously.
Advantageously, a single clock 70 can be used by all of the elements of the input/output peripheral, with the exception of the interface 28, which needs to operate at the frequency of the bus 27. According to the program of the controller 24, the clocking provided by the clock 70 may have two possible origins. Its origin may be external, with the clocking being able to come directly from a pin 71. Alternatively, its origin may be internal, with the system clock being able to be received by the clock 70 via an input 72. In the latter case, a frequency divider 73 may allow interfaces which are slower than the system clock to be addressed. There again, the value of the divider 73 can advantageously be programmed by the controller 24. However, in order to address interfaces which are faster than the system clock, the divider 73 can also be replaced by a frequency multiplier, for example using a “phase-locked loop” type mechanism. The clock 70 provides the clocking on an output 76. There again, the mode in which the clock 70 operates, namely with internal or external clocking, can advantageously likewise be selected by the controller 24 by virtue of the programming of a configuration register. When the clock 70 is operating in internal clocking mode, the clocking can likewise be applied to an output pin which is not shown in
The controller 24 executes instructions from the microprogram memory 23, which it can load into an instruction register 74, for example. An instruction is made up of several separate fields, one of the fields allowing the address of the next instruction to be determined. When the system is initialized, the program is loaded into the microprogram memory 23 via the interface 28. Advantageously, however, it may likewise be envisaged for the program to be reloaded in the course of operation, for example when an external peripheral using a new interface is connected. Thus, the microprogram executed by the machine 21 can be modified dynamically while the circuit is being used. Numerous possibilities exist for precisely defining the structure of an instruction word and the instruction set. The instruction register 74 illustrates an example of the structure of an instruction word. The length of the fields is given for information purposes only. In the embodiment in
The controller 24 can manipulate microprogram addresses by virtue of address registers 93 and 94, by virtue of incrementers 95 and 96 operating on the registers 93 and 94, respectively, and by virtue of a decoding module 97.
By way of example, the instruction set allows direct control of the high-impedance state of the drivers and of the state of eight of the output pins among the pins 25 in the case of validation signals or synchronization codes. The instruction set also allows the configuration registers to be loaded for the purpose of sharing the pins 25, for the purpose of sharing the memory buffers 60, 61, 62 and 63 or else for the purpose of adjusting the clock frequency 70. It also allows loading of the patterns which are to be compared by virtue of the module 44, control of the reading or writing of words from/to the data memory 26, sending of synchronization signals to the interface 28 for the purpose of acknowledging the data received, and signaling of the data which are ready for reading. Moreover, a module 77 allows management of the interchanges between the data memory 26 and the interface 28 for the bus or the system NoC. The instruction set again allows management of the various program branch conditions. Most of these operations can be performed simultaneously, by associating operation with a field in an instruction, so as not to delay the transmission of the data. There again, this is a major advantage of the invention, since known solutions for their part require several clock cycles in order to execute input/output operations.
In the embodiment in
As already set out previously, the controller 24 likewise has configuration registers, including the registers 90 and 91. A module 92 allows the content of the configuration registers to be decoded.
The invention described above notably provides the advantage of allowing the circuits implementing it to adapt to a very large number of input/output protocols. Moreover, it allows a high level of flexibility to be provided in the choice of site for the pins connecting to the various external peripherals, for example, depending on the routing constraints for the circuit-internal communications between the internal peripheral and the processing processors, or even the routing constraints on the printed circuit between the circuit and its external peripherals. This is because since the internal peripherals according to the invention are all identical, it suffices to program the peripheral managing the pins situated at the desired site for one protocol or another.
Patent | Priority | Assignee | Title |
Patent | Priority | Assignee | Title |
4649516, | Jun 01 1984 | International Business Machines Corp. | Dynamic row buffer circuit for DRAM |
5113369, | Jul 26 1985 | Kabushiki Kaisha Toshiba | 32-bit personal computer using a bus width converter and a latch for interfacing with 8-bit and 16-bit microprocessors |
5345570, | Apr 02 1991 | Mitsubishi Denki Kabushiki Kaisha | Microprogram control circuit |
6021505, | Jun 26 1998 | U S BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT | Method and apparatus for updating a timer from multiple timing domains |
6299069, | Dec 26 1997 | RAKUTEN, INC | Integrated circuit for embedding in smart cards, and method of issuing smart cards |
6484222, | Dec 06 1999 | HEWLETT-PACKARD DEVELOPMENT COMPANY, L P | System for incorporating multiple expansion slots in a variable speed peripheral bus |
6496888, | Sep 15 1999 | Intel Corporation | Incorporation of bus ratio strap options in chipset logic |
7042893, | Dec 05 2001 | CAVIUM INTERNATIONAL; MARVELL ASIA PTE, LTD | Serial media independent interface with double data rate |
20030065863, | |||
20040123041, | |||
20050254519, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Nov 05 2008 | Commissariat a l'Energie Atomique et aux Energies Alternatives | (assignment on the face of the patent) | / | |||
Nov 17 2010 | HARRAND, MICHEL | Commissariat a l Energie Atomique et aux Energies Alternatives | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 025559 | /0099 |
Date | Maintenance Fee Events |
Jan 18 2017 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Feb 09 2021 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Date | Maintenance Schedule |
Aug 13 2016 | 4 years fee payment window open |
Feb 13 2017 | 6 months grace period start (w surcharge) |
Aug 13 2017 | patent expiry (for year 4) |
Aug 13 2019 | 2 years to revive unintentionally abandoned end. (for year 4) |
Aug 13 2020 | 8 years fee payment window open |
Feb 13 2021 | 6 months grace period start (w surcharge) |
Aug 13 2021 | patent expiry (for year 8) |
Aug 13 2023 | 2 years to revive unintentionally abandoned end. (for year 8) |
Aug 13 2024 | 12 years fee payment window open |
Feb 13 2025 | 6 months grace period start (w surcharge) |
Aug 13 2025 | patent expiry (for year 12) |
Aug 13 2027 | 2 years to revive unintentionally abandoned end. (for year 12) |