This disclosure relates generally to advanced high-performance buses and, more specifically, to a circuit and method for bridging advanced high-performance buses from multiple sources to a target.
Advanced High-performance Bus (AHB) is a bus protocol provided by ARM Limited. The AHB protocol includes the following features:
Some critical designs (such as an External Memory Interface) have been developed to support only one AHB slave interface. However, with the increment of parallelity in current system-on-a-chip (SOC) systems, such designs need to support multiple AHB slave interfaces so that different sub-systems can be coupled only when necessary. As an example, different sub-systems may need to connect to a common External Bus Interface (EBI).
A circuit and method for bridging multiple source AHB slaves to a target AHB slave are provided.
In a first embodiment, an AHB multi-slave bridging circuit includes a first slave controller configured to be coupled to a first source AHB slave. The first slave controller is configured to generate first output AHB signals for a target AHB slave in response to received first input AHB signals from the first source AHB slave. The AHB multi-slave bridging circuit also includes a second slave controller configured to be coupled to a second source AHB slave. The second slave controller is configured to generate second output AHB signals for the target AHB slave in response to received second input AHB signals from the second source AHB slave. In addition, the AHB multi-slave bridging circuit includes a multiplexing device coupled to the first and second slave controllers and configured to be coupled to the target AHB slave. The multiplexing device is configured to selectively transmit the first and second output AHB signals to the target AHB slave to avoid conflicts between the first and second source AHB slaves to access the target AHB slave.
In a second embodiment, the AHB multi-slave bridging circuit also includes a priority arbiter coupled to the multiplexing device. The priority arbiter is configured to transmit a control signal to the multiplexing device to instruct the multiplexing device to transmit either one of the output AHB signals from the first slave controller or one of the output AHB signals from the second slave controller to the target AHB slave.
In a third embodiment, a method of bridging multiple source AHB slaves to a target AHB slave includes generating first output AHB signals for the target AHB slave in response to received first input AHB signals from a first source AHB slave. The method also includes generating second output AHB signals for the target AHB slave in response to received second input AHB signals from a second source AHB slave. The method further includes selectively transmitting the first and second output AHB signals to the target AHB slave to avoid conflicts between the first and second source AHB slaves to access the target AHB slave.
Other technical features may be readily apparent to one skilled in the art from the following figures, descriptions, and claims.
Before undertaking the DETAILED DESCRIPTION below, it may be advantageous to set forth definitions of certain words and phrases used throughout this patent document. The terms “include” and “comprise,” as well as derivatives thereof, mean inclusion without limitation. The term “or,” is inclusive, meaning and/or. The phrases “associated with” and “associated therewith,” as well as derivatives thereof, may mean to include, be included within, interconnect with, contain, be contained within, connect to or with, couple to or with, be communicable with, cooperate with, interleave, juxtapose, be proximate to, be bound to or with, have, have a property of, have a relationship to or with, or the like. The term “controller” means any device, system or part thereof that controls at least one operation, such a device may be implemented in hardware, firmware or software, or some combination of at least two of the same. It should be noted that the functionality associated with any particular controller may be centralized or distributed, whether locally or remotely. Definitions for certain words and phrases are provided throughout this patent document, those of ordinary skill in the art should understand that in many, if not most instances, such definitions apply to prior, as well as future uses of such defined words and phrases.
For a more complete understanding of the present disclosure and its advantages, reference is now made to the following description, taken in conjunction with the accompanying drawings, in which:
The AHB multi-slave bridging circuit 100 allows multiple source AHB slaves 102a and 102b to communicate with a target AHB slave 104. In this embodiment, the AHB multi-slave bridging circuit 100 is configured to bridge two source AHB slaves and a single target AHB slave. As an example, the source AHB slaves 102a and 102b may be a system control External Bus Interface (EBI) and an image sub-system EBI, respectively. Additionally, the target AHB slave 104 may be an EBI slave interface. However, in other embodiments, the AHB multi-slave bridging circuit 100 is configured to support more than two source AHB slaves for the target AHB slave 104.
The AHB multi-slave bridging circuit 100 includes slave controllers 106a and 106b, a multiplexing device 108, a priority arbiter 110, and a priority scheduler 112. In general, the slave controller 106a operates to generate output AHB signals to drive the target AHB slave 104 in response to input AHB signals from the source AHB slave 102a. Similarly, the slave controller 106b operates to generate output AHB signals to drive the target AHB slave 104 in response to input AHB signals from the source AHB slave 102b. The output AHB signals from the slave controllers 106a and 106b are transmitted to the multiplexing device 108, which selectively transmits the output AHB signals from the slave controllers 106a and 106b to the target AHB slave 104. The prioritization of various signals being handled by the AHB multi-slave bridging circuit 100 is controlled by the priority arbiter 110. The priority arbiter 110 is at least partly controlled by the priority scheduler 112.
These components of the AHB multi-slave bridging circuit 100 also operate to transmit input AHB signals from the target AHB slave 104 to the source AHB slave 102a and/or the source AHB slave 102b, depending on the desired destination of the input AHB signals from the target AHB slave 104. In the following examples, the components of the AHB multi-slave bridging circuit 100 are first described with respect to signals being transmitted from the source AHB slaves 102a and 102b to the target AHB slave 104.
As shown in
The slave controller 106a receives input AHB signals from the target AHB slave 104, input AHB signals from the source AHB slave 102a, a priority select signal, and a slave_1_request signal. The input AHB signals from the target AHB slave 104 include HREADY_out, HRESP, and HRDATA signals. The input AHB signals from the source AHB slave 102a include HADDR, HCLK, HRESETn, HPROT, HTRANS, HBURST, HTRANS, HSEL, HREADY_in, and HWDATA signals. The slave controller 106a outputs a state signal, a slave_0_request signal, and output AHB signals for driving the target AHB slave 104. The state signal can be an in_idle signal, an in_doing signal, or an in_pending signal. The in_idle signal can be used as a condition to drive the HREADY_in signal of the target AHB slave 104. The in_doing and in_pending signals can be used for debugging. The slave_0_request signal includes the following conditions: HTRANS==NOSEQ/SEQ, HSEL==1 and HREADY==1, where HREADY is from the source AHB slave 102a. The output AHB signals to the target AHB source 104 include HPROT, HADDR, HWRITE, HBURST, HWDATA, and HSEL signals.
The slave controller 106a operates to output appropriate AHB signals for the target AHB slave 104. For example, if an input signal from the source AHB slave is HTRANS==SEQUENTIAL and this source AHB slave is going to be blocked due to its low priority or because another source slave's burst transfer is not completed, then the HTRANS will be turned or modified into “NONSEQUENTIAL” in order to meet the requirements of the AHB protocol. As another example, an HBURST signal from the source AHB slave 102a will be turned into an INCR signal in order to meet the requirements of the AHB protocol.
The slave controller 106a also operates to manage the output timing of the output AHB signals based on priority, an HREADY signal from the target AHB slave 104, and a valid current request signal from the source AHB slave 102a. The operation of the slave controller 106 is described with reference to a state diagram of
In this example embodiment, the slave controller 106a has three states: an IDLE state 305, a PENDING state 310, and a DOING state 315. The initial state of the slave controller 106a is the IDLE state 305. From the IDLE state 305, in the event that there is a valid current request signal from the source AHB slave 102a (i.e., current input AHB signals from the source AHB slave 102a indicate a valid AHB access) and there is no “blocking”, then the state of the slave controller is switched to the DOING state 315. The term “blocking” means that priority is low and that there is at least one other active request from the source AHB slave 102b. However, from the IDLE state 305, in the event that there is a valid current request signal from the source AHB slave 102a and there is “blocking”, then the state of the slave controller 106a is switched to the PENDING state 310. From the PENDING state 310, if there is no “blocking” and an HREADY signal from the target AHB slave 104 (indicated as HREADY_target in
Returning to
The priority arbiter 110 operates to generate priority select signals for the slave controllers 106a and 106b and ahb_mux signals for the multiplexing device 108. A priority select signal indicates which priority is higher between the source AHB slave 102a and the source AHB slave 102b. The priority select signal can be set by an external module (not shown) based on system requirements or automatically generated by a bandwidth allocation method (e.g., round-robin or a shifter as the priority scheduler 112). An ahb_mux signal indicates whether a signal (e.g., an HADDR, HPROT, HTRANS, or HBURST signal) from the slave controller 106a or a signal (e.g., an HADDR, HPROT, HTRANS, or HBURST signal) from the slave controller 106b should be transmitted by the multiplexing device 108 to the target AHB slave 104. When only one of the source AHB slaves 102a and 102b is active (i.e., there is only a request signal from one of the slave controllers 106a and 106b), then the ahb_mux signal produced by the priority arbiter 110 will indicate that the signal from the slave controller associated with the active source AHB slave should be transmitted by the multiplexing device 108. However, if both source AHB slaves 102a and 102b are active, then an arbit_sel signal that is received by the priority arbiter 110 will determine which signal should be transmitted. An arbit_sel signal is an external priority bit from an external priority arbiter, an external bandwidth allocation module (not shown), or the priority arbiter 110.
In this example embodiment, the priority arbiter 110 utilizes two AND logic circuits 420 and 422, an inverter 424, and an OR logic circuit 426 to produce ahb_mux signals. In this embodiment, the AND logic circuit 422 receives a slave_1_request signal from the slave controller 106b and an inverted version of a slave_0_request signal from the slave controller 106a via the inverter 424. The output of the AND logic circuit 422 is applied to an input of the OR logic circuit 426. Thus, when the slave_1_request signal is active (e.g., high) and the slave_0_request signal is inactive (e.g., low), then the ahb mux signal will indicate that the signal from the slave controller 102b should be transmitted by the multiplexing device 108 (e.g., the ahb mux signal will be high). The other AND logic circuit 420 receives a slave_1_request signal from the slave controller 106b and an arbit_sel signal. The output of the AND logic circuit 420 is applied to the other input of the OR logic circuit 426. Thus, when the slave_1_request signal is active (e.g., high) and the arbit_sel signal indicates the source AHB slave 102b (e.g., high), then the ahb_mux signal will indicate that the signal from the slave controller 106b should be transmitted by the multiplexing device 108 (e.g., the ahb_mux signal will be high). Otherwise, the ahb_mux signal will indicate that the signal from the slave controller 106a should be transmitted by the multiplexing device 108 (e.g., the ahb_mux signal will be low).
Returning to
The manner in which signals (e.g., HREADY, HRDATA, and HRESP signals) from the target AHB slave 104 to the source AHB slaves 102a and 102b are handled by the AHB multi-slave bridging circuit 100 is now described. An input AHB signal from the target AHB slave 104 to a particular source AHB slave (e.g., the source AHB slave 102a) is transmitted to the multiplexing device 108 that transmits the signal to one of the slave controllers 106a or 106b associated with the particular source AHB device. For example, the signal can be transmitted from the multiplexing device 108 to the slave controller 106a that is associated with the source AHB device 102a. At the slave controller 106a, the signal is either transmitted to the source AHB slave 102a, or an appropriate output AHB signal is generated by the slave controller 106a and transmitted to the source AHB slave 102a.
As an example, with reference to
Similarly, when an HRESP signal is received from the target AHB slave 104 at the slave controller 106a, the slave controller 106a outputs an appropriate HRESP signal depending on the current state of the slave controller 106a. If the slave controller 106a is in the IDLE state 305 or PENDING state 310, then the output HRESP signal is HRESP==0. However, if the slave controller 106a is in the DOING state 315, then the output HRESP signal is the HRESP signal from the target AHB slave 104.
For the HRDATA signal from the target AHB slave 104, the slave controller 106a outputs the same HRDATA signal from the target AHB slave to the source AHB slave 102a. The other slave controller 106b operates in a similar manner to transmit the signal from the target AHB slave 104 to the source AHB slave 102b or to generate and transmit an appropriate AHB signal to the source AHB slave 102b in response to an input AHB signal from the target AHB slave.
In step 502, first output AHB signals for the target AHB slave are generated in response to received first input AHB signals from a first source AHB slave. At step 504, second output AHB signals for the target AHB slave are generated in response to received second input AHB signals from a second source AHB slave. At step 506, the first and second output AHB signals are selectively transmitted to the target AHB slave to avoid conflicts between the first and second source AHB slaves to access the target AHB slave.
Although
Although this disclosure has described example embodiments of the present invention, various changes and modifications may be suggested to one skilled in the art. It is intended that this disclosure encompass such changes and modifications as fall within the scope of the appended claims.
This application claims priority under 35 U.S.C. §119(e) to U.S. Provisional Patent Application No. 61/057,361 filed on May 30, 2008 and entitled “CIRCUIT AND METHOD OF BRIDGING MULTIPLE SOURCE AHB SLAVES TO TARGET AHB SLAVE,” which is hereby incorporated by reference.
Number | Date | Country | |
---|---|---|---|
61057361 | May 2008 | US |