Data generator providing large amounts of data of arbitrary word length

A waveform memory 66 stores data streams with each data stream having M-bit parallel data. A sequence memory 60 stores sequence information and data discard information on the amount of data to discard from the last data in each data stream. A sequencer 62 and a waveform memory controller 64 access the waveform memory 66 to provide the data streams using the sequence information. A barrel shifter 68 shifts data in the data stream according to the number of effective data of the last parallel data in the previous data stream if the number of the effective data is less than M. A data shift controller 100 generates data enables indicating whether the data in the data stream are effective or not based on the data discard information. A combiner 72 combines the effective data in the data stream using the data enables.

BACKGROUND OF THE INVENTION

The present invention relates to data generation, and more specifically, to a data generator that can generate fast data having an arbitrary word length.

A signal generator is an apparatus that can store digital waveform data in the storage device such as a memory, hard disk drive (HDD), etc. The digital waveform data may be previously stored data defined by a standard, such as PCI Express or the like, or may be user defined digital waveform data. The digital waveform data is converted by the signal generator into an analog signal output.

One application for a signal generator is in developing a new electronic apparatus. The signal generator may provide an expected output signal from an uncompleted circuit block of the apparatus to a circuit block following the uncompleted circuit block to confirm whether the following circuit block works as expected. Another application is compliance testing where the signal generator provides a signal including intentional jitter or distortions to a circuit under test. Further, the signal generator may be used for measuring characteristics of a fast serial interface such as PCI Express, etc. The signal generator provides a signal having waveform patterns suitable for the characteristic testing and an oscilloscope is used to receive an output from the transmission lines to measure the characteristics with eye pattern display, etc. AWG7000B series signal generators, manufactured and sold by Tektronix, Inc., Beaverton, Oreg., are examples of such signal generators.

FIG. 1is an exemplary block diagram of a signal generator. A CPU (Central Processing Unit)10controls the signal generator system according to program stored in a hard disk drive (HDD)14. The HDD14may also be used for storing a large amount of data, such as waveform generation software, digital waveform data and the like. A memory12, such as RAM memory, is used for a work area for the CPU10to read programs from the storage device. A user can set up the signal generator via an operation panel24that includes keys, knobs, and the like. A display22provides visual information relating to signal patterns and user settings. An external display output circuit20provides a video output which may be connected to an external display32for providing a larger display area in addition to the built-in display22of the signal generator. A signal generation circuit16generates signal patterns based on user defined parameters. In this example, it has two channel outputs and inputs for trigger and event signals. Receipt of these signals enables conditional actions. An input/output port28is used for connecting an external keyboard29, a pointing device30, such as a mouse, and the like to the signal generator. The external keyboard29and/or pointing device30may be included as parts of the operation means of the signal generator. These blocks are coupled together via a bus18. A LAN (Local Area Network) interface may be connected to the bus18to couple the signal generator to an external PC34. The external PC34allows a user to remotely control the signal generator as desired.

FIG. 2is a block diagram of a conventional signal generation circuit. For simplicity, a circuit having only one channel is shown but the operation of a two-channel circuit is similar. A reference clock generator52generates a reference clock which is coupled to a digital-to-analog converter (DAC)48. The reference clock sets the timing of sampling points of an analog electric signal generated by the DAC48. The reference clock may be referred to as a sampling clock in case of a signal generator. A divider50divides the reference clock by dividing ratio n (n is a natural number) to generate a divided clock that is synchronous with the reference clock but has a clock frequency of 1/n. The divided clock sets the timing for reading waveform data from a waveform memory44.

The waveform memory44may be relatively fast operating memory such as SRAM (Static Random Access Memory) and stores waveform data as parallel data. In this example, let the bit number of the parallel data be m (m is a natural number). A sequence memory40stores sequence (output order) information for reading the waveform data from the waveform memory44. A sequencer42derives addresses from the sequence information and provides the addresses to the waveform memory44. The waveform memory44provides the waveform data as m-bit parallel data to a parallel-to-serial converter (P/S)46.

