The present invention relates generally to time-division multiplexed communication systems and, more particularly, to an advanced time-division multiplexed communication system.
In certain communication systems, multiple devices transmit data to a controller via a communication channel (e.g., a single-wire bus) that is logically divided into a number of successive time slots, with each time slot having a predetermined number of bits. Each device transmits data to the controller in one or more designated time slots according to a slot allocation scheme, which is fixed in some communication systems and variable in other communication systems. Often times, the devices transmit at fixed regular intervals, and therefore the communication channel is often logically divided into a number of frames with each frame containing a predetermined number of time slots, and each device transmits in its respective time slot(s) in each frame. Thus, for example, a first device may transmit in the first time slot of each frame, a second device may transmit in the second time slot of each frame, and so on. In some systems, devices may transmit in multiple time slots, for example, a first device may transmit in the first and second time slots of each frame, a second device may transmit in the third and fourth time slots of each frame, and so on. In some systems, different devices may transmit in different numbers of time slots, for example, a first device may transmit in the first time slot of each frame, a second device may transmit in the second and third time slots of each frame, a third device may transmit in the fourth time slot of each frame, and so on.
For convenience, N will be used herein to represent the number of time slots per frame, B will be used herein to represent the number of bits per time slot, and M will be used herein to represent the number of devices. A particular embodiment might have, for example, eight 32-bit slots per frame (i.e., N=8, B=32), although the present invention is not limited to any particular values of N and B. The actual data transmitted in each time slot may use all B bits or may use fewer than all B bits (e.g., a 24-bit sample of digital audio may be conveyed in a 32-bit time slot). In various systems, there may be a one-to-one relationship between SCK and bits (e.g., one cycle of SCK for each bit) or there may be other relationships between SCK and bits (e.g., two or more cycles of SCK for each bit).
In one embodiment of the invention there is provided a time-division multiplexed communication system comprising a master device, a plurality of slave devices, and a data line coupled to the master device and to each of the slave devices. The master device and the plurality of slave devices are interconnected in a daisy-chain configuration. Each slave device includes a data pin coupled to the data line, a frame sync input, and a frame sync output, the frame sync input coupled to the frame sync output of the previous device in the daisy-chain configuration. Each slave device is configured to receive on its frame sync input a frame sync signal from the previous device in the daisy-chain configuration and to provide on its frame sync output a delayed frame sync signal. Each slave device is configured to transmit first data on the data line via its data pin in a predetermined time slot based on the frame sync signal received on its frame sync input. At least one slave device is configured to transmit second data on its frame sync output following transmission of the delayed frame sync signal.
In various alternative embodiments, at least one slave device may include a peripheral (e.g., a microphone), wherein at least one of the first data and the second data is based on data from the peripheral. The first data and/or the second data may be based on data from at least one other slave device received via the frame sync input. At least one slave device may include a processor configured to process data from the slave device and data received via the frame sync input.
In certain embodiments, the frame sync input of the first slave device in the chain configuration may be coupled to the frame sync output of a last slave device in the daisy-chain configuration, wherein the first slave device is configured to selectively receive, via its frame sync input, data transmitted on the frame sync output of the last slave device. In such embodiments, a frame sync output of the master device may be coupled to the frame sync input of the first slave device and may be further coupled to the frame sync output of the last slave device, wherein the master device may be configured to selectively receive, via its frame sync output, data transmitted on the frame sync output of the last slave device.
In certain other embodiments, the frame sync output of the first slave device in the chain configuration may be coupled to the frame sync output of the last slave device in the daisy-chain configuration, wherein the first slave device may be configured to selectively receive, via its frame sync output, data transmitted on the frame sync output of the last slave device and to selectively transmit data received from the last slave device to the master device. In such embodiments, the frame sync input of the second slave device in the daisy-chain configuration may be coupled to the frame sync output of the first slave device and may be further coupled to the frame sync output of the last slave device, wherein the second slave device may be configured to selectively receive, via its frame sync input, data transmitted on the frame sync output of the last slave device.
In any of the above embodiments, each slave device may be configured to selectively receive, via its frame sync input, data transmitted on the frame sync output of the previous device in the daisy-chain configuration. Additionally or alternatively, the master device may be coupled to the frame sync output of the last slave device (e.g., via its frame sync output or via a separate input), wherein the master device may be configured to selectively transmit, via its frame sync output, data received from the frame sync output of the last slave device.
In another embodiment there is provided a slave device for operation in a time-division multiplexed communication system having a master device and a plurality of slave devices interconnected in a daisy-chain configuration and having a data line coupled to the master device and to each of the slave devices. The slave device includes a data pin for coupling to the data line, a frame sync output, and a frame sync input for coupling to a frame sync output of a previous device in the daisy-chain configuration. The slave device is configured to receive on its frame sync input a frame sync signal from the previous device in the daisy-chain configuration and to provide on its frame sync output a delayed frame sync signal. The slave device is also configured to transmit first data on the data line via its data pin in a predetermined time slot based on the frame sync signal received on its frame sync input. The slave device is also configured to transmit second data on its frame sync output following transmission of the delayed frame sync signal.
In various alternative embodiments, the slave device may further include a peripheral (e.g., a microphone), wherein at least one of the first data and the second data is based on data from the peripheral. The slave device may be configured to selectively receive, via its frame sync input, data transmitted on the frame sync output of the previous device in the daisy-chain configuration. The first data and/or the second data may be based on data received via the frame sync input. The slave device may include a processor configured to process data from the slave device and data received via the frame sync input.
In certain embodiments, the frame sync input of the slave device may be couplable to the frame sync output of a last slave device in the daisy-chain configuration, wherein the slave device may be configured to selectively receive, via its frame sync input, data transmitted on the frame sync output of the last slave device.
In certain embodiments, the frame sync output of the slave device may be couplable to the frame sync output of a last slave device in the daisy-chain configuration, wherein the slave device may be configured to selectively receive, via its frame sync output, data transmitted on the frame sync output of the last slave device and to selectively transmit data received from the last slave device to the master device.
In another embodiment there is provided a master device for operation in a time-division multiplexed communication system having the master device and a plurality of slave devices interconnected in a daisy-chain configuration and having a data line coupled to the master device and to each of the slave devices. The master device includes a data pin couplable to the data line and a frame sync output couplable to a frame sync input of a first slave device in the daisy-chain configuration. The master device is configured to transmit a frame sync signal on its frame sync output. Additionally, the master device may be further configured to transmit data for at least one slave device via its frame sync output following the frame sync signal and/or may be further configured to selectively receive, via its frame sync output, data transmitted on a frame sync output of a last slave device in the daisy-chain configuration coupled to the frame sync output of the master device.
In various alternative embodiments, the master device may include an input separate from the frame sync output and couplable to the frame sync output of the last slave device, wherein the master device is configured to receive data from the last slave device via the input and to selectively transmit the data via its frame sync output.
Additional embodiments may be disclosed and claimed.
The foregoing and advantages of the invention will be appreciated more fully from the following further description thereof with reference to the accompanying drawings wherein:
It should be noted that the foregoing figures and the elements depicted therein are not necessarily drawn to consistent scale or to any scale. Unless the context otherwise suggests, like elements are indicated by like numerals.
Embodiments of the present invention include various advanced TDM daisy chain configurations allowing for communications between the master device (also referred to as a “controller”) and the slave devices and/or between slave devices. Various exemplary embodiments described below are based on the TDM daisy-chain configuration shown in
In exemplary embodiments of the present invention, however, such communication is provided at least in part by a feedback line in which the WSO pin of the last slave device is fed back to one or more upstream devices (e.g., to the WS line between the master device and the first slave device or to the WS line between the first slave device and the second slave device). The WSO pin of an upstream device connected to the feedback line (e.g., the WS pin of the master device or the WSO pin of the first slave device in the daisy-chain) may, in certain embodiments, be configured to operate as an input-output pin allowing for both transmission of information (e.g., a frame clock signal and/or commands or data for one or more slave devices) and reception of information from the last slave device via that WSO pin. Each slave device transmits data to the next successive slave device using its WSO pin, in addition to transmission of the frame clock signal. In this way, each slave device still contains four pins for the TDM interface, and communications between the master device and the slave devices and/or communications between slave devices can be accomplished at least in part via the feedback line. Such communications can be used for a variety of applications, including, for example, distributed signal processing functions performed by the slave devices in which one or more of the slave devices processes data provided from other slave device(s).
In the context of the present invention, “data” transmitted by the master device and/or by a slave device via the WS line in addition to the frame sync signal may include, without limitation, control information (e.g., commands or configuration information from the master device to one or more slave devices), status information, data samples being sent to or from a slave device (e.g., raw or processed data samples, such as from a microphone or other sensor or converter), data being “tunneled” over the daisy-chain (e.g., I2C data between the master device and a remote I2C bus coupled to one of the slave devices), or other data as may be used in a particular implementation.
In certain embodiments, the WS pin of the master device 502 is an input-output pin that can be selectively configured to operate as an input to receive data from the last slave device 504K and as an output to transmit the frame clock signal and other data to the first slave device 5041 (e.g., commands, data from the master device, data from one or more slave devices received via the feedback line 550). In such embodiments, the command/data lines 560 may be omitted, as the master device 502 can transmit and receive data via its WS pin.
In certain other embodiments, the WS pin of the master device 502 is an output-only pin for transmitting the frame clock signal and other data (e.g., commands, data from the master device, data from one or more slave devices received via the feedback line 550), in which case the master device 502 receives data from the last slave device 504K forwarded by the first slave device 5041 over command/data lines 560.
In certain other embodiments, the WS pin of the master device 502 is an input-output pin that can be selectively configured to operate as an input to receive data from the last slave device 504K and as an output to transmit the frame clock signal, while the master device 502 transmits data to the first slave device 5041 (e.g., commands, data from the master device, data from one or more slave devices received via the feedback line 550) via the command/data lines 560 rather than via the WS pin.
In certain other embodiments, the WS pin of the master device 502 is an output-only pin for transmitting the frame clock signal, while the master device 502 transmits data (e.g., commands, data from the master device, data from one or more slave devices received via the feedback line 550) to the first slave device 5041 via the command/data lines 560 and also receives data from the last slave device 504K forwarded by the first slave device 5041 over command/data lines 560. In such embodiments, the WS circuitry of the master device 502 is kept simple, as it is not used to transmit data or receive data.
In certain embodiments, the first slave device 5041 may selectively receive data directly from the last slave device 504K via the feedback line 550. Additionally or alternatively, in certain embodiments, the first slave device 5041 may selectively receive data from the last slave device 504K transferred by the master device via the WS pin or via the command/data lined 560.
In any case, each slave device selectively transmits a frame clock signal and other data to the next successive device via its WSO pin. Such data may originate from the master device, an upstream slave device, a downstream slave device, or from the slave device itself. Thus, for example, data (e.g., a command) may be passed along from the master device to one or more slave devices and data (e.g., a response) may be passed along back to the master device, or data may be passed from one slave device to another slave device (e.g., from an upstream slave device to a downstream slave device, or from a downstream slave device to an upstream slave device either through the master device or bypassing the master device).
Thus, the configurations shown in
Advanced TDM daisy-chain configurations of the types shown in
For example, in a synchronization stage, each slave device would receive a frame signal at its WSI pin and output the frame signal at its WSO pin with one time slot delay. The first slave device 5041 receives the frame signal from the master device 502. The frame signal could be a simple pulse or could be a more complex sequence. During this stage, all the slave devices would be synchronized to the frame clock of the master device 502 and generate the frame clock by itself. This stage could take more than one frame period. In certain embodiments in which the master device 502 does not transmit data via its WS pin, the master device 502 may maintain the WS pin at a high impedance (Hi-Z) between frame signals in order to avoid conflict with the feedback signal from the last slave device 504K.
During a second stage, addresses may be assigned to the slave devices. This stage may be optional in certain embodiments, although address assignment may be useful for many applications. Addresses may be assigned, for example, substantially as described in U.S. patent application Ser. No. 13/426,918.
After address assignment (or in lieu of address assignment), the slave devices would enter normal operation in which each slave transmits TDM data via the SD pin in a designated time slot, and other data may be received via the WSI pin (or, in the case of the first slave device 5041, additionally or alternatively via the command/data lines 560) and/or transmitted via the WSO pin (or, in the case of the first slave device 5041, additionally or alternative via the command/data lines 560). Assuming that the master device 502 receives data from the last slave device 504K via its WS pin, the master device will configure its WS pin as an input during the time slot in which the last slave device transmits data on its WSO pin.
It should be noted that the present invention is not limited to these or to any particular sequences nor to any particular number of slave devices, which may be less than or greater than eight.
As in the embodiments described above with reference to
Thus, the configurations shown in
Advanced TDM daisy-chain configurations of the types shown in
It should be noted that the present invention is not limited to these or to any particular sequences nor to any particular number of slave devices, which may be less than or greater than eight.
In certain exemplary embodiments described above with reference to
As discussed above, the advanced TDM daisy-chain configurations of
Each slave device may include one or more peripherals that produce data transmission by the slave device via the daisy-chain (in raw form and/or after processing by the slave device) and/or that consume data received by that slave device via the daisy-chain (in raw form and/or after processing by the slave device). For example, and without limitation, peripherals may include such things as a processor (e.g., a digital signal processor) that may produce data and/or consume data, one or more devices that produce data (e.g., microphone, accelerometer, gyroscope, analog-to-digital converter, etc.), one or more devices that are controllable via the daisy-chain (e.g., an audio output, a status light, a switch, a digital-to-analog converter, etc.), one or more communication ports over which data can be transferred to/from the daisy-chain (e.g., an I2C bus port allowing for remote I2C communication via the daisy-chain), etc. The present invention is not limited to any particular type(s) of peripherals supported by the slave devices, and it should be noted that different slave devices may support different peripheral(s). Thus, from the perspective of peripherals, certain slave devices may be “input-only” devices that generate data (e.g., a slave device having a microphone), certain slave devices may be “output-only” devices that consume data (e.g., a slave device having an audio output), and certain slave devices may be “input-output” devices (e.g., a slave device having both a microphone and a speaker).
It should be noted that headings are used above for convenience and are not to be construed as limiting the present invention in any way.
Various aspects of the present invention may be embodied in many different forms, including, but in no way limited to, computer program logic for use with a processor (e.g., a microprocessor, microcontroller, digital signal processor, or general purpose computer), programmable logic for use with a programmable logic device (e.g., a Field Programmable Gate Array (FPGA) or other PLD), discrete components, integrated circuitry (e.g., an Application Specific Integrated Circuit (ASIC)), or any other means including any combination thereof. Computer program logic implementing some or all of the described functionality is typically implemented as a set of computer program instructions that is converted into a computer executable form, stored as such in a computer readable medium, and executed by a microprocessor under the control of an operating system. Hardware-based logic implementing some or all of the described functionality may be implemented using one or more appropriately configured FPGAs.
Computer program logic implementing all or part of the functionality previously described herein may be embodied in various forms, including, but in no way limited to, a source code form, a computer executable form, and various intermediate forms (e.g., forms generated by an assembler, compiler, linker, or locator). Source code may include a series of computer program instructions implemented in any of various programming languages (e.g., an object code, an assembly language, or a high-level language such as Fortran, C, C++, JAVA, or HTML) for use with various operating systems or operating environments. 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.
The computer program may be fixed in any form (e.g., source code form, computer executable form, or an intermediate form) either permanently or transitorily in a tangible storage medium, such as a semiconductor memory device (e.g., a RAM, ROM, PROM, EEPROM, or Flash-Programmable RAM), a magnetic memory device (e.g., a diskette or fixed disk), an optical memory device (e.g., a CD-ROM), a PC card (e.g., PCMCIA card), or other memory device. The computer program may be fixed in any form in a signal that is transmittable to a computer using any of various communication technologies, including, but in no way limited to, analog technologies, digital technologies, optical technologies, wireless technologies (e.g., Bluetooth), networking technologies, and internetworking technologies. The computer program may be distributed in any form as a removable storage medium with accompanying printed or electronic documentation (e.g., shrink wrapped software), preloaded with a computer system (e.g., on system ROM or fixed disk), or distributed from a server or electronic bulletin board over the communication system (e.g., the Internet or World Wide Web).
Hardware logic (including programmable logic for use with a programmable logic device) implementing all or part of the functionality previously described herein may be designed using traditional manual methods, or may be designed, captured, simulated, or documented electronically using various tools, such as Computer Aided Design (CAD), a hardware description language (e.g., VHDL or AHDL), or a PLD programming language (e.g., PALASM, ABEL, or CUPL).
Programmable logic may be fixed either permanently or transitorily in a tangible storage medium, such as a semiconductor memory device (e.g., a RAM, ROM, PROM, EEPROM, or Flash-Programmable RAM), a magnetic memory device (e.g., a diskette or fixed disk), an optical memory device (e.g., a CD-ROM), or other memory device. The programmable logic may be fixed in a signal that is transmittable to a computer using any of various communication technologies, including, but in no way limited to, analog technologies, digital technologies, optical technologies, wireless technologies (e.g., Bluetooth), networking technologies, and internetworking technologies. The programmable logic may be distributed as a removable storage medium with accompanying printed or electronic documentation (e.g., shrink wrapped software), preloaded with a computer system (e.g., on system ROM or fixed disk), or distributed from a server or electronic bulletin board over the communication system (e.g., the Internet or World Wide Web). Of course, some embodiments of the invention may be implemented as a combination of both software (e.g., a computer program product) and hardware. Still other embodiments of the invention are implemented as entirely hardware, or entirely software.
The present invention may be embodied in other specific forms without departing from the true scope of the invention. Any references to the “invention” are intended to refer to exemplary embodiments of the invention and should not be construed to refer to all embodiments of the invention unless the context otherwise requires. The described embodiments are to be considered in all respects only as illustrative and not restrictive.
The subject matter of this patent application may be related to the subject matter of commonly-owned U.S. patent application Ser. No. ______ entitled DISTRIBUTED AUTOMATIC LEVEL CONTROL FOR A MICROPHONE ARRAY filed on even date herewith (Attorney Docket No. 2550/E15). The subject matter of this patent application also may be related to the subject matter of commonly-owned U.S. patent application Ser. No. 13/426,918 entitled SYNCHRONIZATION, RE-SYNCHRONIZATION, ADDRESSING, AND SERIALIZED SIGNAL PROCESSING FOR DAISY-CHAINED COMMUNICATION DEVICES filed Mar. 22, 2012 (Attorney Docket No. 2550/D82), which claims the benefit of U.S. Provisional Patent Application No. 61/467,538 filed Mar. 25, 2011. The subject matter of this patent application also may be related to the subject matter of commonly-owned U.S. patent application Ser. No. 13/071,836 entitled SYSTEM, APPARATUS, AND METHOD FOR TIME-DIVISION MULTIPLEXED COMMUNICATION filed on Mar. 25, 2011 (Attorney Docket No. 2550/D35), which is hereby incorporated herein by reference in its entirety. Each of these patent applications is hereby incorporated herein by reference in its entirety.