This disclosure relates generally to electronic circuits, and more particularly to digital signal processing.
Digital filtering is a commonly used signal processing technique that can remove unwanted parts of a digital signal, such as random noise, or extract useful parts of the digital signal, such as the components lying within a certain frequency range. Many electronic communication systems, such as radios, cell phones, and stereo receivers, include digital signal processors that can perform digital filtering, such as Finite Impulse Response (FIR) filtering or Infinite Impulse Response (IIR) filtering.
These digital signal processors are often preconfigured with instructions that, when sequentially executed, can filter digital data signals. The instructions can include conditional instructions, i.e., such as conditional branches or jumps, that have multiple potential next instructions. When the digital signal processors encounter a conditional instruction, they resolve the condition to determine the next instruction to execute. When the next instruction is not sequentially located, however, there is a delay in locating the next instruction, thus creating a throughput bottleneck for the digital signal processors.
According to an embodiment, a device comprising a first control store memory device populated with data path instructions that are indexable by control store addresses, wherein the first control store memory device is configured to locate a first set of one or more data path instructions corresponding to at least one control store address. The device further comprises a second control store memory device populated with data path instructions that are indexable by the conditional addresses, wherein the second control store memory device is configured to locate a second set of one or more data path instructions corresponding to at least one conditional address. The device further comprises a selection circuit to select between the first set of data path instructions and the second set of data path instructions, wherein the selected set of data path instructions, when executed, are configured to direct digital signal processing operations.
According to an embodiment, a method comprises receiving at least one control store address and at least one conditional address from a control state machine, locating a first set of data path instructions in a first control store memory device according to the control store address, locating a second set of data path instructions in a second control store memory device according to the conditional address, and selecting between the first set of data path instructions and the second set of data path instructions, wherein the selected set of data path instructions, when executed, are configured to direct digital processing operations.
According to an embodiment, a system comprises a control store memory populated with multiple sets of data path instructions indexable by control store addresses and jump addresses. The system further comprises a control state machine to provide at least one control store address and at least one jump address to the control store memory, wherein the control store memory is configured to identify a first set of data path instructions according to the control store address and a second set of data path instructions according to the jump address. The system further comprises a data path device to perform digital processing operations on digital data according to one of the first set of data path instructions identified by the control store address or the first set of data path instructions identified by the jump address.
The invention may be best understood by reading the disclosure with reference to the drawings.
A programmable system on a chip (PSOC) or other electronic devices include a digital signal processor to processes digital signals. The digital signal processor can include a divided control store memory that allows the digital signal processor to identify multiple instruction sets in parallel when a conditional decision in encountered, thus allowing the digital signal processor the ability to seamlessly branch or jump between instruction sets and process the digital signals. Embodiments are shown and described below in greater detail.
The digital signal processor 200 is reconfigurable to implement various digital signal processing algorithms, such as a Finite Impulse Response (FIR) filter, a Biquad Infinite Impulse Response (IIR) filter, Lattice Wave Digital (LWDF) filter, among others. The digital signal processor 200 includes a system interface to communicate with the other blocks in the programmable system 100 and to receive algorithm or instruction data 104 in the form of instructions from the system bus 150. The digital signal processor 200 can execute the instructions to implement one or more digital signal processing algorithms or processes. For instance, the instructions data 104 can include various coefficients and instructions that, when loaded and initialized into the digital signal processor 200, can prompt the digital signal processor 200 to implement different digital signal processing algorithms or processes, such as a digital filter for data 102. In some embodiments, the instruction data 104 can be stored in the main memory 120 and the microcontroller 110 can provide the instruction data 104 to the digital signal processor 200.
In other words, the digital signal processor 200 can receive a series of instructions implementing a digital signal processing operation, such as a digital filter for received data 102. This series of instructions can be programmed or loaded once and later reconfigured by a microcontroller 110. The reconfigurability of the digital signal processor 200 allows the programmable system on a chip 100 the ability to maintain a wide array of digital signal processing functionality without the corresponding consumption of system resources, such as memory and processing. The architecture of the digital signal processor 200 can include multiple memory devices that are scalable, allowing for a compact implementation that is amenable to integration in one or more processors on the chip. Embodiments of the digital signal processor 200 will be described below in greater detail.
The digital signal processor 200 can receive data 102 from the system bus 150 and then apply an algorithm to data 102 according to its current configuration. There are many ways for the programmable system on a chip 100 to provide or stream the data 102 to the digital signal processor 200. For instance, the main system processor 110 can access the data 102 stored in the main memory 120 and send or stream it to the digital signal processor 200. In another example, the DMA controller 130 can directly retrieve and provide or stream the data 102 from one or more of the electrical components coupled to the system bus 105.
The I/O device 140 can receive analog or digital signals, for example, from a microphone or a network, and provide them to the main memory 120 or other storage device in the programmable system on a chip 100. In some embodiments, the I/O device 140 can provide received analog signals to an analog-to-digital converter (not shown) to convert the analog signals into digital signals for subsequent digital filtering. The DMA controller 130 can directly transfer these converted digital signals to the digital signal processor 200 as data 102 for digital filtering.
The processor controller 300 and the data path 230 can be loaded or configured to, at least in part, implement one or more digital signal processing algorithms according to the instruction data 104. In some embodiments, the data path 230 can load various coefficients used in implementing specific digital filters from the instruction data 104, while the processor controller 300 can load various data path instructions that both direct configuration of the data path 230 and identify which coefficients the data path 230 is to utilize during the signal processing operations.
The processor controller 300 can be implemented as a hierarchical controller that allows complex branching to be implemented. Rather than using long sequential instruction sets, the data path instructions can be grouped in loops, subroutines, or multi-way branches in control flow. This hierarchical structure can enable the digital signal processor 200 to incorporate reduced-size memory devices to store the groups of data path instructions, thus allowing for a smaller overall implementation of the digital signal processor 200. For example, an Infinite Impulse Response (IIR) filter can be implemented using a basic building block called a biquad. The above architectural features enable scalability of the digital signal processor 200, and allow one or more processors to be integrated on a single die with analog and digital circuit blocks to comprise a mixed signal PSoC device.
The processor controller 300 can provide control signals 304 to the data path 230 and one or more address calculation devices 220 according to the instructions loaded in the processor controller 300. The control signals 304 prompt the data path 230 and address calculation devices 220 to implement at least one digital signal processing algorithm or process. In some embodiments, the control signals 304 direct the flow of the data 102 through the data path 230, e.g., by establishing which mathematical and/or logical functions are utilized to manipulate the data 102 during digital signal processing and what signals or data 102 is inputted into the selected mathematical and/or logical functions. When the data 102 is received with a fixed width, the digital signal processor 200 can be a fixed word length processor. Thus, when using a binary point, floating point arithmetic can be emulated by the digital signal processor 200.
The processor controller 300 can also provide address control signals 302 to address calculation devices 220 according to the data path instructions. The address control signals 302 can identify one or more addresses 222 stored in the address calculation devices 220. The addresses 222, when provided to the data path 230, can identify coefficients that the data path 230 can use when digitally filtering the data 102 from the bus interface 210. The combination of the control signals 304 and the address control signals 302 can control the operation of the data path 230 to implement various digital signal processing algorithms and to digitally filter the data 102 from the bus interface 210.
In some embodiments, the data path 230 and address calculation device 220 can be pipelined in a fashion to allow calculation of consecutive multiply accumulate operations. The interaction with the processor controller 300, the address calculation device 220, and the data path 230 can allow branches in the program flow to occur. In some embodiments, the processor controller 220 can allow branching with pipeline latencies of 0, 1, and 2 cycles depending on the branch condition.
The processor controller 300 includes a control state machine 310 and a control store memory 400 that, in combination, can control or direct the operations of the data path 230. The control store memory 400 can be loaded with one or more data path instructions that, when identified by the control state machine 310, can prompt the processor controller 300 to output the control signals 304 and the address control signals 302.
The control state machine 310 can receive branch condition signals 306 from the data path 230 and the address calculation device 220. The branch condition signals 306 can indicate to the control state machine 310 the outcome of a branching condition presented by an executed data path instruction. In some embodiments, the control state machine 310 can utilize the branching condition signals 306 to determine which data path instruction set to select for execution next. Embodiments of the processor controller 300 will be described below in greater detail.
The control state machine 310 can include a state machine memory 312 and a finite state machine 314 that can be programmed with instruction data 104. For instance, the instruction data 104 can provide the finite state machine with addresses 311 and can populate the state machine memory 312 with control store addresses 315. In some embodiments, a random access memory (RAM) is used to implement both the state machine memory 312 and finite state machine 314. The use of RAM allows the control state machine 310 to be reconfigurable or reprogrammable, for example, by the microcontroller 110.
The finite state machine 314, when initiating a next state of a process, can provide one or more addresses 311 to the state machine memory 312. The addresses 311 can be used to index or address the state machine memory 312 and identify one or more control store addresses 315. Once identified, the state machine memory 312 can provide the control store addresses 315 to the control store memory 400 for use in identifying sets of one or more data path instructions.
The finite state machine 314 can also receive input from various sources in the digital signal processor 200, and utilize the input to direct its operation. For instance, the state machine memory 312 can provide the finite state machine 314 with additional information, such as enable bits or signals 313, which can help determine the next state to perform. In some embodiments, the finite state machine 314 can proceed to another state of digital filtering process upon receipt of an end of block signal 404 provided by the control store memory 400. The data path 230 and the address calculation device 220 can provide branch condition signals 306 to the finite state machine 314 to determine a result of a condition presented during execution of a data path instruction. In some embodiments, as will be discussed below in greater detail, the finite state machine 314 can direct the control store memory 400 to select a next instruction set based, at least in part, on the branch condition signals 306.
The control store memory 400 can store sets of data path instructions that, when identified, control signal processing operations in the digital signal processor 200. Since the data path instructions can be configured into modular groups of instructions, the control state machine 310 provides the control store addresses 315 to switch between these modular groups or data path instruction sets. In some embodiments, the control store memory 400 will issue an end of block signal 404 to the finite state machine 314 to indicate that an end of a data path instruction set is approaching or has been reached. The finite state machine 314 can then identify at least one address 311 to send to the state machine memory 312 to identify a control store address 315 that, when provided to the control store memory 400, can identify a next set of data path instructions to execute.
In some instances, there can be multiple options for the next set of data path instruction, such as when a conditional branch or jump instruction appears in the previous instruction set. Since the finite state machine 314 does not initially know which instruction set is to be the next instruction set executed, in some embodiments, the finite state machine directs the state machine memory 312 to provide multiple control store addresses, e.g., one control store address 315 and one jump address 402. The control store memory 400 can process these addresses in parallel, so that once the correct option is determined, for example, through the evaluation of the condition in the conditional branch or jump instruction in the previous instruction set as indicated by the branch condition signals 306 from the data path 230 and/or the address calculation device 220, the next data path instruction set is ready to be executed.
The finite state machine 314 can issue selection signals 316 to the control store memory 400 that direct the selection between the multiple available data path instruction sets. In some embodiments, the finite state machine 314 can issue selection signals 316 to the control store memory 400 in response to the end of block signal 404 or other input, such as the branch condition signals 306 indicating a result of a condition received from the data path 230 or the address calculation unit 220. By identifying multiple potential next instruction sets in parallel, the digital signal processor 200 can seamlessly transition between multiple data path instruction sets without substantial delay. This ability to branch seamlessly coupled with the dynamic reconfigurability of the PSoC system provides the foundation for being able to divide complex algorithms into multiple modular groups of code, such as data path instruction sets, which enables system designers to reduce memory size and overall system size.
The control store memory 400 can include multiple program counters 410A and 410B to receive at least one of the control store addresses 315 and jump addresses 402 from the control state machine 310, and utilize them to identify data path instruction sets stored in the memory devices 420A and 420B, respectively. The control store addresses 315 and the jump addresses 402 can identify a starting point of a set of data path instructions to be sequentially executed until an end of block signal 404 is reached. Although
In some embodiments, each program counter 410A and 410B can receive both the control store address 315 and jump address 402 from the control state machine 310, and then select one of them to locate data path instruction sets stored in respective memory devices 420A and 420B according to the selection signals received from the finite state machine 314. For instance, the program counters 410A and 410B can include one or more multiplexers (not shown) that provide one of the control store address 315 or jump address 402 the respective memory devices 420A and 420B.
In some embodiments, the state machine memory 314 can selectively send the program counters 410A and 410B one of the control store address 315 and jump address 402, respectively. This informed process for distributing control store address 315 and jump address 402 to the program counters 410A and 410B could eliminate the need for any selection circuitry in the program counter 410A and 410B and routing for the selection signals 316.
The control store memory 400 includes several multiplexers 430, 440, and 450 to determine which of the data path instruction sets will be provided to the rest of the digital signal processor 200 and control signal processing operations. Since each memory device 420A and 420B outputs a data path instruction set corresponding to different addresses, i.e., the control store address 315 and the jump address 402, the addition of the multiplexers 430, 440, and 450, allows the control store memory 400 to determine or select which one of the sets should be executed.
The multiplexer 430 receives at least a portion of the data path instruction sets from both of the memory devices 420A and 420B, and then selects one of them for distribution to the data path 230 as control signals 304. The multiplexer 440 receives at least a portion of the data path instruction sets from both of the memory devices 420A and 420B, and then selects one of them for distribution to the finite state machine 314 as the end of block signal 404. The multiplexer 450 receives at least a portion of the data path instruction sets from both of the memory devices 420A and 420B, and then selects one of them for distribution to the address calculation device 220 as the address control signals 302.
At blocks 520 and 530, the control store memory 400 directs the first program counter 410A to provide the control store address 315 to the first control store memory device 420A, and locates a first set of data path instructions in a first control store memory device 420A according to the control store address 315. In some embodiments, the first program counter 410A provides the control store address 315 to the first control store memory device 420A responsive to selection signals 316 from the finite state machine 314.
At blocks 540 and 550, the control store memory 400 directs the second program counter 410B to provide the conditional address 402 to the second control store memory device 420B, and locates a second set of data path instructions in a second control store memory device 420B according to the conditional address 402. In some embodiments, the second program counter 410B provides the conditional address 402 to the second control store memory device 420B responsive to selection signals 316 from the finite state machine 314.
As discussed above, both program counters 410A and 410B can be configured to receive both the control store address 315 and the conditional address 402. The control state machine 310 can then provide selection signals 316 to the program counters 410A and 410B to indicate which address should be provided to the respective memory device 420A and 420B.
At a block 560, the control store memory 400 selects between the first set of data path instructions and the second set of data path instructions, wherein the selected set of data path instructions, when executed, are configured to direct digital signal processing operations. This selection can be performed with one or more multiplexers 430, 440, and 450, in the control store memory 400. In some embodiments, multiplexer 430 receives at least a portion of the data path instruction sets from both of the memory devices 420A and 420B, and then select one of them for distribution to the data path 230 as control signals 304. Multiplexer 440 can receive at least a portion of the data path instruction sets from both of the memory devices 420A and 420B, and then select one of them for distribution to the finite state machine 314 as the end of block signal 404. Multiplexer 450 can receive at least a portion of the data path instruction sets from both of the memory devices 420A and 420B, and then select one of them for distribution to the address calculation device 220 as the address control signals 302.
One of skill in the art will recognize that the concepts taught herein can be tailored to a particular application in many other advantageous ways. In particular, those skilled in the art will recognize that the illustrated embodiments are but one of many alternative implementations that will become apparent upon reading this disclosure.
The preceding embodiments are exemplary. Although the specification may refer to “an”, “one”, “another”, or “some” embodiment(s) in several locations, this does not necessarily mean that each such reference is to the same embodiment(s), or that the feature only applies to a single embodiment.
This application is a continuation-in-part of co-pending U.S. application Ser. No. 11/865,672, filed Oct. 1, 2007, filed, which claims the benefit of U.S. Provisional Application No. 60/912,399, filed Apr. 17, 2007, both of which are incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
60912399 | Apr 2007 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 11865672 | Oct 2007 | US |
Child | 12239450 | US |