The parallel-to-serial converter46receives the waveform data according to the divided clock and converts the m-bit parallel data to a lower bit number (K bit in this example; K is a natural number and less than m) parallel data and provides the K-bit parallel data to the DAC48according to the reference clock. A relationship exists between the m-bit parallel data and the K-bit parallel data in the form of m=K×n. These processes reduce the bit number but produces faster data according to the reference clock that is n times faster than the waveform data being read out from the waveform memory44according to the divided clock. At present, read-out speed of the memory is not high enough to produce a desired high frequency analog signal from the DAC48. However, sufficient data acceleration is achieved by the parallel-to-serial converter46to generate a high frequency analog signal. The DAC48converts the K-bit parallel data to produce an analog electric signal. The output of the DAC is passed through a low pass filer (not shown) to produce a smooth analog signal as is known. One set of the parallel data may also be called one word because it corresponds to one sampling point of the output from the signal generator.

In the data acceleration described above, the data length after the data acceleration of the parallel to serial conversion through the P/S converter46is limited to an integer multiple of m since one set of the waveform data has m bits of data. That is, the parallel data that the DAC48receives can not have an arbitrary word length. For example, if m is 64 and K is 10, then 10 sets of 64 bit parallel data are read out. The number of the data bits is 640 which can be converted to 64 sets (words) of 10 bit parallel data. However, if 9 sets of 64 bit parallel data are read out, the total number of the data bits is 576 which can be converted to 57 sets (words) of 10 bit parallel data with 6 data bits left over that can not constitute one set of 10 bit parallel data.

U.S. Patent Application Publication 2006/0155898 discloses one solution on the above problem. A data memory provides 5 bit parallel data of which 4 bit or 5 bit data are effective, and a bit width identifier signal that indicates effective bit width of the parallel data to a FIFO (First In First Out) memory. The FIFO memory provides 4 bit parallel data having only the effective data using the bit width identifier signal, and then the 4 bit parallel data is converted to serial data. The combination of the 4 bit and 5 bit effective parallel data realizes a series of the effective data having an arbitrary length.

A signal generator is increasingly required to provide a signal of higher frequency for characteristic testing of a fast serial interface. At the same time, the signal generator should provide large amount of waveform data at low cost. Then, use of a lower cost memory such as DDR3 SDRAM as the waveform memory in place of an expensive SRAM may be considered for storing a large amount of data at low cost. Further, the use of FPGA (Field Programmable Gate Array) in place of dedicated ASIC (Application Specific Integrated circuits) may be preferable to achieving low cost even though a FPGA does not work as fast a an ASIC.

SUMMARY OF THE INVENTION

The present invention relates to a data generator that reads out a stream of M-bit parallel data from a data stream memory and converts M-bit parallel data to K-bit parallel data wherein K is smaller than M. M may be 480, for example, and the K-bit parallel data can have an arbitrary word length at the same time. The present invention is intended to use a large amount of fast memory. The operational characteristics of DDR3 SDRAM make such memory usable as the data stream memory for this invention. That is, the burst length of the DDR3 SDRAM is eight so that a plurality of the DDR3 SDRAMs used in parallel allows eight or less sets of the parallel data can be read out correctly at high seed. The operations of the present invention are available at relatively lower speed so that the features of the present invention can be realized as a lower cost FPGA rather than ASIC.

A data generator according to the present invention has a data stream memory storing data streams each of which have a plurality of M-bit (M is a natural number) parallel data. A sequence memory stores address information of the data streams and data discard information that indicates how many data bits are discarded in the last parallel data in the data stream. A sequence controller receives the address information and provides addresses to read the data stream from the data stream memory and the data discard information corresponding to the read data stream. If the effective data bits in the last parallel data in a data stream are less than M based on the data discard information, then a data shifter shifts the data in the next data stream. A data shift controller produces data enables indicating the respective data in the data stream that are effective data bits and not-effective data bits based on the data discard information. A combiner combines the effective data of the data steams from the data shifter using the data enables. A parallel to serial converter reduces the bit width of the combined parallel data to accelerate the speed.

The data generator according to the present invention may further have buffers such as FIFOs and a data timing controller. The sequence memory may further store data stream start and end information as flags indicating the start of parallel data in each data stream and the end of parallel data in each data stream. If the effective bit number of the last data in the data stream is less than M the data shift controller shifts the data stream end information to a location prior to the last parallel data. The buffers sequentially receive the data streams from the data shifter together with the data stream start and end information to sequentially provide the data streams. When the data timing controller detects the data stream end information from one of the buffers, it controls another buffer to get started providing the next data stream in order to align timing of the last parallel data in the former data stream and the first parallel data in the next parallel data.

