# Configuring board clocking

When multiple boards are connected to the CT bus, you must set up a bus clock source to synchronize timing between them. In addition, you can configure alternative (or fallback) clock sources to provide the clock signal if the primary source fails.

This topic describes:

- Clocking capabilities

- Clocking configurations

To create a robust clocking configuration, you must understand basic clocking concepts such as clock mastering and fallback. This topic assumes that you have a basic understanding of clocking. For a complete overview of board clocking, refer to the Dialogic® NaturalAccess™ OAM System Developer’s Manual.

Note:If you are not using PSTN trunks and if you are not using the CT bus, set Clocking.HBus.ClockMode = STANDALONE, Clocking.HBus.ClockSource = OSC, and skip this topic.

## CG 6565C clocking capabilities

This topic describes the rules and limitations that apply to setting up CT bus clocking on CG 6565C boards.

When a CG 6565C board is configured as the system primary clock master:

- The board's first timing reference must be set to a network trunk, a NETREF clock, or OSC.

- The board's fallback timing reference must be set to a network trunk, a NETREF reference, or OSC. Fallback to OSC is not recommended because the transition can cause slave boards to fall back to the secondary clock and create an out-of-sync condition.

When a CG 6565C board is configured as the system secondary clock master:

- The board's first timing reference must be the system's primary clock.

- The board's fallback timing reference must be set to a network trunk, a NETREF source, or OSC.

When a CG 6565C board is configured as a clock slave:

- The board's first timing reference must be the system's primary clock.

- The board's fallback timing reference must be the system's secondary clock.

Refer to Other clocking capabilities for more options.

The following tables summarize the CT bus clocking capabilities of the CG 6565C board:

### Clocking capabilities as primary master

Capability | Yes/No | Comments
--- | --- | ---
Serve as primary master | Yes |
Drive A_CLOCK | Yes |
Drive B_CLOCK | Yes |
Available primary timing references:
Local trunk | Yes |
NETREF1 | Yes |
NETREF2 | Yes |
OSC | Yes |
Fallback to secondary timing reference | Yes |
Available secondary timing references:
Local trunk | Yes |
NETREF1 | Yes |
NETREF2 | Yes |
OSC | Not recommended.
Slave to secondary master if both references fail | Yes |

Note: If a CG 6565C board is required to drive NETREF signals and also to serve as a clock master, some restrictions apply. For more information on these restrictions, refer to NETREF clocking.

### Clocking capabilities as secondary master

Capability | Yes/No | Comments
--- | --- | ---
Serve as secondary master | Yes |
Drive A_CLOCK | Yes | If the primary master drives B_CLOCK, the secondary master drives A_CLOCK.
Drive B_CLOCK | Yes | If the primary master drives A_CLOCK, the secondary master drives B_CLOCK.
Available secondary timing references:
Local trunk | Yes |
NETREF1 | Yes |
NETREF2 | Yes |
OSC | Yes |

Note: If a CG 6565C board is required to drive NETREF signals and also to serve as a clock master, some restrictions apply. For more information on these restrictions, refer to NETREF clocking.

### Clocking capabilities as slave

Capability | Yes/No | Comments
--- | --- | ---
Serve as slave | Yes |
Slave to A_CLOCK | Yes |
Slave to B_CLOCK | Yes |
Available fallback timing references:
A_CLOCK | Yes |
B_CLOCK | Yes |

### Other clocking capabilities

Capability | Yes/No | Comments
--- | --- | ---
Drive NETREF1 | Yes | This board can drive either NETREF1 or NETREF2, but not both at once.
Drive NETREF2 | Yes | This board can drive either NETREF1 or NETREF2, but not both at once.
Operate in standalone mode | Yes |

Note: If a CG 6565C board is required to master NETREF signals at the same time as it is required to master the clocks, some restrictions apply. For more information on these restrictions, refer to NETREF clocking.

## Configuring clocking

You can configure board clocking in your system in one of two ways:

Method | Description
--- | ---
Use clockdemo application model | Create an application that assigns each board its clocking mode, monitors clocking changes, and reconfigures clocking if clock fallback occurs. A sample clocking application, clockdemo, is provided with Natural Access. clockdemo provides a robust fallback scheme that suits most system configurations. clockdemo source code is included, allowing you to modify the program if your clocking configuration is complex. For more information about clockdemo, refer to the Dialogic® NaturalAccess™ OAM System Developer’s Manual. Note: Most clocking applications (including clockdemo) require all boards on the CT bus to be started in standalone mode.
Use board keywords (with or without application intervention) | For each board on the CT bus, set the board keywords to determine the board's clocking mode and to determine how each board behaves if clock fallback occurs. This method is documented in this topic. Unlike the clockdemo application, which allows you to specify several boards to take over mastery of the clock from one another in a fallback situation, the board keyword method allows you to specify only a single secondary master. For this reason, the board keyword method is best used to implement clock fallback in your system or in test configurations where clock reliability is not a factor. The board keyword method does not create an autonomous clock timing environment. If you implement clock fallback using this method, an application must still intervene when clock fallback occurs to reset system clocking before other clocking changes occur. If both the primary and secondary clock masters stop driving the clocks, and an application does not intervene, the boards default to standalone mode.

