Synchronous operation of peripheral devices

Disclosed herein is an apparatus that comprises an instruction receiving module configured to receive, at a master device, a set of instructions for operating a plurality of peripheral devices. The apparatus also comprises an instruction identification module configured to identify at least one subset of the set of instructions that are associated with at least one slave device. The apparatus further comprises an instruction distribution module configured to send the at least one subset of instructions to the at least one slave device. The apparatus additionally comprises a trigger module configured to send a start signal, from the master device to the at least one slave device, that triggers the at least one slave device to begin executing the at least one subset of instructions such that each of the plurality of peripheral devices operates synchronously based on the executing instructions.

FIELD

This disclosure relates generally to peripheral devices, and more particularly to synchronously operating a plurality of peripheral devices.

BACKGROUND

Certain applications utilize synchronous operation of peripheral devices such as simultaneously capturing a plurality of images using multiple cameras that are instructed to fire at the same time. However, existing solutions may require carefully planned advanced configuration, which is time consuming and may delay the synchronous operation of the peripheral devices, which can lead to errors in the output that the peripheral devices generate.

SUMMARY

The subject matter of the present application has been developed in response to the present state of the art, and in particular, in response to the problems and disadvantages associated with conventional methods for synchronous operation of peripheral devices. Accordingly, the subject matter of the present application has been developed to synchronously operate peripheral devices that overcomes at least some of the above-discussed shortcomings of prior art techniques.

Disclosed herein is an apparatus that comprises an instruction receiving module configured to receive, at a master device, a set of instructions for operating a plurality of peripheral devices. The apparatus also comprises an instruction identification module configured to identify at least one subset of the set of instructions that are associated with at least one slave device that is communicatively coupled to the plurality of peripheral devices. The at least one subset of instructions is executable on the associated at least one slave device according to a predefined trigger sequence to generate a series of activity on the plurality of peripheral devices. The apparatus further comprises an instruction distribution module configured to send, from the master device, the at least one subset of instructions to the at least one slave device associated with the at least one subset of instructions. The apparatus additionally comprises a trigger module configured to send a start signal from the master device to the at least one slave device. The start signal triggers the at least one slave device to begin executing the at least one subset of instructions according to the predefined trigger sequence such that each of the plurality of peripheral devices operates synchronously based on the executing instructions. The preceding subject matter of this paragraph characterizes example 1 of the present disclosure.

The apparatus further comprises an initiation module configured to receive an initiation signal from a host device. The initiation signal triggers the trigger module to send the start signal to the at least one slave device. The preceding subject matter of this paragraph characterizes example 2 of the present disclosure, wherein example 2 also includes the subject matter according to example 1, above.

The initiation module receives the initiation signal from the host device in response to sending a ready signal to the host device. The ready signal is sent in response to the at least one slave device being configured with the at least one subset of instructions. The preceding subject matter of this paragraph characterizes example 3 of the present disclosure, wherein example 3 also includes the subject matter according to example 2, above.

The apparatus further comprises a plurality of slave devices that are each communicatively coupled to at least one peripheral device and communicatively coupled to the master device in parallel such that each of the plurality of slave devices receives the start signal at the same time. The preceding subject matter of this paragraph characterizes example 4 of the present disclosure, wherein example 4 also includes the subject matter according to any one of examples 1-3, above.

The plurality of peripheral devices comprises a plurality of cameras such that multiple images can be captured simultaneously in response to the at least one slave device communicatively coupled to the plurality of cameras executing an instruction according to the predefined trigger sequence for capturing an image at the same time. The preceding subject matter of this paragraph characterizes example 5 of the present disclosure, wherein example 5 also includes the subject matter according to any one of examples 1-4, above.

The instruction for each of the plurality of cameras comprises settings information for configuring each of the plurality of cameras. The settings information comprises one or more of aperture settings, ISO settings, and shutter speed settings. The preceding subject matter of this paragraph characterizes example 6 of the present disclosure, wherein example 6 also includes the subject matter according to example 5, above.

