1. Technical Field of the Invention
The present invention relates to the decoding of adaptive differential pulse code modulation (ADPCM) encoded signals and, in particular, to a time multiplexed method for addressing a read only memory (ROM) that stores both ADPCM encoded source files and micro-controller operational instructions.
2. Description of Related Art
Applications needing speech synthesizers and/or tone generators are well known in the art. Examples of such applications include high-end educational toys, alert and warning systems, speech generators, and sound effect generators. It is common in such applications to store the voice data (i.e., the speech/sound/tone source file) in read only memory (ROM) in a pulse code modulation (PCM) format. The audible information comprising the speech, sound or tone may then be synthesized from the data in the ROM addressed source file and output for listening.
A concern exists, however, that even though PCM source files produce high quality output synthesized sound, these files (when stored) tend to take up an unacceptably large amount of ROM space. This is especially a concern in product applications where the total amount of available ROM space is severely limited (perhaps because of integrated circuit size restrictions or price considerations). In these situations, given a fixed ROM space, the relatively large size of the resulting source file severely limits the length of the audible voice data output that may be produced.
It is also recognized that in some product applications a higher quality output synthesized sound like that produced from PCM source files may not be required. Also, these applications may require the generation of a longer audible voice data output that cannot be achieved with PCM stored source files saved in limited ROM space. To address both of these concerns, the prior art teaches encoding the PCM source file instead in an adaptive differential pulse code modulation (ADPCM) format. This format advantageously uses approximately one-half the amount of ROM storage space to save the source file as that which is needed for conventional PCM files. This savings in storage space is made at the expense of some level of audible quality, but advantageously allows the user to generate a much longer synthesized sound output than is possible for PCM data saved in the same size ROM space.
Reference is now made to
A number of drawbacks are recognized with this software based implementation for ADPCM decoding. First, with the ADPCM algorithm implemented in software, the processing device must execute many addition, shift and compare instructions in the period of one sample (n) of the data, and hence device operation may be slowed. Second, it takes a large amount of ROM space to store the ADPCM decoding algorithm (even though the encoded ADPCM source file may take up less space than a comparable PCM file). This may eliminate much of the ROM space gain achieved by switching from PCM to encoded ADPCM source files. Third, the processing unit typically cannot perform two things at one time and thus it cannot be interrupted to perform another action while the ADPCM decoding process is being implemented on a given source file.
What is needed is an ADPCM decoder system possessing quick execution time and that can take advantage of the ROM-based savings ADPCM format without needing to also store the decoding algorithm. Still further, there would be an advantage if the process for decoding a retrieved source file could be interrupted to allow the processor to handle other tasks.
The present invention comprises a micro-controller connected between a hardware-based adaptive differential pulse code modulation (ADPCM) decoder and a memory storing both programming instructions for controlling micro-controller operation and ADPCM encoded source file data. The micro-controller implements time multiplexed memory addressing. In a decoder cycle, ADPCM encoded source file data is extracted from the memory and delivered to the ADPCM decoder for processing. In an instruction cycle, programming instructions are extracted from the memory and executed by the micro-controller while the hardware-based ADPCM decoder continues processing of the previously extracted ADPCM encoded source file data. The two cycles consecutively repeat to extract ADPCM encoded source file data for decoder processing while simultaneously supporting inter-mixed micro-controller programming instruction execution.
More specifically, an integrated circuit chip has a micro-controller connected between a hardware-based adaptive differential pulse code modulation (ADPCM) decoder and a read only memory (ROM). The ROM stores both programming instructions for controlling micro-controller operation and ADPCM encoded source file data. The micro-controller implements an architecture supporting time multiplexed ROM addressing driven by a clock signal having an instruction phase wherein a program counter supplies ROM address(es) for retrieving micro-controller programming instructions and a decoder phase wherein an address counter supplies ROM address(es) for retrieving portions of the ADPCM encoded source file data. A multiplexer driven by the clock signal chooses between the program counter and address counter supplied addresses for application to the ROM. ADPCM encoded source file data extracted from the ROM in the decoder phase of the clock signal is delivered to the decoder for processing during the subsequent instruction phase of the clock signal. This allows for some measure of simultaneous ADPCM data decoding and micro-controller programming instruction execution (comprising inter-mixed handling).
A more complete understanding of the method and apparatus of the present invention may be acquired by reference to the following Detailed Description when taken in conjunction with the accompanying Drawings wherein:
Reference is now made to
The micro-controller unit 14 asserts an enable signal 16 to activate operation of the ADPCM decoder 12 and further feeds the raw (i.e., ADPCM encoded) source file data extracted from a read only memory (ROM) 18 to the decoder 12 over a data bus 20. The decoder 12 also receives a clock signal (ck_sac) 22 to assist in timing decoder operations wherein it functions to decode the received source file and outputs decoded source file data (for example, in linear PCM data format) on the output bus (not explicitly shown) for the decoder 12. The micro-controller unit 14 similarly receives a clock signal (clk_mcu) 24, which may have a different frequency and/or phase than the decoder clock signal 22, to assist in timing controller operations.
The ROM 18 stores both the user programming data relating to the operation of the micro-controller unit 14 and the ADPCM encoded source file data (preferably together in a mask ROM structure). It should be noted here that the user programming data comprises an instruction for micro-controller unit 14 operation typically presented in the format of an opcode plus any necessary operands. A select signal (rom_cs) 26 may be asserted by the micro-controller unit 14 on the ROM 18 to access the memory. When in that mode, the micro-controller unit 14 asserts a memory address on address bus 28, and retrieves from the addressed memory location over data bus 30 the requested stored data (which again may comprise either user programming data or ADPCM encoded source file data).
The micro-controller unit 14 implements a time multiplexed ROM addressing method in accordance with the present invention. The address applied by the micro-controller unit 14 to the ROM on bus 28 is obtained from either a processor instruction address block 40 or an ADPCM source file data address block 42. A multiplexer (MUX) 44 selectively chooses which of the two blocks 40 and 42 is to supply the ROM address and, more particularly, alternates back and forth between processor instruction address block 40 supplied address (es) and ADPCM source file data address block 42 supplied address(es) in accordance with, and with a frequency specified by, a clock signal (ck—6k) 46 which may have a different frequency and/or phase than the clock signals 22 and/or 24. Specifically, in an instruction cycle when the clock signal 46 is logic high, the processor instruction address block 40 supplies the address(es) and stored user programming data relating to micro-controller unit operation is retrieved from ROM 18 (over bus 30). This programming data is then executed by the micro-controller unit 14. When the clock signal 46 is logic low in a decoder cycle, on the other hand, the ADPCM source file data address block 42 supplies the address(es) and stored pieces of the ADPCM encoded source file data are retrieved from ROM 18 (over bus 30). This ADPCM source file data is then fed by the micro-controller unit 14 to the ADPCM decoder 12 for decoding. The two cycles of the time multiplexed ROM addressing method consecutively repeat for as long as is needed to allow all ADPCM source file data to be extracted and delivered to the decoder for processing, while allowing for some nature of simultaneous (i.e., inter-mixed) micro-controller unit programming instruction execution.
Reference is now made to
The block SAE refers to a register storing an address in the ROM comprising the end address for the located ADPCM source file data. This address is obtained from the INSTRUCTION REGISTER at the same time that the starting address is loaded into the SAC. The SAC operates to increment its register value (i.e., increment the originally loaded address) responsive to micro-controller unit application of an increment (inc_sac) signal. This signal is applied each time the micro-controller unit desires to retrieve a next portion of the stored ADPCM source file data. The block COMPARATOR implements a compare operation performed to determine whether the current register value for the source file data address (as output from SAC following an incrementing action) matches the end address (as stored in SAE) of the source file data. When this compare operation produces a true result (i.e., when there is an address match), the COMPARATOR block outputs a play end signal (play_end). This signal indicates to the micro-controller unit 14 that the complete source file (i.e., all portions) has been retrieved from the ROM and delivered to the decoder.
Reference is now additionally made to
Turning specifically to time period tp1, an instruction to play a certain stored piece of ADPCM encoded source file data is executed by the micro-controller unit 14. Responsive to the instruction, the time multiplexed ROM addressing method is started. The clock signal (ck—6k) 46 is logic high at this point indicating that the processor instruction address block 40 (i.e., the PROGRAM COUNTER—PC) is supplying the ROM address (rom_add) relating to user programming data comprising a stored instruction having the following format:
Turning next to time period tp2, at time t4, the clock signal (ck—6k) 46 goes logic low in accordance with the time multiplexed ROM addressing method and indicating that the ADPCM source file data address block 42 is supplying ROM address(es) relating to stored pieces of the ADPCM encoded source file data. The supplied ROM address (rom_add) at this point in time comprises the current address as specified by the SAC. Note that ROM select signal (rom_cs) is high permitting micro-controller unit access to the ROM to retrieve a portion of the stored ADPCM encoder source file. The retrieved portion is then delivered by the micro-controller unit 14 to the decoder for processing. For the remaining portion of time period tp2, the decoder operates to process (i.e., decode) the retrieved data. The increment SAC signal (inc_sac) also goes high indicating that the decoder is currently working on processing the retrieved ADPCM data.
During time period tp3, and more specifically at time t5, the clock signal (ck—6k) 46 goes back to logic high in accordance with the time multiplexed ROM addressing method and indicating that the processor instruction address block 40 (i.e., the PROGRAM COUNTER) is supplying the ROM address relating to user programming data. Note here that a byte of the processor instruction is retrieved from the ROM at the PROGRAM COUNTER specified address and loaded into the INSTRUCTION REGISTER of the micro-controller unit 14 (see, load _ir1 signal at time t6). The corresponding instruction is then implemented (in whole or in part) during the remainder of time period tp3, and the PROGRAM COUNTER is also incremented (see, inc_pc signal at time t6). It is important to recognize that during this time period tp3, the decoder continues to process the time period tp2 previously retrieved ADPCM encoded source file data portion. Put another way, two functions are being simultaneously (i.e., inter-mixed) performed by the chip during time period tp3: 1) the decoder implemented ADPCM decoding operation; and, 2) the micro-controller unit execution of the user programming data instruction.
Next, during time period tp4, at time t7, the clock signal (ck—6k) 46 goes logic low in accordance with the time multiplexed ROM addressing method and indicating that the ADPCM source file data address block 42 is supplying ROM address (es) (rom_add) relating to stored pieces of the ADPCM encoded source file data. When the increment SAC signal (inc_sac) goes low at time t8 responsive to completion of decoder processing of the previously retrieved ADPCM data portion, the SAC stored address value increments by one, and the supplied ROM address at this point in time comprises the incremented current address as now specified by the SAC. Note that ROM select signal (rom_cs) is high permitting micro-controller unit access to the ROM to retrieve a portion of the stored ADPCM encoder source file located at the incremented SAC address. The retrieved portion is then delivered by the micro-controller unit 14 to the decoder for processing. For the remaining portion of time period tp4, the decoder operates to process (i.e., decode) the retrieved data. The increment SAC signal (inc_sac) also goes back high indicating that the decoder is currently working on processing the retrieved ADPCM data.
The foregoing process then repeats under the control of the clock signal (ck—6k) 46 for any additionally required time periods (for example, until tpn is reached) necessary to retrieve all portions of the stored ADPCM encoder source file from ROM and deliver them to the decoder for processing. At that point in time, the increment SAC signal (inc_sac) at time t9 will have caused the SAC to increment to a value that matches the SAE stored ENDBLOCK address. The COMPARATOR block then outputs the play end signal (play_end), the clock signal (ck—6k) 46 goes back to logic high, and the time multiplexed ROM addressing method ends. In a preferred embodiment, the clock signal (ck—6k) 46 remains at logic high until such time as a next instruction (like a PLAY instruction) is executed that requires accessing ROM stored ADPCM encoded source file data, and the time multiplexed ROM addressing method is again utilized (with a return back to tp1).
Although preferred embodiments of the method and apparatus of the present invention have been illustrated in the accompanying Drawings and described in the foregoing Detailed Description, it will be understood that the invention is not limited to the embodiments disclosed, but is capable of numerous rearrangements, modifications and substitutions without departing from the spirit of the invention as set forth and defined by the following claims.
Number | Date | Country | Kind |
---|---|---|---|
00 1 37177 | Dec 2000 | CN | national |
Number | Name | Date | Kind |
---|---|---|---|
4703477 | Adelmann et al. | Oct 1987 | A |
5105387 | Childers et al. | Apr 1992 | A |
5144242 | Zeilenga et al. | Sep 1992 | A |
5319573 | Corleto et al. | Jun 1994 | A |
5524008 | Levy | Jun 1996 | A |
5764941 | Goto et al. | Jun 1998 | A |
5799010 | Lomp et al. | Aug 1998 | A |
5931952 | Lesmeister | Aug 1999 | A |
6615166 | Guheen et al. | Sep 2003 | B1 |
Number | Date | Country |
---|---|---|
09074377 | Mar 1997 | JP |
Number | Date | Country | |
---|---|---|---|
20020085639 A1 | Jul 2002 | US |