Choose only one of these configuration methods across all boards on the CT bus. Otherwise, the two methods interfere with one another, and board clocking may not operate properly.

## Configuring CG 6565C board clocking using keywords

CG 6565C board keywords enable you to configure a board in the following ways:

- System primary clock master

- System secondary clock master

- Clock slave

- Standalone board

Refer to the multiple board system example for a sample configuration.

You can also use board keywords to establish clock fallback sources.

### Configuring the CG 6565C as primary clock master

Use the following board keywords to configure the CG 6565C as a primary clock master:

Keyword | Description
--- | ---
Clocking.HBus.ClockSource | Specifies the source from which this board derives its timing. Set this keyword to a network source (NETREF, NETREF2, or NETWORK).
Clocking.HBus.ClockSourceNetwork | (Optional) Specifies the trunk number that the board uses as an external network clocking source for its internal clock. Note: Trunk numbering, in this case, is one-based.
Clocking.HBus.ClockMode | Specifies the CT bus clock that the board drives. Set this keyword to either A CLOCK (MASTER_A) or B CLOCK (MASTER_B).
Clocking.HBus.AutoFallBack | Enables or disables clock fallback on the board.
Clocking.HBus.FallBackClockSource | Specifies an alternate timing reference to use when the master clock source fails. Set this keyword to a network timing source (NETREF, NETREF2, or NETWORK).
Clocking.HBus.FallBackNetwork | (Optional) Specifies the trunk from which a fallback network timing source (for the clock fallback reference) can be derived when Clocking.HBus.FallBackClockSource = NETWORK. Note: Trunk numbering, in this case, is one-based.

Note: If the primary master's first source fails and then returns, the board's timing reference (and consequently, the reference for any slaves) switches back to the first timing source. This is not true for the secondary clock master.

### Configuring the CG 6565C as secondary clock master

Use the following board keywords to configure the CG 6565C as a secondary clock master:

Keyword | Description
--- | ---
Clocking.HBus.ClockSource | Specifies the source from which this board derives its timing. Set this keyword to the clock driven by the primary clock master. For example, if the primary master drives the A CLOCK, set this keyword to A_CLOCK.
Clocking.HBus.ClockMode | Specifies the CT bus clock that the secondary master drives. Set this keyword to the clock not driven by the primary clock master (MASTER_A or MASTER_B).
Clocking.HBus.AutoFallBack | Enables or disables clock fallback on the board. Set this keyword to YES.
Clocking.HBus.FallBackClockSource | Specifies an alternate timing reference to use when the master clock does not function properly. Set this keyword to reference a network source (NETREF, NETREF2, or NETWORK).
Clocking.HBus.FallBackNetwork | (Optional) Specifies the trunk from which a fallback network timing source (for the clock fallback reference) can be derived. Note: Trunk numbering, in this case, is one-based.

Note: If the primary master's timing reference recovers, the secondary master continues to drive the clock referenced by all clock slaves in the system until the application intervenes.

### Configuring the CG 6565C as a clock slave

Use the following board keywords to configure the CG 6565C as a clock slave:

Keyword | Description
--- | ---
Clocking.HBus.ClockMode | Specifies the CT bus clock from which the board derives its timing. Set this keyword to SLAVE to indicate that the board does not drive any CT bus clock (although the board can still drive NETREF or NETREF2).
Clocking.HBus.ClockSource | Specifies the source from which this clock derives its timing. Set this keyword to the clock driven by the primary clock master (A_CLOCK or B_CLOCK).
Clocking.HBus.AutoFallBack | Enables or disables clock fallback on the board.
Clocking.HBus.FallBackClockSource | Specifies the alternate clock reference to use when the master clock does not function properly. Set this keyword to the clock driven by the secondary clock master (B_CLOCK or A_CLOCK).

### Configuring the CG 6565C as a standalone board

To configure a CG 6565C board in standalone mode so the board references its own clocking information, set Clocking.HBus.ClockMode to STANDALONE. The board can use either its own oscillator or a signal received from a digital trunk as a timing signal reference. However, the board cannot make switch connections to the CT bus.

## Multiple board system example

The following example assumes a system configuration in which four CG 6565C boards reside in a single chassis. The boards are configured in the following way using keywords:

Board | Configuration
--- | ---
0 | System primary bus master (driving the A CLOCK)
1 | System secondary bus master (driving the B CLOCK)
2 | Clock slave (clock fallback enabled)
3 | Clock slave (clock fallback enabled - drives the NETREF clock)

