Fast access digital audio message system and method
BACKGROUND OF THE INVENTION 
     1. Field of the Invention 
     This invention deals with systems for storing audio messages in digital form and then playing back the messages when desired, and more particularly to an audio message system and method in which a large number of separate messages are stored on one or more memory chips. 
     2. Description of the Prior Art 
     Pre-recorded audio messages for use on aircraft, elevators, etc. are presently stored in digital format by placing them in a large memory. Each different message has a unique memory address, and is called up when desired by means of a binary counter which addresses and steps through the memory. When many messages are stored, a very large address bus with many wires and a large access capacity is required. For example, for a one million byte memory, twenty separate binary address lines are required. This imposes a limitation on the message capacity, increases costs makes the system more complicated and requires time to locate and access any particular message. 
     SUMMARY OF THE INVENTION 
     In view of the above problems in the prior art, the object of the present invention is to provide a digital audio message storage system and method having a large memory capacity which can be expanded indefinitely without increasing the complexity of the basic system, has a greatly improved addressing system that requires many fewer separate address lines, accesses any desired message very quickly, and is relatively inexpensive. 
     The invention accomplishes these objects with a digital memory consisting of one or more separate memory units, preferably EPROMs (erasable programmable read only memory). Each memory unit is organized into a series of message units. Each message is stored in its own message units, with the unoccupied portion of the message unit following the message encoded to indicate that the message has ended. A desired message is accessed by stepping through the memory unit in increments of full message units until the desired message is reached, and then reading out the message byte-by-byte. In the preferred embodiment the system is operated under an 8,192 Hz clock, with each message unit containing 2,048 bytes of memory. The desired message is thus accessed by stepping through the memory in 1/4 second memory increments, followed by reading out the message at the clock rate. Under computer control the fast access mechanism can step through the memory at a rate well in access of 100,000 message units per second. 
    
    
     These and other features and advantages of the invention will be apparent to those skilled in the art from the following detailed description of a preferred embodiment, taken together with the accompanying drawings, in which: 
     DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is a block diagram of a digital message memory module in accordance with the invention; 
     FIG. 2 is a block diagram of a counter employed in the memory module; 
     FIG. 3 is an illustration of a series of message units in memory; 
     FIG. 4 is a block diagram of an expandable system which includes a number of memory modules; and 
     FIG. 5 is a flow diagram of the message acquisition method employed with the system of FIG. 4. 
    
    
     DETAILED DESCRIPTION OF A PREFERRED EMBODIMENT 
     FIG. 1 shows a memory module that is used to store digital audio messages, and to provide fast access for locating and reading out any desired message. As explained below, additional memory modules may be added to the system as desired to expand its message capability, without adding significantly to the complexity of the system. The system allows large amounts of digital memory to be accessed and used in a digital audio storage system with a minimum of control lines, but with high flexibility and expandability. 
     The individual module is contained within dashed line 2; the external elements are common to the various modules. Each module includes a counter 4 which steps through its memory by counting up in a binary fashion over output address lines 6. The counter has a reset input 8 which resets it to access the beginning of a digital memory 10, which is preferably an EPROM. 
     Counter 4 has two counting control inputs. The first is a clock input from master clock 12 through gate 36. The clock input is applied to the lowest order stage of counter 4, and causes the counter to advance by one for each clock pulse. The clock rate is preferably 8,192 pulses per second, causing the counter to count up at a corresponding rate. 
     A fast access line 16 is connected to a higher order counter stage. It receives a series of pulses, preferably from a microprocessor controller (not shown), and causes the counter to advance in large scale increments. For example, if the fast access input is connected to the twelfth counter stage, it will increment the counter by 2,048 for each fast access pulse. If the clock rate is 8,192 Hz, each fast access pulse will thus advance the counter by an amount equivalent to 1/4 second of memory. The fast access pulses themselves can be generated at a very high rate, well in excess of 100 KHz, under the control of a computer. 
     The reset line 8 includes an OR gate 18 which can receive inputs from a microprocessor controller or from the previous memory module. The counter 4 resets whenever a signal is received from the microprocessor controller indicating that a new message is to be accessed, or in response to an appropriate signal from the previous module indicating that its capacity has been reached and counter 4 is now to take over. 
     A &#34;mark out&#34; gate 20 is connected to the memory address lines 6 to detect the appearance of a predetermined memory address on the address lines. This is useful for detecting the arrival at a given point in memory. This information can be used for several different control functions. If a number of different memory modules are used in series, the presence of a signal on the output line 22 of gate 20 can be used to indicate that the end of the module&#39;s memory capacity has been reached, and to start and/or reset the next memory module. In this fashion any number of modules can be linked together in a simple series sequence. The gate output can also be used to reset the counter 4 from which it emanated. This can be done together with a stop signal applied to the counter, or without stopping the counter so that it continues to run and the memory 10 is repeatedly scanned in a loop operation. 
     Data is read out of the memory in response to its being addressed by counter 4 when an enable signal is present on enable input line 24. The control for this line is provided by a flip-flop circuit 26, which has start and stop inputs 28 and 30. OR gates 32 and 34 are connected respectively to start and stop lines 28 and 30. Start OR gate 32 can receive inputs from either a microprocessor controller or from the previous module, while stop OR gate 34 can receive inputs from a microprocessor controller or the mark output line 22. When a start signal is applied the flip-flop 26 provides an enable signal to the gate 36 in the clock input circuit, and also to the memory enable input 24. This permits the counter to start counting up under the clock input, and also permits the memory to be read out in response to signals on the address lines 6. A stop signal reverses the flip-flop state, removing the enable signals and preventing the clock signal from reaching the counter or the memory being read out. 
     The portion of the memory addressed by counter 4 is read out onto data bus 38, and is accumulated in a data latch 40. The data latch is operated in synchronism with the counter by an input from the clock 12, so that it outputs digital words to a digital-to-analog converter 42. The resulting analog signal is processed through a post filter 44 to provide the desired output audio signal. When multiple memory modules are used, an end detect gate 46 on the data bus is used to detect the end of a message. The end of each message is &#34;tagged&#34; by coding the immediately following memory bytes with an unallowed state, such as all zeros or all ones. The &#34;end tag&#34;  is delivered to the microprocessor controller to indicate the end of the message has been reached. 
     Referring now to FIG. 2, an implementation of the counter 4 is shown consisting of two counter stages 48 and 50. The first counter stage 48 has a clock input from the master clock, and is reset from reset line 8. Counter 50 serves as a higher order device. It receives a clock input from either the fast access line 16 or the last stage output of counter 48 by OR gate 51, and is reset in common with counter 48 from reset line 8. The two counter stages are tied together to produce one overall counter, with lower order counter stage 48 providing the less significant bits and higher order counter stage 50 providing the more significant bits. As illustrated, counter stage 48 has 11 output lines 52, while counter stage 50 has 7 output lines 54. These output lines are arranged in ascending binary order, such that the output from the first line will count as binary 1, from the second line as 2, from the third line as 4, etc. Thus, the last output line from counter stage 48 will have a binary value of 1,024, and the first output line from counter stage 50 will have a binary value of 2,048. Thus, for a clock rate of 8,192 Hz, each fast access pulse into higher order counter stage 50 will advance the binary output of the overall clock by a time equivalent of 2,048/8,192, or 1/4 second. Counter stage 50 has 7 output lines which, together with the 11 lower order output lines from counter stage 48, provides addressing capability for 1 479 million samples of memory. To access up to 4,000,000 samples of memory, counter 50 would have 9 lines, and so on. Thus any size memory can be accessed. 
     The organization of each memory unit 10 is illustrated in FIG. 3. The memory is organized into a series of successive &#34;message units&#34; 56, each message unit including a number of memory bytes. With the embodiment shown in FIG. 2, in which each pulse on the fast access line increments the counter output by 2,048, each message unit would include 2,048 successive bytes. Thus, any desired message can be accessed very quickly by applying a number of fast access pulses corresponding to the location of the message. This causes the counter to rapidly count up message unit-by-message unit, skipping over the intervening memory bytes. The fast access entry points into memory are indicated by arrows 58, which correspond to the beginning of each successive message unit 56. 
     Once the fast access capability is used to address the desired message unit, the message contained therein is read out under the address control from the master clock. In the preferred embodiment this readout occurs at 2,048 bytes per second. Any particular message, indicated by vertical lines 60, begins at the beginning of a given message unit. The memory bytes following a message within a message unit are encoded with an end code, mentioned above, as indicated by x&#39;s 62. 
     A block diagram of a system which includes a plurality of memory modules controlled by a microprocessor controller 64 is provided in FIG. 4. Numerous suitable controllers are available, such as Zilog, Inc. Model Z80. The controller 64 can accept input either from a host computer via input bus 66, or in the form of dual tone multi-frequency (DTMF) signals through DTMF decoder 68. The microprocessor can also accept input from the system data bus 38. The end detect gate 46, described above, is used to detect the end of a message on the data bus and in response to issue an output to the controller 64. The controller at that point issues a stop command to the various memory modules via stop line 30. 
     The controller also provides an output to clock enable line 70 which allows it to stop the clock 12 from sending clock pulses to the system, thereby effecting a pause. The controller can reset the memory modules via reset line 8, or issue fast access pulses over fast access line 16. The clock out, stop, reset and fast access signals are applied in common to each of the memory modules. 
     The microprocessor controller 64 has stored in its memory the start location of each message stored in the various memory modules, and issues the required number of fast access pulses over line 16 to access the beginning of any requested message. The controller issues a start command to the particular memory module containing the start of the desired message over line 72, which is connected to a select chip 74. In the illustrative example the system includes 16 separate memory modules, so a 4-bit code is provided from the controller to a one of 16 select chip 74. The select chip routes the start pulse to the proper module, while the remaining modules remain inhibited. 
     The controller 64 may also have the ability to store a series of messages to be played in sequence by storing the sequence in its internal memory. When the end of each message is detected by gate 46, the next message in the message stack is automatically accessed and played. The controller may also have stored in its memory the data that is supposed to be located at specific locations in the memory modules; by checking this data against what is actually stored in the system memory, faults may be detected and the location of the faults determined. 
     The communication bus 66 allows the controller to communicate with a host computer, thereby enabling it to act as an announce system for the computer. Bus 66 is a unidirectional port which allows the controller to inform the host computer of its current operating state. 
     FIG. 5 is a flow diagram which summarizes the system operation. The counters in the various memory modules are first stopped and reset. Fast access pulses are simultaneously applied to all of the modules via a common fast access line, causing them to step through the message units of their respective memories until the desired message location is reached. A start signal is then routed to the particular module containing the desired message, causing the message to be read out byte-by-byte at the clock rate while readout from the other memory units remains inhibited. If the selected message continues over from the selected module to the next module, the first unit stops itself when it reaches its end mark and resets and starts the next module to continue the message. 
     The described system eliminates the need for the large number of control lines required by prior large memory systems. Only START, STOP, RESET, FAST ACCESS and CLOCK control lines are required, no matter how many additional memory modules are added. The capacity of the system can thus be expanded indefinitely. 
     While a particular embodiment of the invention has been shown and described, it should be understood that numerous variations and alternate embodiments will occur to those skilled in the art. Accordingly, it is intended that the invention be limited only in terms of the appended claims.