Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
VARIABLE FREQUENCY WAVEFORM SYNTHESIS USING FIXED SIZE DATA ARRAYS AND CONSTANT LOOP RATE
Document Type and Number:
WIPO Patent Application WO/2021/024241
Kind Code:
A1
Abstract:
A method and device for synthesizing an arbitrary periodic waveform at a user-selectable frequency, utilizing a fixed size digital memory block accessed at a constant loop rate. In order to provide user- selectable frequency output, the block memory index (pointer) is computed for each iteration of the output loop as an integer-converted product of the iteration count, the constant looping time, the fixed memory block size, and the desired frequency of the output. The resulting digital value is fed into a digital-to-analog converter. Additional embodiments provide analog filtering on the output of the DAC to smooth the waveform.

Inventors:
CERN YEHUDA (IL)
Application Number:
PCT/IL2019/050883
Publication Date:
February 11, 2021
Filing Date:
August 04, 2019
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
HEALABLES LTD (IL)
International Classes:
G01R13/02; G01R13/34; G01R19/25; G01R23/16
Domestic Patent References:
WO2018104929A12018-06-14
Foreign References:
US20090055171A12009-02-26
US20100162075A12010-06-24
US20140355341A12014-12-04
US20040213049A92004-10-28
US20040128076A12004-07-01
US20160225562A12016-08-04
Attorney, Agent or Firm:
COHEN, Mark S. et al. (IL)
Download PDF:
Claims:
CLAIMS

What is claimed is:

1. A method for synthesizing an arbitrary periodic waveform at a specified frequency, the method comprising: providing a memory block (105) having a predetermined fixed memory size, wherein: the memory block contains data values for one cycle of the arbitrary periodic waveform; and wherein the memory is accessed via a memory block index (204); providing a programmed output loop (212 - 217) for outputting data values from the memory block according to the memory block index; determining a loop execution time (202) for a single execution of the programmed output loop; providing an iteration counter (203) having an iteration counter value, for counting a number of times the programmed output loop is executed; initializing the iteration counter value to zero (211); executing the programmed output loop to perform: calculating the memory block index as an integer conversion of a product of the iteration counter value, the fixed memory size, the loop execution time, and the specified frequency (213); retrieving waveform data from the memory block according to the memory block index (215); outputting retrieved waveform data to a digital-to- analog converter; and incrementing the iteration counter value (216).

2. The method of claim 1, wherein the loop execution time is a predetermined constant.

3. The method of claim 1, further comprising: filtering an output of the digital-to-analog converter.

4. The method of claim 1, wherein the integer conversion is a

ROUNDDOWN function.

5. A waveform generator for synthesizing an arbitrary periodic waveform at a specified frequency, the waveform generator comprising: a memory block (105) having a predetermined fixed memory size; a programmable addressing device containing a programmed output loop; and a digital-to-analog converter; wherein the programmable addressing device is arranged to perform the method of claim 1.

6. The waveform generator of claim 5, wherein a loop execution time of the programmed output loop is a predetermined constant.

7. The waveform generator of claim 5, further comprising a filter connected to an output of the digital-to-analog converter.

Description:
VARIABLE FREQUENCY WAVEFORM SYNTHESIS USING FIXED SIZE DATA ARRAYS AND CONSTANT LOOP RATE

FIELD

[001] The present invention is directed to the synthesis of arbitrary periodic waveforms by repetitive output of a template waveform stored in digital memory.

BACKGROUND

[002] According to a conventional method of waveform generation, waveform values for a set of discrete waveform samples that define a single waveform period are stored in sequential locations in a block of a controller’s dedicated local memory. Then the controller executes a program loop, wherein, for each execution of the loop:

[003] the controller accesses a location in the memory block according to a memory block index, and retrieves the data value stored in the indexed location;

[004] the controller outputs the retrieved data value as an analog signal, by means of a digital-to-analog converter (DAC); and [005] the controller increments the memory block index by 1 in preparation for accessing the next sequential data value in the next iteration of the loop. [006] Each of the above executions takes a loop time ti oop and thus the controller outputs data at a loop rate fi oop , which equals the reciprocal of the access-output loop time ti oop ·