The data generator further includes a reference clock generator for providing a reference clock to the read output of the parallel to serial converter. A first clock generator provides a first clock to the sequence memory, the sequence controller, the data shifter and data shift controller and the write input of the FIFOs. A second clock generator in the form of a divider receives the reference clock and provides a second clock having a frequency lower than that of the first clock to the read output of the FIFOs and the write input of the parallel to serial converter.

DETAILED DESCRIPTION OF THE INVENTION

Preferred embodiments according to the present invention are shown in the figures and described below. These embodiments are by example only and do not limit the scope of the present invention as set forth in the accompanying claims.

FIG. 3is a block diagram of a data generator according to the present invention usable in a signal generation circuit16of the signal generator. The data generator provides a digital-to-analog DAC76with fast parallel data having an arbitrary word length that is definable by a user. A reference clock generator82generates a reference clock that is provided to the DAC76. The DAC76generates an output according to the reference clock. A divider80receives the reference clock and divides the reference clock by a dividing ratio N to produce a divided clock that is synchronous with the reference clock and has a frequency is of 1/N of the reference frequency. In the description below, the divided clock is called a second clock.

A first clock generator78provides a first clock whose frequency is faster than that of the second clock. A barrel shifter68conducts data shifting processes according to the faster first clock, which allows the barrel shifter68to have a time margin for the processes relative to the processes according to the second clock.

A waveform memory66may be realized using a plurality of parallel Dynamic Random Access Memory (DRAMs), such as Double Data Rate 3 Synchronous Dynamic Random Access Memory (DDR3 SDRAMs), to provide a large amount of parallel data. The burst length of DDR3 SDRAMs is eight so that a burst operation enables the DDR3 SDRAMs to read out eight or less sets of the parallel data as a group during eighth clocks of the first clock. The group of parallel data read out during the burst operation is called a “Data Stream”, hereinafter, wherein the bit number of each set of the parallel data is M (M is a natural number) where M may be 480, for example. M may be a considerably larger number relative to the conventionally used one. The waveform memory66stores a plurality of data streams that may be created with known waveform editor software. The ArbExpress manufactured by Tektronix, Inc., Beaverton, Oreg., is one such waveform editor software. ArbExpress allows editing and storing of the waveform data using the signal generator or the waveform data can be generated using a PC and loaded into a signal generator.

A sequence memory60stores sequence information of the data streams to be read out from the memory66and data discard information that indicates how many data bits are to be discarded from the last data bits of each data stream. The sequence information includes the start address and the data length. The sequence memory60further stores data stream start information “SOS (Start of Stream) flag” and data stream end information “EOS (End of Stream) flag” (see a left area ofFIG. 5).

A sequencer62receives the sequence information; the data discard information and the SOS and EOS flags from the sequence memory60and provides them to a waveform memory controller64. The waveform memory controller64generates addresses that access the waveform memory66from the sequence information to read the data streams burst by burst from the waveform memory66. The waveform memory controller also provides the data discard information and the SOS/EOS flags corresponding to the read out data stream to a barrel shifter68. As described, the sequence62and the waveform memory controller64works as a sequence controlling means and are adapted for the burst operation of the DDR SDRAM.

FIG. 4is a block diagram of the barrel shifter68. First and second registers102and104sequentially receive the M-bit parallel data from the waveform memory controller64according to the first clock. The respective sets of the parallel data retained in the first and second registers102and104have a time difference of one clock, and the second register104receives the M-bit parallel data from the first register102one clock after being in the first register102. First and second shifters106and108each receive the M-bit parallel data from both the first and second registers102and104. Each shifter106and108provides M-bit parallel data by selecting M-bit data from among the received two sets of the M bit data according to first or second data shift information from a data shift controller100. If there is no data shift (to be described below), each shifter106and108selects the M bit data from the first register102. The first and second shifters106and108provide the M-bit parallel data alternatively as shown inFIG. 5of which horizontal direction is time axis. The shifters106and108may be implemented as a plurality of multiplexers that shift the data by a desired number of bits.