The plurality of peripheral devices comprises a projector configured to display an image in response to the at least one slave device communicatively coupled to the projector executing an instruction according to the predefined trigger sequence to display the image on the projector. The instruction comprises data defining the image that the projector displays. The preceding subject matter of this paragraph characterizes example 7 of the present disclosure, wherein example 7 also includes the subject matter according to any one of examples 1-6, above.

The plurality of peripheral devices comprises a sensor configured to capture environment data in response to the at least one slave device communicatively coupled to the sensor executing an instruction according to the predefined trigger sequence to capture environment data from the sensor. The preceding subject matter of this paragraph characterizes example 8 of the present disclosure, wherein example 8 also includes the subject matter according to any one of examples 1-7, above.

The apparatus further comprises an instruction processing module configured to parse the set of instructions to identify the at least one subset of instructions for the at least one slave device. The preceding subject matter of this paragraph characterizes example 9 of the present disclosure, wherein example 9 also includes the subject matter according to any one of examples 1-8, above.

An instruction of the set of instructions includes one or more of a peripheral device identifier, a slave device identifier, a port identifier for the port that the peripheral device is communicatively coupled to on the at least one slave device, configuration settings for the peripheral device, and timing information defining a time interval for triggering the peripheral device. The preceding subject matter of this paragraph characterizes example 10 of the present disclosure, wherein example 10 also includes the subject matter according to any one of examples 1-9, above.

The instruction receiving module is configured to receive a new set of instructions for activating the plurality of peripheral devices from a host device in response to sending a notification to the host device that the at least one slave device has executed the at least one subset of instructions. The preceding subject matter of this paragraph characterizes example 11 of the present disclosure, wherein example 11 also includes the subject matter according to any one of examples 1-10, above.

Further disclosed herein a system that comprises a host device and a master device communicatively coupled to the host device. The system further comprises at least one slave device communicatively coupled to the master device. The system additionally comprises a plurality of peripheral devices communicatively coupled to the at least one slave device. The system also comprises an apparatus that comprises an instruction receiving module configured to receive, at the master device, a set of instructions for operating the plurality of peripheral devices. The apparatus also comprises an instruction identification module configured to identify at least one subset of the set of instructions that are associated with the at least one slave device that is communicatively coupled to the plurality of peripheral devices. The at least one subset of instructions is executable on the associated at least one slave device according to a predefined trigger sequence to generate a series of activity on the plurality of peripheral devices. The apparatus further comprises an instruction distribution module configured to send, from the master device, the at least one subset of instructions to the at least one slave device associated with the at least one subset of instructions. The apparatus additionally comprises a trigger module configured to send a start signal from the master device to the at least one slave device. The start signal triggers the at least one slave device to begin executing the at least one subset of instructions according to the predefined trigger sequence such that each of the plurality of peripheral devices operates synchronously based on the executing instructions. The preceding subject matter of this paragraph characterizes example 12 of the present disclosure.

The system further comprises one or more input processing devices communicatively coupled to the plurality of peripheral devices for receiving and processing data that the plurality of peripheral devices capture. The preceding subject matter of this paragraph characterizes example 13 of the present disclosure, wherein example 13 also includes the subject matter according to example 12, above.

The master device and the at least one slave device comprise programmable hardware devices that include real-time clocks. The preceding subject matter of this paragraph characterizes example 14 of the present disclosure, wherein example 14 also includes the subject matter according to any one of examples 12-13, above.

The master device and the at least one slave device are encapsulated within the same enclosure. The preceding subject matter of this paragraph characterizes example 15 of the present disclosure, wherein example 15 also includes the subject matter according to any one of examples 12-14, above.

The apparatus further comprises an initiation module configured to receive an initiation signal from the host device. The initiation signal triggers the trigger module to send the start signal to the at least one slave device. The preceding subject matter of this paragraph characterizes example 16 of the present disclosure, wherein example 16 also includes the subject matter according to any one of examples 12-15, above.