[007] For a memory size M, performing a traverse of the entire memory block in order to output a single period of the wave takes a time M * ti oop , resulting in a wave frequency f wave :

[008] fwave = l/(Af * tioop) Equation (1)

[009] In such a prior art waveform synthesizer, as frequency f waV e decreases, memory size M increases. For example, for f waV e = 1 Hz, and fi oop = 10,000 Hz, memory size M = 10,000 bytes or words is required. This amount of memory exceeds the size of built-in memories of many low cost microcontrollers.

[0010] In 8-bit memories, however, these 10,000 data points include no more than 256 unique values. For waveforms that don’t include abrupt slewing, many redundant memory values would be accessed in groups having multiple identical values.

[0011] Memory redundancy decreases hardware efficiency. Therefore, it would be highly desirable to have a method and device that provide arbitrary waveform synthesis across a range of frequencies, which utilize a fixed memory array size with a constant loop rate. This goal is attained by embodiments of the present invention. SUMMARY

[0012] Embodiments of the present invention provide synthesis of an arbitrary periodic waveform having a user-selectable frequency, by means of a digital-to- analog converter which is fed data stored in a digital memory block of a predetermined fixed size, which is accessed at a constant loop rate. The output waveform frequency is set by computation of the memory block index according to a predetermined function of the loop iteration index, rather than simply by incrementing the memory block index by 1 for each successive loop memory access.

[0013] Thus, in embodiments of the invention, the data values of a waveform to be synthesized are stored in a memory of a fixed size, regardless of desired waveform frequency. Whereas in the prior art, the memory index advances sequentially, 0, 1, 2, ... etc., embodiments of the present invention provide a calculated index. For frequencies lower than fi oop / M, data values will often repeat, reading the same value from a particular memory address. For frequencies higher than fi oop / M, data values will often be skipped, completing a waveform period in a time shorter than M * ti oop . BRIEF DESCRIPTION OF THE DRAWINGS

[0014] The subject matter disclosed may best be understood by reference to the following detailed description when read with the accompanying drawings in which:

[0015] Fig. 1 is a block diagram of a device according to an embodiment of the present invention.

[0016] Fig. 2 is a flowchart of a method according to an embodiment of the present invention.

[0017] Fig. 3 illustrates non-limiting examples of variable frequency outputs of an arbitrary waveform according to various embodiments of the present invention.

[0018] For simplicity and clarity of illustration, elements shown in the figures are not necessarily drawn to scale, and the dimensions of some elements may be exaggerated relative to other elements. In addition, reference numerals may be repeated among the figures to indicate corresponding or analogous elements.

DETAILED DESCRIPTION

[0019] Whereas in a conventional waveform generator, the wave frequency f wave is given by Equation (1), according to various embodiments of the present invention, a similar Equation (2) defines instead a base frequency , f base :

[0020] fbase = 1/(M * hoop) Equation (2)

[0021] Fig. 1 is a block diagram of a waveform generator according to an embodiment of the present invention. A controller 100 contains a waveform data memory block 105, which stores digital sampled values of the output waveform for a single cycle. According to this embodiment, waveform data memory block 105 is of fixed size and stores M samples covering a single cycle of the output waveform to be generated. A processor 110 contains stored program instructions for operating controller 100, wherein processor 110 is arranged to perform a method according to another embodiment of the invention, as described further below. An input 115 allows a user to load waveform data into waveform data memory block 105 for specifying an arbitrary waveform for the waveform generator; and an input 118 allows the user to specify the desired frequency f syn of the synthesized wave. According to various embodiments of the invention, both integer and non-integer multiples of the base frequency may be synthesized. Controller 100 generates the desired waveform in digital format, and outputs the digital values via an output line 140 to a digital-to-analog converter (DAC) 120. In a related embodiment, DAC 120 is included as a component of controller 100.