FIG. 6is an example of data shift operation by the first and second shifters106and108. In this example, M is 480, the first shifter106provides a data stream8, and the second shifter108provides a data stream9. The respective suffixes in the data stream names are output order of the data streams in this example. The MSB (most significant bit) of the last parallel data in the data stream8remains but the other data are discarded according to the data discard information. In this case, the data shift controller100provides the second shifter108with shift information instructing one data shift. The second shifter108conducts one data shift on the first parallel data in the data stream9by selecting 479 data excluding the LSB of the parallel data from the first register102. It conducts a data shift on the second parallel data in the data stream9by selecting the LSB (Least Significant Bit) of the parallel data from the second register104and 479 data (shown as hatched ones) excluding the LSB of the parallel data from the first register102that bring the total to 480 data. It is similar for the third parallel data in the data stream9.

The data shift controller100determines the first and second data shift information provided to the first and second shifters106and108by receiving the data discard information. It also receives the SOS and EOS flags to provide a write enable signal making one of the first and second FIFOs write enable every time the EOS flag arrives. The data shift information is stored in a register101as is determined because the data shift information used in the next time may dynamically change depending on the data shift amount and the data discard information. The data shift controller100also determines data enable information of the data stream depending on the data discard information and provides the FIFOs with it together with the corresponding SOS/EOS flags for the corresponding data stream.

If the last parallel data in a data stream becomes less than M bits because of the data shift or the data discard, the EOS flag located at the same timing as the last parallel data may be shifted to a timing location of one or more clocks before (EOS Shift). The shift amount of the EOS flag may be determined depending on how much time the FIFO requires to read the data stream.

FIG. 7is a timing chart depicting relationship between data streams before input to FIFOs and after output of FIFOs. First and second FIFOs701and702may be asynchronous FIFOs that receives a data stream input according to the first clock and provides a data stream output according to the second clock. The first and second FIFOs701and702have FIFO full ports at the write port side to inform the data shift controller100of whether the respective FIFOs are available or not. As shown inFIG. 7, timing between the data streams may not be aligned before being written into the first or second FIFO because of read-out characteristics of the waveform memory. When one of the first and second FIFOs701and702provides the EOS flag together with the data stream, the other FIFO starts to provide the next data stream. This operation allows time aligning between the last parallel data having less M bits in a data stream and the first parallel data in the next data stream. Alternatively, if the last parallel data in a data stream has M bits, the timing is adjusted as the first parallel data in the next data stream located at the timing of the next clock of the last parallel data.

In the example described above, the barrel shifter68uses the first and second shifters106and108for the data shift to discard an arbitrary large number of data. If the waveform memory controller64is realized as ASIC, it could handle the data discard of such a large number of data since the ASIC operates fast. However, if the waveform memory controller64is realized as FPGA for low cost, the process speed is not enough to discard such a large number of data. As a solution to this issue, the barrel shifter68and the FIFO70have two passes to process the data streams and the data discard information and the SOS and EOS flags are used to allow discarding such an arbitrary large number of data. Note that the above example uses two passes but three or more passes may be used.

Referring toFIG. 3, a combiner72receives the data streams in which timing is aligned from the first and second FIFOs701and702and combines the data streams to produce parallel data having only effective data.FIG. 8is a process flow of combining data streams wherein the bit width of the parallel data is made smaller for the sake of simplicity. Referring toFIG. 8A, data enables correspond to the respective data of the parallel data wherein “0” indicates discard of the corresponding parallel data and “1” indicates the corresponding effective parallel data. As shown inFIG. 8B, the combiner72conducts logical AND operations between the data enables and the respective data in the parallel data to make the discard data “0”. After this process, the data enables are not necessary. The logical AND operation is applied for the data in the parallel data from both the first and second FIFOs as shown inFIG. 8B. Referring toFIG. 8C, a logical OR operation is conducted for both of the data streams to produce combined parallel data having only effective data as shown inFIG. 8D.

A parallel to serial converter74converts the M-bit parallel data from the combiner72to K bit parallel data wherein K is less than M (M=K×N). The data generator described above reads out sets of M-bit parallel data from the waveform memory66but the effective data number is not limited to an integer multiple of M but can be an integer multiple of K. That is, it can generate an arbitrary word length of K bit parallel data. Note that if K is 1, it can also generate an arbitrary length of a serial data pattern.

The digital to analog converter (DAC)76converts the K-bit parallel data into an analog electric signal. The output of the DAC76may passes through a low pass filer (not shown) to produce a smooth analog signal as is known.

Although the invention has been disclosed in terms of the preferred and alternative embodiments disclosed herein, those skilled in the art will appreciate that modifications and improvements may be made without departing from the scope of the invention.