Abstract:
This invention generally relates to improvements in digital audio processing and more particularly to digitally filtering stereo data in parallel to increase the quality of the audio information in an efficient manner.

Description:
This is a continuation of application Ser. No. 07/920,950 filed Jul. 28, 1992, now abandoned. 
    
    
     FIELD OF THE INVENTION 
     This invention generally relates to improvements in digital audio processing and more particularly to digitally filtering stereo data to increase the quality of the audio information in an efficient manner. 
     BACKGROUND OF THE INVENTION 
     Many patents disclose systems and methods for filtering image and audio information in an efficient manner. U.S. Pat. No. 4,918,742 to Simonds, and entitled, IMAGE PROCESSING USING MULTI-PASS CONVOLUTION WITH SMALL KERNELS, discloses an image processing system which uses a single processor to perform convolution on an image. 
     Another example of an imaging system is disclosed in U.S. Pat. No. 4,823,299 to Chang et al. The patent presents a real time system for processing the complex Kalman Filter algorithm. This algorithm is used in target tracking for radar signal processing and it has no known application to audio information. 
     A still further example of a signal processor is found in U.S. Pat. No. 4,947,362 to Bui. The patent discloses an adaptive digital filter for signal processing that is implemented on a VLSI chip. The adaptive filter has dual delay lines to yield a sequence of simultaneous samples of both input and output signals. The filter uses parallel logic for implementation of a least mean square adaptive filter. 
     Finally, in U.S. Pat. No. 4,117,541 to Ali, a configurable parallel arithmetic structure for recursive digital filtering is disclosed. The patent relates to time division multiplexed and frequency division multiplexed processing of digital data emulating a sixth-order elliptical digital filter. 
     None of the patents or other prior art references applicant is aware of suggests a method or system for parallel digital filters for recursively processing audio information. 
     SUMMARY OF THE INVENTION 
     Accordingly, it is a primary objective of the present invention to improve digital audio processing by filtering stereo data in parallel using recursive digital filters. 
     These and other objectives of the present invention are accomplished by the receipt of stereo audio information through the analog input ports of the audio subsystem. The audio information is digitized by the analog to digital converter (ADC) and transmitted to the Digital Signal Processor (DSP) data space. The data is filtered to provide anti-aliasing. The filtering processes stereo audio information in parallel with a resultant savings of machine cycles. The filtered stereo signal is then prepared to be compressed or undergo other transformations in the host. 
     To play back the audio signal, filtering is also required. A digitized audio signal from the host is passed through a parallel, recursive digital filter. The filtered digital signal is thereafter processed by a digital to analog converter (DAC) where it is converted to an analog signal and sent to an amplifier or other device for transmission to speakers or other audio devices. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is a block diagram of a host computer in accordance with the subject invention; 
     FIG. 2 is a block diagram of a digital audio system in accordance with the subject invention; 
     FIG. 3 is a digital filter equation for processing two channel stereo data in accordance with the subject invention; 
     FIG. 4 is a drawing of a conventional structure for non-parallel processing recursive filters in accordance with the subject invention; 
     FIG. 5 is a drawing of a parallel structure for processing recursive filters in accordance with the subject invention; 
     FIG. 6 is a flowchart of the filter logic in accordance with the subject invention; 
     FIGS. 7A-7C are flowcharts for parallel processing a first pole pair for right and left channels in accordance with the subject invention; 
     FIGS. 8A-8B are flowcharts for parallel processing a second pole pair for right and left channels in accordance with the subject invention; 
     FIGS. 9A-9B are flowcharts for parallel processing a fifth pole in accordance with the subject invention; 
     FIG. 10 is ISP source code for parallel implementation of two channel stereo digital filters in accordance with the subject invention; 
     FIG. 11 is a block diagram of the ISP register architecture in accordance with the subject invention; 
     FIG. 12 is a block diagram of the ISP machine register architecture in accordance with the subject invention; 
     FIG. 13 is a block diagram of the ISP register bits in accordance with the subject invention; 
     FIG. 14 is a block diagram of the ISP process status register in accordance with the subject invention; and 
     FIG. 15 is a block diagram of the ISP process status register bits in accordance with the subject invention. 
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
     A representative hardware environment is depicted in FIG. 1, which illustrates a typical hardware configuration of a computer in accordance with the subject invention having a central processing unit 10, such as a conventional microprocessor, and a number of other units interconnected via a system bus 12. The computer shown in FIG. 1 includes a Random Access Memory (RAM) 14, Read Only Memory (ROM) 16, an I/O adapter 18 for connecting peripheral devices such as disk units 20 to the bus, a user interface adapter 22 for connecting a keyboard 24, a mouse 26, a speaker 28, a microphone 32, and/or other user interface devices such as a touch screen device (not shown) to the bus, a communication adapter 34 for connecting the computer to a data processing network and a display adapter 36 for connecting the bus to a display device 38. 
     FIG. 2 is a block diagram of an audio system in accordance with the subject invention. The host computer is as described in FIG. 1. The audio subsystem 210 is attached to the bus of the host computer and includes a Digital Signal Processor (DSP) 220 to implement the recursive digital filters in accordance with the subject invention. Stereo data enters the computer at the analog to digital converter (ADC) 230 and is transmitted via the digital to analog converter (DAC) 240 to speakers or other audio device. 
     When recording or playing back digital audio data, recursive digital filters are used to remove unwanted noise effects and to smooth the data. Implementation of these filters is facilitated with a digital signal processor (DSP) 220 such as a Texas Instruments TMS320 DSP. 
     If stereo sound is involved, separate filters are used for each of the channels. Even though the filter characteristics of each channel, including bandwidth and sample rate, are usually the same, separate filters are employed because the states of each filter channel differ. 
     The mathematical equations which constitute a five pole recursive digital filter for right and left channel stereo processing are shown in FIG. 3. The conventional structure for non-parallel processing of these filters is shown functionally in FIG. 4. Note, the filter gains GAIN1 400, GAIN2 402 and GAIN3 403 and coefficients B1 to B5 for each channel are loaded separately even though the numerical values for each channel are the same. This redundant loading of gains and coefficients uses machine cycles inefficiently. Even though the particular example uses five pole filters, the implementation process holds independent of filter size. Inefficiency increases with the size of the filter. 
     The IBM Digital Signal Processor (ISP) provides parallel processing capability that are employed by the invention to significantly reduce processing time. A detailed description of the ISP is presented below. The structure for parallel processing two, five pole recursive digital filters is shown in FIG. 5. The filter gains and coefficients for both channels are loaded only once. This processing reduces the number of loads required and permits some of the unique instructions to be executed at the same time due to the parallel processing features of the ISP. 
     FIGS. 6 through 9 present the parallel nature of the processing structure in accordance with the subject invention. Processing is divided into three sections: 
     (1) RIGHT for processing those instructions unique to the right channel, 
     (2) LEFT for processing those instructions unique to the left channel, and 
     (3) COMMON for processing those instructions common to both channels. 
     Throughout the structure, multiple instructions appear on the same line. Instructions occurring on the same line get processed during the same cycle. This processing reduces the overall number of cycles required. Arranging the filters in this manner affords an opportunity to exploit the ISP&#39;s parallel processing capability. 
     FIG. 10 presents the ISP source code for parallel processing two channel stereo data employing two, five pole digital filters. This structure reduces filter processing requirements by over thirty percent. 
     IBM Signal Processor (ISP) Hardware Architecture 
     The IBM Signal Processor (ISP) is a digital signal processor that operates at sixteen million instructions per second (MIPS). The ISP has a Harvard architecture with data address space completely separate from instruction address space. 
     The ISP can address up to 64K instructions and up to 32K data words. Instructions are 24 bits wide and data words are 16 bits wide. Instructions pass through a three-phase pipeline: (1) Fetch, (2) Decode, and (3) Execute. The Arithmetic Logic Unit (ALU) is separate from the multiplier, so an ALU operation and a multiply can occur simultaneously in a single machine cycle. 
     Instructions can be classified into two categories: (1) Simplex instructions, and (2) Parallel instructions. A simplex instruction performs a single operation, such as a load from memory, during a machine cycle. The operations within a parallel instruction are encoded as a single 24-bit instruction. 
     ISP General Purpose Registers 
     The ISP contains eight general purpose 16-bit registers, R0-R7. Registers R2 and R6 have 16-bit extensions that enable usage in certain 32-bit operations. R0 and R4 can be used as index registers to form base-displacement addresses for load, store, store immediate and most branch instructions. R0 and R4 can also perform modulo or circular addressing. Modulo addressing is controlled by bit settings in the machine control register. R4 can perform table addressing, but R0 cannot. Register R5 (also called RX) is always one of the data sources in a multiplication. R1, R3 and R7 have no special properties. R7 is traditionally used to store a return address for subroutine calls. 
     The general purpose registers are arranged in two banks: R0-R3 and R4-R7. In a compound instruction that includes a load or load immediate instruction, the target of the transfer and the target of the ALU operation must come from opposite register banks. The ISP can multiply two 16-bit numbers in a single machine cycle. The product is stored in the 32-bit multiplier product (RP) register. RP can be used to perform 32-bit accumulations to WR2 or WR6. The low bits of the product can be accessed as register RPL, and the high order 16-bits as RPH. 
     The machine control register is divided into two 16-bit registers, MCRH and MCRL. ISP programs use MCRH extensively to control modulo addressing, arithmetic saturation and multiplier scaling. The eight low-order bits in MCRL are used to enable or inhibit interrupt levels 0-7. The Instruction Link Register (ILR) is normally equal to the location counter. It is also used to save the location counter after an interrupt and to perform position-relative branches. The Common Data Bus (CDB) is used implicitly by all data transfer operations. The CDB generally holds the last value loaded or stored. The CDB is explicitly referenced for the following reasons: 
     some branch instructions take the new contents of the location counter from the CDB; and 
     a test and branch can be performed on a specified bit in the CDB. 
     The processor status register consists of two 16-bit registers, PSRH and PSRL. PSRH is normally accessed explicitly only during interrupt processing. PSRH is frequently accessed implicitly, since it contains the condition codes or flags for the ISP chip. The PSRL register should not be accessed by an ISP programmer. The indirect program access register (RIPA) is used when loading data from the instruction address space with the BIPAR instruction. 
     ISP addressing is a word addressable architecture. Sixteen bits are always read from memory and only even addresses are accessible. Indexed addressing is facilitated using the R0 and R4 index registers. The contents of a register is combined with an eight bit or sixteen bit offset. Offset limits exist depending on whether simple or parallel instructions are used. Circular addressing is also enabled through modulo N addressing using the R0 and R4 registers. However, a buffer must be aligned and sized in powers of two. Table addressing is also facilitated using the R4 register. 
     ISP Instruction Processing 
     Instructions in the ISP pass through a three phase pipeline. Phase 1 is a fetch operation. Phase 2 is a decode operation. Phase 3 is an execute operation. During each machine cycle, three actions are occurring simultaneously. An instruction is being fetched from instruction memory. The previously fetched instruction is decoded, including the resolution of operands and addresses. The previously decoded instruction is executed. The net effect is that the instruction throughput is one instruction per machine cycle. Most instructions execute at the end of phase 3. However, branch instructions execute at the end of phase 2 with no additional hardware action during phase 3. The instruction immediately after a branch instruction is being fetched during the same phase that the branch is decoded and executed. The instruction immediately after a branch is always executed. 
     While the invention has been described in terms of a preferred embodiment in a specific system environment, those skilled in the art recognize that the invention can be practiced, with modification, in other and different hardware and software environments within the spirit and scope of the appended claims.