The system further comprises a plurality of slave devices that are each communicatively coupled to at least one peripheral device and communicatively coupled to the master device in parallel such that each of the plurality of slave devices receives the start signal at the same time. The preceding subject matter of this paragraph characterizes example 17 of the present disclosure, wherein example 17 also includes the subject matter according to any one of examples 12-16, above.

The host device stores a configuration file comprising connection information for each of the peripheral devices and the at least one slave device to which the peripheral devices are communicatively connected. The preceding subject matter of this paragraph characterizes example 18 of the present disclosure, wherein example 18 also includes the subject matter according to any one of examples 12-17, above.

The connection information comprises, for each peripheral device, one or more of a port identifier for a port on a slave device that the peripheral device is connected to, an identifier for the slave device, an identifier for the peripheral device, and a port of the slave device that is connected to the master device. The preceding subject matter of this paragraph characterizes example 19 of the present disclosure, wherein example 19 also includes the subject matter according to example 18, above.

Additionally disclosed herein is a method that comprises receiving, at a master device, a set of instructions for operating a plurality of peripheral devices. The method also comprises identifying at least one subset of the set of instructions that are associated with at least one slave device that is communicatively coupled to the plurality of peripheral devices. The at least one subset of instructions is executable on the associated at least one slave device according to a predefined trigger sequence to generate a series of activity on the plurality of peripheral devices. The method further comprises sending, from the master device, the at least one subset of instructions to the at least one slave device associated with the at least one subset of instructions. The method additionally comprises sending a start signal from the master device to the at least one slave device. The start signal triggers the at least one slave device to begin executing the at least one subset of instructions according to the predefined trigger sequence such that each of the plurality of peripheral devices operates synchronously based on the executing instructions. The preceding subject matter of this paragraph characterizes example 20 of the present disclosure.

DETAILED DESCRIPTION

FIG. 1is a schematic block diagram of a system100for synchronous operation of peripheral devices. In one embodiment, the system100includes an instance of a host device102. The host device102may be embodied as a computing device such as a desktop computer, a server, a laptop computer, a tablet computer, a smart phone, a smart television, a field programmable gate array (“FPGA”), an application-specific integrated circuit (“ASIC”), a microcontroller, and or other device that include a processor for executing program code, instructions, functions, and/or the like.

In one embodiment, the system100includes a synchronous trigger system103. The synchronous trigger system103is configured to organize the synchronous firing of the peripheral devices110aa-nn(collectively110) using a master device106and one or more slave devices108a-n(collectively108). In one embodiment, the master device106is embodied as a microcontroller such as a single-board microcontroller with a real-time clock (“RTC”) chip (e.g., an Arduino® or Raspberry Pi® device), an FPGA, an ASIC, or other computing device that includes an RTC chip, unit, component, or module. The host device102is communicatively coupled to the synchronous trigger system103via the master device106of the synchronous trigger system103to provide instructions to the master device106for configuring the slave devices108to control the peripheral devices110. The connection between the host device102and the master device106may include a physical communication bus such as a serial bus (a universal serial bus (“USB”) connection), a wireless communication channel (e.g., Bluetooth®), and/or the like.

The slave devices108, similar to the master device106, are embodied as microcontrollers such as a single-board microcontroller with an RTC chip (e.g., an Arduino® or Raspberry Pi® device), FPGAs, ASICs, or other computing devices that include an RTC chip, unit, component, or module. The slave devices108are communicatively coupled to the peripheral devices110via a physical communication bus such as a serial bus, e.g., a USB connection, a wireless connection, or the like. In certain embodiments, the slave devices108are communicatively coupled to the master device in parallel such that each of the plurality of slave devices108can receive signals, communications, or the like at the same time such as a start signal described below.

In certain embodiments, the master device106and the one or more slave devices108are enclosed within the same case, box, container, and/or the like that provides input and output ports for connecting to a host device102, peripheral devices110, and/or the like (e.g., a network attached storage device, a networking device, or the like), e.g., via a USB connection, a wireless connection, or the like.

