Autonomous driving is quickly moving from the realm of science fiction to becoming an achievable reality. Already in the market are Advanced-Driver Assistance Systems (“ADAS”) that automate, adapt and enhance vehicles for safety and better driving. The next step will be vehicles that increasingly assume control of driving functions, such as steering, accelerating, braking and monitoring the surrounding environment and driving conditions to respond to events, such as changing lanes or speed when needed to avoid traffic, crossing pedestrians, animals, and so on. In such autonomous driving systems being developed, a radar is often used to detect one or more of the objects and determine the velocity of the objects. This and other information can then be used to project a path for the vehicle that avoids the object.
The requirements for object and image detection are critical and specify the time required to capture data, process it and turn it into action. In fact, such tasks are to be performed while ensuring accuracy, consistency and cost optimization. Moreover, extraction or determination of location, velocity, acceleration and other characteristics of detected objects is to be performed near-instantaneously; otherwise the detection may not be used to accurately control a vehicle at driving speeds over a variety of conditions. Therefore, there is a need for a system that can be used for real-time decision-making and to aid in autonomous driving.
The present application may be more fully appreciated in connection with the following detailed description taken in conjunction with the accompanying drawings, which are not drawn to scale and in which like reference characters refer to like parts throughout, and wherein:
The present disclosure relates to methods, systems, and apparatuses for fast object detection and understanding that allows for real-time decision-making. The present disclosure provides examples of radar systems employing one or more components to enable fast object detection and real-time decision-making. In accordance with various embodiments described herein, a radar system can include, for example, among many others, a transceiver, an analog to digital converter (ADC), a digital processing unit coupled to the ADC, a control unit coupled to the digital processing unit, and/or a twiddle factor table. In various embodiments, the digital processing unit can include a plurality of fast Fourier transform (FFT) elements and a plurality of memory storage devices coupled to the plurality of FFT elements. The plurality of FFT elements and the plurality of memory storage devices can be configured in a pipeline. In various implementations, the control unit can be configured to control each of the plurality of FFT elements a predetermined number of times. In various embodiments, each twiddle factor in the twiddle factor table can correspond to an FFT element in the plurality of FFT elements.
The present application provides examples of radar systems employing frequency modulated signals. These signals interact with targets, or objects in the area covered by the radar unit and return to the radar unit with a time delay compared to the transmitted signal. The target parameters, such as range, may be measured by a change in frequency at the receiver, where this change in frequency is referred to as a beat frequency.
In frequency modulated continuous wave (FMCW) radar, the transmit signal is generated by frequency modulating a continuous wave signal. In one sweep of the radar operation, the frequency of the transmit signal varies linearly with time. This kind of signal is also known as the chirp signal. The transmit signal sweeps a frequency, f, in one chirp duration. Due to the propagation delay, the received signal reflected from a target has a frequency difference, called the beat frequency, compared to the transmit signal. The range of the target is proportional to the beat frequency. Thus, by measuring the beat frequency, the target range is obtained.
In FMCW radar, the target range is measured from the beat frequency, which is determined using a FFT process to identify the beat frequency. The FFT process provides a low computational complexity for the multiple operations required for analysis. The FFT process has frequency bins/grid of different frequencies, where N represents the set of frequencies. When a beat frequency of the target falls between the FFT grids in the middle of frequency bins, the detection performance is degraded. The degradation results from attenuation of signals, such as the amplitude of the reflected target signal, and reduces the resultant signal-to-noise ratio (SNR) and detection probability. To reduce the number of operations in an FFT process, twiddle factors are used to further reduce the computational complexity. In processing digital sample sets, the digital Fourier Transform (DFT) is a linear transform of a time domain set of signals (or samples) to a set of coefficients of component sinusoids of time domain signal describing the signals.
In an automotive system, the FFT process can be applied to the received signals, which are converted from an analog received signal to a digital signal. The digital signal creates the sample inputs to the FFT process, enabling extraction of radar parameters, as the return time of a radar signal directly indicates the distance or the range to the object. Velocity, as well as other measures and information about the detected object, can be calculated by the phase shift in a return signal, requiring time to frequency domain conversion. To accomplish conversion with sufficient time to react, one or more FFT processes can be implemented.
The automotive application is similar to other applications, in that there are significant amounts of data to be processed within a time limit. There are a variety of methods or configurations to build such a system in a hardware to implement a FFT process. The present disclosure considers a non-limiting embodiment that includes a sample size of 256 points and uses a radix-4 FFT core with a reduced hardware structure. The FFT process includes 4 stages of operation, for example, wherein each stage has 16 FFT elements. Each stage is coupled to a storage device, memory, buffer or register to store interim results. Each stage processes a portion of the data. Each FFT element cycles or steps through the process 4 times. In other words, each FFT element is run 4 times. As each stage completes processing, the output is provided to the next set stage of 16 FFT elements. The data continues to move through the stages in a pipelined manner, wherein the next (second) portion of data may enter the first stage after the first portion of data moves to the second stage (i.e., stage 2). This process is controlled by a processing unit that ensures the integrity of the pipeline. In various embodiments, the pipeline may be configured to fully process a first set of data (256 points). In various embodiments, the first portion of a next set of data enters stage 1 after all of the first data has been processed in stage 1. In such implementations, a controller can be used to indicate when a data set is able to start processing. This controller may be a general-purpose controller, an application specific controller, or may be controlled by other portions of the application. In an automotive application, this controller may be part of a radar unit, a sensor fusion controller, or another controller.
In data sample processing, discrete Fourier transform (DFT) methods can be used to identify a frequency spectrum, specific frequencies making up the waveform, or series of data points. In various embodiments, the FFT process may be used to reduce the time required to complete a frequency conversion, as discussed in the present disclosure. In various embodiments, the FFT process may be implemented to quickly identify the frequencies composing a sampled signal.
The present disclosure relates to methods and apparatuses improving speed of calculations and processing in computational systems employing FFT algorithms. In accordance with various implementations, the FFT clock cycles are a limiting factor in increasing the speed of processing. Further, the latency of the FFT process can be reduced using an algorithmic computational structure having fewer stages, which in turn reduces complexity of the circuitry and reduces the size of the FFT element. The various examples disclosed herein are described using a pipelined FFT processer of radix-4. While current solutions avoid the radix-4 solutions as complex and costly, the present disclosure is directed to methods to utilize the strength of such solutions while reducing complexity, hardware and cost. A twiddle table is built to list the values applied to data during the FFT processing. The twiddle factors in the twiddle table is designed to avoid overlap of Stages in the FFT process. As used herein, the term table refers to the twiddle table, and in this example the table is a look up table (LUT) and these terms may be used interchangeably; however, alternate embodiments, memories and constructs may be used for generating, storing, accessing and/or applying the twiddle factor(s).
The following illustrations and descriptions present examples in detail and provide an overview of the implementations for a pipelined FFT with localized twiddle factors for use in processing data in real time environments, such as for radar object detection and identification. The FFT provides flexibility in applications involving 4, 16, 64, 256, 1024, 4096, . . . point FFTs. This concept may be extended as desired for a variety of applications. The twiddle factor is a trigonometric constant used as a coefficient multiplied by data in the course of the algorithm.
FFT algorithms may be used for various applications for sampling time samples and computing frequency domain samples. The twiddle factors are values applied to the data in the FFT algorithm. In some example embodiments and implementations, the twiddle factors are trigonometric constant coefficients multiplied by the data used in the algorithm, wherein the radix-4 FFT gains speed by reusing results of smaller, intermediate computations to compute multiple discrete Fourier transform (DFT) outputs. The reuse of the results provides efficient computations, wherein each of group of four frequency samples constitutes the radix-4 butterfly. The radix-4 decimation in time algorithm rearranges the DFT equation into 4 parts and sums over all groups of every fourth discrete-time index. In the DFT definition and algorithm, X(k) of an N-point sequence x(n) is defined by
wherein the WNn is referred to as a twiddle factor. Selecting an FFT radix is a first step on the algorithmic level. It is mainly a trade-off between the speed, power, and area for the number of transistors. High-radix FFT algorithms, such as radix-8, often increase the control complexity and are not easy to implement. The examples described herein can be implemented with a radix-4 design to reduce the complexity and to provide a comprehensive view of these structures and processes.
In various FFT architectures and methods, a specific design corresponds to a specific FFT, such as a 256-point FFT or 64 point FFT, where the FFTs are not interchangeable. The present disclosure presents a flexible FFT architecture and process incorporating a radix-4 element. It is a very fast and efficient way to implement an FFT process in such a way as to be used in various dimension FFTs. In the present examples, the radix-4 element is used to create higher order FFTs in software, hardware, and/or both. The process can be used to generate the twiddle factors and stores these in a lookup table (LUT) or other storage location coordinated with the algorithm and 4-radix structure of calculations. The FFT algorithm calculates the indexing of the LUT, such that larger LUTs are used for smaller FFT sizes, such as where a larger LUT may have 256 sample points. This makes the design flexible to accommodate many types of input data in a variety of applications.
Now referring to
The present examples are automotive object detection applications; other applications may include, but not limited to, sampling of large sets of data. The processor interface 220 is configured to share data and/or instructions with a controller state machine 216 that also interfaces with input MUX 212, output MUX 242, and the FFT core 214. The input MUX 212 outputs data to the core 214 to flow through the stages of data processing which are implemented in the pipelined process of the core 214. The controller state machine 216 is configured to control, communicate and coordinate with core 214, input MUX 212 and output MUX 242. The output MUX 242 distributes data to streaming interface 240 and/or to the processor interface 220. The system 200, including the pipelined FFT core 214, implements the desired processes to detect objects within a field of view of the radar element; this may be performed according to an algorithm, set of instructions or circuit configuration. Additional components (not shown) may be used to couple the system 200 to other parts of an application system or element. The system 200 generates preliminary control information, where data is passed through to and from each processing step.
The present disclosure includes a method for using a smaller point FFT element to perform iteratively and behave as an FFT of a higher point count. When implemented in hardware, such as a specialized circuit, a large sample set of FFT elements may be processed with reduced hardware. In the examples presented herein, a core FFT architecture builds on a radix-4 FFT element, performing calculations as in FFT 100 of
In a digital signal processing (DSP), the Fast Fourier Transform (FFT) is a fundamental building block which may be implemented in software or in hardware, such as digital logic, application-specific integrated circuits, field programmable gate arrays, and so forth, and is used for rapid real time processing but is not without complexity. The FFT is time-limited by cycles to execute instructions, such as and especially when they are organized serially. The hardware FFT is able to perform steps in parallel to improve throughput as compared to software-implemented FFTs. Each FFT is configured according to an algorithm or processing recipe. The FFT processing involves fetching data, multiplications, additions and/or storing data, among many others. One design is a butterfly operator, which is illustrated as FFT 100 in
The present disclosure is described with respect to a radar system, however may be applied to other systems. As disclosed above, FFT 100 illustrated in
An example of an FFT process created in Matlab is illustrated in
The core 214 is incorporated into an element controllable through a controller 250, which may be an ARM processor or any suitable computer processor. An ARM processor is one of a family of central processing units (CPUs) based on the RISC (reduced instruction set computer) architecture developed by Advanced RISC Machines (ARM). The controller 250 may overwrite or directly write into the input MUX 212 and read from the output MUX 242. The control information is generated in the controller 250; otherwise the data is passed through to the next processing element directly as desired through a streaming interface 240.
In various embodiments, an FFT may be defined by the number of stages. Each stage performs multiple radix-4 operations. To process data samples of 256 points, the FFT design has 4 stages with each stage processing all 256 inputs, where inputs for stages following stage 0 are each provided from the outputs of a prior stage. Specifically, each stage has 4 inputs and 64 radix-4 operation. Technically, these 64 radix-4 operations can run in parallel, however, such an architecture would require excess hardware. The present disclosure overcomes this complexity and breaks this down further and provides 16 radix-4 elements which run in parallel; in this case, each stage takes 4 cycles to complete. In the present examples, there are 256 data points as inputs per sample. To process these 256 inputs, there are 64 radix-4 operations per stage. The breakdown is 4×64 inputs, 16 radix-4 operations performed 4 times to process the 256 inputs; in this way, each of the 4 stages includes 4 cycles. In this way, the process has 4 stages. Each stage has 16 radix-4 elements. Each stage processes 4 times, which may be referred to as steps or cycles. Accordingly, with 4 stages, each having 4 cycles, the FFT processes the 256 points in 16 cycles.
The methods, processes and architectures provided herein present a fully pipelined system, which allows an FFT to run in four cycles, where the latency is 16 clock cycles. The architecture makes this FFT an efficient solution for use in radar applications, with vehicular radar systems in particular.
Each stage performs 64 of the radix-4 operations made up of multiple calculations. Each stage manages its own dataflow. Since the number of radix-4 elements is reduced to 16, each stage performs its task in 4 cycles which leads to a latency of 16 cycles, where the latency is the time for data samples to go through the FFT. In the pipelined architecture, it is possible for a new sample set or 256 points to begin processing every four cycles. This process resolves the issues associated with other methods since it uses a reduced set of 16 of the radix-4 elements at each stage and a corresponding reduced set of registers, which in this case is 16 registers. As used herein, register, memory, buffer, database or other data storage device may be implemented interchangeably as appropriate.
The calculation of the number of stages is a function of the number of inputs, and in the present examples is determined by the logarithm of the number of inputs N. In a radix-4 case, the logarithm of base 4 is used and therefore, log 4(256)=4 and thus the design implements 4 stages.
The input data to the FFT pipeline is reorganized for processing in the radix-4 elements. In accordance with various embodiments disclosed herein, inputs, N, to the FFT is the set of 2, 4, 6, 8, and may extend to 10 or any other suitable number. When a single element is used, then the lowest bits are considered, and upper bits are ignored when selected. For remapping of different FFT sizes, flipping digits or bits is based on the size of the FFT addresses (0-255), each represented by 8 bits. A digit reversal method is used to remap or reorder the input addresses. The inputs to the FFT pipeline are reordered in address re-mapping unit 302 of
As an example,
Referring back to
The radix-4 element has an associated fixed twiddle factor, which is modeled simply by multiplication with real or imaginary ones. Therefore, the results are already correct (e.g. 1) as stated above and no additional multiplication with a twiddle factor is implemented. For a higher order FFT the multiplication of the twiddle factor happens outside of the radix-4 element. The next phase is the multiplication phase which multiplies the twiddle factors. For the radix-4 FFT, the twiddle factors may be externally generated.
The FFT computation is performed through multiple stages. With a radix-4 based system, the number of stages is calculated as the logarithm of the number of inputs at base four. The first step in the process is to select the correct inputs, perform the radix-4 operation and then multiply the four outputs with the appropriate twiddle factor. The twiddle factor depends on the total number of stages, the current stage and the index. If one 4-point FFT is calculated, there is no twiddle factor necessary, or that the twiddle factor points naturally to the value 1.0; in this case the multiplication may be omitted. For each stage of the FFT, a subset of the twiddle factors can be used. The twiddle factors are generated locally for each stage and organized in a meaningful manner according to the implementation and design. The organization of the twiddle factors is therefore revisited for each stage.
An example illustrated in Matlab code is provided in
lookupIndex=((j−1)*4(4-stage))
In this example, tTab represents the twiddle table, and the input j is the other input to the equation aA=πr2nd 4 lookup indices are calculated. The four twiddle factors are formed in the twiddle Table (tTab) are looked up as follows:
When the lookup index is directly considered as the input address to the lookup table, then 4 results may be read simultaneously from the table with more data bits in parallel. There are 4 related results (0*lookupIndex, 1*lookupIndex, 2*lookupIndex and 3*lookupIndex): the lookupIndex is between 0 and 63 for a 256 FFT, as every lookup produces 4 results. It is thus possible to prepare the table in such a way that those 4 twiddle factors are concatenated into one longer word and a single access to the lookup table would provide the 4 relevant results.
The following table illustrates the number of memory reads in one approach and in an optimized approach at the different stages of the FFT.
The number of memory accesses may be a critical parameter to determine the performance and throughput of a given system. The other portion is the number of radix-4 elements. In this model, the radix-4 performs the operation in a single step. Based on this example the maximum number of radix-4 elements to run in parallel would be 64, which would be fully utilized in a first stage, labeled herein as stage 0. In the next stage, stage 1, 16 elements would run in parallel; in stage 2 there are 4 elements running in parallel and finally in the final stage, stage 3, there is 1 element running in parallel. To optimize timing with a fully parallelized system, based on the stated memory accesses of Table 1, each stage performs 64 radix-4 calculations.
As shown in Table 2, the disclosed approach significantly reduces the timing. The physical hardware and footprint may also be reduced as the address decoder for addressing the table. As 4 twiddle factors are combined into one table entry, the address decoder for that table is reduced to 64 entries rather than 256 as the total table size, or number of entries in the table, is reduced; however, each entry itself is 4 times larger. Address in these examples is greatly simplified. Alternate examples may use 16 radix-4 elements in stage 0 and still perform the calculations in 5 steps compared to a traditional approach which would take 8 steps. To add more radix-4 elements in the last stage may not improve the process as memory access is limited at this point. A similar limitation exists for the main memory which holds the data. Assuming the FFT has a total of 16 radix-4 elements, then the output of a stage is fed back as the input to the next stage.
The present examples localize the twiddle factors. When twiddle factors are combined for each radix-4 element, such as 4 twiddle factors as described hereinabove, 1 is used for each radix-4 element and if the same radix-4 element is reused through multiple stages then each radix-4 operation is associated with the relevant twiddle factors. Each stage has its own twiddle factor table, which contains the twiddle factors relevant for that stage. As each stage basically has the information to proceed, the table is localized as compared to a shared table where access to the table must be coordinated resulting in delays. The present disclosure solves the problems of these prior solutions and reduce processing time by the introduction of a local individual twiddle factor table for each stage. The present disclosure includes tables that are approximately the same size as, or less than, a general-purpose table.
Now referring to FFT architecture/process 320 in
To resolve the limitations on the twiddle factor, the present disclosure employs a different approach each stage. Some examples present the in-place twiddle factor generation, where each stage has its own well-defined twiddle factor LUT. Since not all twiddle factors are used for each stage, it is expected that the total size of the LUT will not exceed the size of a shared table.
The present disclosure describes how to relax the twiddle factor bottleneck. Table 3 illustrates the timing of different solutions.
And the following table details the architectures presented herein with localized twiddle factor LUTs.
The present example calculates a 25-point FFT in 10 clock cycles, or pipeline cycles, because once the first portion is calculated it moves into the next stage immediately; this continues for the first 3 stages. In this way, the next FFT may start in 4 cycles, the delay, as the radix-4 elements are reused 4 times. This provides a balance of element reuse and speed; when combined with radix-4 elements and the localized twiddle factor LUTs, these processes allow highly efficient FFTs for applications such as automotive radar and others.
The pipeline and data flow for the FFTs presented herein is made up of 4 stages and steps. In addition to that the control mechanism is localized, which means that the control system is very compact and efficient. The control information is passed on from one stage to the next to align it with the data.
Continuing with
These examples consider a pipelined FFT architecture 400 (in
In such a pipelined architecture, a new FFT calculation may be started every 4 cycles, wherein a new FFT calculation is a new set of 256 points of data. This concept is superior to other concepts since it uses sixteen (16) radix-4 elements at each stage and 64 registers in 3 of the 4 stages.
The elements of the FFT architecture/process 320 of
In the twiddle factor lookup stage, the input is the stage number, the number of total points and the current index. The twiddle factor is calculated based each case given by the following information: i) the stage, ii) the size of the FFT, and iii) the index of the input. The embodiments and implementations disclosed herein are superior to prior methods as the same twiddle factor table is used for different cases. The address calculation of an FFT may be adopted from a table generated for a different size FFT. In other cases, the twiddle factors are calculated based on a new FFT size. For this innovative FFT lookup process, a single table is maintained for use to provide twiddle factors for various different FFT sizes. The examples presented herein for radix-4 based FFT enables sizes are 4, 16, 64 and 256.
The processing begins with data provided from buffer 502, including the following: DATA (0:63) in location 504, DATA (62:127) in location 506, DATA (128:191) in location 508 and DATA (192:255) in location 510. For clarity, each section of buffer 502 has a different color or pattern to identify the flow of the original data through the process. In
As discussed hereinabove and with respect to
Stage 1, 514, receives 64 data elements at a time. The first step has the DATA[0:63] available, to process first. The following elements are processed using the 16 available radix-4 elements, the input and output indices are the same and therefore the distinction between dataIn and dataOut is omitted. The processing is illustrated in
The Stage 2, 516, follows a similar principle as the first 64 elements are processed first so that the pipeline is not broken. This stage likewise incorporates the twiddle factor and the radix-4 stage. The first step is to calculate the parameters at the indices. The first step considers data with index 0-63, and is listed as in
Stage 3, 518, is the last stage of the FFT and performs twiddle factor multiplication and the processing through the 16 radix-4 elements. This stage accesses the memory across the block of 64 registers. The twiddle factors for each radix-4 element is different.
The disclosure presented herein provide solutions that balance hardware complexity and throughput speed. The FFT presented herein uses radix-4 based architecture where 16 radix-4 elements are implemented per stage in a pipelined structure with localized twiddle factor tables.
The use of radix-4 elements in place of radix-2 elements, using a reduced four stages rather than 8. The number of radix-4 operations is 64 per each stage of a pipeline, compared to 128 needed for radix-2 implementations. The total number of operations is 256, whereas a radix-2 implementation would require 512 radix-2 operations. Although the radix-4 element is more complex, in balance there are less components and a radix-4 solution uses less memory for interim results.
The number of physical radix-4 elements is reduced to 16 per each stage, which means that each stage performs 4 steps. Nevertheless, due to the organization and the selection of the indices, each radix-4 element is fully engaged at all times. This leads to optimized throughput with low overhead given the use of 16 radix-4 elements. Many other implementations do not fully use the available hardware as they require data reorganization steps in between stages. In the present disclosure, the description of each stage shows how the data indices are organized so that 64 points are calculated without delay in the 3 first stages. The last stage breaks the pipeline but also not significantly.
The twiddle factor tables are localized and adapted for each stage, which means that a fully pipelined solution is possible. The required twiddle factors are provided at each stage and therefore no overhead is generated by maintaining a complete twiddle factor table. By organizing the data appropriately, twiddle factors are not changing from one step to the next and the last step is different in that regard.
Once the data is in an input buffer 502, it takes 10 cycles, or steps, to complete the FFT process, which is a fast solution in the automotive industry and others. Since it is pipelined already, after 7 cycles the next FFT may start its operation. To allow the pipeline to restart after 4 cycles, a double buffer may be placed at the interim stage, which is setup as ping-pong buffer. While a stage 2 is writing to one buffer, a stage 3 is reading from the other buffer and this may avoid 3 cycle delay.
The FFT algorithms presented herein are well suited for an ASIC or field programmable gate array (FPGA) implementation. The number of stages is calculated as a logarithm of base-4 and therefore may be implemented in 4 stages for a full 256 FFT. The herein proposed solution has 16 radix-4 elements in each stage. Due to the data organization the first 3 stages may be performed in a perfect pipelined manner. The fourth stage breaks from the pipeline system while maintaining the process in 10 cycles. After just 7 cycles, the next FFT process may start. This system is optimized for radar related work where two or even more FFT processes are performed consecutively. A higher resolution in time is achieved by the use of such an FFT.
In various embodiments, the digital processing method is a Fast Fourier Transform (FFT) processing. In various embodiments, the twiddle factor is a trigonometric constant. In various embodiments, digital processing method 3700 optionally includes remapping addresses of input data.
In accordance with various embodiments, a radar system is disclosed in detail. The radar system may include a transceiver. The radar system may include an analog to digital converter (ADC); a digital processing unit coupled to the ADC. The digital processing unit may include a plurality of Fast Fourier Transform (FFT) elements and a plurality of memory storage devices coupled to the plurality of FFT elements. The plurality of FFT elements and the plurality of memory storage devices are configured in a pipeline. The radar system may include a twiddle factor table comprising a plurality of twiddle factors, wherein each twiddle factor of the plurality of twiddle factors corresponds to an FFT element in the plurality of FFT elements. The radar system may include a control unit coupled to the digital processing unit and configured to control each of the plurality of FFT elements a predetermined number of times.
In various embodiments, the radar system may include an address remapping unit configured to digit reverse input indices. In various embodiments, at least a portion of the plurality of FFT elements are base 4 elements. In various embodiments, the pipeline comprises four stages, each stage comprising four FFT elements, wherein each FFT element is cycled four times to generate an output.
In various embodiments, at least one twiddle factor of the twiddle factor table is a multiplier in FFT processing. In various embodiments, the plurality of FFT elements process data iteratively. In various embodiments, the plurality of memory storage devices includes a set of registers. In various embodiments, an input to the pipeline is provided in increments. In various embodiments, a final stage of the pipeline accesses multiple increments. In various embodiments, a number of FFT elements in the plurality of FFT elements is a function of a radar sample size.
In accordance with various embodiments, a digital processing system is provided. The digital processing system may include a plurality of stages of processing elements configured in a sequence, wherein a number of stages is a function of a number of inputs and the plurality of stages form a processing pipeline; a plurality of memory storage devices coupled to each stage of the plurality of stages, the memory storage devices adapted to store interim results; a final stage of processing elements configured to combine outputs from the sequence of stages; and/or a controller adapted to iteratively process data through the processing elements.
In various embodiments, the digital processing system may include a lookup table coupled to the controller, the lookup table storing a plurality of operational coefficients comprising twiddle factors. In various embodiments, the lookup table stores the twiddle factors corresponding to each stage of the plurality of stages. In various embodiments, the digital processing system may include an address remapping module coupled to the plurality of stages. In various embodiments, each stage of the plurality of stages includes radix-4 FFT elements.
In accordance with various embodiments, a digital processing method is disclosed. The digital processing method may include determining a number of stages for digital processing as a function of a number of inputs in an input sample; determining a number of cycles for each stage of the stages; receiving the number of inputs; processing the input samples in each successive stage according to the number of cycles for each stage, wherein the number of cycles is a function of a sample size; and/or generating results from the processing.
In various embodiments, the digital processing method is a Fast Fourier Transform (FFT) processing. In various embodiments, prior to determining the number of cycles for each of the stages, the digital proceed method may include calculating an operational coefficient for each stage, wherein the operational coefficient comprises a twiddle factor. In various embodiments, the twiddle factor is a trigonometric constant. In various embodiments, the digital proceed method may include remapping addresses of input data.
It is appreciated that the previous description of the disclosed examples is provided to enable any person skilled in the art to make or use the present disclosure. Various modifications to these examples will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other examples without departing from the spirit or scope of the disclosure. Thus, the present disclosure is not intended to be limited to the examples shown herein but is to be accorded the widest scope consistent with the principles and novel features disclosed herein.
As used herein, the phrase “at least one of” preceding a series of items, with the terms “and” or “or” to separate any of the items, modifies the list as a whole, rather than each member of the list (i.e., each item). The phrase “at least one of” does not require selection of at least one item; rather, the phrase allows a meaning that includes at least one of any one of the items, and/or at least one of any combination of the items, and/or at least one of each of the items. By way of example, the phrases “at least one of A, B, and C” or “at least one of A, B, or C” each refer to only A, only B, or only C; any combination of A, B, and C; and/or at least one of each of A, B, and C.
Furthermore, to the extent that the term “include,” “have,” or the like is used in the description or the claims, such term is intended to be inclusive in a manner similar to the term “comprise” as “comprise” is interpreted when employed as a transitional word in a claim.
A reference to an element in the singular is not intended to mean “one and only one” unless specifically stated, but rather “one or more.” The term “some” refers to one or more. Underlined and/or italicized headings and subheadings are used for convenience only, do not limit the subject technology, and are not referred to in connection with the interpretation of the description of the subject technology. All structural and functional equivalents to the elements of the various configurations described throughout this disclosure that are known or later come to be known to those of ordinary skill in the art are expressly incorporated herein by reference and intended to be encompassed by the subject technology. Moreover, nothing disclosed herein is intended to be dedicated to the public regardless of whether such disclosure is explicitly recited in the above description.
While this specification contains many specifics, these should not be construed as limitations on the scope of what may be claimed, but rather as descriptions of particular implementations of the subject matter. Certain features that are described in this specification in the context of separate embodiments can also be implemented in combination in a single embodiment. Conversely, various features that are described in the context of a single embodiment can also be implemented in multiple embodiments separately or in any suitable sub combination. Moreover, although features may be described above as acting in certain combinations and even initially claimed as such, one or more features from a claimed combination can in some cases be excised from the combination, and the claimed combination may be directed to a sub combination or variation of a sub combination.
The subject matter of this specification has been described in terms of particular aspects, but other aspects can be implemented and are within the scope of the following claims. For example, while operations are depicted in the drawings in a particular order, this should not be understood as requiring that such operations be performed in the particular order shown or in sequential order, or that all illustrated operations be performed, to achieve desirable results. The actions recited in the claims can be performed in a different order and still achieve desirable results. As one example, the processes depicted in the accompanying figures do not necessarily require the particular order shown, or sequential order, to achieve desirable results. Moreover, the separation of various system components in the aspects described above should not be understood as requiring such separation in all aspects, and it should be understood that the described program components and systems can generally be integrated together in a single hardware product or packaged into multiple hardware products. Other variations are within the scope of the following claim.
This application claims priority from U.S. Provisional Application No. 63/060,538, filed on Aug. 3, 2020, which is incorporated by reference in its entirety.
Number | Date | Country | |
---|---|---|---|
63060538 | Aug 2020 | US |