WO2023229616A1 - Distributed firmware interfacing processors and intergrated circuits - Google Patents
Distributed firmware interfacing processors and intergrated circuits Download PDFInfo
- Publication number
- WO2023229616A1 WO2023229616A1 PCT/US2022/037981 US2022037981W WO2023229616A1 WO 2023229616 A1 WO2023229616 A1 WO 2023229616A1 US 2022037981 W US2022037981 W US 2022037981W WO 2023229616 A1 WO2023229616 A1 WO 2023229616A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- fpga
- cpu
- commands
- cycle control
- address
- Prior art date
Links
- 238000000034 method Methods 0.000 claims abstract description 56
- 230000008569 process Effects 0.000 claims abstract description 29
- 230000004044 response Effects 0.000 claims abstract description 25
- 239000000872 buffer Substances 0.000 claims abstract description 21
- 238000012545 processing Methods 0.000 claims abstract description 18
- 230000002093 peripheral effect Effects 0.000 claims description 33
- 238000001514 detection method Methods 0.000 claims description 5
- 238000004590 computer program Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
Classifications
-
- 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
Definitions
- the subject matter herein generally relates the field communications and in particular to interfacing processors.
- CPUs and/or one or more FPGAs may interface with peripheral devices such as remote memory space.
- the interface may be between one or more CPUs and one or more FPGAs, may be between units or devices, between Printed Circuit Boards (PCBs), may be between elements on the same PCB or any combination of the foregoing.
- PCBs Printed Circuit Boards
- a system of one or more computers can be configured to perform particular operations or actions by virtue of having software, firmware, hardware, or a combination of them installed on the system that in operation causes or cause the system to perform the actions.
- One or more computer programs can be configured to perform particular operations or actions by virtue of including instructions that, when executed by data processing apparatus, cause the apparatus to perform the actions.
- a method may include accessing a large number of FPGA destination address locations with a small number of CPU address lines via any compatible bus interface.
- the method may include sending by the CPU one or more commands to the FPGA and filling memory space of the FPGA with the one or more commands.
- the method may in addition include processing the one or more commands by the FPGA and may moreover include asserting by the FPGA a response waiting interrupt line on the CPU.
- the method may also include reading a command response by the CPU and may furthermore include clearing the response waiting interrupt by the CPU.
- Other embodiments of this aspect include corresponding computer systems, apparatus, and computer programs recorded on one or more computer storage devices, each configured to perform the actions of the methods.
- a processor interface apparatus may include a Central Processing Unit (CPU) having a small number of address lines.
- the processor interface apparatus may also include a Field Programable Gate Array (FPGA), the FPGA configured with a large number of address locations.
- the processor interface apparatus may furthermore include the CPU configured to: access the large number of address locations of the FPGA via a compatible bus interface, send one or more commands to the FPGA, and fill memory space of the FPGA with the one or more commands.
- the FPGA configured to: process the one or more commands; and assert a response waiting interrupt line on the CPU where the CPU is configured to read a command response according to the one or more commands processed by the FPGA based on the asserted response waiting in response interrupt.
- Other embodiments of this aspect include corresponding computer systems, apparatus, and computer programs recorded on one or more computer storage devices, each configured to perform the actions of the methods.
- Implementations may include one or more of the following features.
- the method where the large number of FPGA destination address locations is equal to or less than 65,536, and where the small number of CPU address lines is a sixteen bit access of the CPU, the sixteen bit access derived from four address lines.
- the method may include passing command messages between the CPU to a plurality of peripherals of the FPGA where one command may control one or more of the plurality of the peripherals of the FPGA based on an address of the peripheral.
- a clock timing of the peripherals is independent from the clock timing of the bus interface, and the method may include identifying unknown command messages via error detection codes.
- the method may include a read cycle control and a write cycle control, where the read cycle control and the write cycle control operate independently from each other.
- the method may include, the FPGA buffers the one or more commands into a First- In- First-Out (FIFO) memory buffer, and the FPGA fills another FIFO memory buffer with the processing result of the one or more commands.
- a message structure includes a header and an operation specific payload, the header including a version of the bus interface, an operation to be performed, a message sequence identifier, and length of the payload. Implementations of the described techniques may include hardware, a method or process, or a computer tangible medium.
- Implementations may also include one or more of the following features.
- the processor interface apparatus where the large number of address locations is equal to or less then 65,536, and where in the small number of CPU address lines is a sixteen bit access of the CPU, the sixteen bit access derived from four address lines.
- the processor interface apparatus where the CPU is further configured to pass command messages to a plurality of peripherals of the FPGA, and where one command may control one or more of the plurality of the peripherals of the FPGA based on an address of the peripheral.
- the processor interface apparatus where a clock timing of the peripherals is independent from the clock timing of the bus interface.
- the processor interface apparatus where unknown command messages are identified via error detection codes.
- the processor interface apparatus where the CPU further may include a read cycle control and a write cycle control, where the read cycle control and the write cycle control operate independently from each other.
- the processor interface apparatus where the FPGA is configured with two or more First-In-First-Out (FIFO) memory buffers, where the FPGA buffers the one or more commands into one of the two or more FIFO memory buffers, and the FPGA fills another of the two or more FIFO memory buffer with the processing result of the one or more commands.
- a message structure includes a header and an operation specific payload, the header including a version of the bus interface, an operation to be performed, a message sequence identifier, and length of the payload.
- FIG. 1 is a block diagram showing major parts of an interface between an FPGA coupled to one or more peripheral devices and a CPU;
- FIG. 2 illustrates a state machine according to an embodiment
- FIG. 3 is a flowchart according to an embodiment
- Fig. 4 is a flowchart of according to some embodiments.
- Fig. 1 illustrates a block diagram showing major parts of an interface between an FPGA coupled to one or more peripheral devices and a CPU.
- the interfaces between the blocks are kept to a minimum number of simple signals that have a single specific function.
- An access signal controller 102 is a main interface to the CPU (not shown) and generates the read write cycles on the bus 104. While Fig. 1 illustrates an example using a generic access signal controller 102 and bus 104. It should be understood that any compatible bus interface may be used, for example a peripheral component interconnect (PCI) bus, a host port interface (HPI), and the like may be used. That is, the design allows the interface, access signal controller 102 and bus 104 to be exchanged with any compatible bus interface. Thus, any compatible processor and bus interface may be implemented consistent with the disclosure.
- PCI peripheral component interconnect
- HPI host port interface
- An interface controller 108 manages the handling of commands including sending commands to a plurality of peripherals A-n 112.
- the interface controller 108 manages the data/control OR returns the read data and controls the signals from the plurality of peripheral devices 112.
- the plurality of peripheral devices perform commands generated by the CPU.
- the FPGA may interface with the CPU (not shown) via two independent First-In-First-Out (FIFO) memory buffers which are controlled by a direct memory access (DMA) engine within the CPU.
- the DMA engine transfers data to/from the CPU to/from the two independent FIFOs of the FPGA.
- an external memory interface may be used to communicate between a CPU and FPGA where the CPU and FPGA use the same message interface, for example an External Memory Interface (EMIF) is an example of a memory interface between the CPU and FPGA.
- EMIF External Memory Interface
- a CPU may use four address lines (A1-A4) to provide a 16 register by 16 bits interface. One register address is used for the message interface. The CPU will write commands to this address and the FPGA will buffer the command into a FIFO memory. Once commands are processed by the FPGA, the FPGA will fill another Fl FO with the processing result.
- a CPU or similar processor with a small number of address lines may exercise control of a large number of destination address.
- the large number of FPGA destination address locations may be as many as 65,536, and where the small number of CPU address lines is a sixteen bit access of the CPU, the sixteen bit access derived from four address lines.
- Fig. 2 illustrates a state machine according to an embodiment.
- a CPU is in a idle state, and at 204 the CPU generates a new request, for example a command.
- the CPU sends the command (cmd) at 206, raises a command ready flag at 208, and waits for the FPGA to read the command at 210.
- the FPGA processes the command at 212 and at 214 generates a response that command is complete.
- the FPGA then asserts a command complete interrupt at 216.
- the CPU processes the response at 218 and clears the command complete interrupt at 220.
- a CPU will use 1 register address for the message interface and will write data to this address.
- the FPGA processing may be divided into peripherals each which has its own address identifier.
- the FPGA will buffer the command data in a FIFO memory.
- the FIFO will process the command message and fill another FIFO memory with the result.
- the FPGA will assert a response waiting interrupt line on the CPU.
- the FPGA may use an existing general-purpose input/output (GIPO) to assert the interrupt line.
- GIPO general-purpose input/output
- the CPU will then read the response from the FPGA FIFO indicating that the message exchange is now complete.
- Fig. 3 is a flowchart of an example process 300.
- one or more process blocks of Fig. 3 may be performed by a one or more including a CPU and FPGA.
- process 300 may include accessing a large number of FPGA destination address locations with a small number of CPU address lines via any compatible bus interface 302.
- a CPU may access a large number of FPGA (65,536) destination address locations with a small number of address lines, for example four address lines, via any compatible bus interface, as described above.
- process 300 may include sending by the CPU the one or more commands to the FPGA 304.
- the process 300 may include filling memory space of the FPGA with one or more commands 306.
- the CPU may fill a FIFO memory of the FPGA with one or more commands, as described above.
- process 300 may include processing the one or more commands by the FPGA 308.
- process 300 may include filling memory space of the FPGA with one or more command responses.
- the FPGA may fill another FIFO of the FPGA with one or more command responses, as described above.
- process 300 may include asserting by the FPGA a response waiting interrupt line on the CPU 312. As also shown in Fig. 3, process 300 may include reading a command response by the CPU 314. As further shown in Fig. 3, process 300 may include clearing the response waiting interrupt by the CPU 316.
- Process 300 may include additional implementations, such as any single implementation or any combination of implementations described below and/or in connection with one or more other processes described elsewhere herein.
- Fig. 4 is a flowchart of an example process 400. In some implementations, one or more process blocks of Fig. 4 may be performed by a single device. [0031] Process 400 may include additional implementations, such as any single implementation or any combination of implementations described below and/or in connection with one or more other processes described elsewhere herein.
- process 400 may include passing command messages between the CPU to a plurality of peripherals of the FPGA where one command may control a plurality of the peripherals of the FPGA based on an address of the peripheral at 402, were a clock timing of the peripherals is independent from the clock timing of the bus interface.
- the number of peripheral addresses may be as much as 65,536.
- process 400 may include identifying unknown command messages via error detection codes at 404.
- process 400 may include a read cycle control and a write cycle control, where the read cycle control and the write cycle control operate independently from each other at 406.
- the FPGA buffers the one or more commands into a First-In-First-Out (FIFO) memory buffer, and the FPGA fills another FIFO memory buffer with the processing result of the one or more commands at 408.
- FIFO First-In-First-Out
- the message structure for the above commands and corresponding responses includes a header, an operation specific payload, the header including a version of the bus interface, an operation to be performed, a message sequence identifier, and length of the payload.
- process 400 may include additional blocks, fewer blocks, different blocks, or differently arranged blocks than those depicted in Fig. 4. Additionally, or alternatively, two or more of the blocks of process 400 may be performed in parallel.
- a single processor, device or other unit may fulfill the functions of several items recited in the claims.
- the mere fact that certain measures are recited in mutually different dependent claims does not indicate that a combination of these measures cannot be used to advantage.
- Operations like acquiring, accessing, determining, obtaining, outputting, providing, store or storing, calculating, simulating, receiving, warning, and stopping can be implemented as program code means of a computer program and/or as dedicated hardware.
- a computer program may be stored and/or distributed on a suitable medium, such as an optical storage medium or a solid-state medium, supplied together with or as part of other hardware, but may also be distributed in other forms, such as via the Internet or other wired or wireless telecommunication systems.
- a suitable medium such as an optical storage medium or a solid-state medium, supplied together with or as part of other hardware, but may also be distributed in other forms, such as via the Internet or other wired or wireless telecommunication systems.
Abstract
A method and apparatus to interface a Central Processing Unit (CPU) and a Field Programable Gate Array (FPGA). The method and apparatus configured to accesses a large number of FPGA destination address locations with a small number of CPU address lines via any compatible bus interface where the CPU accesses the large number of address locations of the FPGA via a compatible bus interface, sends one or more commands to the FPGA, and the FPGA fills memory space of a First-In-First-Out (FIFO) memory buffer with one or more commands. The FPGA processes the one or more commands, fills another FIFO with the processing results, and asserts a command complete interrupt line on the CPU. The CPU reads the processing response of the one or more commands processed by the FPGA according to the asserted command complete interrupt and clears the command complete interrupt.
Description
DISTRIBUTED FIRMWARE INTERFACING PROCESSORS AND INTERGRATED CIRCUITS
TECHNICAL FIELD
[0001] In some example embodiments, the subject matter herein generally relates the field communications and in particular to interfacing processors.
BACKGROUND
[0002] Computer processors like a Central Processing Unit (CPU) and Field Programmable Gate Array (FPGA) often communicate with each in a variety of different applications. In addition, one or more CPUs and/or one or more FPGAs may interface with peripheral devices such as remote memory space. The interface may be between one or more CPUs and one or more FPGAs, may be between units or devices, between Printed Circuit Boards (PCBs), may be between elements on the same PCB or any combination of the foregoing.
[0003] Applications with a limited number of address lines are limited to the number of peripheral devices that they may communicate at any given time. For example a CPU with a limited number of address lines may be limited to the number of peripheral devices the CPU may communicate based on the limited number of address lines of the CPU. In the case where a CPU with a limited number of address lines has a need to communicate with a number of peripheral devices that exceeds the number of CPU address lines, additional CPUs may be necessary.
[0004] To simplify the interface, improve performance, and reduce cost, it would be desirable for applications with a limited number of address lines to access a large remote memory space. Thus, a need exists for a method and apparatus that allows a CPU with a limited number of address lines to communicate with a large number of peripheral devices.
SUMMARY
[0005] A system of one or more computers can be configured to perform particular operations or actions by virtue of having software, firmware, hardware, or a combination of them installed on the system that in operation causes or cause the
system to perform the actions. One or more computer programs can be configured to perform particular operations or actions by virtue of including instructions that, when executed by data processing apparatus, cause the apparatus to perform the actions.
[0006] In one general aspect, a method may include accessing a large number of FPGA destination address locations with a small number of CPU address lines via any compatible bus interface. The method may include sending by the CPU one or more commands to the FPGA and filling memory space of the FPGA with the one or more commands. The method may in addition include processing the one or more commands by the FPGA and may moreover include asserting by the FPGA a response waiting interrupt line on the CPU. The method may also include reading a command response by the CPU and may furthermore include clearing the response waiting interrupt by the CPU. Other embodiments of this aspect include corresponding computer systems, apparatus, and computer programs recorded on one or more computer storage devices, each configured to perform the actions of the methods.
[0007] In another aspect, a processor interface apparatus may include a Central Processing Unit (CPU) having a small number of address lines. The processor interface apparatus may also include a Field Programable Gate Array (FPGA), the FPGA configured with a large number of address locations. The processor interface apparatus may furthermore include the CPU configured to: access the large number of address locations of the FPGA via a compatible bus interface, send one or more commands to the FPGA, and fill memory space of the FPGA with the one or more commands. The FPGA configured to: process the one or more commands; and assert a response waiting interrupt line on the CPU where the CPU is configured to read a command response according to the one or more commands processed by the FPGA based on the asserted response waiting in response interrupt. Other embodiments of this aspect include corresponding computer systems, apparatus, and computer programs recorded on one or more computer storage devices, each configured to perform the actions of the methods.
[0008] Implementations may include one or more of the following features. The method where the large number of FPGA destination address locations is equal to or less than 65,536, and where the small number of CPU address lines is a sixteen bit access of the CPU, the sixteen bit access derived from four address lines. The method
may include passing command messages between the CPU to a plurality of peripherals of the FPGA where one command may control one or more of the plurality of the peripherals of the FPGA based on an address of the peripheral. A clock timing of the peripherals is independent from the clock timing of the bus interface, and the method may include identifying unknown command messages via error detection codes. The method may include a read cycle control and a write cycle control, where the read cycle control and the write cycle control operate independently from each other. The method may include, the FPGA buffers the one or more commands into a First- In- First-Out (FIFO) memory buffer, and the FPGA fills another FIFO memory buffer with the processing result of the one or more commands. The method where a message structure includes a header and an operation specific payload, the header including a version of the bus interface, an operation to be performed, a message sequence identifier, and length of the payload. Implementations of the described techniques may include hardware, a method or process, or a computer tangible medium.
[0009] Implementations may also include one or more of the following features. The processor interface apparatus where the large number of address locations is equal to or less then 65,536, and where in the small number of CPU address lines is a sixteen bit access of the CPU, the sixteen bit access derived from four address lines. The processor interface apparatus where the CPU is further configured to pass command messages to a plurality of peripherals of the FPGA, and where one command may control one or more of the plurality of the peripherals of the FPGA based on an address of the peripheral. The processor interface apparatus where a clock timing of the peripherals is independent from the clock timing of the bus interface. The processor interface apparatus where unknown command messages are identified via error detection codes. The processor interface apparatus where the CPU further may include a read cycle control and a write cycle control, where the read cycle control and the write cycle control operate independently from each other. The processor interface apparatus where the FPGA is configured with two or more First-In-First-Out (FIFO) memory buffers, where the FPGA buffers the one or more commands into one of the two or more FIFO memory buffers, and the FPGA fills another of the two or more FIFO memory buffer with the processing result of the one or more commands. The
processor interface apparatus where a message structure includes a header and an operation specific payload, the header including a version of the bus interface, an operation to be performed, a message sequence identifier, and length of the payload.
[0010] Other embodiments of this aspect include corresponding computer systems, apparatus, and computer programs recorded on one or more computer storage devices, each configured to perform the actions of the methods.
BRIEF DESCRIPTION OF THE DRAWINGS
[0011] In the following drawings:
[0012] Fig. 1 is a block diagram showing major parts of an interface between an FPGA coupled to one or more peripheral devices and a CPU;
[0013] Fig. 2 illustrates a state machine according to an embodiment;
[0014] Fig. 3 is a flowchart according to an embodiment; and
[0015] Fig. 4 is a flowchart of according to some embodiments.
DETAILED DESCRIPTION
[0016] Fig. 1 illustrates a block diagram showing major parts of an interface between an FPGA coupled to one or more peripheral devices and a CPU. The interfaces between the blocks are kept to a minimum number of simple signals that have a single specific function.
[0017] An access signal controller 102 is a main interface to the CPU (not shown) and generates the read write cycles on the bus 104. While Fig. 1 illustrates an example using a generic access signal controller 102 and bus 104. It should be understood that any compatible bus interface may be used, for example a peripheral component interconnect (PCI) bus, a host port interface (HPI), and the like may be used. That is, the design allows the interface, access signal controller 102 and bus 104 to be exchanged with any compatible bus interface. Thus, any compatible processor and bus interface may be implemented consistent with the disclosure.
[0018] An interface controller 108 manages the handling of commands including sending commands to a plurality of peripherals A-n 112. The interface
controller 108 manages the data/control OR returns the read data and controls the signals from the plurality of peripheral devices 112. The plurality of peripheral devices perform commands generated by the CPU. The FPGA may interface with the CPU (not shown) via two independent First-In-First-Out (FIFO) memory buffers which are controlled by a direct memory access (DMA) engine within the CPU. The DMA engine transfers data to/from the CPU to/from the two independent FIFOs of the FPGA.
[0019] To minimize signaling and ease routing, an external memory interface may be used to communicate between a CPU and FPGA where the CPU and FPGA use the same message interface, for example an External Memory Interface (EMIF) is an example of a memory interface between the CPU and FPGA.
[0020] A CPU may use four address lines (A1-A4) to provide a 16 register by 16 bits interface. One register address is used for the message interface. The CPU will write commands to this address and the FPGA will buffer the command into a FIFO memory. Once commands are processed by the FPGA, the FPGA will fill another Fl FO with the processing result.
[0021] Thus, a CPU or similar processor with a small number of address lines may exercise control of a large number of destination address. For example, the large number of FPGA destination address locations may be as many as 65,536, and where the small number of CPU address lines is a sixteen bit access of the CPU, the sixteen bit access derived from four address lines.
[0022] Fig. 2 illustrates a state machine according to an embodiment. At 202 a CPU is in a idle state, and at 204 the CPU generates a new request, for example a command. The CPU sends the command (cmd) at 206, raises a command ready flag at 208, and waits for the FPGA to read the command at 210. The FPGA processes the command at 212 and at 214 generates a response that command is complete. The FPGA then asserts a command complete interrupt at 216. The CPU processes the response at 218 and clears the command complete interrupt at 220.
[0023] A CPU will use 1 register address for the message interface and will write data to this address. The FPGA processing may be divided into peripherals each which has its own address identifier.
[0024] The FPGA will buffer the command data in a FIFO memory. The FIFO will process the command message and fill another FIFO memory with the result. The
FPGA will assert a response waiting interrupt line on the CPU. The FPGA may use an existing general-purpose input/output (GIPO) to assert the interrupt line. The CPU will then read the response from the FPGA FIFO indicating that the message exchange is now complete.
[0025] Fig. 3 is a flowchart of an example process 300. In some implementations, one or more process blocks of Fig. 3 may be performed by a one or more including a CPU and FPGA.
[0026] As shown in Fig. 3, process 300 may include accessing a large number of FPGA destination address locations with a small number of CPU address lines via any compatible bus interface 302. For example, a CPU may access a large number of FPGA (65,536) destination address locations with a small number of address lines, for example four address lines, via any compatible bus interface, as described above.
[0027] As also shown in Fig. 3, process 300 may include sending by the CPU the one or more commands to the FPGA 304. The process 300 may include filling memory space of the FPGA with one or more commands 306. For example, the CPU may fill a FIFO memory of the FPGA with one or more commands, as described above. As also shown in Fig. 3, process 300 may include processing the one or more commands by the FPGA 308. As shown at 310, process 300 may include filling memory space of the FPGA with one or more command responses. For example, the FPGA may fill another FIFO of the FPGA with one or more command responses, as described above.
[0028] As further shown in Fig. 3, process 300 may include asserting by the FPGA a response waiting interrupt line on the CPU 312. As also shown in Fig. 3, process 300 may include reading a command response by the CPU 314. As further shown in Fig. 3, process 300 may include clearing the response waiting interrupt by the CPU 316.
[0029] Process 300 may include additional implementations, such as any single implementation or any combination of implementations described below and/or in connection with one or more other processes described elsewhere herein.
[0030] Fig. 4 is a flowchart of an example process 400. In some implementations, one or more process blocks of Fig. 4 may be performed by a single device.
[0031] Process 400 may include additional implementations, such as any single implementation or any combination of implementations described below and/or in connection with one or more other processes described elsewhere herein.
[0032] In a first implementation, process 400 may include passing command messages between the CPU to a plurality of peripherals of the FPGA where one command may control a plurality of the peripherals of the FPGA based on an address of the peripheral at 402, were a clock timing of the peripherals is independent from the clock timing of the bus interface. The number of peripheral addresses may be as much as 65,536.
[0033] In a second implementation, alone or in combination with one or more of the first implementation, process 400 may include identifying unknown command messages via error detection codes at 404.
[0034] In a third implementation, alone or in combination with one or more of the first and second implementations, process 400 may include a read cycle control and a write cycle control, where the read cycle control and the write cycle control operate independently from each other at 406.
[0035] In a forth implementation, alone or in combination with one or more of the first through third implementations, the FPGA buffers the one or more commands into a First-In-First-Out (FIFO) memory buffer, and the FPGA fills another FIFO memory buffer with the processing result of the one or more commands at 408.
[0036] The message structure for the above commands and corresponding responses includes a header, an operation specific payload, the header including a version of the bus interface, an operation to be performed, a message sequence identifier, and length of the payload.
[0037] Although Fig. 4 shows example blocks of process 400, in some implementations, process 400 may include additional blocks, fewer blocks, different blocks, or differently arranged blocks than those depicted in Fig. 4. Additionally, or alternatively, two or more of the blocks of process 400 may be performed in parallel.
[0038] While aspects of the disclosure have been illustrated and described in detail in the drawings and foregoing description, such illustrations and description are to be considered illustrative or exemplary and not restrictive; the disclosure is not limited to the disclosed embodiments.
[0039] Other variations to the disclosed embodiments can be understood and effected by those skilled in the art in practicing the claimed features, from a study of the drawings, the disclosure, and the appended claims.
[0040] In the claims, the word "comprising" does not exclude other elements or steps, and the indefinite article “a” or “an” does not exclude a plurality.
[0041] A single processor, device or other unit may fulfill the functions of several items recited in the claims. The mere fact that certain measures are recited in mutually different dependent claims does not indicate that a combination of these measures cannot be used to advantage.
[0042] Operations like acquiring, accessing, determining, obtaining, outputting, providing, store or storing, calculating, simulating, receiving, warning, and stopping can be implemented as program code means of a computer program and/or as dedicated hardware.
[0043] A computer program may be stored and/or distributed on a suitable medium, such as an optical storage medium or a solid-state medium, supplied together with or as part of other hardware, but may also be distributed in other forms, such as via the Internet or other wired or wireless telecommunication systems.
Claims
1. A method of interfacing a Central Processing Unit (CPU) and a Field Programable Gate Array (FPGA), the method comprising: accessing a large number of FPGA destination address locations with a small number of CPU address lines via any compatible bus interface; sending by the CPU the one or more commands to the FPGA; filling memory space of the FPGA with one or more commands; processing the one or more commands by the FPGA; asserting by the FPGA a response waiting interrupt line on the CPU; reading a command response by the CPU; and clearing the response waiting interrupt by the CPU.
2. The method according to claim 1 , wherein the large number of FPGA destination address locations is equal to or less than 65,536, and wherein the small number of CPU address lines is a sixteen bit access of the CPU, the sixteen bit access derived from four address lines.
3. The method according to claim 1 , further comprising passing command messages between the CPU to a plurality of peripherals of the FPGA wherein one command may control one or more of the plurality of the peripherals of the FPGA based on an address of the peripheral.
4. The method according to claim 3, wherein a clock timing of the peripherals is independent from the clock timing of the bus interface.
5. The method according to claim 1 , further comprising identifying unknown command messages via error detection codes.
6. The method according to claim 1 , further comprising a read cycle control and a write cycle control, wherein the read cycle control and the write cycle control operate independently from each other.
7. The method according to claim 1 , wherein the FPGA buffers the one or more commands into a First- In- First-Out (FIFO) memory buffer, and the FPGA fills another FIFO memory buffer with a processing result of the one or more commands.
8. The method according to claim 1 , wherein a message structure includes a header and an operation specific payload, the header including a version of the bus interface, an operation to be performed, a message sequence identifier, and length of the payload.
9. A processor interface apparatus comprising: a Central Processing Unit (CPU) having a small number of address lines; and a Field Programable Gate Array (FPGA), the FPGA configured with a large number of address locations; the CPU configured to: access the large number of address locations of the FPGA via a compatible bus interface; send one or more commands to the FPGA; and fill memory space of the FPGA with the one or more commands; the FPGA configured to: process the one or more commands; and assert a response waiting interrupt line on the CPU; and the CPU further configured to: read a command response according to the one or more commands processed by the FPGA based on the asserted response waiting interrupt; and clear the response waiting interrupt.
10. The processor interface apparatus of claim 9, where the large number of address locations is equal to or less then 65,536, and where in the small number of CPU address lines is a sixteen bit access of the CPU, the sixteen bit access derived from four address lines.
11 . The processor interface apparatus of claim 9, wherein the CPU is further configured to pass command messages to a plurality of peripherals of the FPGA, and wherein one command may control one or more of plurality of the peripherals of the FPGA based on an address of the peripheral.
12. The processor interface apparatus of claim 11 , wherein a clock timing of the peripherals is independent from the clock timing of the bus interface.
13. The processor interface apparatus of claim 9, wherein unknown command messages are identified via error detection codes.
14. The processor interface apparatus of claim 9, wherein the CPU further comprises a read cycle control and a write cycle control, wherein the read cycle control and the write cycle control operate independently from each other.
15. The processor interface apparatus of claim 9, wherein the FPGA is configured with two or more First-In-First-Out (FIFO) memory buffers, wherein the FPGA buffers the one or more commands into one of the two or more FIFO memory buffers, and the FPGA fills another of the two or more FIFO memory buffer with a processing result of the one or more commands.
16. The processor interface apparatus of claim 9, wherein a message structure includes a header and an operation specific payload, the header including a version of the bus interface, an operation to be performed, a message sequence identifier, and length of the payload.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202263345790P | 2022-05-25 | 2022-05-25 | |
US63/345,790 | 2022-05-25 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2023229616A1 true WO2023229616A1 (en) | 2023-11-30 |
Family
ID=88919804
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/US2022/037981 WO2023229616A1 (en) | 2022-05-25 | 2022-07-22 | Distributed firmware interfacing processors and intergrated circuits |
Country Status (1)
Country | Link |
---|---|
WO (1) | WO2023229616A1 (en) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070255886A1 (en) * | 2001-05-18 | 2007-11-01 | Xilinx, Inc. | Programmable logic device including programmable interface core and central processing unit |
US7424553B1 (en) * | 2004-04-15 | 2008-09-09 | Xilinx, Inc. | Method and apparatus for communicating data between a network transceiver and memory circuitry |
US20160299858A1 (en) * | 2015-04-07 | 2016-10-13 | International Business Machines Corporation | Processing of events for accelerators utilized for parallel processing |
-
2022
- 2022-07-22 WO PCT/US2022/037981 patent/WO2023229616A1/en unknown
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070255886A1 (en) * | 2001-05-18 | 2007-11-01 | Xilinx, Inc. | Programmable logic device including programmable interface core and central processing unit |
US7424553B1 (en) * | 2004-04-15 | 2008-09-09 | Xilinx, Inc. | Method and apparatus for communicating data between a network transceiver and memory circuitry |
US20160299858A1 (en) * | 2015-04-07 | 2016-10-13 | International Business Machines Corporation | Processing of events for accelerators utilized for parallel processing |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11481346B2 (en) | Method and apparatus for implementing data transmission, electronic device, and computer-readable storage medium | |
US8490113B2 (en) | Messaging in a parallel computer using remote direct memory access (‘RDMA’) | |
US10459875B2 (en) | Hybrid remote direct memory access | |
CN107636630B (en) | Interrupt controller | |
EP2062147B1 (en) | Method and apparatus for conditional broadcast of barrier operations | |
US20200081850A1 (en) | Unified address space for multiple hardware accelerators using dedicated low latency links | |
JP2020087499A (en) | Method, apparatus, device and storage medium for accessing static random access memory | |
AU2017223094A1 (en) | Bus bridge for translating requests between a module bus and an axi bus | |
US6567881B1 (en) | Method and apparatus for bridging a digital signal processor to a PCI bus | |
EP2435918B1 (en) | Integrated circuit comprising trace logic and method for providing trace information | |
CN113778328A (en) | Directing control data between semiconductor packages | |
US7181559B2 (en) | Message based transport mechanism for level sensitive interrupts | |
US9442819B2 (en) | Method and apparatus for storing trace data | |
WO2023229616A1 (en) | Distributed firmware interfacing processors and intergrated circuits | |
CN116483259A (en) | Data processing method and related device | |
US11392533B1 (en) | Systems and methods for high-speed data transfer to multiple client devices over a communication interface | |
CN115297169B (en) | Data processing method, device, electronic equipment and medium | |
CN117290272B (en) | PCIe Switch and realization method of configuration access thereof | |
US20240004750A1 (en) | Remote scalable machine check architecture | |
US7203786B2 (en) | Error-flagging apparatus, systems, and methods | |
CN116755961A (en) | Monitoring method, device, equipment and storage medium | |
CN112732176A (en) | SSD (solid State disk) access method and device based on FPGA (field programmable Gate array), storage system and storage medium | |
TWI427481B (en) | A bridge system, a device and a method of the isa bus | |
CN116561009A (en) | Chip debugging method, device and system and chip | |
JP2017199287A (en) | Information processor and information processing method |
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: 22944000 Country of ref document: EP Kind code of ref document: A1 |