The peripheral devices110include external devices that the slave devices108can configure and control via a communication bus. Examples of peripheral devices110include cameras, sensors (e.g., sensors configured for capturing environment data such as light sensors, oxygen sensors, moisture sensors, weather sensors, and/or the like), projectors, lights, and/or the like. The peripheral devices110are communicatively coupled to a processing device112, which is embodied as a desktop computer, a server, a laptop computer, a tablet computer, a smart phone, a smart television, a field programmable gate array (“FPGA”), an application-specific integrated circuit (“ASIC”), a microcontroller, and or other device.

The processing device112is communicatively coupled to the peripheral devices110to receive output, if any, that the peripheral devices110generate (e.g., images, sensor data, or the like). In some embodiments, the processing device112is the same device as the host device102. In other embodiments, the processing device112is separate from the host device102but may be communicatively coupled to the host device102to send and/or receive data. For example, the processing device112may send the output from the peripheral devices110to the host device102so that the host device102can confirm whether the output is valid output or not (e.g., is the expected output or is valid data).

In one embodiment, the synchronous trigger apparatus104is communicatively coupled to, is located on, or is otherwise part of the master device106and/or the slave devices108. The synchronous trigger apparatus104is configured to receive instructions at the master device106from the host device102for synchronously operating the peripheral devices110. The synchronous trigger apparatus104identifies subsets of the instructions that are associated with slave devices108and executable on the slave devices108according to a predefined trigger sequence to generate a series of activity on the peripheral devices110.

The synchronous trigger apparatus104distributes the subsets of instructions to the slave devices108and sends a start signal from the master device106to the slave devices108to trigger execution of the instructions at each slave device108such that each of the plurality of peripheral devices110operates synchronously. In this manner, a plurality of peripheral devices110can be synchronously operated, controlled, activated, or the like with minimal user input, configuration, or interaction.

FIG. 2is a schematic block diagram of an apparatus200for synchronous operation of peripheral devices. In one embodiment, the apparatus200includes an instance of a synchronous trigger apparatus104. The synchronous trigger apparatus104includes an instruction receiving module202, an instruction identification module204, an instruction distribution module206, and a trigger module208, which are described in more detail below.

The instruction receiving module202is configured to receive, at the master device106, a set of instructions for operating a plurality of peripheral devices110. The instructions include steps, functions, signals, port numbers for ports on the slave device108, pin identifiers for pins on the slave devices108, slave device and/or peripheral device identifiers, flags, variables, values, and/or the like that a slave device108uses to control, activate, operate, trigger, configured, or the like activity on one or more peripheral devices110that are connected to the slave device108.

For example, the instructions may include steps for turning certain pins high/low or activating/deactivating certain ports of a slave device108at a specified time, e.g., a real-time clock time, a processor clock time, clock cycle, clock frequency, clock pulse or the like. The instructions may be received from the host device102in a particular format such as a JavaScript Object Notation (“JSON”) format, an eXtensible Markup Language (“XML”) format, and/or other structured format.

The instructions may include an identifier for a peripheral device110(e.g., an identifier such as a unique ID, a serial number, or the like for the peripheral device110that the instruction is for), an identifier for a slave device108(e.g., an identifier such as a unique ID, a serial number, or the like for the slave device108that the instruction is for), a port identifier for the port that the peripheral device110is communicatively coupled to on a slave device108, timing information defining a time interval for triggering the peripheral device110(e.g., the predefined trigger sequence) and/or a timing for the duration for triggering the peripheral device110, and/or the like.

In some embodiments, the instructions include configuration data or settings for a slave device108and/or a peripheral device110. The configuration data may include settings for a peripheral device110. For example, where a peripheral device110is a camera, the configuration data may include data for configuring the aperture settings, ISO settings, and/or shutter speed settings for the camera prior to the camera taking an image. Accordingly, the instructions at the slave device108may include instructions for configuring the peripheral device110with the configuration settings. The instructions may include other data such as image data to be displayed on a projector, sensor configuration data for setting a sensitivity or other settings of a sensor, light configuration data for setting a brightness, color, or duration of a light, and/or the like.

