WO2017172171A1 - Self-adapting baud rate - Google Patents

Self-adapting baud rate Download PDF

Info

Publication number
WO2017172171A1
WO2017172171A1 PCT/US2017/019774 US2017019774W WO2017172171A1 WO 2017172171 A1 WO2017172171 A1 WO 2017172171A1 US 2017019774 W US2017019774 W US 2017019774W WO 2017172171 A1 WO2017172171 A1 WO 2017172171A1
Authority
WO
WIPO (PCT)
Prior art keywords
baud rate
range
data words
network interface
wireless interface
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
PCT/US2017/019774
Other languages
French (fr)
Inventor
Chunhui Liu
Chengzhou Li
Bruno Jechoux
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel IP Corp
Original Assignee
Intel IP Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel IP Corp filed Critical Intel IP Corp
Publication of WO2017172171A1 publication Critical patent/WO2017172171A1/en
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/40Bus networks
    • H04L12/4013Management of data rate on the bus
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04JMULTIPLEX COMMUNICATION
    • H04J11/00Orthogonal multiplex systems, e.g. using WALSH codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L7/00Arrangements for synchronising receiver with transmitter
    • H04L7/0016Arrangements for synchronising receiver with transmitter correction of synchronization errors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04JMULTIPLEX COMMUNICATION
    • H04J11/00Orthogonal multiplex systems, e.g. using WALSH codes
    • H04J11/0023Interference mitigation or co-ordination
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W84/00Network topologies
    • H04W84/02Hierarchically pre-organised networks, e.g. paging networks, cellular networks, WLAN [Wireless Local Area Network] or WLL [Wireless Local Loop]
    • H04W84/10Small scale networks; Flat hierarchical networks
    • H04W84/12WLAN [Wireless Local Area Networks]

