The present invention relates to the field of serial data transmission.
It is known to serially transmit data to a string of LEDs using a unipolar zeroing code protocol as discussed, for example, in the specification for smart LED controller SK6812RGBW-BW marketed by Shenzhen Normand Electronic Co., Ltd.
Embodiments according to the invention can provide methods of serially transmitting data to a string of LEDs using random delay times and related computer program products. Pursuant to these embodiments, a method of transmitting data serially can be provided by generating a pulse for a current data bit on an electrical conductor coupled to a string of LEDs, where the pulse has a pulse duration that is defined by a time between a rising edge of the current data bit and a falling edge of the current data bit, that is based on a logical value of the current data bit. A random delay time can be introduced between the falling edge of the current data bit and a rising edge of the next data bit and then the rising edge of the next data bit can be generated after expiration of the random delay time.
As appreciated by the present inventors, some serial data transmission systems, such as one that uses a unipolar zeroing code protocol, can generate significant EMI due to a repeating alignment of fast signal edges. For example, a system that operates a string of individually addressable LEDs (such as SK6812RGBW LEDs) via single wire asynchronous serial communications using the unipolar zeroing code protocol, can generate a measurable amount of EMI due to repeated edge alignment.
In particular, a controller in such a configuration can send 4 bytes of serial data for each LED in the string). Accordingly, the controller operating a string of 100 LEDs would transmit 400 bytes of serially shifted data. Each particular LED in the string would remove the respective 4 bytes addressed to that particular LED and then transmit any remaining bytes to the next LED in the string. Therefore, in an LED string with N LEDs, the relatively short pulse widths used for data (e.g., 300 ns to 600 ns) coupled with the fact that each data pulse is repeated 16(N2)+16(N) times creates significant EMI activity each time new data is transmitted to the string.
As further appreciated by the present inventors, as the update rate increases the EMI noise may also increase. For example, the EMI peak for an LED string of 66 SK6812RGBW LEDs operating at a pulse repetition rate of 833 kHz and at a refresh rate of 55 Hz was measured to be about 42.56 dBuV/m.
As appreciated by the present inventors, the EMI activity described above can be reduced by introducing random delay times into the data transmission, while also maintaining the fixed time intervals assigned each data value. In particular, the random delay times can be introduced into the transmission of a data bit after expiration of the fixed time interval for transmission of the data by keeping the voltage level low for an additional random delay time. However, the additional random delay time added to the fixed time interval for the data bit is limited so that the longest time for which the voltage level is kept low is less than the protocol specified time that is needed to perform an execute instruction.
In some embodiments, the additional random delay time added to the fixed time interval for the data bit is limited to a time so that the entire time for which the voltage is kept low continuously is less than 80 us. In some embodiments, the additional random delay time added to the fixed time interval for the data bit is limited to a time so that the entire time for which the voltage is kept low continuously is less than 64 us.
In some embodiments, a random delay time can be provided for each data byte to be transmitted and that same random delay time can be introduced after each data bit fixed time interval transmitted as part of the byte. In some embodiments, a random delay time can be provided for each data bit to be transmitted so that a different random delay time can be introduced after each data bit fixed time interval transmitted as part of the byte. In some embodiments according to the present invention, a delay table can be created and populated with random delay time values that are selected to reduce EMI. During operation, the processor circuit operating under software control can execute instructions to access the random delay time values in the table, for use in generating the random delay time, by for example, stalling data transmission after the data bit fixed time interval by a number of operation indicated by the random delay time value.
In still further embodiments, the processor circuit operates at speed sufficient to allow the random delay times to be generated using a local pseudo-random number generator function on-demand so that the delay table may not be needed. During operation, the processor circuit operating under software control can execute instructions to create the random delay time, by for example, stalling data transmission after the data bit fixed time interval by a number of operation indicated by the random delay time value.
In some embodiments according to the invention, the EMI peak for an LED string of 66 SK6812RGBW LEDs operating at a pulse repetition rate of 833 kHz and at a refresh rate of 55 Hz according to the invention was measured to be about 30.8 dBuV/m.
According to
During operation, the processor circuit 105 operating under software control can execute instructions stored in the memory 115 to access the random delay time values stored in the table 120, for use in generating the random delay time, by for example, stalling data transmission after the data bit fixed time interval by a number of operations or cycles indicated by the random delay time value to introduce the random delay time.
In operation, the processor circuit 105 operating under software control can execute instructions stored in the memory 115 to generate a data pulse representing data on an electrical conductor 130 that is coupled to the LED string 125. The processor circuit 105 generates the data pulse by controlling a port 110 of the processor circuit 105 to create a rising edge of the data pulse which stays high for a time and is followed by a falling edge of the data pulse which is held low for the data bit fixed time interval to signal the value of the data.
At the end of the data bit fixed time interval, the processor circuit 105 causes the port 110 output to stay low for the additional random delay time accessed in the random delay table 120. After the expiration of the random delay time for the current data bit, the processor circuit 105 starts the transmission of the next data bit by causing the port 110 output to go high to provide the rising edge of the next data bit.
According to
As shown in
Moreover, as also shown in
In contrast to
In operations according to
According to
Still referring to
Still referring to
If, however, the current data bit is not equal to 1 (block 545) the processor circuit keeps the port output at the high level for 300 nanoseconds (block 550) after which the processor circuit brings the output port low (block 555). Subsequent to either the current data bit being 1 or 0, the processor circuit then provides the random delay time by multiplying the accessed random delay time value J by 1 us. The processor circuit then holds the output of the port low the random delay time (block 565) and then the bit counter K is incremented and operations continue at block 525.
As described herein, as appreciated by the present inventors, the EMI activity described above can be reduced by introducing random delay times into the data transmission, while also maintaining the fixed time intervals assigned each data value. In particular, the random delay times can be introduced into the transmission of a data bit after expiration of the fixed time interval for transmission of the data by keeping the voltage level low for an additional random delay time. However, the additional random delay time added to the fixed time interval for the data bit is limited so that the longest time for which the voltage level is kept low less than the protocol specified time that is needed to perform an execute instruction. In some embodiments, the additional random delay time added to the fixed time interval for the data bit is limited to a time so that the entire time for which the voltage is kept low continuously is less than 80 us. In some embodiments, the additional random delay time added to the fixed time interval for the data bit is limited to a time so that the entire time for which the voltage is kept low continuously is less than 64 us.
The processor circuits and memories described herein are examples of portions of systems upon which one or more aspects of embodiments of the present invention can be implemented. For example the processor circuits and memories of
Examples of processor circuit can include logic, one or more components, circuits (e.g., modules), or mechanisms. Circuits are tangible entities configured or programmed to perform certain operations. In an example, processor circuits can be arranged (e.g., internally or with respect to external entities such as other circuits) in a specified manner. In an example, one or more processor circuits can be configured by software (e.g., instructions, an application portion, or an application) as a circuit that operates to perform certain operations as described herein. In an example, the software can reside (1) on a non-transitory machine readable medium (such as a memory) or (2) in a transmission signal.
In an example, a circuit can be implemented mechanically or electronically. For example, a circuit can comprise dedicated circuitry or logic that is specifically configured to perform one or more techniques such as discussed above, such as including a special-purpose processor, a field programmable gate array (FPGA) or an application-specific integrated circuit (ASIC). In an example, a circuit can comprise programmable logic (e.g., circuitry, as encompassed within a general-purpose processor or other programmable processor) that can be temporarily configured (e.g., by software) to perform the certain operations. It will be appreciated that the decision to implement a circuit mechanically (e.g., in dedicated and permanently configured circuitry), or in temporarily configured circuitry (e.g., configured by software) can be driven by cost and time considerations.
Accordingly, the term “circuit” is understood to encompass a tangible entity, be that an entity that is physically constructed, permanently configured (e.g., hardwired), or temporarily (e.g., transitorily) configured (e.g., programmed) to operate in a specified manner or to perform specified operations. In an example, given a plurality of temporarily configured circuits, each of the circuits need not be configured or instantiated at any one instance in time. For example, where the circuits comprise a general-purpose processor configured via software, the general-purpose processor can be configured as respective different circuits at different times. Software can accordingly configure a processor circuit, for example, to constitute a particular circuit at one instance of time and to constitute a different circuit at a different instance of time
In an example, processor circuits can provide information to, and receive information from, other circuits. In this example, the processor circuits can be regarded as being communicatively coupled to one or more other circuits. Where multiple of such circuits exist contemporaneously, communications can be achieved through signal transmission (e.g., over appropriate circuits and buses) that connect the circuits. In embodiments in which multiple circuits are configured or instantiated at different times, communications between such circuits can be achieved, for example, through the storage and retrieval of information in memory structures to which the multiple circuits have access. For example, one processor circuit can perform an operation and store the output of that operation in a memory device to which it is communicatively coupled. A further processor circuit can then, at a later time, access the memory device to retrieve and process the stored output. In an example, circuits can be configured to initiate or receive communications with input or output devices and can operate on a resource (e.g., a collection of information).
The various operations of method examples described herein can be performed, at least partially, by one or more processors that are temporarily configured (e.g., by software) or permanently configured to perform the relevant operations. Whether temporarily or permanently configured, such processors can constitute processor-implemented circuits that operate to perform one or more operations or functions. In an example, the circuits referred to herein can comprise processor-implemented circuits.
Similarly, the methods described herein can be at least partially processor-implemented. For example, at least some of the operations of a method can be performed by one or processors or processor-implemented circuits. The performance of certain of the operations can be distributed among the one or more processors, not only residing within a single machine, but deployed across a number of machines.
Example embodiments (e.g., apparatus, systems, or methods) can be implemented in digital electronic circuitry, in computer hardware, in firmware, in software, or in any combination thereof. Example embodiments can be implemented using a computer program product (e.g., a computer program, tangibly embodied in an information carrier or in a machine readable medium, for execution by, or to control the operation of, data processing apparatus such as a programmable processor, a computer, or multiple computers).
A computer program can be written in any form of programming language, including compiled or interpreted languages, and it can be deployed in any form, including as a stand-alone program or as a software module, subroutine, or other unit suitable for use in a computing environment. A computer program can be deployed to be executed on one computer or on multiple computers at one site or distributed across multiple sites and interconnected by a communication network.
In an example, operations can be performed by one or more programmable processor circuits executing a computer program to perform functions by operating on input data and generating output. Examples of method operations can also be performed by, and example apparatus can be implemented as, special purpose logic circuitry (e.g., a field programmable gate array (FPGA) or an application-specific integrated circuit (ASIC)).
Some of the systems described herein, such as the edge device integration system 125 can include clients and servers. A client and server are generally remote from each other and generally interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other. In embodiments deploying a programmable computing system, it will be appreciated that both hardware and software architectures require consideration. Specifically, it will be appreciated that the choice of whether to implement certain functionality in permanently configured hardware (e.g., an ASIC), in temporarily configured hardware (e.g., a combination of software and a programmable processor), or a combination of permanently and temporarily configured hardware can be a design choice. Below are set out hardware (e.g., machine 400) and software architectures that can be deployed in example embodiments.
In a networked deployment, the system can operate in the capacity of either a server or a client machine in server-client network environments. In an example, processor circuit can act as a peer machine in peer-to-peer (or other distributed) network environments. The processor circuit can be a (or included in) personal computer (PC), a tablet PC, a set-top box (STB), a Personal Digital Assistant (PDA), a mobile telephone, a web appliance, a network router, switch or bridge, or any machine capable of executing instructions (sequential or otherwise) specifying actions to be taken (e.g., performed) by the machine 400. Further, while only a single processor circuit is illustrated, the term “machine” shall also be taken to include any collection of machines that individually or jointly execute a set (or multiple sets) of instructions to perform any one or more of the methodologies discussed herein.
The machine readable medium described herein can include a single medium or multiple media (e.g., a local memory closely coupled to the processor circuit, a centralized or distributed database, and/or associated caches and servers) that configured to store the one or more instructions. The term “machine readable medium” can also be taken to include any tangible medium that is capable of storing, encoding, or carrying instructions for execution by the machine and that cause the machine to perform any one or more of the methodologies of the present disclosure or that is capable of storing, encoding or carrying data structures utilized by or associated with such instructions. The term “machine readable medium” can accordingly be taken to include, but not be limited to, solid-state memories, and optical and magnetic media. Specific examples of machine readable media can include non-volatile memory, including, by way of example, semiconductor memory devices (e.g., Electrically Programmable Read-Only Memory (EPROM), Electrically Erasable Programmable Read-Only Memory (EEPROM)) and flash memory devices; magnetic disks such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks.
The instructions can further be transmitted or received over a communications network using a transmission medium via the network interface device utilizing any one of a number of transfer protocols (e.g., frame relay, IP, TCP, UDP, HTTP, etc.). Example communication networks can include a local area network (LAN), a wide area network (WAN), a packet data network (e.g., the Internet), mobile telephone networks (e.g., cellular networks), Plain Old Telephone (POTS) networks, and wireless data networks (e.g., IEEE 802.11 standards family known as Wi-Fi®, IEEE 802.16 standards family known as WiMax®), peer-to-peer (P2P) networks, among others. The term “transmission medium” shall be taken to include any intangible medium that is capable of storing, encoding or carrying instructions for execution by the machine, and includes digital or analog communications signals or other intangible medium to facilitate communication of such software.
The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting to other embodiments. As used herein, the singular forms “a”, “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises,” “comprising,” “includes” and/or “including”, “have” and/or “having” when used herein, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof. Elements described as being “to” perform functions, acts and/or operations may be configured to or other structured to do so.
Unless otherwise defined, all terms (including technical and scientific terms) used herein have the same meaning as commonly understood by one of ordinary skill in the art to which various embodiments described herein belong. It will be further understood that terms used herein should be interpreted as having a meaning that is consistent with their meaning in the context of this specification and the relevant art and will not be interpreted in an idealized or overly formal sense unless expressly so defined herein.
As will be appreciated by one of skill in the art, various embodiments described herein may be embodied as a method, data processing system, and/or computer program product. Furthermore, embodiments may take the form of a computer program product on a tangible computer readable storage medium having computer program code embodied in the medium that can be executed by a computer.
Any combination of one or more computer readable media may be utilized. The computer readable media may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device.
A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device. Program code embodied on a computer readable signal medium may be transmitted using any appropriate medium, including but not limited to wireless, wired, optical fiber cable, RF, etc., or any suitable combination of the foregoing.
Computer program code for carrying out operations for aspects of the present disclosure may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Scala, Smalltalk, Eiffel, JADE, Emerald, C++, C#, VB.NET, Python or the like, conventional procedural programming languages, such as the “C” programming language, Visual Basic, Fortran 2003, Perl, COBOL 2002, PHP, ABAP, dynamic programming languages such as Python, Ruby and Groovy, or other programming languages, such as a programming language for a FPGA, Verilog, System Verilog, Hardware Description language (HDL), and VHDL. The program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider) or in a cloud computer environment or offered as a service such as a Software as a Service (SaaS).
Some embodiments are described herein with reference to flowchart illustrations and/or block diagrams of methods, systems and computer program products according to embodiments. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create a mechanism for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
These computer program instructions may also be stored in a computer readable medium that when executed can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions when stored in the computer readable medium produce an article of manufacture including instructions which when executed, cause a computer to implement the function/act specified in the flowchart and/or block diagram block or blocks. The computer program instructions may also be loaded onto a computer, other programmable instruction execution apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatuses or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
It is to be understood that the functions/acts noted in the blocks may occur out of the order noted in the operational illustrations. For example, two blocks shown in succession may in fact be executed substantially concurrently or the blocks may sometimes be executed in the reverse order, depending upon the functionality/acts involved. Although some of the diagrams include arrows on communication paths to show a primary direction of communication, it is to be understood that communication may occur in the opposite direction to the depicted arrows.
Many different embodiments have been disclosed herein, in connection with the above description and the drawings. It will be understood that it would be unduly repetitious and obfuscating to literally describe and illustrate every combination and subcombination of these embodiments. Accordingly, all embodiments can be combined in any way and/or combination, and the present specification, including the drawings, shall support claims to any such combination or subcombination.
While the foregoing is directed to aspects of the present disclosure, other and further embodiments of the disclosure may be devised without departing from the basic scope thereof, and the scope thereof is determined by the claims that follow.
Number | Name | Date | Kind |
---|---|---|---|
20130216235 | Ishida | Aug 2013 | A1 |
Number | Date | Country |
---|---|---|
WO-2010100982 | Sep 2010 | WO |
Entry |
---|
Keith Szoulusha; LED Driver with Integrated Spread Spectrum Reduces EMI without Adding Flicker; Journal of Analog Inovation; Oct. 2013; pp. 12-14. |
Harlyawan et al. The Effects of Spread Spectrum Techniques in Mitigating Conducted EMI to LED Luminance; International Journal of Electrical and Computer Engineering, vol. 6, No. 3; Jun. 2016; pp. 1332-1343. |
Chip-on-Top SMD Type LED; SK6812RGBW-BW; Shenzhen Normand Electronic Co., Ltd.; Document No. SPC/SK6812RGBW-BW; Jan. 21, 2019; pp. 1-23. |