In one embodiment, the instructions are defined and stored on the host device102. For example, a user may define the instructions based on his knowledge of the peripheral devices110(e.g., the time it takes for a camera to capture and process an image or to change camera settings, the time it takes for a projector to warm up or change images, the time it takes to turn on a light, the time it takes to capture and process sensor data, or the like) and the desired outcome. The host device102may convert the user's instructions to a format or language that is interpretable by the master device106and/or the slave devices108.

The instruction identification module204is configured to identify at least one subset of the set of instructions that are associated with at least one slave device108that is communicatively coupled to the plurality of peripheral devices110. The at least one subset of instructions are executable on the associated at least one slave device108according to the predefined trigger sequence to generate a series of activity on the plurality of peripheral devices110.

The predefined trigger sequence, as used herein, defines or specifies an order and timing for executing the sequence of instructions at a slave device108. For example, the predefined trigger sequence may define, for each slave device108, at what time, clock cycle, clock pulse, or the like (based on the clocks of the slave devices108executing each of the subsets of instructions) to send a signal to a peripheral device110, to change the state of a pin or send data on a port connected to a peripheral device110, to wait, to configure a peripheral device110, and/or the like.

The predefined trigger sequence accounts for durations of actions that the peripheral devices110perform such as a warming-up time period, time to turn on, time to capture data (e.g., an image, sensor data, etc.), and/or the like. In this manner, instructions are not performed before the peripheral devices110are ready to perform the action that the instruction requires. For instance, it may take 500 ms to capture and process an image on a camera before the camera is ready to take another picture. The instructions may include an instruction for a slave device108to wait for 500 ms between instructions or commands to capture images with the camera in order to account for the camera's processing time. The instructions for a slave device108also account for other peripheral devices110connected to different slave devices108. For instance, an instruction may command a slave device108to wait thirty seconds before executing the next instruction because a different slave device108executed an instruction to turn on a projector that takes at least twenty-five seconds to warm up.

The instruction identification module204may process the instructions to identify markers, flags, or other identifiers that indicate one or more instructions that are associated with a particular slave device108and/or peripheral device110connected to a slave device108. In certain embodiments, explained in more detail below, the instruction processing module304parses the instructions to determine which instructions are associated with a slave device108and/or a peripheral device110and inserts the markers, flags, or other identifiers in the instructions to indicate the subsets of the instructions for the slave devices108.

The instruction distribution module206is configured to send, from the master device106, the at least one subset of instructions to the at least one slave device108associated with the at least one subset of instructions. The instruction distribution module206, for instance, may send the instructions to the slave devices108over a communication bus as one instruction at a time, as a set of instructions, and/or the like, while maintaining the order and the predefined trigger sequence of the instructions.

The trigger module208is configured to send a start signal from the master device106to the at least one slave device108. The start signal triggers the at least one slave device108to begin executing the at least one subset of instructions according to the predefined trigger sequence such that each of the plurality of peripheral devices110operates synchronously based on the executing instructions.

For instance, the trigger module208may send a signal, message, notification, or the like on each of the communication buses that are coupled to the slave devices108to trigger the slave devices108to begin executing their instruction sets according to the predefined trigger sequence. In this manner, the slave devices108act synchronously, e.g., on the same clock cycle, in response to receiving the trigger signal from the master device106, which allows the peripheral devices110to operate synchronously and simultaneously.

In one example embodiment, the peripheral devices110may include a projector and a plurality of cameras that are used for metrology. The slave device108connected to the projector may execute an instruction to present an image using the projector and then the slave devices108connected to the plurality of cameras may execute instructions that cause the cameras to capture images of the image that the projector presents. Because each subset of instructions that each slave device108executes has a predefined trigger sequence that is in sync with the other subsets of instructions for each slave device108, in this example, the projector may present a series of images that the plurality of cameras capture with built-in delays to account for the projector changing images, for the cameras capturing and processing the images, and/or the like. Thus, after the slave devices108receive their subsets of instructions, the master device106sends a trigger signal to tell each of the slave devices108to begin executing their instructions until all of the instructions for each slave device108have been completed.