[0022] A DAC output 150 is fed into a filter 130 to smooth the analog signals before delivery at an output 170. Filter 130 is shown in Fig. 1 as a non-limiting low-pass RC filter; other filter types are provided by additional embodiments. In a related embodiment, filter 130 is a programmable low-pass filter with an adjustment 170 for a cutoff frequency f c . This is particularly useful when f syn is well below fi oop , to effectively filter out steps in the output of DAC 120.

[0023] In other related embodiments of the present invention, other programmable addressing devices containing a programmed output loop (including, but not limited to: a state machine; and a logic array) are used to provide control, in place of controller 100.

[0024] Waveform 165 is a non-limiting example of the output of the waveform generator.

[0025] Fig. 2 is a flowchart of a method according to an embodiment of the present invention, which is performed automatically by controller 100 or other programmable device as disclosed above. A data register 201 holds a value of the selected frequency of the synthesized wave f syn , which can be set by the user to a desired frequency via input 118. A data register 202 holds an output loop execution time ti oop , which is preset to the nominal time required for controller

100 (Fig. 1) to execute a single iteration of a programmed output loop. According to a related embodiment, the time required for controller 100 to execute a single iteration of the programmed output loop is constant (i.e., at a constant output loop rate), and the user makes no changes to the value stored in data register 202. A data register 203 holds an iteration counter i, which counts the iterations of the programmed output loop; and a data register 204 holds a block memory index j, which points to the location in memory block 105 that holds the current output value of the wave being generated. It is noted that in the conventional prior art method, the block memory index and the iteration counter are the same. According to this embodiment of the present invention, however, the values of the block memory index and the iteration counter are, in general, different, and are therefore held in two separate registers as noted above.

[0026] As illustrated in Fig. 2, j in data register 204 is the index (or pointer) to the values stored in waveform data memory block 105. For a zero-indexed memory block (as shown in Fig. 2), the limits on j in data register 204 are such that 0 <j <M - 1; i in data register 203 is such that 0 < i (i = 0, 1, 2, 3, ...), where the upper limit on i is determined according to when j reaches its upper limit (M- 1), as discussed below.

[0027] In an initialization step 211, i in data register 203 is set to zero (0). Then, at a point 212 the programmed output loop starts. [0028] In a computation step 213, the block memory index j in data register 204 is set according to a predetermined function:

[0029] j = ROUNDDOWN (i * f syn /fbase) Equation (3)

[0030] where ROUNDDOWN represents an integer conversion function whose value is the largest integer which does not exceed the argument (i * f syn /f base )· In other related embodiments, other integer conversion functions are provided (including, but not limited to: ROUND; and ROUNDUP). Some form of integer conversion is necessary, because the argument in Equation (3) in general has non-integral values, whereas i and j are restricted to integers. It is noted that when i is initialized to zero (0) in step 211, j is automatically initialized to zero as well in step 213.

[0031] Equation (3) can be expressed in more basic terms by using Equation

(2):

[0032] j = ROUNDDOWN (i * M *ti oop * f syn ) Equation (4) [0033] At a decision point 214 j is compared with M - 1. If j is greater than M - 1 , then the upper limit of memory block index j has been reached, and the method returns to initialization step 211. This is how the upper limit on the iteration count i is also handled, as mentioned previously. In related embodiments, other similar decision tests are provided (including, but not limited to testing for j > M). [0034] If the upper limit of memory block index j in data register 204 has not been reached, decision point 214 continues with a retrieval step 215, in which waveform data indexed by j is retrieved from waveform data memory block 105, sent to DAC 120, and output to filter 130.

[0035] Then, in an increment step 216, the value of iteration counter i in data register 203 is incremented by 1, after which a loop end point 217 is reached, which returns to loop starting point 212 for the next iteration.

[0036] Fig. 3 illustrates non-limiting examples of variable frequency outputs of an arbitrary waveform according to various embodiments of the present invention. A single cycle of a wave 301 shows a non-limiting waveform at a non-limiting f base frequency of 30.217 Hz. A single cycle of a wave 302 shows a non-limiting synthesized waveform at a non-limiting f syn frequency of 355 Hz. An approximately quarter cycle of a wave 303 shows a non-limiting synthesized waveform at a non-limiting f syn frequency of 10 Hz.