This configuration assigns the following clocking priorities:

Priority | Timing reference
--- | ---
First | Board 0, digital trunk 1. A network signal from trunk 1 on board 0 provides the primary master clock source.
Second | Board 3, digital trunk 3. The NETREF signal driven by trunk 3 on board 3 acts as the primary master clock fallback source.
Third | Board 1, digital trunk 2. A network signal from trunk 2 on board 1 provides the secondary master clock fallback source.

The following illustration shows an example of a multiple-board system with a primary and secondary clock master:

The following table shows keywords used to configure the multiple boards according to the configuration shown in the preceding illustration.

Board | Role | Clocking keyword settings
--- | --- | ---
0 | Primary clock master | Clocking.HBus.ClockMode = MASTER_A Clocking.HBus.ClockSource = NETWORK Clocking.HBus.ClockSourceNetwork = 1 Clocking.HBus.AutoFallBack = YES Clocking.HBus.FallBackClockSource = NETREF Clocking.HBus.NetRefSpeed = 8K
1 | Secondary clock master | Clocking.HBus.ClockMode = MASTER_B Clocking.HBus.ClockSource = A_CLOCK Clocking.HBus.AutoFallBack = YES Clocking.HBus.FallBackClockSource = NETWORK Clocking.HBus.FallBackNetwork = 2
2 | Clock slave | Clocking.HBus.ClockMode = SLAVE Clocking.HBus.ClockSource = A_CLOCK Clocking.HBus.AutoFallBack = YES Clocking.HBus.FallBackClockSource = B_CLOCK
3 | Slave driving NETREF | Clocking.HBus.ClockMode = SLAVE Clocking.HBus.ClockSource = A_CLOCK Clocking.HBus.AutoFallBack = YES Clocking.HBus.FallBackClockSource = B_CLOCK Clocking.HBus.NetRefSource = NETWORK Clocking.HBus.NetRefSourceNetwork = 3 Clocking.HBus.NetRefSpeed = 8K

In this configuration, Board 0 is the primary clock master and it drives A_CLOCK. All slave boards on the system use A_CLOCK as their first timing reference. Board 0 references its timing from a network timing signal received on its own trunk 1. Board 0 also uses the NETREF signal (driven based on the digital signal received on trunk 3 of Board 3) as its clock fallback source. If the network timing signal derived from its own digital trunks fails, Board 0 continues to drive A_CLOCK based on NETREF timing reference.

If, however, both of the clocking signals used by Board 0 (the network timing signal and the NETREF signal) fail, Board 0 stops driving A_CLOCK. The secondary clock master (Board 1) then falls back to a timing reference received on its own trunk 3, and uses this signal to drive B_CLOCK. B_CLOCK then becomes the timing source for all boards that use B_CLOCK as their backup timing reference.

For this clock fallback scheme to work, all clock slaves must specify A_CLOCK as the clock source and B_CLOCK as the clock fallback source.

## NETREF clocking

The timing reference and the NETREF selection must be in different trunk groups. However, the fallback source can be in the same trunk group. The following table shows the trunks that cannot be used for clock source timing references and NETREF sources at the same time. If this occurs, the clock configuration command fails.

Trunk... | Can be used with all trunks except for...
--- | ---
1 | 2, 5, and 6
2 | 1, 5, and 6
3 | 4, 7, and 8
4 | 3, 7, and 8
5 | 1, 2, and 6
6 | 1, 2, and 5
7 | 3, 4, and 8
8 | 3, 4, and 7

The following table provides sample clock configurations showing how the timing references work in relation to the NETREF setting:

Clock source | Fallback timing reference | NETREF1 source | NETREF2 source | Allowed | Note
--- | --- | --- | --- | --- | ---
Trunk 1 | Trunk 2 | Not used. | Not used. | Yes | Although the trunks are in the same trunk group, the trunks are not used at the same time.
Trunk 1 | Trunk 2 | Trunk 5 | Not used. | No | The NETREF and primary trunk conflict because of trunk group restrictions.
Trunk 4 | Trunk 2 | Trunk 1 | Not used. | No | The NETREF and clock fallback conflict because of trunk group restrictions.
Trunk 1 | Trunk 2 | Trunk 3 | Not used. | Yes | Although the trunks are in the same trunk group, the trunks are not used at the same time.
A_CLOCK | B_CLOCK | Trunk 1 | Not used. | Yes | Because there are no trunks being used for clocks, there are no restrictions to using trunks for NETREF.
A_CLOCK | B_CLOCK | Trunk 1 | Trunk 2 | No | You cannot source NETREF1 and NETREF2 from a single board.
A_CLOCK | B_CLOCK | Not used. | Trunk 3 | Yes | Because there are no trunks being used for clocks, there are no restrictions to using trunks for NETREF.