For example, if a slave device108is connected to two cameras, the instructions for the slave device108may include a predefined trigger sequence that includes time intervals (e.g., pause intervals) to account for the time to turn on the projector, the time for turning the cameras on, time to capture and process an image, time for changing settings of the cameras, and/or the like. For example, at time t=0, an instruction set may instruct a first slave device108ato turn a projector on (e.g., activate pin X or send an “on” signal on port Y) and at the same time t=0 a different instruction set may instruct a second slave device108bto turn both cameras on (e.g., activate pins A and B or send an “on” signal on ports C and D, or the like). The next instructions for each of the slave devices108a,108bmay be to wait time t=30 for the projector to warm up. On the first slave device108a, at time t=31, the next instruction may be to display an image on the projector for 2 seconds/clock cycles/clock pulses (e.g., send image data to the projector on port Y) while at time t=31 the next instruction on the second slave device108bmay be to wait one second/clock cycle/clock pulse for the image to be displayed by the projector.

At time t=32, the first slave device108acontinues to display the image using the projector while the instructions for the second slave device108bat time t=32 is to send a signal to the cameras (e.g., an image capture signal on ports C and D) to capture images of the image that the projector displays using both cameras simultaneously. On the first slave device108a, at time t=33, the next instruction may be to display a different image using the projector for 2 seconds/clock cycles/clock pulses while at time t=33 the next instruction on the second slave device108bmay be to wait one second/clock cycle/clock pulse for the image to change. At time t=34, the first slave device108acontinues to display the image on the projector while the instructions for the second slave device108bat time t=34 is to send a signal to the cameras to capture images of the image that the projector displays using both cameras, and so on until all of the instructions for each of the slave devices108are executed. Thus, the predefined trigger sequence defines the timing and order of the instructions for each slave device108such that each slave device108, when it receives a trigger signal from the master device110, executes their set of instructions in the order and according to the time of the predefined trigger sequence.

Once all the instructions are completed, the instruction receiving module202is configured to send a notification to the host device102that the instructions are completed and receives a new set of instructions for activating the plurality peripheral devices110in response to sending the notification. The host device102may queue sets of instructions to automatically send to the master device106in response to receiving the notification that the slave devices108have completely executed their instructions.

FIG. 3is a schematic block diagram of another apparatus300for synchronous operation of peripheral devices. In one embodiment, the apparatus includes an instance of a synchronous trigger apparatus104. The synchronous trigger apparatus104includes an instruction receiving module202, an instruction identification module204, an instruction distribution module206, and a trigger module208, which may be substantially similar to the instruction receiving module202, the instruction identification module204, the instruction distribution module206, and the trigger module208described above with reference toFIG. 2. In further embodiments, the synchronous trigger apparatus104includes an initiation module302and an instruction processing module304, which are described in more detail below.

The initiation module302is configured to receive an initiation signal from the host device102. The initiation signal from the host device102triggers the trigger module208to send the start signal to the slave devices108and trigger the slave devices108to execute their instructions that the instruction distribution module206sent to the slave devices108.

In one embodiment, the initiation module302receives the initiation signal from the host device102in response to sending a ready signal to the host device102. For example, after the instruction distribution module206distributes the subsets of instructions to the slave devices108and the slave devices108are configured to execute the instructions (e.g., the slave devices108have set variables, located and determined the status of pins/ports, prepared the peripheral devices110for operation, and/or the like), the initiation module302and/or the instruction distribution module206may send a signal to the host device102to indicate that the slave devices108and/or the peripheral devices110are ready for operation.