Definitions

  • This disclosure relates in general to the field of wireless communication, and more particularly to a system and method for providing a self-adapting baud rate.
  • Each interface may have its own adapter, and each adapter may have its own clock,
  • FIGURE 1 is a block diagram of a computing system according to one or more examples of the present Specification.
  • FIGURE 2 is a block diagram of an input/output (1/0) module according to one or more examples of the present Specification.
  • FIGURE 3 is a system-level illustration of a mobile device simultaneously communicating on two or more wireiess interfaces according to one or more examples of the present Specification.
  • FIGURE 4 is a timing diagram illustrating timing; difficulties that may be encountered while communicating on two or more wireless interfaces according to one or more examples of the present Specification,
  • FIGURE 5 is a flo chart of a method for adjusting a baud rate according to one or more examples of the present Specification
  • FIGURE 6 is a flow chart of ..additional aspects of a method lor adjusting a baud rate according to one or more examples of the present Specification
  • FIGURE 7 is a flow chart of an additional method of adjusting a baud rate according to one or more examples of the present Specification.
  • FIGURE 8 is a block diagram of a user equipment (UE) device according to one or more exampies of the present Spe ification.
  • UE user equipment
  • the present Specification discusses a '"smart phone” or tablet with two different wireless interfaces: a 4G cellular interface that connects to an "eNodeB" of a cellular network, and a WLAN interface that connects to a wireless access point (WAP).
  • WLAN wireless access point
  • IDC imdevice coexistence
  • 46 cellular and tSM/GNSS radios may work concurrently in adjacent, sub-harmonic, or even on the same frequency bands. Interference from this concurrent operation may be partly addressed by frequency filters, but the solution is imperfect. Thus, it is advantageous to introduce a signaling mechanism to further address !DC issues.
  • the 46 cellular and LAfsS interfaces may each Include a universal asynchronous receiver/transmitter ⁇ UART ⁇ interface by which they can pass signals back and forth, allowing them, to adjust their behaviors to accommodate IDC activity.
  • the effective baud rate of a UART port ca differ from its nominal value over a particular range.
  • the value S is used to refer to the nominal baud rate provided for a clock.
  • S ⁇ le6 baud.
  • the error tolerance of a clock also referred to as its variance, is referred to herein as M,
  • M ⁇ 0.03S, meaning that the most variable range for S is S ⁇ 0,035.
  • the "most variable'' ' clock is the one with the widest range of error.
  • the most variable clock is the one with S3 ⁇ 4 tolerance.
  • Several computations disclosed herein use the most variable clock, meaning for example that If a baud rate is swept over the range of the most variable clock, then most variable M is chosen. The sweep may thus initialize at 5— , and conclude at 5 + M, with an appropriately Sized step size, which may be based on the step size provided by the clock.
  • an echo mode Is used to calibrate the baud rate This ma be performed once In the context of manufacturing tests, if varying operation conditions such as temperature o aging have a negligible impact, or periodically In the operational mode otherwise.
  • One interface sends a training sequence to the second interface-
  • the training sequence may be a data word for the interface, such as 10 bits (8 data bits, plus a start bit and stop bit) for a traditional UART Interface.
  • a "word” as used herein should be understood to be any sequence of one or more bits that is provided together.
  • the second interface receives the sequence and echoes it back to the first interface.
  • the sende compares the echoed sequence to the original sequence, If the echo matches the original, then there Is a zero error rate for that training word.
  • the range of frequencies may be swept across the range of the most variable clock, and for each ste s the error rate is observed and recorded in an echo log (which ma simply be a sequence of Boolean indicators—eithe an error occurred on that step, or an error did not occur).
  • an echo log which ma simply be a sequence of Boolean indicators—eithe an error occurred on that step, or an error did not occur.
  • a range of contiguous frequency samples with a zero error rate may be identified *
  • the sender selects an agreed baud rate, such as from a midpoint of the range of contiguous frequencies, and both UARTs use the agreed baud rate for their communication. This method may be performed at an appropriate time, such as upon startup, or upon encountering an error, by way of non-limiting example,
  • the frequency range is not swept as above. Rather, a sequence of N data words is sent and echoed back from the receiver.
  • the sender inspects the H data words, and identifies position n, which is the first bit position where an error Is observed.
  • the clock drift may be inferred from the position of this error, for example e ⁇ -— . and the baud rate may be adjusted up or down by >
  • this method provides a solution for at least two issues that arise in the case of a baud rate mismatch: erroneous reception of a peer UART, and erroneous reception of a locai UART, If the UART baud rate is not calibrated between the W.LAN and 46 DCiular modems, the UARTs may in some cases synchronize and successfully communicate only coincidentaiiy. Consequently, the interference mitigation techniques that rely on WLAN and 46 DCiular traffic alignment may work only occasionally.
  • the throughputs for both WIAH and 46 cellular may thus substantially degrade, and in some cases radio links may be maintained even though the radio itself is of relatively high quality,
  • the present method helps to ensure functionality of IDC solutions, and makes chips mors tolerant of clock variation from both production and environmental stimuli.
  • FIGURE I is a block diagram of system-on-a chip (SoQ 100 according to one or more examples of the present Specification, SoC 100 is disclosed as non-limiting example, but in a more general sense, the teachings of this Specification are applicable to providing any suitable computing device.
  • SoQ 100 system-on-a chip
  • a "computing device” may be or comprise, by way of non-limiting example, a computer, workstation,, server, mainframe, virtual machine (whether emulated or on a "bare-metal” hypervisor), embedded computer, embedded controller, embedded sensor, personal digital assistant, laptop computer, cellular telephone,, IP telephone, smart phone, tablet computer, convertible tabiet computer, computin appliance, network appliance, receiver, wearable computer, handheld calculator, or any other electronic, microelectronic, or microelectromechanical device for processing and comm.uniC3ting. data.
  • SoC 100 should be understood to encompass any such computing device,
  • SoC 100 includes a number of computing elements, which include any active or passive elements of SoC 100 that contribute to SoC 100 to perform its intended function.
  • processor 110 connected to a memory 120, havin stored therein executable instructions for providing appropriate software, such as an operating system and operational software.
  • Other components of SoC 100 include an input/output (I/O) block 140 and a power manager 130.
  • I/O input/output
  • This architecture is provided by way of example only, and is intended to be non-exclusive and non- limiting.
  • each of the listed components may be a physically separate intellectual property (IP) block, designed in advance for use on SoC 100, and each may occupy a separate space on a silicon wafer.
  • IP intellectual property
  • the sepa ate IP blocks may communicate with each other via an on-chip interconnect fabric.
  • the various disclosed elements may be logical divisions only, and need not necessarily represent physically separate hardware and/or software components.
  • Certain computing devices provide main memory and storage, for example,, in a single physical memory device, and others provide them in separate devices, in the case of virtual machines or hypervisors, ail or part of a function may be provided in the form of software or firmware running over a vsrtuaSization layer to provide the disclosed logical function, in other examples, a device such as a network interface may provide only the minimum hardware interfaces necessary to perform its logical operation, and may rely on a software driver to provide additional necessary logic.
  • each logical block disclosed herein may broadly include one or more logic elements configured and operable for providing the disclosed logical operation of that block.
  • a logic elements may include hardware, external hardware ⁇ digital, analog, or mixed-signal), software, reciprocating software, services, drivers, interfaces, components, modules, algorithms, sensors, components, firmware, microcode, programmable logic, or objects that can coordinate to achieve a logical operation.
  • processor 110 may be communicatively coupled to memory 120 via any suitable memory bus, which may be for example a direct memory access (DMA) o any othe suitable bus.
  • processor 110 may be communicatively coupled to other devices via a system bus or fabric.
  • a "fabric” includes any wired or wireless interconnection line, network, connection, bundle, single bus, multiple buses, crossbar network, single-stage network, multistage network or other conduction medium operable to carry data, signals, or power between parts of a computing device, or between computing devices. It should be noted that these uses are disclosed by way of non- limiting example only, and that some embodiments may omit on or more of the foregoing buses, while others may employ additional or different buses.
  • a "processor” may include any combination of logic elements operable to execute instructions, whether loaded from memory, or implemented directly in hardware, including by wa of non-limiting example a microprocessor,, digital signal processor, field-programmable gate array, graphics processing unit, programmable logic array, application-specific integrated circuit, or virtual machine processor.
  • a multi-core processor may be provided, in which case processor 110 may be treated as only one core of a multi-core processor, or may be treated as the entire multi-core processor, as appropriate.
  • one or more co-processor may also be provided for specialized or support functions.
  • memory 120 is disclosed as a single logical block, but in a physical embodiment may include one or more blocks of any suitable volatile or nonvolatile memory technology or technologies, including for example DDR RAM, SRAM, DRAM, cache, 11 or L2 memory, on-chip memory, registers, flash, ROM, optical media, virtual memory regions, magnetic or tape memory, or similar.
  • memory 120 may comprise both a relatively low-latency volatile main memory, and a relatively higher- latency non-volatile memory.
  • the two species of memory need not be physically separate devices, and i some examples may represent simply a logical separation of function (for example, in some devices, all memory is volatile, or all memory is nonvolatile).
  • DMA is disclosed by way of non-ltmiting example, DMA is not the only protocol consistent with this specification, and that other memory architectures are available,
  • Memory 120 may Include one or more non-transitory computer-readable mediums, including by way of non-limiting example, a hard drive, solid-state drive, external storage, redundant array of independent disks (RAID), network-attached storage, optica! storage, tape drive, backup system, cloud storage, or any combination of the foregoing.
  • Memory 120 may be, or may include therein, a database or databases or data stored in other configurations, and may include a stored copy of operational software such as an operating system and operational software. Many other configurations are also possible, and are intended to be encompassed within the broad scope of this Specification.
  • a "network,” as used throughout this Specification, may include any communicative platform operable to exchange data or information within or between computing devices, including by way of non-limiting example, serial or parallel communication ports, an ad-hoc local network, an internet architecture providing computing devices with the ability to electronically interact, an asynchronous transfer mode (ATM) network, a plain old telephone system (POTS), which computing devices cou!d use to perform transactions in which they may be assisted by human operators or In which they may manually key data into a telephone or other suitable electronic equipment, any packet data network (PON) offering a communications interface or exchange between arty two nodes in a system, or any iocai area network (LAN), metropolitan area network ⁇ MAN ⁇ , wide area network (WAN), wireless local area network fWLAN), virtual private network (VPN), Intranet, or any other appropriate architecture or system that facilitates communications in a network or telephonic environment.
  • ATM asynchronous transfer mode
  • POTS plain old telephone system
  • PON packet data network
  • LAN io
  • I/O block 140 may be a standalone-computing device in its own right, having its own processor (which may be a different type of processor rom processor 110 ⁇ , registers, and local memory.
  • processor which may be a different type of processor rom processor 110 ⁇ , registers, and local memory.
  • An example of an !/O block 140 is discussed in more detail in FIGURE 2,
  • SoC 100 may instead be a modular device, In which case I/O block 140 may be provided as a separate module, such as an Intel ® XMMTM 7360 modem platform with multiple modem interfaces,
  • Power manager 130 may be or include a power supply, such as a switching regulator, as well as logic to regulate power to SoC 100.
  • power manager 130 may include logic to detect different operating modes, and to intelligently provide a regulated voltage to on-chip components as the demands of those operating modes dictate.
  • temperature sensors withi power manager 130 may detect when the temperature of processor 110 rises above a threshold, which may indicate that processo 110 is in danger of being damaged. To prevent damage, power manager 130 may
  • Power manager 130 may also supply different input voltages to different computing elements of SoC 100 according to the power demands of those processing elements, in various embodiments, power manager 130 may also include current Simitars, voltage references, meters, sensors, transducers, drivers, switches, and any other elements that assist power manager 130 in performing its work.
  • FIGURE 2 is a block diagram of an embodiment of I/O block 140 according to one or more examples of the present Specification, in the example of FIGURE 2, I/O block 140 includes two wireless communication modules, each of which may be a modem for interfacing to a different wireless protocol.
  • An 4G cellular module 210 and WLAN module 220 are disclosed by way of example, but these two communication modules should be understood to be non-limiting illustrative examples only, in appropriate embodiments, I/O block 140 may include any number of suitable communication modules, for communicatin over any appropriate wired or wireless protocols.
  • Each module includes at least one respective antenna 240-1, and 240-2, Antennas 240-1 and 240-2 may be built-in antennas, external antennas, or third-party acid-on antennas in appropriate circumstances, it should also be noted that in certain embodiments, at least one of the communication modules may be a wired communications module, such as Ethernet, in which case in place of antenna 240, a wired connection may be provided.
  • a wired communications module such as Ethernet
  • UARTs 204 should be understood to be a non-limiting example of a focal communication driver.
  • a local communication driver includes any circuit, microchip, hardware, software, firmware, combination of hardware, software, or firmware, or any other engine that is configured to provide data communication services between two communication modules.
  • the local communication driver may be in addition to the communication driver of a module that provides an interface to th external network, such as WLAN o 4G cellular.
  • 46 cellular module 210 and WLA module 220 can synchronize data transfers between each other.
  • UART 204-1 has respective transmit and receive pins
  • UART 204-2 has respective receive and transmit pins.
  • the transmit pin of UART 204-1 may be wired to the receive pin of UART 204-2.
  • the transmit pin of UART 204-2 may in Its turn be wired to the receive pin of UART 204-1,
  • UARTs 204-1 is disclosed byway of example as a separate device from UART 204-2, and in this case each module has its own UAR 204,
  • a single local communication driver such as a unified UART 204, may be provided, and AG cellular module 210 and WLAN module 220 may each communicatively couple to the single UART 204,
  • UART 204 could be a separate UART provided externally to both 46 cellular module 210 and WLAN module 220, and may be a medium providing communication between the two modules.
  • 4G cellular module 210 may need to synchronize with WLA module 220 as described above.
  • 46 cellular module 210 and WLAN module 220 may each have their own individual clocks. While these clocks may have the same nominal baud rate S for communicating over UARTs 204, the clocks are real world devices that have an imperfect tolerance, and they may be sensitive to temperature or other environmental fluctuations. Thus, if clock 208-1 and clock 208-2 both have nominal baud rate of 1 MHz, they may nevertheless provide a different clock rate. For example, clock 208-1 may have a tolerance of ⁇ 3%, while clock 208-2 may have a tolerance of ⁇ 5%.
  • 46 cellular module 210 and WLAN module 220 may each include a respective synchronization engine 230 to carry out the synchronization operations discussed herein.
  • an "engine” includes any combination of one o more logic elements, of similar or dissimilar species, operable for and configured to perform one o more methods provided by the engine.
  • the synchronization engine may Include a processor of any species, as well as logic for instructing the software to perform the methods herein.
  • the processor and logic may be embodied in processor 110 and memory 120, or In an on-hoard processor and memory. of 46 cellular module 210 and WLAN module 220.
  • the synchronization engine may Include a special Integrated circuit designed to carry out a method or a part thereof, and may also Include software instructions operable to instruct a processor to perform the method, Sn some cases, the synchronization engine may run as a "daemon” process, A "daemon” may include any program or series of executable instructions, whether implemented in hardware, software, firmware, or any combination thereof that runs as a background process, a terminate-and-stay-resident program, a service, system extension, control panel, boot up procedure, BIOS subroutine, or any simitar program that operates without direct user interaction.
  • daemon processes may run with elevated privileges in a "driver space," o in ring 0, 1, or 2 In a protection ring architecture.
  • the synchronization engine may include other hardware and software, including configuration files, registry entries, registers, and interactive or user-mode software by way of non-limiting example.
  • the synchronization engine includes executable instructions stored on a non-transitory medium operable to perform a method according to this Specification.
  • the processor may retrieve a copy of the instructions from storage and load it into memory. The processor may then iteratsvely execute the instructions of the synchronization engine to provide the desired method.
  • R6URE 3 is a system-level diagram illustrating the interference issues discussed above.
  • UE 310 is a smart phone, tablet., laptop computer, or other device with wireless communication capabilities.
  • UE 310 includes both an 46 cellular interface and a WLAN interface.
  • UE 31G is simultaneously communicatively coupled to eNodeS 340 and WAP 330, As discussed above, there are many situations in which a user ma need to simultaneously communicate over both 46 cellular link 342 and WLAN Sink 332, In those cases, 46 cellular module 210 and WLAN module 220 may need to coordinate with one another. Thus, each may Include a respective HART 204, and they may communicate ove with each other over their respective UARTs.
  • WLAN module 220 when WLAN module 220 transmits on frequencies that are close to or that overlap the 4G cellular operating band, it can coordinate its transmission with 46 cellular module 210, so that 46 cellular module 210 can ignore o reject signals "polluted'' by the WLAN transmission, Conversely, if an 46 cellular transmission is interfering with a high priority WLAN transmission, WLAN module 220 may request a temporary suspension of the Interfering 46 cellular activity.
  • FIGURE 4 illustrates how errors can be encountered when the clocks 208 of the respective communication modules are slightly out of sync.
  • datagram 410 illustrates an example UART word 420.
  • UART word 420 includes a start bit 422, a stop bit 424, and a payload 426 comprising 6 data beds numbered respectivel bO through b7. Start bit 422 and stop bit 424 are used to identify this as a UART character.
  • Start bit 422 and stop bit 424 are used to identify this as a UART character.
  • a 10-bit UART data word is disclosed herein by wa of non-limiting example,, but a data word may be of any suitable size to fit a particular embodiment.
  • a word should be understood to be any sequence of one or more bits.
  • Such UART characters can be exchanged between 46 cellular and WLAN modems.
  • the UART character is sampled in the middle of the bit.
  • the sampling may be shifted so that some bits may be rnisidentified.
  • the second waveform has a slightly slower clock, so that bits 3 and 5 erroneously appear as '%" where they should be "1.”
  • these calibration errors can in some cases be corrected without modifying the hardware from its previous state. Rather, coordinating software can be introduced to cause the hardware to synchronize so that true coordination can be achieved.
  • T e baud rate of th repeater device ⁇ i.e., receiver! varies from S ⁇ M to S + , With a step size of x, a sweep of baud rates across the variance may be performed, with a total ofTM steps in the sweep. To start the sweep, the sender initiates the baud rate to
  • setting the baud rate may be performed via an out-of-band signaling wire that operates at a slower, more fault 'tolerant rate.
  • the sender executes the echo, and receives the data word back from the receiver,
  • the data word may be selected to maximize the number of transitions and thus Increase the probability of an error, such as OlQ!OlOi or lOlOlOlO
  • the sender compares the received echo word to the original data word. If they are identical, a success message (such as may be written to an echo log. If they are not identical, a failure message (such as a "0") may be written to the echo log.
  • the sender then increases the baud rate by x and repeats the procedure until it reaches the final baud rate S + M.
  • the echo log includes a series of messages indicating which steps in the sweep were successful, and which failed.
  • the echo log may be as simple as a string of Boolean indicators, or may be much more detailed, depending on the embodiment, in this case, assume that the most variable clock has a S3 ⁇ 4 tolerance, and that each step is a 1% increase. The following results may be observed, with "I” indicating success, and "0" indieatingfatiure:
  • An alternative embodiment is also provided.
  • a single series of N data words is sent to the receiver and echoed back. Once the echo back is received, the first erroneous bit, n, is observed. The degree of relative drift can then be inferred and adjusted appropriately.
  • a message may be sent with N consecutive, contiguous, identical UART words (for example, 01010101 or 10101010 as before).
  • the sender notes the rank n of the first erroneous bit in the echo, with the start bit of the first UART word being position 0, and positions being numbered sequentially from there.
  • « ⁇ may be selected according to JV— ceil f TM L where e irCi!t is the
  • FIGURE 5 is a flowchart of a method 500 of performing a clock synchronization according to one or more examples of the present Specification
  • a device such as 46 cellular module 210 initializes its clock rate, and instructs the other device, suc as LAM module 220 to initialize its clock to the sam rate, such as S— .
  • LAM module 220 initializes its clock to the sam rate, such as S— .
  • 4G cellular module 210 and WLA module 220 are used by wa of non-limiting, illustrative example. However, it should be understood that any suitable devices or modules may be substituted for those disc ssed herein.
  • 46 cellular module 210 sends one data word to WIAN module 220, This may be, for example, a UART word such as UART word 420 of FIGURE 4, 4G celluiar module 210 then waits for WLAN module 220 to echo the word back to 4 cellular moduie 210,
  • Echo log 508 is a log the result of each echo operation. This may be simply a one-bit flag indicating either success or failure for each echo operation, or it may be a more detailed tog with additional information that can be used for more refined baud rate computations,
  • the baud rate is incremented by x, as described above.
  • 46 celluiar module 210 increments its baud rate by x, and instructs WIAN moduie 220 to do the same.
  • FIGURE 6 is a flowchart of a method 600 of using the information in echo fog 508 to calculate an optimai baud rate according to one or more examples of the present Specification
  • 46 cellular moduie 210 inspects echo log 508 to determine a range of values that were successf ul. This may be a range of contiguous values, each of which was successful, bordered by values that were unsuccessful.
  • the two terminal steps are designated as a and b.
  • the optimal baud rate may be computed as ⁇ .
  • the optimal baud rate is a middle value of the two endpoints, such as the mean or median.
  • FIGURE 5 and FIGURE 6 may be considered a baud rate sweep method
  • Method 700 of FIGURE 7 may be considered a more mathematical method that does not require a baud rate sweep.
  • 4G cellular module 210 again initializes the baud rate to a suitable value, such as S.
  • 4G cellular module 210 sends a string of iV words to WLAN module 220.
  • WLAN module 220 then echoes the string of /V words back to 4(3 cellular module 210.
  • 46 cellular module 210 observes the position n of the first s
  • the error value may then be computed as ⁇ ,
  • the baud rate of both 46 cellular module 210 and WLAN module 220 may be adjusted by the value of e.
  • SOC 800 is included in user equipment CUE
  • UE refers to any device t be used by an end-user to communicate, such as a hand-held phone, smartphone, tablet, uitra-thin notebook, notebook with broadband adapter, or any other similar communication device.
  • a UE connects to a base station or node, which potentially corresponds in nature to a mobile station (MS) in a GSM network,
  • MS mobile station
  • SOC 800 includes 2 coresTM806 and 807. Similar to the discussion above, cores 806 and 807 may conform to an Instruction Set Architecture, such as an Intel ® Architecture Core rM -based processor, an Advanced Micro Devices, Inc. ⁇ AMD) processor, a MlPS-based processor, an ARM-base processor design, or a customer thereof, as well as their licensees or adopters. Cores 806 and 807 are coupled to cache control 808 that is associated with bus interface unit 809 and 12 cache SIO to communicate with other parts of system 800. Interconnect 810 includes an on-chip interconnect, such as an lOSF, AM8A, or other interconnect discussed above, which potentially implements one or more aspects of the described invention.
  • an Instruction Set Architecture such as an Intel ® Architecture Core rM -based processor, an Advanced Micro Devices, Inc. ⁇ AMD) processor, a MlPS-based processor, an ARM-base processor design, or a customer thereof, as well as their licensees or adopters.
  • [0082J internconnect 810 provides communication channels to the other components, such as a Subscriber identity Module ⁇ SIM ⁇ 830 to Interface with a SiiVS card, a boot ROM 835 to hold boot code for execution by cores 806 and 807 to initialize and boot SOC 800, a SDRAM controller 840 to interface with external memory ⁇ e.g. DRAM 860 ⁇ , a flash controller 845 to interface wit non -volatile memor (e.g. Flash 865), a peripheral control 850 (e.g. Serial Peripheral Interface) to interface with peripherals, video codecs 820 and Video interface 825 to display and receive input ⁇ e,g. touch enabled input), GPU 815 to perform graphics related computations, etc. Any of these interfaces may incorporate aspects of the invention described herein.
  • a Subscriber identity Module ⁇ SIM ⁇ 830 to Interface with a SiiVS card
  • boot ROM 835 to hold boot code for execution by cores 806 and 807 to initialize and boot SOC 800
  • the system illustrates peripherals for communication, such as a Bluetooth module 870, 4(5 modem 875, GPS 880, and WLAN modem 885.
  • a UE includes a radio for communication.
  • these peripheral communication modules are not all required.
  • some form of a radio for external communication is to be included.
  • SoC system-on-a-chip
  • An SoC represents an integrated circuit ⁇ IQ that integrates components of a computer or other electronic system into a single chip.
  • the SoC may contain digital, analog, mixed-signal, and radio frequency functions, all of which may be provided on a single chip substrate.
  • Other embodiments may include a multi-chip-rnoduie ⁇ CM ⁇ , with a plurality of chips Iocated within a single electronic package and configured to interact closel with each other throug the electronic package.
  • the computing functionalities disclosed herein may be impSemented in one or more silicon cores in Application Specific Integrated Circuits (ASICs), Field Programmable Gate Arrays ⁇ FPGAs ⁇ , and other semiconductor chips,
  • any suitably configured processor such as processor 110, can execute any type of instructions associated with the data to achieve the operations detailed herein.
  • Any processor disclosed herein could transform an element or an article (for example, data) from one state or thing to another state or thing.
  • some activities outlined herein may be implemented wit fixed logic or programmable logic (for example, software and/or computer instructions executed by a processor) and the elements identified herein could be some type of a programmable processor, programmable digital logic ⁇ for example, a field programmable gate array (PP«3A), an erasable programmable read only memory ⁇ EPROIV1), an electrically erasable programmable read only memory ⁇ EEPRGIV! ⁇ , an ASIC that includes digital logic, software, code, electronic instructions, flash memory, optical disks, CD-ROMs, DVD ROMs, magnetic or optica! cards, other types of machine- readable mediums suitable for storin electronic instructions, or any suitable combination thereof.
  • programmable digital logic for example, a field programmable gate array (PP«3A), an erasable programmable read only memory ⁇ EPROIV1), an electrically erasable programmable read only memory ⁇ EEPRGIV! ⁇
  • ASIC that includes digital logic, software, code, electronic instructions
  • a storage may store information in any suitable type of tangible, non-transitory storage medium ⁇ for example, random access memory (RAM), read only memory (ROM), field programmable gate array ⁇ FFGA), erasable programmable read only memory (EP OfV ), electrically erasable programmable ROfvl (EEPBOIvl), etc.), software, hardware ⁇ fo example, processor instructions or microcode), or in any other suitable component, device, element, or object where appropriate and based on particular needs.
  • the information being tracked, sent, received, or stored in a processor could be provided in any database, register, table, cache, queue, control list, or storage structure, based on particular needs and implementations, all of which could be referenced in any suitable timeframe.
  • any of the memory or storage elements disclosed herein should be construed as being encompassed within the broad terms 'memory * and "storage/ as appropriate,
  • a non-transitory storage medium herein Is expressly intended to include any non-transitory special-purpose or programmable hardware configured to provide the disclosed operations, or to cause a processor such as processor 110 to perform the disclosed operations,
  • tOOSSJ Compute program logic implementing all or part of the functionality described herein is embodied in various forms, including, but in no way limited to, a source code form, a computer executable form, machine instructions or microcode, programmable hardware, and various intermediate forms ffor example, forms generated by an assembler, compiler, linker, or locator ⁇ , !n an example, source code includes a series of computer program instructions implemented in various programming languages, such as an object code, an assembl language, or a high-level language such as OpenCL, FORTRAN, C, C++, JAVA, or HTfvH for use with various operating systems or operating environments, or in hardware description languages such as Spice, Venlog, and VHOL
  • the source code may define and use various data structures and communication messages.
  • the source code may be in a computer executable form (e.g., via an interpreter), or the source code may be converted (e.g., via a translator, assembler, or compiler) into a computer executable form, or converted to an intermediate form such as byte code.
  • any of the foregoing may be used to build or describe appropriate discrete or integrated circuits, whether sequential, combinatorial, stat machines, or otherwise,
  • any number of electrical circuits of the FIGURES may be implemented on a board of an associated electronic device.
  • the board can be a general circuit board that can hold various components of the internal elect ronic system of the electronic device and, further, provide connectors for other peripherals. More specifically, the board can provide the electrical connections by which the other components of the system can communicate electrically.
  • Any suitable processor and memory can be suitably coupled to the board based on particular configuration needs, processin demands, and computing designs.
  • Other components such as . external storage, additional sensors, controllers for audso/video display, and peripheral devices may be attached to the board as plug-in cards, via cables, or integrated into the board itself.
  • the electrical circuits of the FIGURES may be implemented as stand-alone modules (e.g., a device with associated components and circuitry configured to perform a specific application or function) or implemented as plug-in modules into application specific hardware of electronic devices.
  • an apparatus comprising: a first network interface, comprising a first clock and a local communication driver to communicatively couple the first network interface to a second network interface havin a second clock; and one or more logic elements, including at least one hardware logic element, comprising a synchronization engine to: send a first plurality of data words from th first wireless Interface to the second wireless interface via the local communication driver; receive back from the second wireless interface a second piuraiity of data words; assign a plurality of error rates to the data words of the second plurality of data words, the p!urality of error rates indicating match or mismatch; identify a range o least error values within the plurality of error rates; and select an agreed baud rate from within the range,
  • example 3 the computing apparatus of example 2, wherein the agreed baud rate is a mean of the range of contiguous zero error rates,
  • example 4 the computing apparatus of example 2, wherein the agreed baud rate is a median of the contiguous zero error rates.
  • example 5 the computing apparatus of example 1 Wherein the first wireless interface and the second wireless interface are of a first species and second species respectively.
  • example 7 There is disclosed in example 7, the computing apparatus of example 6, wherein terminals of the baud rate range are selected according to a tolerance range of at least one of the clocks.
  • sweeping the baud rate range comprises sweeping ----- steps, wherein M is the most variable baud rate of a tolerance of at least one of the clocks, and x is a step size.
  • a method of providing a self-adapting baud rate between a first network interface and a second network interface comprising: sending a first plurality of words from a first wireless interface to a second wireless interface via the local communication driver; receiving back from the second wireless interface a second plurality of data words; assigning a plurality of error rates to the data words of the second plurality of data words, the plurality of error rates indicating match or mismatch; identifying a range of least error values within the plurality of error rates; and selecting an agreed baud rate from within the range.
  • example 14 There is disclosed in example 14, the method of example 12, wherein the first wireless interface and the second wireless interface are of a first species and second species respectively,
  • sweeping the baud rate range comprises sweeping ⁇ steps, wherein M is the most variable baud rate of a tolerance of at least one of the clocks, and x is a step size.
  • example 19 there is disclosed in example 19, one or more tangible, no -transitory computer-readable storage mediums having stored thereon executable instructions to instruct a processor for providing a self-adapting baud rate between a first network interf ace and a second network interface, comprising: sending a first plurality of words from a first wireless interface to a second wireiess interface via the local communication driver; receiving back from the second wireless interface a second plurality of data words; assigning a plurality of error rates to the data words of the second plurality of data words, the plurality of error rates indicating match or mismatch; identifying a range of contiguous zero error values within the plurality of error rates; and selecting an agreed baud rate from within the range.
  • example 20 the one or more tangible, non-transitory computer-readable mediums of example 19, wherei the agreed baud rate is a mean of the range of contiguous zero error rates.
  • example 21 the one or more tangible, non-transitory computer-readable mediums of example 19, wherein the agreed baud rate is a median of the contiguous zero error rates.
  • example 22 there is disclosed in example 22, the one or more tangible, non-transitory computer-readable mediums of example 10, wherein the first wireless interface and the second wireless interface are of a first species and second species respectively.
  • example 24 the one or more tangible, non-transitory computer-readable mediums of example 23, wherein terminals of the baud rate range are selected according to a tolerance range of at least one of the clocks.
  • a method of providing a self-adapting baud rate between a first network interface of a first species and a second network interface of a second species comprising; sending a sequence of N data words from the first network interface to the second network interface via the local communication driver; receiving an echo of the N data words via the local communication driver; identifyin a first error bit within the N data words, the first error bit being at a position n t wherein N is selected according to ⁇ ceil( ⁇ ), wherein e target is a magnitude of a most variable tolerance, and l wor ⁇ i is a length, in bits., of each data word; computing an estimated error e; and
  • an apparatus comprising means for performing the method of example 25.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Quality & Reliability (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

In an example, there is disclosed an apparatus, having: a first network interface, having a first clock and a local communication driver to communicatively couple the first network interface to a second network interface having a second clock; and one or more logic elements, including at least one hardware logic element, providing a synchronization engine to: send a first plurality of data words from the first wireless interface to the second wireless interface via the local communication driver; receive back from the second wireless interface a second plurality of data words; assign a plurality of error rates to the data words of the second plurality of data words, the plurality of error rates indicating match or mismatch; identify a range of least error values within the plurality of error rates; and select an agreed baud rate from within the range.

Description

SELF-ADAPTING BAUD RATE
CROSS-REFER EN CE TO RELATED APPLICATIONS fOOOil This application claims priority to U.S. Patent Application No. 15/083,578, filed March 29, 2016 and titled "SELF-ADAPTING BAUD RATE." The priority application is incorporated by reference herein.
FIELD Of THE SPECIFICATION
[0002J This disclosure relates in general to the field of wireless communication, and more particularly to a system and method for providing a self-adapting baud rate.
BACKGROUND
|00®¾ Contemporary devices are provided with multiple network interfaces, such as wired { Ethernet), Bluetooth, wireless local area network (WLAN) (also known as "WiPi"), and 4G Long-Term Evolution (LTE) cellular. Each interface may have its own adapter, and each adapter may have its own clock,
BRIEF DESCRIPTION OF THE -DRAWINGS
[0004J The present disclosure is best understood from the following detailed description when read with the accompanying figures. It is emphasized that, in accordance with the standard practice in the industry, various features are not necessarily drawn to scale, and are used for illustration purposes only. Where a scale is shown, explicitly or implicitly, it provides only one illustrative example, in other embodiments, the dimensions of the various features may be arbitrarily increased or reduced for clarity of discussion,
[00053 FIGURE 1 is a block diagram of a computing system according to one or more examples of the present Specification.
(00063 FIGURE 2 is a block diagram of an input/output (1/0) module according to one or more examples of the present Specification. [OO0?j FIGURE 3 is a system-level illustration of a mobile device simultaneously communicating on two or more wireiess interfaces according to one or more examples of the present Specification.
[00083 FIGURE 4 is a timing diagram illustrating timing; difficulties that may be encountered while communicating on two or more wireless interfaces according to one or more examples of the present Specification,
[00091 FIGURE 5 is a flo chart of a method for adjusting a baud rate according to one or more examples of the present Specification,
[00103 FIGURE 6 is a flow chart of ..additional aspects of a method lor adjusting a baud rate according to one or more examples of the present Specification,
[00113 FIGURE 7 is a flow chart of an additional method of adjusting a baud rate according to one or more examples of the present Specification.
[00123 FIGURE 8 is a block diagram of a user equipment (UE) device according to one or more exampies of the present Spe ification.
EMBODIMENTS OF THE DISCLOSURE,
[00133 The- following disclosure provides many different embodiments, or examples, for implementing different features of the present disclosure. Specific examples of components and arrangements are described below to simplify the present disclosure. These are, of course, merely exampies and are not intended to be limiting, Further, the present disclosure may repeat reference numerals and/o Setters in the various examples. This repetition is for the purpose of simplicity and clarity and does riot in itseif dictate a relationship between the arious embodiments and/or configurations discussed- Different embodiments may have different advantages, and no particular advantage is necessarily required of any embodiment.
[0014} By way of example, the present Specification discusses a '"smart phone" or tablet with two different wireless interfaces: a 4G cellular interface that connects to an "eNodeB" of a cellular network, and a WLAN interface that connects to a wireless access point (WAP). There are various situations in which a user may want to use both Interfaces simultaneously. These two example interfaces should be understood as illustrations of the techniques disclosed herein, and analogous techniques may be applied to a broad range of wired and wireless i terfaces to achieve similar results,
[0015 With the increasing usage of many different wireless technologies and services, many devices, and in particular mobile devices, are equipped with multiple wifeless transceivers, e.g., 4 cellular, LAN, Bluetooth, industrial, scientific, and medical {ISM} bands, and Global Navigation Satellite System (GNSS) by way of non-limiting example, in some embodiments, imdevice coexistence (IDC) interference is a serious issue, at least partly because of the proximity of the devices to one another. This interference is especially problematic when two interfaces are used simultaneously on the same device, such as simultaneously using 4G cellular and WLAN on a smart phone,
[OOiS] For example, 46 cellular and tSM/GNSS radios may work concurrently in adjacent, sub-harmonic, or even on the same frequency bands. Interference from this concurrent operation may be partly addressed by frequency filters, but the solution is imperfect. Thus, it is advantageous to introduce a signaling mechanism to further address !DC issues. Thus, the 46 cellular and LAfsS interfaces may each Include a universal asynchronous receiver/transmitter {UART} interface by which they can pass signals back and forth, allowing them, to adjust their behaviors to accommodate IDC activity.
£00373 However, it has been observed that dual asynchronous receiver/transmitter {DART} baud may not strictly align, even if both UARTs are operating at the identical nominal frequency, Each chip may have its own clock, and even when the clocks have the same nominal baud rate, they may have different tolerances, and may behave differently in the presence of stimuli, such as temperature, that can cause clock drift.
[0018] Thus, because of production quality differences, circuit limitations, or other issues, the effective baud rate of a UART port ca differ from its nominal value over a particular range. Throughout this Specification, the value S is used to refer to the nominal baud rate provided for a clock. Thus, for a 1 megabit baud rate (1 MHz clock), S ~ le6 baud. The error tolerance of a clock, also referred to as its variance, is referred to herein as M, Thus, if a clock has a 3% tolerance, then M" ~ 0.03S, meaning that the most variable range for S is S ± 0,035. Between two clocks; the "most variable''' clock is the one with the widest range of error. For example, between a clock with a 3% error tolerance and a clock with a 5% error tolerance, the most variable clock is the one with S¾ tolerance. Several computations disclosed herein use the most variable clock, meaning for example that If a baud rate is swept over the range of the most variable clock, then most variable M is chosen. The sweep may thus initialize at 5— , and conclude at 5 + M, with an appropriately Sized step size, which may be based on the step size provided by the clock.
[OOiSl To provide a concrete example, take two clocks with a nominal frequency of ilvlHi, each providing a nominal baud rate of 1 megabit. One clock has a tolerance of 3%, and one has a tolerance of 5%, Thus, S ~ le6 baud. The most variable is chosen, in this case M— ±5%. An appropriate step size is chosen, such as Q.Q1 megabaud. Thus, the sweep ma be from 0,95 megabaud to 1.05 megabaud,
$0203 in an example of the present Specification, an echo mode Is used to calibrate the baud rate, This ma be performed once In the context of manufacturing tests, if varying operation conditions such as temperature o aging have a negligible impact, or periodically In the operational mode otherwise. One interface sends a training sequence to the second interface- The training sequence may be a data word for the interface, such as 10 bits (8 data bits, plus a start bit and stop bit) for a traditional UART Interface. A "word" as used herein should be understood to be any sequence of one or more bits that is provided together. The second interface receives the sequence and echoes it back to the first interface. The sende then compares the echoed sequence to the original sequence, If the echo matches the original, then there Is a zero error rate for that training word. The range of frequencies may be swept across the range of the most variable clock, and for each ste s the error rate is observed and recorded in an echo log (which ma simply be a sequence of Boolean indicators—eithe an error occurred on that step, or an error did not occur). Once the full frequency range has been swept, a range of contiguous frequency samples with a zero error rate may be identified* The sender selects an agreed baud rate, such as from a midpoint of the range of contiguous frequencies, and both UARTs use the agreed baud rate for their communication. This method may be performed at an appropriate time, such as upon startup, or upon encountering an error, by way of non-limiting example,
£00211 In an alternative embodiment, the frequency range is not swept as above. Rather, a sequence of N data words is sent and echoed back from the receiver. The sender inspects the H data words, and identifies position n, which is the first bit position where an error Is observed. The clock drift may be inferred from the position of this error, for example e ~ -— . and the baud rate may be adjusted up or down by >
[00223 Advantageously, this method provides a solution for at least two issues that arise in the case of a baud rate mismatch: erroneous reception of a peer UART, and erroneous reception of a locai UART, If the UART baud rate is not calibrated between the W.LAN and 46 ceiiular modems,, the UARTs may in some cases synchronize and successfully communicate only coincidentaiiy. Consequently, the interference mitigation techniques that rely on WLAN and 46 ceiiular traffic alignment may work only occasionally. The throughputs for both WIAH and 46 cellular may thus substantially degrade, and in some cases radio links may be maintained even though the radio itself is of relatively high quality, The present method helps to ensure functionality of IDC solutions, and makes chips mors tolerant of clock variation from both production and environmental stimuli.
[00231 & system and method for devices with self-adapting baud rates will now be described with more particular reference to the attached FIGURE'S, it should be noted that throughout the FIGURES, certain reference numerals may be repeated to indicate that a particular device or block is wholly or substantially consistent across the FIGURES. This is not, however, intended to imply any particular relationship between the various embodiments disclosed, in certain examples, a genus of elements may be referred to by a particular reference numeral ("widget 10"), while individual species or examples of the genus may be referred to by a hyphenated numeral ("first specific widget 10-1" and "second specific widget 10-2"),
[0024] FIGURE I is a block diagram of system-on-a chip (SoQ 100 according to one or more examples of the present Specification, SoC 100 is disclosed as non-limiting example, but in a more general sense, the teachings of this Specification are applicable to providing any suitable computing device. In various embodiments, a "computing device" may be or comprise, by way of non-limiting example, a computer, workstation,, server, mainframe, virtual machine (whether emulated or on a "bare-metal" hypervisor), embedded computer, embedded controller, embedded sensor, personal digital assistant, laptop computer, cellular telephone,, IP telephone, smart phone, tablet computer, convertible tabiet computer, computin appliance, network appliance, receiver, wearable computer, handheld calculator, or any other electronic, microelectronic, or microelectromechanical device for processing and comm.uniC3ting. data. Thus, SoC 100 should be understood to encompass any such computing device,
[0025 in this example, SoC 100 includes a number of computing elements, which include any active or passive elements of SoC 100 that contribute to SoC 100 to perform its intended function. In this example,, processor 110 connected to a memory 120, havin stored therein executable instructions for providing appropriate software, such as an operating system and operational software. Other components of SoC 100 include an input/output (I/O) block 140 and a power manager 130. This architecture is provided by way of example only, and is intended to be non-exclusive and non- limiting. In a specific example, each of the listed components may be a physically separate intellectual property (IP) block, designed in advance for use on SoC 100, and each may occupy a separate space on a silicon wafer. The sepa ate IP blocks may communicate with each other via an on-chip interconnect fabric.
[0026] in other examples, the various disclosed elements may be logical divisions only, and need not necessarily represent physically separate hardware and/or software components. Certain computing devices provide main memory and storage, for example,, in a single physical memory device, and others provide them in separate devices, in the case of virtual machines or hypervisors, ail or part of a function may be provided in the form of software or firmware running over a vsrtuaSization layer to provide the disclosed logical function, in other examples, a device such as a network interface may provide only the minimum hardware interfaces necessary to perform its logical operation, and may rely on a software driver to provide additional necessary logic. Thus, as appropriate to the embodiment, each logical block disclosed herein may broadly include one or more logic elements configured and operable for providing the disclosed logical operation of that block. As used throughout this Specification, a logic elements" may include hardware, external hardware {digital, analog, or mixed-signal), software, reciprocating software, services, drivers, interfaces, components, modules, algorithms, sensors, components, firmware, microcode, programmable logic, or objects that can coordinate to achieve a logical operation.
£002?J in an example, processor 110 may be communicatively coupled to memory 120 via any suitable memory bus, which may be for example a direct memory access (DMA) o any othe suitable bus. Processor 110 may be communicatively coupled to other devices via a system bus or fabric. As used throughout this Specification, a "fabric" includes any wired or wireless interconnection line, network, connection, bundle, single bus, multiple buses, crossbar network, single-stage network, multistage network or other conduction medium operable to carry data, signals, or power between parts of a computing device, or between computing devices. It should be noted that these uses are disclosed by way of non- limiting example only, and that some embodiments may omit on or more of the foregoing buses, while others may employ additional or different buses.
[00281 in various examples, a "processor" may include any combination of logic elements operable to execute instructions, whether loaded from memory, or implemented directly in hardware, including by wa of non-limiting example a microprocessor,, digital signal processor, field-programmable gate array, graphics processing unit, programmable logic array, application-specific integrated circuit, or virtual machine processor. In certain architectures, a multi-core processor may be provided, in which case processor 110 may be treated as only one core of a multi-core processor, or may be treated as the entire multi-core processor, as appropriate. In some embodiments, one or more co-processor may also be provided for specialized or support functions.
[00293 To simplify this disclosure, memory 120 is disclosed as a single logical block, but in a physical embodiment may include one or more blocks of any suitable volatile or nonvolatile memory technology or technologies, including for example DDR RAM, SRAM, DRAM, cache, 11 or L2 memory, on-chip memory, registers, flash, ROM, optical media, virtual memory regions, magnetic or tape memory, or similar. In certain embodiments, memory 120 may comprise both a relatively low-latency volatile main memory, and a relatively higher- latency non-volatile memory. However, the two species of memory need not be physically separate devices, and i some examples may represent simply a logical separation of function (for example, in some devices, all memory is volatile, or all memory is nonvolatile). It should also be noted that although DMA is disclosed by way of non-ltmiting example, DMA is not the only protocol consistent with this specification, and that other memory architectures are available,
[0030] Memory 120 may Include one or more non-transitory computer-readable mediums, including by way of non-limiting example, a hard drive, solid-state drive, external storage, redundant array of independent disks (RAID), network-attached storage, optica! storage, tape drive, backup system, cloud storage, or any combination of the foregoing. Memory 120 may be, or may include therein, a database or databases or data stored in other configurations, and may include a stored copy of operational software such as an operating system and operational software. Many other configurations are also possible, and are intended to be encompassed within the broad scope of this Specification.
[00311 I O block 140 may be provided to communicatively couple SoC 100 to a wired or wireless network. A "network," as used throughout this Specification, may include any communicative platform operable to exchange data or information within or between computing devices, including by way of non-limiting example, serial or parallel communication ports, an ad-hoc local network, an internet architecture providing computing devices with the ability to electronically interact, an asynchronous transfer mode (ATM) network, a plain old telephone system (POTS), which computing devices cou!d use to perform transactions in which they may be assisted by human operators or In which they may manually key data into a telephone or other suitable electronic equipment, any packet data network (PON) offering a communications interface or exchange between arty two nodes in a system, or any iocai area network (LAN), metropolitan area network {MAN}, wide area network (WAN), wireless local area network fWLAN), virtual private network (VPN), Intranet, or any other appropriate architecture or system that facilitates communications in a network or telephonic environment.
100321 I/O block 140 may be a standalone-computing device in its own right, having its own processor (which may be a different type of processor rom processor 110}, registers, and local memory. An example of an !/O block 140 is discussed in more detail in FIGURE 2, In some cases, SoC 100 may instead be a modular device, In which case I/O block 140 may be provided as a separate module, such as an Intel® XMM™ 7360 modem platform with multiple modem interfaces,
[0033] Power manager 130 may be or include a power supply, such as a switching regulator, as well as logic to regulate power to SoC 100. For example, power manager 130 may include logic to detect different operating modes, and to intelligently provide a regulated voltage to on-chip components as the demands of those operating modes dictate.
[00343 For example, temperature sensors withi power manager 130 may detect when the temperature of processor 110 rises above a threshold, which may indicate that processo 110 is in danger of being damaged. To prevent damage, power manager 130 may
& reduce the voltage supplied to processor 110, thus reducing the operating power, and reducing the temperature,
[0035 Power manager 130 may also supply different input voltages to different computing elements of SoC 100 according to the power demands of those processing elements, in various embodiments, power manager 130 may also include current Simitars, voltage references, meters, sensors, transducers, drivers, switches, and any other elements that assist power manager 130 in performing its work.
[0036J FIGURE 2 is a block diagram of an embodiment of I/O block 140 according to one or more examples of the present Specification, in the example of FIGURE 2, I/O block 140 includes two wireless communication modules, each of which may be a modem for interfacing to a different wireless protocol. An 4G cellular module 210 and WLAN module 220 are disclosed by way of example, but these two communication modules should be understood to be non-limiting illustrative examples only, in appropriate embodiments, I/O block 140 may include any number of suitable communication modules, for communicatin over any appropriate wired or wireless protocols.
[0037] Each module includes at least one respective antenna 240-1, and 240-2, Antennas 240-1 and 240-2 may be built-in antennas, external antennas, or third-party acid-on antennas in appropriate circumstances, it should also be noted that in certain embodiments, at least one of the communication modules may be a wired communications module, such as Ethernet, in which case in place of antenna 240, a wired connection may be provided.
[003S3 Because 4G cellular module 210 and WLAN module 220 need to be able to operate in IDC mode, each is provided with a UART, 204-1 and 204-2 respectively, which may enable synchronization, data sharing, or other genera! communication.
(00¾9J UARTs 204 should be understood to be a non-limiting example of a focal communication driver. As used throughout this Specification, a local communication driver includes any circuit, microchip, hardware, software, firmware, combination of hardware, software, or firmware, or any other engine that is configured to provide data communication services between two communication modules. The local communication driver may be in addition to the communication driver of a module that provides an interface to th external network, such as WLAN o 4G cellular. Using UART 204, 46 cellular module 210 and WLA module 220 can synchronize data transfers between each other. [00 0J in this example, UART 204-1 has respective transmit and receive pins, and UART 204-2 has respective receive and transmit pins. By way of non-limiting example, the transmit pin of UART 204-1 may be wired to the receive pin of UART 204-2. The transmit pin of UART 204-2 may in Its turn be wired to the receive pin of UART 204-1,
[00411 It should also be noted that UARTs 204-1 is disclosed byway of example as a separate device from UART 204-2, and in this case each module has its own UAR 204, However, in other embodiments, a single local communication driver, such as a unified UART 204, may be provided, and AG cellular module 210 and WLAN module 220 may each communicatively couple to the single UART 204, Thus, UART 204 could be a separate UART provided externally to both 46 cellular module 210 and WLAN module 220, and may be a medium providing communication between the two modules.
[0042| According t embodiments of the present Specification, 4G cellular module 210 may need to synchronize with WLA module 220 as described above. However, 46 cellular module 210 and WLAN module 220 may each have their own individual clocks. While these clocks may have the same nominal baud rate S for communicating over UARTs 204, the clocks are real world devices that have an imperfect tolerance, and they may be sensitive to temperature or other environmental fluctuations. Thus, if clock 208-1 and clock 208-2 both have nominal baud rate of 1 MHz, they may nevertheless provide a different clock rate. For example, clock 208-1 may have a tolerance of ±3%, while clock 208-2 may have a tolerance of ±5%.
[0043] In thai case. If clock 208-1 Is operating at +2%, while clock 208-2 is operating at —4%, synchronization errors can occur between UART 204-1 and UART 204-2, As the clocks drift out of sync, error bit errors may be experienced. Thus, the present Specification illustrates embodiments wherein the baud rate self-adjusts to ensure that the two clocks remain in sync.
[00443 46 cellular module 210 and WLAN module 220 may each include a respective synchronization engine 230 to carry out the synchronization operations discussed herein. As used throughout this Specification, an "engine" includes any combination of one o more logic elements, of similar or dissimilar species, operable for and configured to perform one o more methods provided by the engine. Thus, the synchronization engine may Include a processor of any species, as well as logic for instructing the software to perform the methods herein. The processor and logic may be embodied in processor 110 and memory 120, or In an on-hoard processor and memory. of 46 cellular module 210 and WLAN module 220. In some cases, the synchronization engine may Include a special Integrated circuit designed to carry out a method or a part thereof, and may also Include software instructions operable to instruct a processor to perform the method, Sn some cases, the synchronization engine may run as a "daemon" process, A "daemon" may include any program or series of executable instructions, whether implemented in hardware, software, firmware, or any combination thereof that runs as a background process, a terminate-and-stay-resident program, a service, system extension, control panel, boot up procedure, BIOS subroutine, or any simitar program that operates without direct user interaction. In certain embodiments, daemon processes may run with elevated privileges in a "driver space," o in ring 0, 1, or 2 In a protection ring architecture. It should also be noted that the synchronization engine may include other hardware and software, including configuration files, registry entries, registers, and interactive or user-mode software by way of non-limiting example.
[0045] I one example, the synchronization engine includes executable instructions stored on a non-transitory medium operable to perform a method according to this Specification. At an appropriate time, such as upon startup or upon a command from a user, the processor may retrieve a copy of the instructions from storage and load it into memory. The processor may then iteratsvely execute the instructions of the synchronization engine to provide the desired method.
[00463 R6URE 3 is a system-level diagram illustrating the interference issues discussed above. In this example, UE 310 is a smart phone, tablet., laptop computer, or other device with wireless communication capabilities. In this case, UE 310 includes both an 46 cellular interface and a WLAN interface. UE 31G is simultaneously communicatively coupled to eNodeS 340 and WAP 330, As discussed above, there are many situations in which a user ma need to simultaneously communicate over both 46 cellular link 342 and WLAN Sink 332, In those cases, 46 cellular module 210 and WLAN module 220 may need to coordinate with one another. Thus, each may Include a respective HART 204, and they may communicate ove with each other over their respective UARTs.
[00473 As Illustrated in FIGURE 3, when WLAN module 220 transmits on frequencies that are close to or that overlap the 4G cellular operating band, it can coordinate its transmission with 46 cellular module 210, so that 46 cellular module 210 can ignore o reject signals "polluted'' by the WLAN transmission, Conversely, if an 46 cellular transmission is interfering with a high priority WLAN transmission, WLAN module 220 may request a temporary suspension of the Interfering 46 cellular activity.
[004SJ FIGURE 4 illustrates how errors can be encountered when the clocks 208 of the respective communication modules are slightly out of sync. In this example, datagram 410 illustrates an example UART word 420. UART word 420 includes a start bit 422, a stop bit 424, and a payload 426 comprising 6 data beds numbered respectivel bO through b7. Start bit 422 and stop bit 424 are used to identify this as a UART character, Note that a 10-bit UART data word is disclosed herein by wa of non-limiting example,, but a data word may be of any suitable size to fit a particular embodiment. Thus, a word should be understood to be any sequence of one or more bits. Such UART characters can be exchanged between 46 cellular and WLAN modems.
[0049J In general practice, the UART character is sampled in the middle of the bit. However, as illustrated in timing diagram 480, in the event of clock drift, the sampling may be shifted so that some bits may be rnisidentified. For example, in this illustration, the second waveform has a slightly slower clock, so that bits 3 and 5 erroneously appear as '%" where they should be "1." Bits 4, 6, and 7 {shown at 484 and 486) correctly appear as "0.." but this may be deemed coincidental to the timing of the transition from the 1 state to the 0 state,
[00503 This issue may become more serious when several UART messages are sent in a row. The drifting accumulates, and the data are significantly misaligned in latter parts of the message. For example, in one test, a WLAN baud rate drift of approximately 6% was observed with respect to the rate of an 46 cellular modem. When the 4G cellular modem received more than two messages, the sampling drift definitively resulted in incorrect detection. With a 10% drift, data failures were encountered within a single 10-bit data word.
[OOSij Advantageously, these calibration errors can in some cases be corrected without modifying the hardware from its previous state. Rather, coordinating software can be introduced to cause the hardware to synchronize so that true coordination can be achieved.
£00523 The following symbols may be used in describing the methods of this Specification:
a. x bits per second ~ the tolerant variation of baud rate at the sender. ø. S bits per second - the nominal agreed baud rate between sender and receiver.
c. M bits per second - the variation i baud rate., and in particular, the most diverse baud rate between the two devices.
[00533 T e baud rate of th repeater device {i.e., receiver! varies from S ~~ M to S + , With a step size of x, a sweep of baud rates across the variance may be performed, with a total of™ steps in the sweep. To start the sweep, the sender initiates the baud rate to
S— M, to some cases,, setting the baud rate may be performed via an out-of-band signaling wire that operates at a slower, more fault 'tolerant rate.
(0054) The sender executes the echo, and receives the data word back from the receiver, In an example,, the data word may be selected to maximize the number of transitions and thus Increase the probability of an error, such as OlQ!OlOi or lOlOlOlO, The sender then compares the received echo word to the original data word. If they are identical, a success message (such as may be written to an echo log. If they are not identical, a failure message (such as a "0") may be written to the echo log.
[0055] The sender then increases the baud rate by x and repeats the procedure until it reaches the final baud rate S + M.
[00563 After the procedure above, the echo log includes a series of messages indicating which steps in the sweep were successful, and which failed. The echo log may be as simple as a string of Boolean indicators, or may be much more detailed, depending on the embodiment, in this case, assume that the most variable clock has a S¾ tolerance, and that each step is a 1% increase. The following results may be observed, with "I" indicating success, and "0" indieatingfatiure:
Figure imgf000014_0001
Figure imgf000014_0002
[00573 We can obse ve here that at the steps—2, the nominal baud rate 5, and at
- 1, and 4-2, successes were observed. At the othe baud rates, failures were observed. To select a best agreed baud rate, a range [ . b] Is identified, with ά and b being inclusive terminals of a contiguous series of successful steps in the sweep, Thus, -2 will not be included in the range, because it is not a contiguous series. Rather — S and b ~ 4-2 may be chosen. The agreed baud rate may then be chosen as a midpoint in this range, The midpoint may be chosen, for example, as a median if quantum increments are used (in this case, +1), or if the baud rate is more nearly continuously variable, then it may be chosen as a mathematical mean {~~). By choosing a middle value, such as the median or mean, we account for the possibility that additional drift may occur, such as with temperature variations. This increases the likelihood that the IDC solution will remain functional. The devices save the agreed baud rate for future use, in laboratory testing, this procedure has been observed to successfully calibrate the baud rate of two different devices to enable IDC operation,
[0058] An alternative embodiment is also provided. In this case, rather than a bsud rate sweep, a single series of N data words is sent to the receiver and echoed back. Once the echo back is received, the first erroneous bit, n, is observed. The degree of relative drift can then be inferred and adjusted appropriately.
[00591 * this case, a message may be sent with N consecutive, contiguous, identical UART words (for example, 01010101 or 10101010 as before). Afte receiving the echo back, the sender notes the rank n of the first erroneous bit in the echo, with the start bit of the first UART word being position 0, and positions being numbered sequentially from there. A baud rate error e (in %} may then be calculated via the formula e =™.
[0060] «¥ may be selected according to JV— ceil f ™ L where e irCi!t is the
\ *='£« Γ,ίίβί * * -ward /
variance in percent of the most variable dock, and Lvl>T s the length of a word (i.e., 1 or more bits). Thus,, for a 10-bit UART word and a clock with a variability of ±3%., N ~ ceil I '" ), or a two-word message. Once e is determined, the sender increases the baud rate by e.
[00&1] FIGURE 5 is a flowchart of a method 500 of performing a clock synchronization according to one or more examples of the present Specification,
[0062] in block 502, a device such as 46 cellular module 210 initializes its clock rate, and instructs the other device, suc as LAM module 220 to initialize its clock to the sam rate, such as S— . Throughout the examples of figures 5, 6, and 7, 4G cellular module 210 and WLA module 220 are used by wa of non-limiting, illustrative example. However, it should be understood that any suitable devices or modules may be substituted for those disc ssed herein. [0063] in block 504, 46 cellular module 210 sends one data word to WIAN module 220, This may be, for example, a UART word such as UART word 420 of FIGURE 4, 4G celluiar module 210 then waits for WLAN module 220 to echo the word back to 4 cellular moduie 210,
[00643 in block 506, 45 cellula module 210 notes whether the word was successfully echoed back or not 4G cellular module 2.10 may store the results in an echo log 508, Echo log 508 is a log the result of each echo operation. This may be simply a one-bit flag indicating either success or failure for each echo operation, or it may be a more detailed tog with additional information that can be used for more refined baud rate computations,
[008SJ In block' 510, the baud rate is incremented by x, as described above. Thus, 46 celluiar module 210 increments its baud rate by x, and instructs WIAN moduie 220 to do the same.
[00663 i decision block 512, if the baud rate (B) has not exceeded the variance of the most diverse tolerance ( ) (i.e., B > ), then the process continues in block 502. The process repeats until the full range of baud rates has been swept, from S - M to S + .
[00S?3 Returning to decision block 512, once the full range of variances has been swept, then in block 599, the method is done,
[00&8J The resuit of method 500 is that a complete echo log 508 has been built, indicating the success or failure of each step in the baud rate sweep,
[00693 FIGURE 6 is a flowchart of a method 600 of using the information in echo fog 508 to calculate an optimai baud rate according to one or more examples of the present Specification,
[00703 In block 602, 46 cellular moduie 210 inspects echo log 508 to determine a range of values that were successf ul. This may be a range of contiguous values, each of which was successful, bordered by values that were unsuccessful. The two terminal steps are designated as a and b.
[00713 In block 604, once the boundary values and b have been identified, the optimal baud rate may be computed as ~~. in other words, the optimal baud rate is a middle value of the two endpoints, such as the mean or median.
[0072J in block 606, 46 celluiar module 202 sends the agreed baud rate S to WIAN module 220, [0073] in block 699, the method is done.
[00?4| in aggregate, the methods of FIGURE 5 and FIGURE 6 may be considered a baud rate sweep method, Method 700 of FIGURE 7 may be considered a more mathematical method that does not require a baud rate sweep. There are various tradeoffs between method 600 and method 700, However, both methods are compatible with the teachings of the present Specification,
[0075] In block 702, 4G cellular module 210 again initializes the baud rate to a suitable value, such as S.
[0076] In block 704, 4G cellular module 210 sends a string of iV words to WLAN module 220. WLAN module 220 then echoes the string of /V words back to 4(3 cellular module 210.
[0077] in block 706, 46 cellular module 210 observes the position n of the first s
erroneous bit. The error value may then be computed as ~,
[0078] in block 70S, the baud rate of both 46 cellular module 210 and WLAN module 220 may be adjusted by the value of e.
[0079] In 799, the method is done.
[0080] Turning next to Figure 8, an embodiment of a system on-chip (SOC) design in accordance with the inventions is depicted. As .a specific illustrative example, SOC 800 is included in user equipment CUE), in one embodiment, UE refers to any device t be used by an end-user to communicate, such as a hand-held phone, smartphone, tablet, uitra-thin notebook, notebook with broadband adapter, or any other similar communication device. Often a UE connects to a base station or node, which potentially corresponds in nature to a mobile station (MS) in a GSM network,
[0081] Here, SOC 800 includes 2 cores™806 and 807. Similar to the discussion above, cores 806 and 807 may conform to an Instruction Set Architecture, such as an Intel® Architecture CorerM-based processor, an Advanced Micro Devices, Inc. {AMD) processor, a MlPS-based processor, an ARM-base processor design, or a customer thereof, as well as their licensees or adopters. Cores 806 and 807 are coupled to cache control 808 that is associated with bus interface unit 809 and 12 cache SIO to communicate with other parts of system 800. Interconnect 810 includes an on-chip interconnect, such as an lOSF, AM8A, or other interconnect discussed above, which potentially implements one or more aspects of the described invention.
[0082J internconnect 810 provides communication channels to the other components, such as a Subscriber identity Module {SIM} 830 to Interface with a SiiVS card, a boot ROM 835 to hold boot code for execution by cores 806 and 807 to initialize and boot SOC 800, a SDRAM controller 840 to interface with external memory {e.g. DRAM 860}, a flash controller 845 to interface wit non -volatile memor (e.g. Flash 865), a peripheral control 850 (e.g. Serial Peripheral Interface) to interface with peripherals, video codecs 820 and Video interface 825 to display and receive input {e,g. touch enabled input), GPU 815 to perform graphics related computations, etc. Any of these interfaces may incorporate aspects of the invention described herein.
[0083 in addition, the system illustrates peripherals for communication, such as a Bluetooth module 870, 4(5 modem 875, GPS 880, and WLAN modem 885. Note as stated above, a UE includes a radio for communication. As a result, these peripheral communication modules are not all required. However, in a UE some form of a radio for external communication is to be included.
10084} The foregoing outlines features of several embodiments so that those skilled in the art may better understand various aspects of the present disclosure. Those skilled in the art should appreciate that they may readily use the present disclosure as a basis for designing or modifying other processes and structures for carrying out the same purposes and/or achieving the same advantages of the embodiments introduced herein. Those skilled in the art should also realize that such equivalent constructions do not depart from the spirit and scope of the present disclosure, and that they may make various changes, substitutions, and alterations herein without departing from the spirit and scope of the present disclosure.
[00853 Ail or part of any hardware element disclosed herein may readily be provided in a system-on-a-chip (SoC), including centra! processing unit {CPU) package, An SoC represents an integrated circuit {IQ that integrates components of a computer or other electronic system into a single chip. The SoC may contain digital, analog, mixed-signal, and radio frequency functions, all of which may be provided on a single chip substrate. Other embodiments may include a multi-chip-rnoduie { CM}, with a plurality of chips Iocated within a single electronic package and configured to interact closel with each other throug the electronic package. In various other embodiments, the computing functionalities disclosed herein may be impSemented in one or more silicon cores in Application Specific Integrated Circuits (ASICs), Field Programmable Gate Arrays {FPGAs}, and other semiconductor chips,
[00861 Mot also that in certain embodiment, some o the components may be omitted or consolidated. In a general sense, the arrangemems depicted in the figures may be more logical in their representations, whereas a physical architecture may include various permutations, combinations, and/or hybrids of these elements, it is imperative to note that countless possible design configurations can be used to achieve the operational objectives outlined herein. Accordingly, the associated infrastructure has a myriad of substitute arrangements, design choices, device possibilities, hardware configurations, software implementations, and equipment options.
[0GS?3 in a general sense, any suitably configured processor, such as processor 110, can execute any type of instructions associated with the data to achieve the operations detailed herein. Any processor disclosed herein could transform an element or an article (for example, data) from one state or thing to another state or thing. In another example, some activities outlined herein may be implemented wit fixed logic or programmable logic (for example, software and/or computer instructions executed by a processor) and the elements identified herein could be some type of a programmable processor, programmable digital logic {for example, a field programmable gate array (PP«3A), an erasable programmable read only memory {EPROIV1), an electrically erasable programmable read only memory {EEPRGIV!)}, an ASIC that includes digital logic, software, code, electronic instructions, flash memory, optical disks, CD-ROMs, DVD ROMs, magnetic or optica! cards, other types of machine- readable mediums suitable for storin electronic instructions, or any suitable combination thereof.
[0088] In operation, a storage may store information in any suitable type of tangible, non-transitory storage medium {for example, random access memory (RAM), read only memory (ROM), field programmable gate array {FFGA), erasable programmable read only memory (EP OfV ), electrically erasable programmable ROfvl (EEPBOIvl), etc.), software, hardware {fo example, processor instructions or microcode), or in any other suitable component, device, element, or object where appropriate and based on particular needs. Furthermore, the information being tracked, sent, received, or stored in a processor could be provided in any database, register, table, cache, queue, control list, or storage structure, based on particular needs and implementations, all of which could be referenced in any suitable timeframe. Any of the memory or storage elements disclosed herein should be construed as being encompassed within the broad terms 'memory* and "storage/ as appropriate, A non-transitory storage medium herein Is expressly intended to include any non-transitory special-purpose or programmable hardware configured to provide the disclosed operations, or to cause a processor such as processor 110 to perform the disclosed operations,
tOOSSJ Compute program logic implementing all or part of the functionality described herein is embodied in various forms, including, but in no way limited to, a source code form, a computer executable form, machine instructions or microcode, programmable hardware, and various intermediate forms ffor example, forms generated by an assembler, compiler, linker, or locator}, !n an example, source code includes a series of computer program instructions implemented in various programming languages, such as an object code, an assembl language, or a high-level language such as OpenCL, FORTRAN, C, C++, JAVA, or HTfvH for use with various operating systems or operating environments, or in hardware description languages such as Spice, Venlog, and VHOL The source code may define and use various data structures and communication messages. The source code may be in a computer executable form (e.g., via an interpreter), or the source code may be converted (e.g., via a translator, assembler, or compiler) into a computer executable form, or converted to an intermediate form such as byte code. Where appropriate, any of the foregoing may be used to build or describe appropriate discrete or integrated circuits, whether sequential, combinatorial, stat machines, or otherwise,
[00903 In one example embodiment, any number of electrical circuits of the FIGURES may be implemented on a board of an associated electronic device. The board can be a general circuit board that can hold various components of the internal elect ronic system of the electronic device and, further, provide connectors for other peripherals. More specifically, the board can provide the electrical connections by which the other components of the system can communicate electrically. Any suitable processor and memory can be suitably coupled to the board based on particular configuration needs, processin demands, and computing designs. Other components such as . external storage, additional sensors, controllers for audso/video display, and peripheral devices may be attached to the board as plug-in cards, via cables, or integrated into the board itself. In another example, the electrical circuits of the FIGURES may be implemented as stand-alone modules (e.g., a device with associated components and circuitry configured to perform a specific application or function) or implemented as plug-in modules into application specific hardware of electronic devices.
[0091J Note that with the numerous examples provided herein, interaction may be described in terms of two, three, four, or more electrical components. However, this has been done for purposes of clarity and example only. It should be appreciated that the system ca be consolidated or reconfigured in an suitable manner. Along similar design alternatives, any of the illustrated components, modules, and elements of the FIGURES may be combined In various possible configurations, ail of which are within the broad scope of this Specification. In certain cases, it may be easier to describe one or more of the functionalities of a given set of flows by only refere cin a limited number of electrical elements. It should be appreciated that the electrical circuits of the FIGURES and its teachings are readily scalable and can accommodate a large number of components, as well as more complicated/sophisticated arrangements and configurations. Accordingly, the examples provided should not limit the scope or inhibit the broad teachings of the electrical circuits as potentially applied to a myriad of other architectures.
[0092J Numerous other changes, substitutions, variations,, alterations, and modifications may be ascertained to one skilled in the art and it is intended that the present disclosure encompass all such changes, substitutions, variations., alterations, and modifications as falling within the scope of the appended claims, in order to assist the United States Patent and Trademark Office (USPTO) and, additionally, any readers of any patent issued on this application in interpreting the claims appended hereto, Applicant wishes to note that the Applicant: (a) does not intend any of the appended ciaims to invoke paragraph six {6) of 35 U.SX. section 112 (pre-ΑΙΑ) or paragraph (!) of the same section {post-AIA}, as it exists on the date of the filing hereof unless the words "means for" or "steps for"' are specifically used in the particular claims; and lb) does not intend, by any statement in the Specification, to limit this disclosure in any way that is not otherwise expressly reflected in the appended claims. (0093] There is disclosed In an example 1, an apparatus, comprising: a first network interface, comprising a first clock and a local communication driver to communicatively couple the first network interface to a second network interface havin a second clock; and one or more logic elements, including at least one hardware logic element, comprising a synchronization engine to: send a first plurality of data words from th first wireless Interface to the second wireless interface via the local communication driver; receive back from the second wireless interface a second piuraiity of data words; assign a plurality of error rates to the data words of the second plurality of data words, the p!urality of error rates indicating match or mismatch; identify a range o least error values within the plurality of error rates; and select an agreed baud rate from within the range,
[0094J There is disclosed in example 2, the computing apparatus of example 1, wherei the range is a range of contiguous zero error rates,
100951 There is disclosed in example 3, the computing apparatus of example 2, wherein the agreed baud rate is a mean of the range of contiguous zero error rates,
00983 There is disclosed in example 4, the computing apparatus of example 2, wherein the agreed baud rate is a median of the contiguous zero error rates.
100073 There is disclosed in example 5, the computing apparatus of example 1 Wherein the first wireless interface and the second wireless interface are of a first species and second species respectively.
[00983 There Is disclosed in example 6, the computin apparatus of example 1, wherein sending the piuraiity of data words comprises sweeping a baud rate range.
[00993 There is disclosed in example 7, the computing apparatus of example 6, wherein terminals of the baud rate range are selected according to a tolerance range of at least one of the clocks.
[0100] There is disclosed in example 8, the computing apparatus of example 7, wherein the tolerance range is the tolerance range of the most variable clock.
[01013 There is disclosed in example 9, the computing apparatus of example 6,
2M
wherein sweeping the baud rate range comprises sweeping ----- steps, wherein M is the most variable baud rate of a tolerance of at least one of the clocks, and x is a step size. [0102] There is disclosed in example IG, a method of providing a self-adapting baud rate between a first network interface and a second network interface, comprising: sending a first plurality of words from a first wireless interface to a second wireless interface via the local communication driver; receiving back from the second wireless interface a second plurality of data words; assigning a plurality of error rates to the data words of the second plurality of data words, the plurality of error rates indicating match or mismatch; identifying a range of least error values within the plurality of error rates; and selecting an agreed baud rate from within the range.
[0103] There is disclosed in example 11, the method of example 10, wherein the range is a range of contiguous zero error rates,
[0104] There is disclosed in example 12, the method of example 11, wherein the agreed baud rate is a mean of the range of contiguous zero error rates.
[OIQS] There is disclosed in example 13, the method of example 11, wherein the agreed baud rate is a median of the contiguous zero error rates,
[0106] There is disclosed in example 14, the method of example 12, wherein the first wireless interface and the second wireless interface are of a first species and second species respectively,
[0107] There is disclosed in example IS, the method of example 10, wherein sending the plurality of data words comprises sweeping a baud rate range,
[01083 There is disclosed in example 16, the method of example 15, wherein terminals of the baud rate range are selected according to a tolerance range of at least one of the clocks,
[0109] There is disclosed in example 17, th method of example 16, wherein the tolerance range is the tolerance range of the most variable clock,
[0110] There is disclosed in example 18, the method of example 15, wherein sweeping the baud rate range comprises sweeping ~~ steps, wherein M is the most variable baud rate of a tolerance of at least one of the clocks, and x is a step size.
[Ollll There is disclosed in example 19, one or more tangible, no -transitory computer-readable storage mediums having stored thereon executable instructions to instruct a processor for providing a self-adapting baud rate between a first network interf ace and a second network interface, comprising: sending a first plurality of words from a first wireless interface to a second wireiess interface via the local communication driver; receiving back from the second wireless interface a second plurality of data words; assigning a plurality of error rates to the data words of the second plurality of data words, the plurality of error rates indicating match or mismatch; identifying a range of contiguous zero error values within the plurality of error rates; and selecting an agreed baud rate from within the range.
[0112J There is disclosed in example 20, the one or more tangible, non-transitory computer-readable mediums of example 19, wherei the agreed baud rate is a mean of the range of contiguous zero error rates.
[0113] There is disclosed in example 21, the one or more tangible, non-transitory computer-readable mediums of example 19, wherein the agreed baud rate is a median of the contiguous zero error rates.
[0114] There is disclosed in example 22, the one or more tangible, non-transitory computer-readable mediums of example 10, wherein the first wireless interface and the second wireless interface are of a first species and second species respectively.
[QliSJ There is disclosed in example 23, the one or more tangible, non-transitory computer-readable mediums of example 19, wherein sending the plurality of data words comprises sweeping a baud rate range.
[0116J There is disclosed in example 24, the one or more tangible, non-transitory computer-readable mediums of example 23, wherein terminals of the baud rate range are selected according to a tolerance range of at least one of the clocks.
[01171 There is disclosed in example 25, a method of providing a self-adapting baud rate between a first network interface of a first species and a second network interface of a second species, comprising; sending a sequence of N data words from the first network interface to the second network interface via the local communication driver; receiving an echo of the N data words via the local communication driver; identifyin a first error bit within the N data words, the first error bit being at a position nt wherein N is selected according to ~ ceil( ~ ), wherein etarget is a magnitude of a most variable tolerance, and lwor<i is a length, in bits., of each data word; computing an estimated error e; and
9 5
computing an agreed baud rate according to e ~~, [0I1SJ There Is further disclosed- in an example 26, an apparatus comprising means for performing the method of example 25.
[01191 There is further disclosed in an example 27, one or more tangible, non- transitory computer-readable storage mediums having stored thereon executable instructions for instructing one or mor processors for providing the synchronization engine of any of examples 1 - 9,
[01201 There is further disclosed in an example 28, one or more tangible, non- transitory computer-readable storage mediums having stored thereon executable instructions for snstructing one or more processors for performing the method of any of examples 10 - 18,
[01211 There Is further disclosed in an example 29, an apparatus comprisin means for performing the method of any preceding example.
[01223 There is further disclosed in an example 30, the apparatus of example 3.1, wherein the means comprise a processor and a memory.
[0123J There is further disclosed in an example 31, the apparatus of example 30, wherein the means comprise one or more tangible, no -transitory computer-readable storage mediums.
[01241 There is further disclosed in an example 32, the example of apparatus 31, wherei the apparatus is a computing device.

Claims

Qajms
What Is claimed is:
1. A computing apparatus, comprising* a first network interface, comprising a first dock and a !ocai communication driver to communicatively couple the first network interface to a second network interface having a second clock; and one or more logic eiements, including at least one hardware logic element, comprising a synchronization engine to: send a plurality of data words from the first wireless interface to the second wireless interface via the local communication driver, receiving back from the second wireless interface an echo of each data word; observe for each data word an error rate; identify a range of 0ata words with a zero error rate; and select an agreed baud rate from within the range.
2, The computing apparatus of claim 1, wherein the range of data words is a range of contiguous data words with a zero error rate,
3. The computing apparatus of claim 2, wherein the agreed baud rate is a mean of the range of contiguous data words,
4. The computing apparatus of claim 2, wherein the agreed baud rate is a median of the contiguous data words.
5, The computing apparatus of any of claims 1 - 4, wherein the first wireless interface and the second wireless interface are of a first species and second species respectiveiy.
6, The computing apparatus of any of claims 1 - 4,, wherein sending the plurality of data words comprising sweeping a baud rate range, 7, The computing apparatus of claim 6f wherein terminals of the baud rate range are selected according to a tolerance range of at ieast one of the clocks,
B. The computing apparatus of claim 7, wherein the tolerance range is the tolerance range of the most variable clock.
9. The computing apparatus of claim 6, wherein sweeping the baud rate range comprises sweeping™ steps, wherein M is the most diverse baud rate of a toierance of at least one of the clocks., and a- is a step size.
10, A method of providing a seif-adapting baud rate between a first network interface and a second network interface,, comprising: sending a plurality of data words from the first wireless interface to the second wireless interface via a local communication driver; receiving back from the second wireless interface an echo of each data word; obse ving for each data word an e ror rate; identifying a range of data words with a zero error rate; and selecting an agreed baud rate from within the range.
11, The method of claim 10, wherein the range of data words is a range of contiguous data words with a i:ero error rate.
12. Th method of claim 11, wherein the agreed baud rate is a mean of the range of contiguous data words.
13, The method of claim 11, wherein the agreed baud rate is a med ian of the contiguous data words,
14. The method of any of claims 9 ~ 13, wherein the first wireless interface and the second wireless interface are of a first species and second species respectively.
15. The method of any of claims 9 - 13, wherein sending the plurality of data words corn prisi g sweeping a baud rate range,
16. The method of claim 15, wherein terminals of the baud rate range are selected according to a tolerance range of at least one of the network interfaces.
.1.7. The method of claim 16, wherein the tolerance is the tolerance of the most variable network interface.
18. The method of claim 17, wherein sweeping the baud rate range comprises sweeping ™ steps, wherein is the most diverse baud rate of a tolerance of at least one of the clocks, and X Is a step size.
19. A computing apparatus, comprising; a first network interface, comprising a first clock and a local communicatio driver to communicatively couple the first network interface to a second network interface having a second clock; and one or more logic elements, inciuding at least one hardware logic element, comprising a synchronization engine to: send a sequence of N data words from the first network interface to the second network interface via the local communication driver; receive an echo of the N data words via the local communication driver; identify a first error bit within the N data words, the first error bit being at a position «; compute an estimated error e; and compute an agreed baud rate according to e.
20< The computing apparatus of claim 19, wherein the first wireless interface and the second wireless interface are of a first species and second species respectively.
0.5
The computing apparatus of claim 19, wherein computing e comprises e n
22. The computing apparatus of any of claims 19 - 21, wherein N is selected according to
N— ceil(- ~ ), wherein etarmt is a magnitude of a most variable tolerance, and lwo^d is a length, in bits, of each data word.
23. A method of providing a self-adapting baud rate between a first network interface and a second network interface, comprising: sending a sequence of N data words from the first network interface to the second network interface via the local communication driver; receiving an echo of the N data words via the locai communication driver;
Identifying a first error bit within the N data words, the first error bit being at a position n; computing an estimated error e; and computing an agreed baud rate according to e,
24. The method of claim 23, wherein the first wireless interface and the second wireless interface are of a first species and second species respectively, o s
25. The method of claim 23, wherein computing e comprises e -™ n ,
26. The method of any of claims 23 - 25, wherein N is selected according to N ~
O S .
cell( —. ), wherein etar t is a magnitude of a most variable tolerance, and lwerd *s a length, i bits, of each data word.
PCT/US2017/019774 2016-03-29 2017-02-27 Self-adapting baud rate Ceased WO2017172171A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/083,578 US10038569B2 (en) 2016-03-29 2016-03-29 Self-adapting baud rate
US15/083,578 2016-03-29

Publications (1)

Publication Number Publication Date
WO2017172171A1 true WO2017172171A1 (en) 2017-10-05

Family

ID=59960420

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2017/019774 Ceased WO2017172171A1 (en) 2016-03-29 2017-02-27 Self-adapting baud rate

Country Status (2)

Country Link
US (1) US10038569B2 (en)
WO (1) WO2017172171A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11963003B2 (en) 2019-01-10 2024-04-16 Stefan Meyer Network-connectable sensing device

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110430109B (en) * 2019-08-11 2021-09-07 南京中消安全技术有限公司 Two-bus-based fire-fighting equipment communication method and system
CN111314018B (en) * 2019-11-01 2021-07-13 珠海格力电器股份有限公司 Baud rate self-adaptive adjustment processing system and method and information data processing terminal
CN112118075B (en) * 2020-08-09 2023-06-02 东风电驱动系统有限公司 CAN bus baud rate self-adaption method and device
CN113556210B (en) * 2021-07-16 2024-02-27 青岛信芯微电子科技股份有限公司 Upper computer and method for establishing communication connection
CN113672544B (en) * 2021-09-02 2024-05-17 福建信息职业技术学院 Matching method for serial port communication transmission rate
CN114024795B (en) * 2021-11-05 2023-08-08 深圳数马电子技术有限公司 Baud rate self-adaption method, device, computer equipment and storage medium
CN114384354B (en) * 2021-12-15 2025-10-17 成都市易冲半导体有限公司 Hardware-implemented serial communication high dynamic range baud rate identification method and circuit
CN116488745B (en) * 2023-04-26 2025-08-26 中国电子产品可靠性与环境试验研究所((工业和信息化部电子第五研究所)(中国赛宝实验室)) Transceiver bit error rate verification device
CN119788241B (en) * 2024-12-04 2025-11-28 珠海格力电器股份有限公司 Baud rate adjusting method and device, electronic equipment and storage medium

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4748625A (en) * 1986-07-28 1988-05-31 Motorola, Inc. Optimum baud rate transmission system
US5490209A (en) * 1994-02-09 1996-02-06 Harris Corporation Autobaud rate detection mechanism
US5612961A (en) * 1995-04-27 1997-03-18 International Business Machines Corporation Method and system for verification of the baud rate for an asynchronous serial device residing within a data processing system
US20040098489A1 (en) * 2000-02-17 2004-05-20 Cedola Kent D. Automatic baud rate detection of null modem unimodem client connection
US20100232487A1 (en) * 2003-03-31 2010-09-16 Research In Motion Limited Bit rate matching system and method

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5751725A (en) * 1996-10-18 1998-05-12 Qualcomm Incorporated Method and apparatus for determining the rate of received data in a variable rate communication system
TW375529B (en) * 1997-05-14 1999-12-01 Sega Corp Data transmission method and game system using the same
JP3588040B2 (en) * 2000-07-26 2004-11-10 松下電器産業株式会社 Communication terminal device and base station device
EP1518344B1 (en) * 2002-06-28 2005-11-02 International Business Machines Corporation Method and apparatus for adapting a link parameter according to the channel quality
JP2006135674A (en) * 2004-11-05 2006-05-25 Ntt Docomo Inc Mobile communication receiver, mobile communication transmitter, mobile communication reception method, and mobile communication transmission method
KR101124932B1 (en) * 2005-05-30 2012-03-28 삼성전자주식회사 Apparatus and method for transmitting/receiving a data in mobile communication system with array antennas
US7675945B2 (en) * 2006-09-25 2010-03-09 Futurewei Technologies, Inc. Multi-component compatible data architecture
US8116697B2 (en) * 2006-11-10 2012-02-14 Xirrus, Inc. System and method for reducing multi-modulation radio transmit range
WO2008076700A2 (en) * 2006-12-13 2008-06-26 Rambus Inc. Interface with variable data rate
EP2104982A4 (en) * 2007-01-30 2016-02-24 Intellectual Discovery Co Ltd METHOD AND APPARATUS FOR TRANSMITTING AND RECEIVING A SIGNAL IN A COMMUNICATION SYSTEM
US20100098047A1 (en) * 2008-10-21 2010-04-22 Tzero Technologies, Inc. Setting a data rate of encoded data of a transmitter
US9014027B2 (en) * 2012-02-29 2015-04-21 Cisco Technology, Inc. Multi-interface adaptive bit rate session management
AU2013270397B2 (en) * 2012-06-01 2015-11-12 Blackberry Limited Universal synchronization engine based on probabilistic methods for guarantee of lock in multiformat audio systems
US8995553B2 (en) * 2012-06-08 2015-03-31 Apple Inc. Methods and apparatus for mitigating interference in aggressive form factor designs
WO2013187873A1 (en) * 2012-06-11 2013-12-19 Intel Corporation Distribution of layered multi-media streams over multiple radio links
US9337934B1 (en) * 2012-11-29 2016-05-10 Clariphy Communications, Inc. Coherent transceiver architecture
US9100167B2 (en) * 2012-11-30 2015-08-04 Broadcom Corporation Multilane SERDES clock and data skew alignment for multi-standard support
US9641813B2 (en) * 2013-03-15 2017-05-02 Arris Enterprises, Inc. CATV video and data transmission system with RF and digital combining network
US9380494B2 (en) * 2013-09-27 2016-06-28 Intel IP Corporation Systems, methods and devices for traffic offloading
US9735948B2 (en) * 2013-10-03 2017-08-15 Qualcomm Incorporated Multi-lane N-factorial (N!) and other multi-wire communication systems
US9755818B2 (en) * 2013-10-03 2017-09-05 Qualcomm Incorporated Method to enhance MIPI D-PHY link rate with minimal PHY changes and no protocol changes
GB2532950B (en) * 2014-12-02 2017-04-12 Cirrus Logic Int Semiconductor Ltd Digital accessory interface calibration

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4748625A (en) * 1986-07-28 1988-05-31 Motorola, Inc. Optimum baud rate transmission system
US5490209A (en) * 1994-02-09 1996-02-06 Harris Corporation Autobaud rate detection mechanism
US5612961A (en) * 1995-04-27 1997-03-18 International Business Machines Corporation Method and system for verification of the baud rate for an asynchronous serial device residing within a data processing system
US20040098489A1 (en) * 2000-02-17 2004-05-20 Cedola Kent D. Automatic baud rate detection of null modem unimodem client connection
US20100232487A1 (en) * 2003-03-31 2010-09-16 Research In Motion Limited Bit rate matching system and method

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11963003B2 (en) 2019-01-10 2024-04-16 Stefan Meyer Network-connectable sensing device

Also Published As

Publication number Publication date
US20170288899A1 (en) 2017-10-05
US10038569B2 (en) 2018-07-31

Similar Documents

Publication Publication Date Title
WO2017172171A1 (en) Self-adapting baud rate
KR102223545B1 (en) A device operating in multi-mode and a system comprising the device
EP3042296B1 (en) Universal pci express port
US9535117B2 (en) System debug using an all-in-one connector
US20170185559A1 (en) Platform Environment Control Interface Tunneling Via Enhanced Serial Peripheral Interface
US20190361073A1 (en) Secure debug system for electronic devices
US20170337069A1 (en) Concurrent testing of pci express devices on a server platform
TWI817125B (en) A terminal
US20090248928A1 (en) Integrating non-peripheral component interconnect (PCI) resources into a personal computer system
US9824057B2 (en) Integrated circuit for relying signal over USB connector with signal having notch at frequency of wireless band with transfer rate higher than frequency of USB high-speed interconnect
US11011876B2 (en) System and method for remote management of network interface peripherals
US10210128B2 (en) Redirection of lane resources
EP2865163A1 (en) Providing a serial protocol for a bidirectional serial interconnect
US20210110043A1 (en) Platform firmware boot mechanism
US20150331823A1 (en) Expansion module for programmable logic controller using usb communication
CN105068955A (en) Local bus structure and data interaction method
CN108028733A (en) For point-to-point interconnection with increase Test coverage from fault injection techniques
EP3382567B1 (en) Multiple storage devices implemented using a common connector
US20190044286A1 (en) Ground bar as a robust grounding scheme for a high-speed connector design
US20160234790A1 (en) System and method for improved transmit power adaptation for wireless platform
CN102629239B (en) Address memory mapping system based on peripheral component interconnect (PCI) and address memory mapping method
CN104937575A (en) USB controllers coupled to USB ports
US20070299929A1 (en) Client device interface for portable communication devices
CN102236572B (en) Firmware loading method and equipment
CN107247677B (en) Conversion device and electronic equipment

Legal Events

Date Code Title Description
NENP Non-entry into the national phase

Ref country code: DE

121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 17776177

Country of ref document: EP

Kind code of ref document: A1

122 Ep: pct application non-entry in european phase

Ref document number: 17776177

Country of ref document: EP

Kind code of ref document: A1