In certain embodiments, the host device102sends an initiation signal automatically after a period of time (e.g., one second, five seconds, a minute, or the like) after the instructions are sent to the master device106to reduce the communications between the master device106and the host device102. In certain embodiments, the host device102sends an initiation signal in response to user input, e.g., an administrator manually sending the initiation signal.

The instruction processing module304is configured to parse, analyze, process, or the like the set of instructions to identify the at least one subset of instructions for the slave devices108. The instruction processing module304, for instance, may use regular expressions or other string processing methods to locate identifiers for slave devices108and/or peripheral devices110that are connected to slave devices108to identify the corresponding instructions that should be executed by the slave devices108. The instruction processing module304may insert flags, markers, indicators, or other identifiers in the instructions to indicate to the instruction identification module204which instructions are assigned to which slave devices108.

The instruction processing module304, in one embodiment, verifies that the instructions are formatted in a language that is understandable, readable, and/or the like by the slave devices108. For instance, the instruction identification module204may determine the versions of hardware/firmware for the slave devices108and may confirm that the instructions are formatted for the particular versions of hardware/firmware and may convert the instructions to a format that is compatible with the particular versions of hardware/firmware for the slave devices108. The instruction identification module204, in one embodiment, converts the instructions into a series of commands for the slave devices108that indicate at what time, e.g., on which clock pulses, clock cycles, or the like to fire or trigger a signal on a particular pin, port, or the like and for what duration.

FIG. 4is a schematic flow diagram of a method400for synchronous operation of peripheral devices. In one embodiment, the method400begins and receives402, at a master device106, a set of instructions for operating a plurality of peripheral devices110. In further embodiments, the method400identifies404at least one subset of the set of instructions that are associated with at least one slave device108that is communicatively coupled to the plurality of peripheral devices110. The at least one subset of instructions are executable on the associated at least one slave device108according to a predefined trigger sequence to generate a series of activity on the plurality of peripheral devices110.

In further embodiments, the method400sends406, from the master device106, the at least one subset of instructions to the at least one slave device108associated with the at least one subset of instructions. In some embodiments, the method400sends408a start signal from the master device106to the at least one slave device108. The start signal triggers the at least one slave device108to begin executing the at least one subset of instructions according to the predefined trigger sequence such that each of the plurality of peripheral devices110operates synchronously based on the executing instructions, and the method400ends. In one embodiment, the instruction receiving module202, the instruction identification module204, the instruction distribution module206, and the trigger module208perform the various steps of the method400.

FIG. 5is a schematic flow diagram of a method500for synchronous operation of peripheral devices. In one embodiment, the method500begins and receives502, at a master device106, a set of instructions for operating a plurality of peripheral devices110. In various embodiments, the method500parses504the set of instructions to identify the at least one subset of instructions for the at least one slave device108. In some embodiments, the method500sends506, from the master device106, the at least one subset of instructions to the at least one slave device108associated with the at least one subset of instructions.

In certain embodiments, the method500determines508whether an initiation signal is received at the master device106from the host device102. If not, the method500continues to monitor for the initiation signal. Otherwise, the method500sends510a start signal from the master device106to the at least one slave device108to trigger the at least one slave device108to begin executing the at least one subset of instructions according to the predefined trigger sequence such that each of the plurality of peripheral devices110operates synchronously based on the executing instructions. The method500, in further embodiments, determines512whether the slave devices108have completed executing their instructions. If not, the method500continues to monitor for completion of the instructions; otherwise, the method500receives502a new set of instructions from the host device for execution. In one embodiment, the instruction receiving module202, the instruction identification module204, the instruction distribution module206, the trigger module208, the initiation module302, and the instruction processing module304perform the various steps of the method500.

The modules may be implemented as a hardware circuit comprising custom very-large-scale integration (VLSI) circuits or gate arrays, off-the-shelf semiconductors such as logic chips, transistors, or other discrete components. The modules may also be implemented in programmable hardware devices such as field programmable gate arrays, programmable array logic, programmable logic devices or the like.