EP1665029A2 - Digital signal processing device - Google Patents

Digital signal processing device

Info

Publication number
EP1665029A2
EP1665029A2 EP04761027A EP04761027A EP1665029A2 EP 1665029 A2 EP1665029 A2 EP 1665029A2 EP 04761027 A EP04761027 A EP 04761027A EP 04761027 A EP04761027 A EP 04761027A EP 1665029 A2 EP1665029 A2 EP 1665029A2
Authority
EP
European Patent Office
Prior art keywords
unit
signal processing
digital signal
processing device
format
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
EP04761027A
Other languages
German (de)
French (fr)
Inventor
Alois Hahn
Premysl Vaclavik
Heinz Gerald Krottendorfer
Christian Tiringer
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ON DEMAND MICROELECTRONICS AG
Original Assignee
On Demand Microelectronics GmbH
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by On Demand Microelectronics GmbH filed Critical On Demand Microelectronics GmbH
Publication of EP1665029A2 publication Critical patent/EP1665029A2/en
Withdrawn legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/14Conversion to or from non-weighted codes
    • H03M7/24Conversion to or from floating-point codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q99/00Subject matter not provided for in other groups of this subclass
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3812Devices capable of handling different types of numbers
    • G06F2207/3824Accepting both fixed-point and floating-point numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49942Significance control
    • G06F7/49947Rounding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products

Definitions

  • the invention relates to a digital signal processing device, in particular a digital computing device, according to the introductory part of claim 1.
  • digital signals are treated digitally using a wide variety of algorithms, the digital signals being derived, for example, from originally analog signals by sampling.
  • the signal processing can take place in the form of calculations in accordance with telecommunications algorithms, for example in order to implement a bandpass filter or the like.
  • the digital signal values are stored in binary form in the storage means, the values usually being stored in a 2's complement representation as an integer or else as a fixed-point number.
  • the more complex floating point format floating point format
  • DSP digital signal processors
  • format adjustments and roundings are carried out programmatically with the aid of a series of individual commands, several clock cycles being required for the execution of these commands; in some cases, the number of clock cycles required for this can then be greater than the number of clock cycles for the actual algorithmic signal processing or calculation, which is of course particularly disadvantageous.
  • the invention provides a digital signal processing device with the features of claim 1.
  • Particularly advantageous embodiments and further developments are defined in the subclaims.
  • a special format conversion unit preferably with a rounding unit, is thus integrated directly into the data path of the arithmetic unit in accordance with a particularly preferred aspect.
  • the possible format conversions and possibly rounding operations thus become a direct component of each signal processing command, so that no separate clock cycle is generally required.
  • Another advantage is that program creation is significantly simplified since the problems associated with format conversion are automatically relieved from the programmer.
  • the number format conversion unit possibly with the integrated rounding unit, does not need to be designed for a predetermined format, but rather a format specification or setting is particularly advantageously possible, for which purpose a format register is preferably provided as the format specification unit.
  • This format register is loaded once as required and then determines the format conversions and roundings and therefore the exact functioning of these units based on its content.
  • the format tab contains fields for specifying the data format, such as the number of digits in total and the number of digits after the decimal point, for the starting format as well as for the target format.
  • a saturation function (also called a clipping function) can be integrated into the number format conversion unit in order to prevent a signal value from overflowing when the maximum value is exceeded in the wrong sign.
  • a saturation function ie Installation of a saturation unit in the format conversion unit also ensures that no additional clock cycle is required, and, as mentioned, errors which could arise in connection with the format conversion and rounding function are prevented by this saturation function.
  • a comparable saturation function is preferably also assigned to the rounding unit, in order to identify any overflow when rounding up and to deliver the correct result.
  • FIG. 1 shows a block diagram of a signal processor known per se
  • FIG. 2 shows a schematic block diagram of an arithmetic unit of such a processor, with a number format conversion unit according to the invention, to which a format specification unit is assigned;
  • FIG. 5 shows, in two related sub-figures 5A and 5B, a detailed structure of the number format conversion unit including rounding unit and saturation unit;
  • FIG. 6 shows an example of a table with signed positive and negative 4-bit binary numbers, with a value range from -8 to +7;
  • FIG. 7 shows a comparable table with 4-bit binary numbers, each having two digits before the decimal point and two digits after the decimal point, the values extending from -2 to +1.75;
  • FIG. 8 schematically, in association with the arrangement of FIG. 5, an example of a number format conversion with rounding and saturation, with an overflow;
  • Fig. 9 shows a comparable example for a number format conversion with rounding and saturation, but now with an underflow (underflow).
  • FIG. 1 schematically shows in a block diagram the known structure of a processor, a program memory 1 being provided to which a program controller 2 is connected in order to correspondingly control an arithmetic logic unit 4 receiving the data to be processed from a data memory 3.
  • the Harvard architecture as shown, or also the Von Neumann architecture are known for the construction of such arithmetic units 4, wherein a computer unit 4 with Harvard architecture is also assumed here, although this is of course not to be seen as restrictive.
  • the arithmetic unit 4 contains, as will be explained in more detail below with reference to FIG. 3, in general, an arithmetic unit (ARU - arithmetic unit), and it defines a data path.
  • ARU - arithmetic unit arithmetic unit
  • each program instruction is carried out in three phases, the sequence being controlled with the aid of the program controller 2.
  • the so-called "fetch" phase fetch - command call
  • a command word is read out of the program memory and fed to the program controller 2, as illustrated in FIG. 1 with the reference symbol la.
  • this command word is decoded and split into individual microoperations with which the arithmetic and logic unit 4 is controlled. This is indicated in Fig. 1 with the connection 2a between the program controller 2 and the arithmetic unit 4.
  • the "Execute" phase the instruction is processed, and accordingly in this phase the micro-operations are passed on in the form of control signals via the connection 2a and the arithmetic unit 4 for actual execution, in addition via the data connection 3a data from the data memory 3 into the computation plant 4 can be loaded; In arithmetic unit 4, this data is processed arithmetically and temporarily stored in registers. After this processing, the data obtained are stored again in the data memory 3, for example via a connection 4a.
  • the data store 3 forms, for example, input storage means and at the same time output storage means for the arithmetic unit 4.
  • FIG. 2 shows the structure of an arithmetic unit 4 in somewhat more detail in a block diagram, with data A, B to be linked to one another being fed, for example, to input registers 5A, 5B (for example from data memory 3 according to FIG. 1), which are used as input Storage means 5 can be viewed, after which the data arrive in the arithmetic unit when the aforementioned microoperations are processed, here, for example, a multiplier unit 6 being provided in series with an adder unit 7.
  • the result of these arithmetic operations is normally fed to output storage means, here illustrated schematically by a result register 8, the result being indicated by "Y".
  • a number format conversion unit 10 is also arranged directly, which at the same time contains a rounding unit, as will be explained in more detail below.
  • This number format conversion unit 10 hereinafter referred to as conversion unit or also adaptation unit, can convert the supplied data into a predetermined number format, wherein, as shown in FIG. 2, a format specification unit 11 is provided, which is in particular in the form of a format register, and the output of which is connected to the conversion unit 10, as indicated in FIG. 2 by the connection 11a.
  • This format specification unit 11 can be used for the respective calculation process or D Data processing process can be filled with appropriate format information, as indicated schematically in FIG. 2 at the input 11b.
  • the arrangement of the conversion unit 10 directly in the data path 9 leading from the input registers 5A, 5B to the results register 8 in the manner shown means that the desired format conversions and possibly rounding operations in the can take place in the same clock cycle in which the arithmetic operations are carried out, with only a certain delay being accepted until the data appear at the output of the conversion unit 10.
  • the present hardware implementation of these conversion and rounding tasks directly in the data path 9 also enables a simplification of the programming, since in the respective program that is to be stored in the program memory 1 in FIG.
  • the desired formats for storage in the format are simple - Specification unit 11 are to be provided (provided that these formats do not automatically result from the storage format of the data store 3), but no conversion and rounding operations have to be programmed.
  • the delay time which is to be taken into account in the present technology, should be rather long compared to the clock time, for example should already take half a clock cycle, which could be the case with particularly fast arithmetic units 4 with particularly short clock cycles , it can be envisaged to install a storage element (register) for buffering within the conversion unit 10, so that the format conversion and rounding activity started in the given clock cycle can then be completed in a second clock cycle without the given delay times
  • the result of the operations in the arithmetic unit which is stored as the result Y in register 8, could impair.
  • MAC function multiply-accumulate function
  • MAC - multiply-accumulate two input numbers (operands) are multiplied, and the multiplication result is then added to the content of an accumulator.
  • MAC function multiply-accumulate function
  • Such a MAC function is, for example, with the arithmetic unit 4 3 realized, in addition, the result obtained is subjected to a range adjustment (number format conversion and rounding).
  • the signed 2's complement representation is often used for the numbers, as will be explained in more detail below with reference to FIGS. 6 and 7, but the invention is of course not restricted to such representations. In the following description, however, for the sake of simplicity, such a signed 2's complement representation will be used throughout.
  • the desired numbers A, B for the multiplication to be carried out are read out from the data memory 3 and loaded into the registers 5A, 5B, which is accomplished by the program control (program control 2 in FIG. 1) by means of corresponding load commands
  • the data memory 3 also receives "CONTROL" control commands from the program memory 2 via a control line 3b.
  • the data or operands A, B are then fed to the arithmetic unit 6 in the next step, with a corresponding control signal (MUL / DIV - multiply / divide) being applied to it by the program controller 2 at 6b.
  • the multiplication result is fed via the connection 6a to the adder / subtractor 7, to which the program controller 2 in a corresponding manner supplies an add command (or subtract command; ADD / SUB).
  • the current content of this accumulator 12 is fed from the output of an accumulator 12 to a second input of this adder / subtractor 7, as indicated at 12a in FIG. 3.
  • the result of this addition is again stored in the accumulator 12, cf. the output 7a of the adder 7, a multiplexer 13 being interposed, which is set by the program controller 2 via a control input 13b (“SELECT”) such that the multiplexer 13 connects the adder output 7a to the corresponding input of the accumulator 12 (see FIG Connects 13a between multiplexer 13 and accumulator 12.
  • the function of the accumulator 12 is initiated by the program controller 2 with a control input 12b (“OPERATION”).
  • the multiply-accumulate command is usually repeated several times in a loop; as soon as the end result is present in the accumulator 12, in the present example it is stored again in the data memory 3, although the number format has to be adapted beforehand, since the width of the accumulator 12 is generally greater than the width of the data values A read from the data memory 3 , B.
  • the multiplexer 13 is used to load the accumulator 12 with an initial value from the data memory 3 with its own instruction at the start of a loop. Usually the value "00" is used as this initial value.
  • the content of the accumulator 12 (output 12a) is thus, as mentioned, transferred to the conversion unit 10 before being stored back in the data memory 3 for the purpose of number format conversion and preferably also for any rounding, in which the adaptation of the to be described in more detail below with reference to FIG. 5 Number format and rounding are performed.
  • the result of this is that the calculation result corresponds to the predetermined storage format, although a larger word width (number width, ie a larger number of bits per number) can be used for the calculation processes carried out in the arithmetic logic unit 4, for a high accuracy of the calculation.
  • the corresponding control information is received by the conversion unit 10 from the format specification unit 11, preferably a register, which contains control data relating to the respectively defined format (FXD_FORMAT); this control information is loaded in advance, at the beginning of the program, during an initialization phase, in accordance with the storage format specifications, for example of the data memory 3. For example, at the beginning of the program, a value is read directly from the data memory 3, see output 3a in FIG. 3, and loaded into the specification unit 11 with the aid of a control signal 11b (“LOAD”). This word thus indicates the target format (DST Destination which the result Y should have (cf. FIG.
  • Register 11 each be 8 bits long (cf. bit positions 0-7, a total of 0-15, in the specification unit 11 according to FIG. 4).
  • the format SRC in the specification unit 11 thus relates to the format of the number given at the output of the accumulator 12, the "source number”, whereas the format DST specifies the target format of the data words for storage in the data memory 3.
  • Each field DST or SRC im Register 11 contains the position of the decimal point in the form of an unsigned binary number, a value of "2" indicating, for example, that the number to be considered should have two decimal places, ie two digits to the right of the decimal point, so that the decimal point is shifted two digits from the rightmost digit to the left.
  • the conversion unit 10 supplies the result (Y; see also FIG. 2) at its actual output 10a according to FIG. 3, which result is stored directly in the data memory 3 in output storage means according to FIG. 3; in addition, the format conversion and rounding can also result in an overflow or underflow in the number adjustment (underflow - UFL; overflow - OFL), and corresponding status signals UFL and OFL are present at outputs 10b and 10c of the conversion unit 10; these two status signals UFL, OFL can preferably be fed to a status register 14 in order to be available for handling exceptional cases.
  • FIG. 5 is composed of FIGS. 5A and 5B, which are to be thought of as being laid along the dashed dividing lines in FIGS. 5A and 5B.
  • 5 also contains exemplary dimension details relating to the number of bits or the bit width of the individual data values to be processed, these dimension details entirely corresponding to common practical examples. Further explanations are given below on the basis of concrete, but simplified numerical examples with lower bit numbers, with particular reference to FIGS. 8 and 9, for easier understanding, with previous explanations also 6 and 7 2's complement number representations are to be explained with regard to “overflow” and “underflow”.
  • the conversion unit 10 also called the ALIGN and ROUND unit (with regard to format adaptation and rounding), is supplied with the output value 12a of the accumulator 12, as can be seen in FIG. 3 as well as in FIG. 5.
  • the format of this output value at the output 12a of the accumulator 12 is subsequently to be adapted by the conversion unit 10 in accordance with the specification by the register 11 (generally called format specification unit 11) in such a way that the finally obtained data word (output 10a) for storage in the data memory 3 (or any other data storage, possibly with a different number format) is suitable.
  • the conversion unit 10 is arranged directly in the data path (see data path 9 in FIG. 2) of the arithmetic unit 4, i.e.
  • the operations carried out by the conversion unit 10 are preferably carried out in the same clock cycle as the arithmetic operations in the preceding arithmetic units 6, 7, with only a slight delay time occurring from stage to stage. If, however, extremely short clock cycles are specified and the circuit modules with which the individual components, in particular the conversion unit 10, are implemented, cause a delay which is somewhat too great in comparison to this, intermediate storage within the conversion unit 10, if appropriate also before and / or after the conversion unit 10, are provided so as to carry out a first part of the operations in a first clock cycle and a second part in a second clock cycle.
  • the present conversion unit 10 also contains, as an integral hardware-related component, a rounding unit 15, which consists of individual logic modules and an adder, as will be explained in more detail below; furthermore, such a called “saturation function" integrated to prevent a change of sign in the event of a number overflow or underflow (overflow, underflow), cf. also the following explanations in connection with FIGS. 6 and 7.
  • a rounding unit 15 which consists of individual logic modules and an adder, as will be explained in more detail below; furthermore, such a called “saturation function" integrated to prevent a change of sign in the event of a number overflow or underflow (overflow, underflow), cf. also the following explanations in connection with FIGS. 6 and 7.
  • the accumulator 12 has a width of 80 bits (cf. bit positions No. 0-79 in FIG. 5A), and a conversion into a number with a width of 32 bits is to take place in the conversion unit 10 , which corresponds to the width of a data word in the data memory 3.
  • the format register 11 also contains a value of 40 in the SRC field (see FIG. 4) and a value of 16 in the DST field, which means that the 80 bit number from the accumulator 12 (the SRC -Number, i.e. the source number) has its decimal point to the right of bit no.40, whereas the 32-bit target number (DST number) should have its decimal point to the right of bit no.16 after the adaptation or conversion process.
  • the 80 bit number is expanded on both sides with the help of an expansion unit 16, namely on the right side, the LSB (least significant bit) side by 32 bits, that is, by as many bits as the target word DST, and these newly added 32 bits are all set to "0".
  • the MSB side MSB-Most Significant Bit
  • there are also 32 Bits corresponding to the bit width of the target word are added for expansion, the value of these bits being selected in accordance with the value of the sign bit which is taken over from the accumulator 12, that is to say the bit at the position “79”.
  • This process is also referred to as a "sign extend" (cf. also the bit field SIGN (SRC) of the expansion unit 16 in FIG. 5A.
  • a total of 32 + 80 + 32 144 bits, thus, of the bit No. 0 to bit No. 143, the bits at positions 32-111 form the original number at the output 12a of the accumulator 12.
  • the displacement unit 17 which can be formed, for example, by a multiplexer control block, receives the corresponding control information for this displacement from a control unit 17 'that calculates the displacement quantity.
  • This control unit 17 ' calculates the shift amount from the values of the format preset register 11, which are at its output 11a and are supplied to the control unit 17'.
  • the calculated shift amount results from the difference between the decimal point positions of the source format (SRC field in register 11) and the target format (DST field in register 11; see FIG. 4).
  • the control unit 17 ' can thus consist of a subtractor, which forms the difference between the two contents of the fields SRC and DST of the register 11, and it can also be integrated directly into the displacement unit 17 as a control stage.
  • FIG. 5A the bit chain thus obtained is illustrated schematically by a block 18, it being illustrated by dashed, oblique lines that the number originally from the accumulator 12 is now increased by a corresponding number ( namely shifted to the right by 24 bits).
  • the bit positions released by the shift must be filled in with the correct sign, i.e. bits with the value of the sign bit of the source number (bit no. 79 in the accumulator 12) are used for filling.
  • the decimal point is already in the right place, corresponding to that in the target number, and the target number can now be selected as a partial field from the total word - i.e. can be taken from the bit chain 18.
  • the accuracy for the target number results from its placement with 32 bits.
  • the fields of the overall word are not changed, but only interpreted in the format of the target number. This can also be referred to as a "mask change", and this operation is illustrated by the arrow 18a in FIG. 5. The result of this is illustrated in FIG. 5 (more precisely: FIG.
  • a logic unit 20 is provided in order to recognize a possible overshoot or undershoot ("overflow” or "underflow") of the number range, which, via a connection 19b from the output of the subfield unit 19, contains all 80 sign bits of the sign field 19SIGN and the sign bit of the target word in the target word field 19DST (bit at the point "31", indicated in the drawing with DST (32)).
  • all sign bits are the same, either all equal to "0” or all equal to "1"
  • OR gate 21 it is now recognized whether all of the bit positions of the Sign field have the value "0”
  • an AND gate 22 it is recognized whether all bit positions of the sign field have the value "1".
  • test block 23 which determines whether the output signal (output 21a) of the OR gate 21 is not equal to "0" or the output signal 22a of the AND gate 22 is not equal Is "1".
  • the test block 23 only has to determine whether there is an overshoot or an undershoot, and this determination is made with the aid of the sign bit of the source number, as it is contained in the accumulator 12, cf. also the connection 12s to the test block 23 in FIG. 5. If this sign bit (bit no.
  • the evaluation result of the test block 23 is also delivered via a connection 23a to a saturation unit 24, which is 33 bits wide, i.e. one bit more than the width of the target number, in order to repeat a possible overflow after a - to be described - rounding -To be able to recognize addition.
  • the saturation unit 24 sets the number supplied at 19a at its output 24a to the respective maximum end value in accordance with the test evaluation by test block 23 (output 23a relating to the UFL / OFL state).
  • this is the largest positive number in the event of an overflow (OFL), ie in this case all bits with the exception of the sign bits (bits nos. 31 and 32) are set to "1", whereas the sign bits at positions 31 and 32 are set to "0".
  • UFL overflow
  • the “largest” negative number ie the negative number with the largest absolute amount
  • becomes output 24a This means that all bits in this output number are set to the value "0", with the exception of the two sign bits No. 31 and No. 32, which are set to the value "1".
  • a corresponding undershoot signal UFL or overflow signal OFL is additionally emitted at the outputs 10b and 10c.
  • rounding up is only carried out if at least one "1" bit in addition to a "1" bit at point No. 31 occurs somewhere in the decimal places (here bit positions No. 0-31) (it a single such additional "1” bit is sufficient, or if only bit No. 31 has the value 1, and if the LSB bit in the target word field 19DST also has the value "1".
  • Such rounding-up means that, with the aid of an adder 25, a “1” (generally: the smallest positive value) is added to the number obtained at the output of the saturation unit 24.
  • a logic unit 26 with an OR gate 27 and an AND gate 28 recognizes whether such a rounding (exactly rounding up) is actually to be carried out by sending the least significant bit (LSB bit) from the target word field 19DST (see connection 19c) and the cut bits (see connection 19d) to the OR gate 27 whose output 27a, as well as bit no. 31 of the cut low-order bits (see output 19e), is applied to the AND gate 28.
  • the aforementioned IEEE rounding sees a rounding up, that is to say the addition of a “1” in the adder 25, then before (output "1" of AND gate 28, connection 28a) if any bit 19d or 19c is set to 1 and at the same time bit 19e (Bit no. 31 of subfield unit 19) also has the value 1.
  • a further saturation unit 29 is connected to the output 25a of the adder 25, and this saturation unit 29 limits the output result in the same way as previously described with the saturation unit 24 (i.e. Target word) to the highest possible numerical value.
  • This highest possible numerical value is output at the output 29a and stored in a register 30. If there is no overflow, the number obtained from the adder 25 is written directly into the register 30.
  • 6 shows 4-bit binary numbers provided with a sign bit S in a table, the value range in this example ranging from -8 to +7.
  • the positive numbers are shown at P, the negative numbers at N.
  • the sign bit S has the value "0”
  • the number is positive (the number 0 should also be added to the positive numbers); it is the sign bit S, on the other hand, "1”, the number is a negative number N.
  • adding or subtracting it can now happen that the number range limits are exceeded or undershot, cf. arrows 40 and 41 in FIG. 6.
  • the range P of the positive numbers can be exceeded (“overflow”), so that a negative number “arises” “because the bit word” Olli "(for the number +7) in the binary number representation shown is followed by the number” 1000 ", which is, however, already the largest negative number (-8).
  • a negative number is added to a negative number (in terms of amount) (see arrow 41 in FIG. 6), a positive number can arise (namely with a "0" at the position of the sign bit S), so that an underflow or an undershoot of the value range results.
  • Fig. 7 also signed (again in the 1st column of the bits) 4-bit binary numbers with integer parts I (I integer) and two decimal places F (F fraction) are illustrated, the range of values of which Binary numbers range from -2 to +1.75.
  • the numbers +0.75, +1.5 and +1.75 would be rounded up to +1, +2 and +2 if the decimal places were cut away become; however, no rounding up would be performed at the number +0.5.
  • the number 0.5 is rounded down, 0.51 is already rounded up, likewise the number 1.5 is rounded up, but not the number 2.5, but again the number 3.5 etc.
  • the 1st line in FIG. 8 shows an 8-bit source number SRC, which contains an integer 4-bit portion and 4-bit decimal places.
  • the leftmost bit for the integer parts is the sign bit S.
  • the target number DST shown in the 8th line consists of 6 bits, the first three bits representing the integer parts including the sign bit and the further three bits the decimal places represent.
  • the value of the source number SRC is +7.9375, which corresponds to the largest value that can be represented here.
  • the difference between the number of decimal places of the source number SRC and that of the target number DST is to be calculated (which is accomplished with the control unit 17 according to FIG. 5), and this difference is "1" in the example of FIG. 8.
  • the bit chain is shifted to the right by one position, see line (3) in FIG. 8, the value of the sign bit is padded on the left-hand side, ie specifically a “0” bit is added here.
  • line (4) in FIG. 8 a new mask is placed over this chain, now with only six digits, corresponding to the number of bits of the target number DST. This mask is recognizable in FIG. 8 by a shorter block (compared to lines (1) to (3)).
  • the 6-bit number in the fourth line of FIG. 8 thereby becomes negative (“1” bit on the leftmost one Job) .
  • the nine bits to the left of it (including the sign bit of the target number) are now checked for equality, and since they are not all the same, an underflow / overflow condition is determined, cf. the logic unit 20 in FIG. 5.
  • the sign bit of the source number SRC is used; in the present case, this sign bit has the value “0”, so that an overflow (OFL) is determined. If the sign bit of the source number SRC had the value “1”, an underflow would be determined.
  • the saturation unit 24 FIG.
  • the target word DST now receives the highest positive value, as can be seen from the fifth line in FIG. 8, this value now being +3.875.
  • the rounding unit 15 recognizes the need for rounding up at R in FIG. 8, the rounding unit 15 using the seven right-most bits for this. Accordingly, the target number DST is incremented by the value 0.125 (the smallest representable value with three bits), this addition value being shown in the 6th line of FIG. 8, whereas the highest positive value obtained from the saturation unit 24 is shown in the 5th line.
  • the source number SRC is again an 8 bit number with a sign bit S and four bit decimal places, the source number SRC shown having the largest negative value (in terms of amount), namely -4,000.
  • the target number should again have six bit positions, and according to this number of bits, the sign bits are expanded with six “1” bits on the left-hand side, according to the second line of FIG the bits on the right-hand side are filled with "0". Then, again - see the 3rd line of FIG. 9 - the chain is shifted by one position to the right, with a "1" bit again on the left-hand side is inserted.
  • the adder 25 is not able to add any rounding result to the target number, i.e. the number remains the same at the output of the adder 25, cf. the 6th line in FIG. 9.
  • the further saturation unit 29 now recognizes no overflow or underflow (7th line in FIG. 9) and forwards the numerical value unchanged to the following register 30, cf. the 8th line in Fig. 9.
  • the configuration described in particular with reference to FIG. 5 can in practice preferably be implemented in combinatorial logic (in particular with AND and OR gates as well as with multiplexer chains for shifting etc.) without storing elements (registers) being provided in between , In this way it is achieved that in the same clock cycle in which the arithmetic operations are carried out, the format adjustments and any rounding operations can also take place. If very short cycle times are to be realized, memory elements (registers) can also be provided between individual units, as already mentioned.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Complex Calculations (AREA)
  • Analogue/Digital Conversion (AREA)

Abstract

The invention relates to a digital signal processing device comprising: input storage means (3; 5); a computational device (4) that is connected to said means, defines a data path (9) and contains at least one arithmetic unit (6) in addition to a control input (2a) for specifying calculation operations; and output storage means (8). The data path (9) between the arithmetic unit (6; 7) and the output storage means (8) is equipped with a number-format conversion unit (10) comprising a shift unit (17). A number-format specification unit (11) and a control unit (17'), which is connected to the latter and calculates required shift operations on the basis of the number-format specification, are assigned to the number-format conversion unit (10). Formatting operations are calculated automatically using input and output format information and corresponding commands are applied to the shift unit (17).

Description

Digitale SignalVerarbeitungseinrichtung Digital signal processing device
Die Erfindung betrifft eine digitale Signalverarbeitungseinrichtung, insbesondere eine digitale Recheneinrichtung, gemäß dem einleitenden Teil von Anspruch 1.The invention relates to a digital signal processing device, in particular a digital computing device, according to the introductory part of claim 1.
In der digitalen Signalverarbeitung werden digitale Signale durch Anwendung verschiedenster Algorithmen digital behandelt, wobei die digitalen Signale beispielsweise aus ursprünglich analogen Signalen durch Abtastung hergeleitet werden. Die Signalverarbeitung kann in Form von Berechnungen entsprechend nachrichtentechnischen Algorithmen erfolgen, um beispielsweise ein Bandpassfilter oder dgl. zu realisieren. Für eine solche digitale Signalverarbeitung werden die digitalen Signalwerte in Speichermitteln in binärer Form gespeichert, wobei die Werte zumeist in einer 2er-Komplement-Darstellung als ganze Zahl oder aber als Fixkomma-Zahl (Fixed-Point Format) gespeichert werden. Bei bestimmten Anwendungen kann auch auf die aufwendigere Gleitkomma-Darstellung (Floating-Point Format) zurückgegriffen werden.In digital signal processing, digital signals are treated digitally using a wide variety of algorithms, the digital signals being derived, for example, from originally analog signals by sampling. The signal processing can take place in the form of calculations in accordance with telecommunications algorithms, for example in order to implement a bandpass filter or the like. For such digital signal processing, the digital signal values are stored in binary form in the storage means, the values usually being stored in a 2's complement representation as an integer or else as a fixed-point number. In certain applications, the more complex floating point format (floating point format) can also be used.
Zur Durchführung der digitalen Signalverarbeitung werden zumeist digitale Signalprozessoren (DSP) eingesetzt, bei Anwendungen mit sehr hohen Durchsatzraten, wie beispielsweise im Zuge einer Bildkompression oder in der DSL (digital subscriber line)- Technik, werden auch speziell zugeschnittene Rechenwerke eingesetzt, die wesentlich höhere Rechengeschwindigkeiten erlauben.To carry out digital signal processing, digital signal processors (DSP) are mostly used; in applications with very high throughput rates, such as in the course of image compression or in DSL (digital subscriber line) technology, specially tailored computing units are used which have significantly higher computing speeds allow.
Im Zuge der Signalverarbeitung wird häufig eine Formatumwandlung benötigt, d.h. die Zahlendarstellung muss im Hinblick auf die gewünschte Genauigkeit verändert werden. Typisch ist es hierbei, dass für eine höhere Genauigkeit die Anzahl der verwendeten Bits, also die Bitbreite der Datenwörter, vergrößert wird, wobei nachfolgend auch wieder eine Verkleinerung erforderlich ist, und überdies muss bei diesen Format-Änderungen auch die Lage des Dezimalpunktes angepasst werden. Bei diesen Formatumwandlungen und Dezimalpunktanpassungen ergeben sich naturgemäß numerische Fehler, welche sich in der Folge auf die Genauigkeit des Ergebnisses und somit auf die Qualität des Ausgangssignals auswirken; die Reduktion der Qualität des Ausgangssignals kann sich bei- spielsweise bei nachrichtentechnischen Anwendungen als Signalrauschen (signal noise) äußern, und es kann z.B. im Fall der Realisierung von integrierenden Filtern ein Totalausfall dieser Filter verursacht werden.In the course of signal processing, a format conversion is often required, ie the number display must be changed with a view to the desired accuracy. It is typical here that the number of bits used, i.e. the bit width of the data words, is increased for greater accuracy, whereby a reduction is again required subsequently, and moreover, the position of the decimal point must also be adapted in the case of these format changes. These format conversions and decimal point adjustments naturally result in numerical errors, which subsequently affect the accuracy of the result and thus the quality of the output signal; the reduction in the quality of the output signal can in signaling applications, for example, as signal noise, and it can, for example in the case of the implementation of integrating filters, cause a total failure of these filters.
Die exakte Format-Umwandlung sowie gegebenenfalls auch ein signaltechnisch richtiges Runden sind demgemäß im Zuge einer solchen digitalen Signalverarbeitung sehr kritische Aspekte, wobei diese Manipulationen überdies in den üblichen praktischen Anwendungen ergänzend zu den eigentlichen mathematischen Berechnungen, wie Multiplizieren oder Addieren, häufig vorkommen. Eine derartige Format-Umwandlung hat demgemäß auch wesentliche Auswirkungen auf die erzielbaren Verarbeitungsgeschwindigkeiten, d.h. auf die jeweils erzielbare Taktfrequenz, wodurch in der Folge auch die technische und wirtschaftliche Realisierbarkeit bestimmt wird.The exact format conversion and possibly also a rounding in terms of signal technology are accordingly very critical aspects in the course of such digital signal processing, these manipulations also frequently occurring in the usual practical applications in addition to the actual mathematical calculations, such as multiplication or addition. Such a format conversion accordingly also has a significant impact on the processing speeds that can be achieved, i.e. on the clock frequency that can be achieved in each case, which subsequently also determines the technical and economic feasibility.
Bei den derzeit verwendeten bzw. bekannten Signalprozessoren werden Format-Anpassungen und Rundungen programmtechnisch mit Hilfe einer Reihe von einzelnen Befehlen vorgenommen, wobei für die Durchführung dieser Befehle mehrere Taktzyklen benötigt werden; in manchen Fällen kann dann die hierfür benötigte Anzahl von Taktzyklen größer sein als die Anzahl von Taktzyklen für die eigentliche algorithmische Signalverarbeitung oder -berechnung, was natürlich besonders nachteilig ist.In the signal processors currently used or known, format adjustments and roundings are carried out programmatically with the aid of a series of individual commands, several clock cycles being required for the execution of these commands; in some cases, the number of clock cycles required for this can then be greater than the number of clock cycles for the actual algorithmic signal processing or calculation, which is of course particularly disadvantageous.
Aus US 4 041 461 A, US 4 876 660 A und US 5 844 827 A sind Prozessoreinrichtungen bekannt, bei denen im Zuge von Signalverarbeitungsvorgängen auch Umformatierungen vorgenommen werden. Allerdings ist bei den bekannten Techniken die Information für eine Umformatierung im Vorhinein auf Grund einer entsprechenden Programmierung über einen Steuerprozessor konkret vorgegeben und in einem Register abgelegt, d.h. es sind hier die jeweiligen Verschiebeoperationen im Einzelnen durch Programmierung vorzugeben, wobei ein Übergehen auf andere Zahlenformate entsprechende neue Programmierungseingaben erfordert. Diese bekannten Techniken sind somit hinsichtlich Format-Änderungen starr und unhandlich.Processor devices are known from US Pat. No. 4,041,461 A, US Pat. No. 4,876,660 and US Pat. No. 5,844,827, in which reformatting is also carried out in the course of signal processing operations. However, in the known techniques, the information for reformatting is predetermined in advance on the basis of appropriate programming via a control processor and stored in a register, i.e. the respective shifting operations are to be specified individually by programming, a transition to other number formats requiring corresponding new programming inputs. These known techniques are therefore rigid and unwieldy with regard to format changes.
Es ist nun Aufgabe der Erfindung, eine besonders effiziente Ver- arbeitung von digitalen Signalen unter Anwendung von flexiblen Zahlenformat-Umwandlungen und gegebenenfalls Rundungs-Operationen zu ermöglichen, wobei insbesondere eine beliebig vorgebbare Format-Umwandlung innerhalb eines einzigen Taktzyklus ermöglicht werden soll, und zwar auch in demselben Schritt wie die eigentlichen mathematischen Operationen.It is an object of the invention to provide a particularly efficient To enable processing of digital signals using flexible number format conversions and, if necessary, rounding operations, in particular an arbitrarily predeterminable format conversion within a single clock cycle should be made possible, and also in the same step as the actual mathematical operations.
Zur Lösung dieser Aufgabe sieht die Erfindung eine digitale Signalverarbeitungseinrichtung mit den Merkmalen des Anspruches 1 vor. Besonders vorteilhafte Ausführungsformen und Weiterbildungen sind in den Unteransprüchen definiert.To achieve this object, the invention provides a digital signal processing device with the features of claim 1. Particularly advantageous embodiments and further developments are defined in the subclaims.
Gemäß der Erfindung wird somit entsprechend einem besonders bevorzugten Aspekt eine spezielle Format-Umwandlungseinheit, bevorzugt mit einer Rundungseinheit, direkt in den Datenpfad des Rechenwerkes integriert. Die etwaigen Format-Umwandlungen sowie gegebenenfalls Rundungs-Operationen werden damit unmittelbarer Bestandteil eines jeden Signalverarbeitungs-Befehles, so dass in der Regel kein eigener Taktzyklus benötigt wird. Ein weiterer Vorteil liegt darin, dass die Programmerstellung wesentlich vereinfacht wird, da dem Programmierer die Probleme im Zusammenhang mit der Format-Umwandlung automatisch abgenommen werden. Die Zahlenformat-Umwandlungseinheit, gegebenenfalls mit der integrierten Rundungseinheit, braucht nicht auf ein vorab bestimmtes Format ausgelegt werden, es ist vielmehr mit besonderem Vorteil eine Format-Vorgabe oder -Einstellung möglich, wozu bevorzugt als Format-Vorgabeeinheit ein Format-Register vorgesehen wird. Dieses Format-Register wird je nach Bedarf einmal geladen und bestimmt danach aufgrund seines Inhalts die Format-Umwandlungen und Rundungen und somit die exakte Funktionsweise dieser Einheiten. Insbesondere enthält das Format-Register Felder zu Festlegung des Datenformats, wie die Anzahl der Stellen insgesamt und die Anzahl der Stellen nach dem Komma, und zwar für das Ausgangsformat ebenso wie für das Zielformat.According to the invention, a special format conversion unit, preferably with a rounding unit, is thus integrated directly into the data path of the arithmetic unit in accordance with a particularly preferred aspect. The possible format conversions and possibly rounding operations thus become a direct component of each signal processing command, so that no separate clock cycle is generally required. Another advantage is that program creation is significantly simplified since the problems associated with format conversion are automatically relieved from the programmer. The number format conversion unit, possibly with the integrated rounding unit, does not need to be designed for a predetermined format, but rather a format specification or setting is particularly advantageously possible, for which purpose a format register is preferably provided as the format specification unit. This format register is loaded once as required and then determines the format conversions and roundings and therefore the exact functioning of these units based on its content. In particular, the format tab contains fields for specifying the data format, such as the number of digits in total and the number of digits after the decimal point, for the starting format as well as for the target format.
Weiters kann in die Zahlenformat-Umwandlungseinheit auch eine Saturierungsfunktion (auch Clipping-Funktion genannt) integriert werden, um das Überlaufen eines Signalwertes bei Überschreitung des Maximalwertes in das verkehrte Vorzeichen zu verhindern. Durch Integration einer derartigen Saturierungsfunktion, d.h. Einbau einer Saturierungseinheit in der Format-Umwandlungseinheit, wird ebenfalls erreicht, dass kein zusätzlicher Taktzyklus erforderlich ist, und es werden wie erwähnt Fehler, die unter Umständen im Zusammenhang mit der Format-Umwandlung und Rundungsfunktion entstehen könnten, durch diese Saturierungsfunktion verhindert. Eine vergleichbare Saturierungsfunktion wird bevorzugt auch der Rundungseinheit zugeordnet, um so einen etwaigen Überlauf bei einem Aufrunden zu erkennen und das korrekte Ergebnis zu liefern.Furthermore, a saturation function (also called a clipping function) can be integrated into the number format conversion unit in order to prevent a signal value from overflowing when the maximum value is exceeded in the wrong sign. By integrating such a saturation function, ie Installation of a saturation unit in the format conversion unit also ensures that no additional clock cycle is required, and, as mentioned, errors which could arise in connection with the format conversion and rounding function are prevented by this saturation function. A comparable saturation function is preferably also assigned to the rounding unit, in order to identify any overflow when rounding up and to deliver the correct result.
Die Erfindung wird nachfolgend anhand von bevorzugten Ausführungsbeispielen, auf die sie jedoch nicht beschränkt sein soll, noch weiter erläutert. Im Einzelnen zeigen in der Zeichnung:The invention is explained in more detail below on the basis of preferred exemplary embodiments, to which, however, it should not be restricted. The drawing shows in detail:
Fig. 1 ein Blockschaltbild eines an sich bekannten Signalprozessors;1 shows a block diagram of a signal processor known per se;
Fig. 2 ein schematisches Blockschaltbild eines Rechenwerks eines solchen Prozessors, und zwar mit einer Zahlenformat-Umwandlungseinheit gemäß der Erfindung, der eine Format-Vorgabeeinheit zugeordnet ist;2 shows a schematic block diagram of an arithmetic unit of such a processor, with a number format conversion unit according to the invention, to which a format specification unit is assigned;
Fig. 3 ein solches Rechenwerk mit Zahlenformat-Umwandlungseinheit mehr im Detail;3 shows such an arithmetic unit with a number format conversion unit in more detail;
Fig. 4 schematisch ein Format eines Format-Registers als Format- Vorgabeeinheit ;4 schematically shows a format of a format register as a format specification unit;
Fig. 5 in zwei zusammengehörigen Teilfiguren 5A und 5B einen detaillierten Aufbau der Zahlenformat-Umwandlungseinheit samt Rundungseinheit und Saturierungseinheit;5 shows, in two related sub-figures 5A and 5B, a detailed structure of the number format conversion unit including rounding unit and saturation unit;
Fig. 6 beispielhaft eine Tabelle mit Vorzeichen-behafteten positiven und negativen 4 Bit-Binärzahlen, mit einem Wertebereich von -8 bis +7;6 shows an example of a table with signed positive and negative 4-bit binary numbers, with a value range from -8 to +7;
Fig. 7 eine vergleichbare Tabelle mit 4 Bit-Binärzahlen, die jeweils zwei Stellen vor dem Komma und zwei Stellen nach dem Komma haben, wobei sich die Werte von -2 bis +1,75 erstrecken; Fig. 8 schematisch in Zuordnung zur Anordnung von Fig. 5 ein Beispiel für eine Zahlenformat-Umwandlung mit Rundung und Saturierung, mit einem Überlauf; und7 shows a comparable table with 4-bit binary numbers, each having two digits before the decimal point and two digits after the decimal point, the values extending from -2 to +1.75; FIG. 8 schematically, in association with the arrangement of FIG. 5, an example of a number format conversion with rounding and saturation, with an overflow; and
Fig. 9 ein vergleichbares Beispiel für eine Zahlenformat-Umwandlung mit Rundung und Saturierung, nun jedoch mit einer Unterschreitung (Unterlauf) .Fig. 9 shows a comparable example for a number format conversion with rounding and saturation, but now with an underflow (underflow).
In Fig. 1 ist schematisch in einem Blockschaltbild der an sich bekannte Aufbau eines Prozessors dargestellt, wobei ein Programmspeicher 1 vorgesehen ist, an den eine Programmsteuerung 2 angeschlossen ist, um ein die zu verarbeitenden Daten von einem Datenspeicher 3 erhaltendes Rechenwerk 4 entsprechend anzusteuern. Bekannt für den Aufbau derartiger Rechenwerke 4 sind die Harvard-Architektur, wie gezeigt, oder auch die Von Neumann- Architektur, wobei hier im Weiteren von einem Rechenwerk 4 mit Harvard-Architektur ausgegangen wird, auch wenn dies selbstverständlich nicht einschränkend zu sehen ist. Das Rechenwerk 4 enthält dabei, wie nachfolgend beispielsweise anhand Fig. 3 noch näher erläutert werden wird, ganz allgemein eine arithmetische Einheit (ARU - arithmetic unit) , und es definiert einen Datenpfad.1 schematically shows in a block diagram the known structure of a processor, a program memory 1 being provided to which a program controller 2 is connected in order to correspondingly control an arithmetic logic unit 4 receiving the data to be processed from a data memory 3. The Harvard architecture, as shown, or also the Von Neumann architecture are known for the construction of such arithmetic units 4, wherein a computer unit 4 with Harvard architecture is also assumed here, although this is of course not to be seen as restrictive. The arithmetic unit 4 contains, as will be explained in more detail below with reference to FIG. 3, in general, an arithmetic unit (ARU - arithmetic unit), and it defines a data path.
In einem solchen digitalen Signalprozessor wird jede Programminstruktion in drei Phasen ausgeführt, wobei die Steuerung des Ablaufes mit Hilfe der Programmsteuerung 2 erfolgt. In der ersten Phase, der so genannten „Fetch"-Phase (Fetch - Befehls- Aufruf) , wird ein Befehlswort aus dem Programmspeicher ausgelesen und der Programmsteuerung 2 zugeführt, wie in Fig. 1 mit dem Bezugszeichen la veranschaulicht ist. In der danach folgenden „Decode" (Dekodier) -Phase wird dieses Befehlswort dekodiert und in einzelne Mikrooperationen aufgespalten, mit denen das Rechenwerk 4 angesteuert wird. Dies ist in Fig. 1 mit der Verbindung 2a zwischen der Programmsteuerung 2 und dem Rechenwerk 4 angedeutet. In der dritten Phase, der „Execute" (Exekutier) -Phase, wird die Instruktion abgearbeitet, und demgemäß werden in dieser Phase die Mikrooperationen in Form von Steuersignalen über die Verbindung 2a und das Rechenwerk 4 zur tatsächlichen Ausführung weitergegeben, wobei zusätzlich über die Datenverbindung 3a Daten aus dem Datenspeicher 3 in das Rechen- werk 4 geladen werden; im Rechenwerk 4 erfolgt die rechnerische Verarbeitung dieser Daten und die Zwischenspeicherung in Registern. Nach dieser Bearbeitung werden die erhaltenen Daten beispielsweise über eine Verbindung 4a wieder im Datenspeicher 3 abgespeichert. Insofern bildet der Datenspeicher 3 beispielsweise Eingangs-Speichermittel und zugleich Ausgangs-Speicher- mittel für das Rechenwerk 4.In such a digital signal processor, each program instruction is carried out in three phases, the sequence being controlled with the aid of the program controller 2. In the first phase, the so-called "fetch" phase (fetch - command call), a command word is read out of the program memory and fed to the program controller 2, as illustrated in FIG. 1 with the reference symbol la. In the following one In the “decode” phase, this command word is decoded and split into individual microoperations with which the arithmetic and logic unit 4 is controlled. This is indicated in Fig. 1 with the connection 2a between the program controller 2 and the arithmetic unit 4. In the third phase, the "Execute" phase, the instruction is processed, and accordingly in this phase the micro-operations are passed on in the form of control signals via the connection 2a and the arithmetic unit 4 for actual execution, in addition via the data connection 3a data from the data memory 3 into the computation plant 4 can be loaded; In arithmetic unit 4, this data is processed arithmetically and temporarily stored in registers. After this processing, the data obtained are stored again in the data memory 3, for example via a connection 4a. In this respect, the data store 3 forms, for example, input storage means and at the same time output storage means for the arithmetic unit 4.
In Fig. 2 ist etwas mehr im Detail in einem Blockschaltbild der Aufbau eines Rechenwerks 4 gezeigt, wobei miteinander zu verknüpfende Daten A, B beispielsweise Eingangsregistern 5A, 5B zugeführt werden (z.B. aus dem Datenspeicher 3 gemäß Fig. 1), die als Eingangs-Speichermittel 5 angesehen werden können, wonach die Daten bei Abarbeiten der erwähnten Mikrooperationen in die arithmetische Einheit gelangen, wobei hier beispielsweise eine Multiplizierer-Einheit 6 in Serie mit einer Addierer- Einheit 7 vorgesehen ist. Das Ergebnis dieser Rechenoperationen wird normalerweise Ausgangs-Speichermitteln, hier schematisch durch ein Ergebnis-Register 8 veranschaulicht, zugeführt, wobei das Ergebnis mit „Y" angedeutet ist. Die einzelnen Komponenten 5A, 5B bis 8 definieren dabei einen Datenpfad 9, und in diesem Datenpfad 9 ist unmittelbar auch eine Zahlenformat-Umwandlungseinheit 10 angeordnet, die zugleich eine Rundungseinheit enthält, wie nachstehend noch näher erläutert werden wird. Diese Zahlenformat-Umwandlungseinheit 10, nachstehend kurz Umwandlungseinheit oder auch Anpassungseinheit genannt, kann dabei die zugeführten Daten in ein vorgegebenes Zahlenformat umwandeln, wobei, wie in Fig. 2 gezeigt, eine Format-Vorgabeeinheit 11 vorgesehen ist, die insbesondere in Form eines Format-Registers ausgeführt ist, und deren Ausgang mit der Umwandlungseinheit 10 verbunden ist, wie in Fig. 2 mit der Verbindung 11a angedeutet ist. Diese Format-Vorgabeeinheit 11 kann für den jeweiligen Rechenvorgang oder Datenbearbeitungsvorgang mit entsprechenden Format-Informationen gefüllt werden, wie in Fig. 2 schematisch beim Eingang 11b angedeutet ist.2 shows the structure of an arithmetic unit 4 in somewhat more detail in a block diagram, with data A, B to be linked to one another being fed, for example, to input registers 5A, 5B (for example from data memory 3 according to FIG. 1), which are used as input Storage means 5 can be viewed, after which the data arrive in the arithmetic unit when the aforementioned microoperations are processed, here, for example, a multiplier unit 6 being provided in series with an adder unit 7. The result of these arithmetic operations is normally fed to output storage means, here illustrated schematically by a result register 8, the result being indicated by "Y". The individual components 5A, 5B to 8 define a data path 9 and in this data path A number format conversion unit 10 is also arranged directly, which at the same time contains a rounding unit, as will be explained in more detail below. This number format conversion unit 10, hereinafter referred to as conversion unit or also adaptation unit, can convert the supplied data into a predetermined number format, wherein, as shown in FIG. 2, a format specification unit 11 is provided, which is in particular in the form of a format register, and the output of which is connected to the conversion unit 10, as indicated in FIG. 2 by the connection 11a. This format specification unit 11 can be used for the respective calculation process or D Data processing process can be filled with appropriate format information, as indicated schematically in FIG. 2 at the input 11b.
Die Anordnung der Umwandlungseinheit 10 unmittelbar im von den Eingangsregistern 5A, 5B zum Ergebnisregister 8 führenden Datenpfad 9 in der dargestellten Weise bedeutet, dass die gewünschten Format-Umwandlungen und gegebenenfalls Rundungs-Operationen im selben Taktzyklus erfolgen können, in dem die Rechenoperationen durchgeführt werden, wobei nur eine gewisse Verzögerungszeit in Kauf zu nehmen ist, bis die Daten am Ausgang der Umwandlungseinheit 10 auftreten. Dies bedeutet eine zeitliche Beschleunigung gegenüber einer Technik, bei der die Format-Umwandlungen und Rundungs-Operationen über das Programm durchgeführt werden, so dass sie jeweils erst in nachfolgenden Taktzyklen, nach den eigentlichen Berechnungsvorgängen, in eigenen Umwandlungs- und Rundungsschritten des Programms erfolgen. Die vorliegende Hardware-mäßige Realisierung dieser Umwandlungs- und Rundungsaufgaben unmittelbar im Datenpfad 9 ermöglicht weiters auch eine Vereinfachung der Programmierung, da beim jeweiligen Programm, das im Programmspeicher 1 in Fig. 1 zu speichern ist, einfach die gewünschten Formate für die Abspeicherung in der Format- Vorgabeeinheit 11 vorzusehen sind (sofern sich diese Formate nicht von vornherein aus dem Speicherformat des Datenspeichers 3 von selbst ergeben) , jedoch keinerlei Umwandlungs- und Rundungsoperationen ausprogrammiert werden müssen. Sofern die vorstehend angeführte Verzögerungszeit, die bei der vorliegenden Technologie zu berücksichtigen ist, im Vergleich zur Taktzeit eher lang sein sollte, z.B. bereits einen halben Taktzyklus dauern sollte, was bei besonders schnellen Rechenwerken 4, mit besonders kurzen Taktzyklen, unter Umständen der Fall sein könnte, so kann durchaus vorgesehen werden, innerhalb der Umwandlungseinheit 10 ein Speicherelement (Register) zum Puffern einzubauen, so dass dann die im gegebenen Taktzyklus begonnene Format-Umwandlungs- und Rundungstätigkeit in einem zweiten Taktzyklus zu Ende geführt werden kann, ohne dass die gegebenen Verzögerungszeiten das Resultat der Operationen im Rechenwerk, das als Ergebnis Y im Register 8 abgelegt wird, beeinträchtigen könnten.The arrangement of the conversion unit 10 directly in the data path 9 leading from the input registers 5A, 5B to the results register 8 in the manner shown means that the desired format conversions and possibly rounding operations in the can take place in the same clock cycle in which the arithmetic operations are carried out, with only a certain delay being accepted until the data appear at the output of the conversion unit 10. This means an acceleration in time compared to a technology in which the format conversions and rounding operations are carried out via the program, so that they only take place in subsequent clock cycles, after the actual calculation processes, in the program's own conversion and rounding steps. The present hardware implementation of these conversion and rounding tasks directly in the data path 9 also enables a simplification of the programming, since in the respective program that is to be stored in the program memory 1 in FIG. 1, the desired formats for storage in the format are simple - Specification unit 11 are to be provided (provided that these formats do not automatically result from the storage format of the data store 3), but no conversion and rounding operations have to be programmed. If the above-mentioned delay time, which is to be taken into account in the present technology, should be rather long compared to the clock time, for example should already take half a clock cycle, which could be the case with particularly fast arithmetic units 4 with particularly short clock cycles , it can be envisaged to install a storage element (register) for buffering within the conversion unit 10, so that the format conversion and rounding activity started in the given clock cycle can then be completed in a second clock cycle without the given delay times The result of the operations in the arithmetic unit, which is stored as the result Y in register 8, could impair.
Aus Fig. 3 ergeben sich weitere Details für den Aufbau eines solchen typischen Rechenwerkes 4 für DSP-Anwendungen (DSP-Digitaler Signalprozessor) . In der digitalen Signalverarbeitung ist eine wichtige Aufgabe beispielsweise die so genannte Multi- plizier-Akkumulier-Funktion (MAC-Funktion; MAC - Multiply-Accu- mulate) . Bei dieser Funktion werden zwei Eingangszahlen (Operanden) multipliziert, und das Multiplikationsergebnis wird anschließend zum Inhalt eines Akkumulators addiert. Eine derartige MAC-Funktion ist beispielsweise mit dem Rechenwerk 4 ge- maß Fig. 3 realisiert, wobei überdies das erhaltene Ergebnis einer Zahlenbereichsanpassung unterworfen wird (Zahlenformat-Umwandlung und Rundung) . Für derartige Funktionen wird häufig für die Zahlen die vorzeichenbehaftete 2er-Komplement-Darstellung verwendet, wie sie nachfolgend anhand der Fig. 6 und 7 noch näher erläutert werden soll, wobei die Erfindung aber selbstverständlich nicht auf derartige Darstellungen beschränkt sein soll. In der nachfolgenden Beschreibung wird jedoch der Einfachheit halber durchgehend eine derartige vorzeichenbehaftete 2er-Komplement-Darstellung zugrunde gelegt.3 shows further details for the construction of such a typical arithmetic unit 4 for DSP applications (DSP digital signal processor). An important task in digital signal processing is, for example, the so-called multiply-accumulate function (MAC function; MAC - multiply-accumulate). With this function, two input numbers (operands) are multiplied, and the multiplication result is then added to the content of an accumulator. Such a MAC function is, for example, with the arithmetic unit 4 3 realized, in addition, the result obtained is subjected to a range adjustment (number format conversion and rounding). For such functions, the signed 2's complement representation is often used for the numbers, as will be explained in more detail below with reference to FIGS. 6 and 7, but the invention is of course not restricted to such representations. In the following description, however, for the sake of simplicity, such a signed 2's complement representation will be used throughout.
Gemäß Fig. 3 werden zu Beginn die gewünschten Zahlen A, B für die durchzuführende Multiplikation aus dem Datenspeicher 3 ausgelesen und in die Register 5A, 5B geladen, was durch entsprechende Ladebefehle „LOAD" von der Programmsteuerung (Programmsteuerung 2 in Fig. 1) bewerkstelligt wird. In vergleichbarer Weise erhält überdies der Datenspeicher 3 über eine Steuerleitung 3b „CONTROL"-Steuerbefehle von der Programmspei- cherung 2 zugeführt. Die Daten bzw. Operanden A, B werden sodann im nächsten Schritt der arithmetischen Einheit 6 zugeführt, wobei an diese von der Programmsteuerung 2 bei 6b ein entsprechendes Steuersignal (MUL/DIV - Multiplizieren/Dividieren) angelegt wird. Das Multiplikationsergebnis wird über die Verbindung 6a dem Addierer/Subtrahierer 7 zugeführt, dem in entsprechender Weise von der Programmsteuerung 2 über eine Steuerverbindung 7b ein Addierbefehl (bzw. Subtrahierbefehl; ADD/SUB) zugeführt wird. Einem zweiten Eingang dieses Addierers/Subtrahierers 7 wird vom Ausgang eines Akkumulators 12 der aktuelle Inhalt dieses Akkumulators 12 zugeführt, wie in Fig. 3 bei 12a angedeutet ist. Das Ergebnis dieser Addition wird wieder im Akkumulator 12 gespeichert, vgl. den Ausgang 7a des Addierers 7, wobei ein Multiplexer 13 zwischengeschaltet ist, der über einen Steuereingang 13b („SELECT") von der Programmsteuerung 2 her so eingestellt wird, dass der Multiplexer 13 den Addiererausgang 7a an den entsprechenden Eingang des Akkumulators 12 (siehe die Verbindung 13a zwischen Multiplexer 13 und Akkumulator 12) bringt. Die Funktion des Akkumulators 12 wird mit einem Steuereingang 12b („OPERATION") von der Programmsteuerung 2 her veranlasst . Der Multiplizier-Akkumulier-Befehl wird üblicherweise in einer Schleife mehrmals wiederholt; sobald das Endergebnis im Akkumulator 12 vorliegt, wird dieses im vorliegenden Beispiel wieder im Datenspeicher 3 abgespeichert, wobei allerdings zuvor noch das Zahlenformat angepasst wird, da die Breite des Akkumulators 12 in der Regel größer ist als die Breite der aus dem Datenspeicher 3 gelesenen Datenwerte A, B. Der Multiplexer 13 dient im vorliegenden Beispiel dazu, um mit einer eigenen Instruktion am Beginn einer Schleife den Akkumulator 12 mit einem Anfangswert aus dem Datenspeicher 3 zu laden. Üblicherweise wird als dieser Anfangswert der Wert „00" verwendet.According to FIG. 3, the desired numbers A, B for the multiplication to be carried out are read out from the data memory 3 and loaded into the registers 5A, 5B, which is accomplished by the program control (program control 2 in FIG. 1) by means of corresponding load commands In a comparable manner, the data memory 3 also receives "CONTROL" control commands from the program memory 2 via a control line 3b. The data or operands A, B are then fed to the arithmetic unit 6 in the next step, with a corresponding control signal (MUL / DIV - multiply / divide) being applied to it by the program controller 2 at 6b. The multiplication result is fed via the connection 6a to the adder / subtractor 7, to which the program controller 2 in a corresponding manner supplies an add command (or subtract command; ADD / SUB). The current content of this accumulator 12 is fed from the output of an accumulator 12 to a second input of this adder / subtractor 7, as indicated at 12a in FIG. 3. The result of this addition is again stored in the accumulator 12, cf. the output 7a of the adder 7, a multiplexer 13 being interposed, which is set by the program controller 2 via a control input 13b (“SELECT”) such that the multiplexer 13 connects the adder output 7a to the corresponding input of the accumulator 12 (see FIG Connects 13a between multiplexer 13 and accumulator 12. The function of the accumulator 12 is initiated by the program controller 2 with a control input 12b (“OPERATION”). The multiply-accumulate command is usually repeated several times in a loop; as soon as the end result is present in the accumulator 12, in the present example it is stored again in the data memory 3, although the number format has to be adapted beforehand, since the width of the accumulator 12 is generally greater than the width of the data values A read from the data memory 3 , B. In the present example, the multiplexer 13 is used to load the accumulator 12 with an initial value from the data memory 3 with its own instruction at the start of a loop. Usually the value "00" is used as this initial value.
Der Inhalt des Akkumulators 12 (Ausgang 12a) wird somit wie erwähnt vor dem Rückspeichern im Datenspeicher 3 zwecks Zahlenformat-Umwandlung und bevorzugt auch zwecks allfälliger Rundung an die Umwandlungseinheit 10 übergeben, in der die nachstehend noch näher anhand der Fig. 5 zu beschreibende Anpassung des Zahlenformats und die Rundung durchgeführt werden. Dadurch wird erreicht, dass das Rechenergebnis dem vorgegebenen Speicherformat entspricht, wobei nichtsdestoweniger für die im Rechenwerk 4 durchgeführten Rechenvorgänge eine größere Wortbreite (Zahlenbreite, d.h. eine größere Anzahl von Bits pro Zahl), für eine hohe Genauigkeit der Berechnung, verwendet werden kann. Die entsprechenden Steuerinformationen erhält die Umwandlungseinheit 10 von der Format-Vorgabeeinheit 11, bevorzugt einem Register, das Steuerdaten betreffend das jeweils festgelegte Format (FXD_FORMAT) enthält; diese Steuerinformationen werden im Vorhinein, am Beginn des Programms, während einer Initialisierungsphase, in Entsprechung zu den Speicherformat-Vorgaben etwa des Datenspeichers 3 geladen. Beispielsweise wird hierzu am Beginn des Programms direkt ein Wert aus dem Datenspeicher 3 ausgelesen, siehe den Ausgang 3a in Fig. 3, und in die Vorgabeeinheit 11 mit Hilfe eines Steuersignals 11b („LOAD") geladen. Dieses Wort gibt somit das Zielformat (DST - Destination - Ziel) an, das das erhaltene Ergebnis Y (vgl. Fig. 2) aufweisen soll, wobei in der Format-Vorgabeeinheit bzw. im Register 11 ein entsprechender Bereich DST enthalten ist, abgesehen von einem Speicherbereich SRC (SRC - Source - Quelle) für entsprechende Formatangaben zum während der Berechnung im Rechenwerk 4 verwendeten Format. Die entsprechenden Formatangaben können im Register 11 jeweils 8 Bit lang sein (vgl. die Bitstellen 0-7, insgesamt 0-15, in der Vorgabeeinheit 11 gemäß Fig. 4).The content of the accumulator 12 (output 12a) is thus, as mentioned, transferred to the conversion unit 10 before being stored back in the data memory 3 for the purpose of number format conversion and preferably also for any rounding, in which the adaptation of the to be described in more detail below with reference to FIG. 5 Number format and rounding are performed. The result of this is that the calculation result corresponds to the predetermined storage format, although a larger word width (number width, ie a larger number of bits per number) can be used for the calculation processes carried out in the arithmetic logic unit 4, for a high accuracy of the calculation. The corresponding control information is received by the conversion unit 10 from the format specification unit 11, preferably a register, which contains control data relating to the respectively defined format (FXD_FORMAT); this control information is loaded in advance, at the beginning of the program, during an initialization phase, in accordance with the storage format specifications, for example of the data memory 3. For example, at the beginning of the program, a value is read directly from the data memory 3, see output 3a in FIG. 3, and loaded into the specification unit 11 with the aid of a control signal 11b (“LOAD”). This word thus indicates the target format (DST Destination which the result Y should have (cf. FIG. 2), a corresponding area DST being contained in the format specification unit or in register 11, apart from a memory area SRC (SRC - Source - Source) for corresponding format information on the format used during the calculation in arithmetic unit 4. The corresponding format information can be found in Register 11 each be 8 bits long (cf. bit positions 0-7, a total of 0-15, in the specification unit 11 according to FIG. 4).
Das Format SRC in der Vorgabeeinheit 11 bezieht sich somit auf das Format der am Ausgang des Akkumulators 12 gegebenen Zahl, der „Quellenzahl", wogegen das Format DST das Zielformat der Datenwörter für die Abspeicherung im Datenspeicher 3 angibt. Jedes Feld DST bzw. SRC im Register 11 enthält die Position des Dezimalpunktes in Form einer vorzeichenlosen Binärzahl, wobei ein Wert von „2" beispielsweise anzeigt, dass die zu betrachtende Zahl zwei Kommastellen besitzen soll, d.h. zwei Stellen rechts vom Dezimalpunkt, so dass also der Dezimalpunkt um zwei Stellen von der äußersten rechten Stelle nach links verschoben ist.The format SRC in the specification unit 11 thus relates to the format of the number given at the output of the accumulator 12, the "source number", whereas the format DST specifies the target format of the data words for storage in the data memory 3. Each field DST or SRC im Register 11 contains the position of the decimal point in the form of an unsigned binary number, a value of "2" indicating, for example, that the number to be considered should have two decimal places, ie two digits to the right of the decimal point, so that the decimal point is shifted two digits from the rightmost digit to the left.
Die Umwandlungseinheit 10 liefert gemäß Fig. 3 an ihrem eigentlichen Ausgang 10a das Ergebnis (Y; siehe auch Fig. 2), welches in Ausgangs-Speichermitteln, gemäß Fig. 3 unmittelbar im Datenspeicher 3 abgelegt wird; zusätzlich können sich bei der Format- Umwandlung und -Rundung auch ein Überlauf oder eine Unterschreitung bei der Zahlenanpassung ergeben (Underflow - UFL; Overflow - OFL) , und entsprechende Statussignale UFL und OFL liegen an Ausgängen 10b und 10c der Umwandlungseinheit 10 vor; diese beiden Statussignale UFL, OFL können bevorzugt einem Statusregister 14 zugeführt werden, um für eine Behandlung von Ausnahmefällen zur Verfügung zu stehen.The conversion unit 10 supplies the result (Y; see also FIG. 2) at its actual output 10a according to FIG. 3, which result is stored directly in the data memory 3 in output storage means according to FIG. 3; in addition, the format conversion and rounding can also result in an overflow or underflow in the number adjustment (underflow - UFL; overflow - OFL), and corresponding status signals UFL and OFL are present at outputs 10b and 10c of the conversion unit 10; these two status signals UFL, OFL can preferably be fed to a status register 14 in order to be available for handling exceptional cases.
Anhand der Fig. 5 soll nunmehr die Arbeitsweise der Umwandlungseinheit 10 (Format-Umwandlung, Rundung) mehr im Einzelnen erläutert werden, wobei nachfolgend auch auf die Fig. 6-9 bezug genommen werden soll. Die Fig. 5 setzt sich dabei aus den Fig. 5A und 5B zusammen, die längs der strichlierten Trennlinien in Fig. 5A und 5B aneinander gelegt zu denken sind. In Fig. 5 sind weiters auch beispielhafte Dimensionsangaben betreffend Bitanzahl oder Bitbreite der einzelnen im Zuge der Verarbeitung anstehenden Datenwerte enthalten, wobei diese Dimensionsangaben durchaus gängigen praktischen Beispielen entsprechen. Nachstehend sollen anhand von konkreten, jedoch vereinfachten Zahlenbeispielen, mit niedrigeren Bitzahlen, unter Bezugnahme insbesondere auf die Fig. 8 und 9 zum einfacheren Verständnis weitere Erläuterungen erfolgen, wobei auch vorhergehend anhand der Fig. 6 und 7 2er-Komplement-Zahlendarstellungen im Hinblick auf „Overflow" und „Underflow" erläutert werden sollen.The mode of operation of the conversion unit 10 (format conversion, rounding) will now be explained in more detail with reference to FIG. 5, reference also to FIGS. 6-9 below. FIG. 5 is composed of FIGS. 5A and 5B, which are to be thought of as being laid along the dashed dividing lines in FIGS. 5A and 5B. 5 also contains exemplary dimension details relating to the number of bits or the bit width of the individual data values to be processed, these dimension details entirely corresponding to common practical examples. Further explanations are given below on the basis of concrete, but simplified numerical examples with lower bit numbers, with particular reference to FIGS. 8 and 9, for easier understanding, with previous explanations also 6 and 7 2's complement number representations are to be explained with regard to “overflow” and “underflow”.
Die Umwandlungseinheit 10, auch ALIGN- und ROUND-Einheit (im Hinblick auf die Formatanpassung und Rundung) genannt, erhält wie bereits erwähnt den Ausgangswert 12a des Akkumulators 12 zugeführt, wie dies außer in Fig. 3 auch in Fig. 5 ersichtlich ist. Das Format dieses Ausgangswertes am Ausgang 12a des Akkumulators 12 ist in der Folge durch die Umwandlungseinheit 10 entsprechend der Vorgabe durch das Register 11 (allgemein Format- Vorgabeeinheit 11 genannt) so anzupassen, dass das endgültig erhaltene Datenwort (Ausgang 10a) für eine Speicherung im Datenspeicher 3 (oder irgend einem anderen Datenspeicher, gegebenenfalls mit einem anderen Zahlenformat) geeignet ist. Die Umwandlungseinheit 10 ist direkt im Datenpfad (s. Datenpfad 9 in Fig. 2) des Rechenwerkes 4 angeordnet, d.h. im Normalfall werden die durch die Umwandlungseinheit 10 ausgeführten Operationen bevorzugt im selben Taktzyklus wie die Rechenoperationen in den vorhergehenden arithmetischen Einheiten 6, 7 durchgeführt, wobei nur eine geringfügige Verzögerungszeit von Stufe zu Stufe auftritt. Sollten jedoch extrem kurze Taktzyklen vorgegeben sein und die Schaltungsbausteine, mit denen die einzelnen Komponenten, insbesondere die Umwandlungseinheit 10, realisiert sind, eine im Vergleich dazu etwas zu große Verzögerung bewirken, kann wie bereits erwähnt eine Zwischenspeicherung innerhalb der Umwandlungseinheit 10, gegebenenfalls auch vor und/oder nach der Umwandlungseinheit 10, vorgesehen werden, um so in einem ersten Taktzyklus einen ersten Teil und in einem zweiten Taktzyklus einen zweiten Teil der Operationen vorzunehmen. In Fig. 5 wurde jedoch von der zeichnerischen Darstellung einer derart einzufügenden Zwischenspeichereinheit (insbesondere Register) abgesehen, da im Normalfall eine derartige Pufferung nicht erforderlich sein wird, vielmehr in ein und demselben Taktzyklus die Rechenoperationen sowie die Formatumwandlungen erfolgen können.As already mentioned, the conversion unit 10, also called the ALIGN and ROUND unit (with regard to format adaptation and rounding), is supplied with the output value 12a of the accumulator 12, as can be seen in FIG. 3 as well as in FIG. 5. The format of this output value at the output 12a of the accumulator 12 is subsequently to be adapted by the conversion unit 10 in accordance with the specification by the register 11 (generally called format specification unit 11) in such a way that the finally obtained data word (output 10a) for storage in the data memory 3 (or any other data storage, possibly with a different number format) is suitable. The conversion unit 10 is arranged directly in the data path (see data path 9 in FIG. 2) of the arithmetic unit 4, i.e. In the normal case, the operations carried out by the conversion unit 10 are preferably carried out in the same clock cycle as the arithmetic operations in the preceding arithmetic units 6, 7, with only a slight delay time occurring from stage to stage. If, however, extremely short clock cycles are specified and the circuit modules with which the individual components, in particular the conversion unit 10, are implemented, cause a delay which is somewhat too great in comparison to this, intermediate storage within the conversion unit 10, if appropriate also before and / or after the conversion unit 10, are provided so as to carry out a first part of the operations in a first clock cycle and a second part in a second clock cycle. 5, however, the drawing of a buffer unit (in particular a register) to be inserted in this way has been dispensed with, since in the normal case such buffering will not be necessary, but rather the computing operations and the format conversions can take place in one and the same clock cycle.
Die vorliegende Umwandlungseinheit 10 enthält als integralen Hardware-mäßigen Bestandteil auch eine Rundungseinheit 15, die aus einzelnen Logikbausteinen und einem Addierer besteht, wie nachfolgend noch näher erläutert wird; weiters ist eine so ge- nannte „Saturierungsfunktion" integriert, um zu verhindern, dass bei einem Zahlen-Überlauf bzw. -Unterlauf (Overflow, Underflow) ein Vorzeichenwechsel stattfindet, vgl. auch die nachfolgenden Ausführungen im Zusammenhang mit den Fig. 6 und 7.The present conversion unit 10 also contains, as an integral hardware-related component, a rounding unit 15, which consists of individual logic modules and an adder, as will be explained in more detail below; furthermore, such a called "saturation function" integrated to prevent a change of sign in the event of a number overflow or underflow (overflow, underflow), cf. also the following explanations in connection with FIGS. 6 and 7.
Im Beispiel gemäß Fig. 5 hat der Akkumulator 12 eine Breite von 80 Bit (vgl. die Bitstellen Nr. 0-79 in Fig. 5A) , und es soll in der Umwandlungseinheit 10 eine Umwandlung in eine Zahl mit einer Breite von 32 Bit erfolgen, was der Breite eines Datenworts im Datenspeicher 3 entspricht. Das Format-Register 11 enthält zu diesem Zweck überdies im SRC-Feld (siehe Fig. 4) einen Wert von 40 und im DST-Feld einen Wert von 16, was bedeutet, dass die 80 Bit-Zahl aus dem Akkumulator 12 (die SRC-Zahl, also die Quellenzahl) ihren Dezimalpunkt rechts von Bit Nr. 40 hat, wogegen die 32 Bit-Zielzahl (DST-Zahl) nach dem Anpassungs- bzw. Umwandlungsvorgang ihren Dezimalpunkt rechts von Bit Nr. 16 haben soll .In the example according to FIG. 5, the accumulator 12 has a width of 80 bits (cf. bit positions No. 0-79 in FIG. 5A), and a conversion into a number with a width of 32 bits is to take place in the conversion unit 10 , which corresponds to the width of a data word in the data memory 3. For this purpose, the format register 11 also contains a value of 40 in the SRC field (see FIG. 4) and a value of 16 in the DST field, which means that the 80 bit number from the accumulator 12 (the SRC -Number, i.e. the source number) has its decimal point to the right of bit no.40, whereas the 32-bit target number (DST number) should have its decimal point to the right of bit no.16 after the adaptation or conversion process.
Am Beginn der Zahlenformat-Anpassung oder -Umwandlung wird mit Hilfe einer Erweiterungseinheit 16 die 80 Bit-Zahl auf beiden Seiten erweitert, und zwar auf der rechten Seite, der LSB-Seite (LSB-Least Significant Bit = geringstwertiges Bit) um 32 Bits, also um so viele Bits als das Zielwort DST aufweist, wobei diese neu hinzugefügten 32 Bits alle auf „0" gesetzt werden. Auf der anderen, linken Seite, der MSB-Seite (MSB-Most Significant Bit = höchstwertiges Bit) , werden ebenfalls 32 Bits, entsprechend der Bitbreite des Zielwortes, zur Erweiterung hinzugefügt, wobei der Wert dieser Bits entsprechend dem Wert des Vorzeichenbits, der aus dem Akkumulator 12 übernommenen wird, also das Bit an der Stelle „79", gewählt wird. Dieser Vorgang wird auch als „Sign Extend" (Vorzeichen-Erweiterung) bezeichnet, vgl. auch das Bitfeld SIGN (SRC) der Erweiterungseinheit 16 in Fig. 5A. Insgesamt wird somit eine Breite von 32 + 80 + 32 = 144 Bits, vom Bit Nr. 0 bis Bit Nr. 143, erhalten, wobei die Bits an den Stellen 32- 111 die ursprüngliche Zahl am Ausgang 12a des Akkumulators 12 bilden.At the beginning of the number format adaptation or conversion, the 80 bit number is expanded on both sides with the help of an expansion unit 16, namely on the right side, the LSB (least significant bit) side by 32 bits, that is, by as many bits as the target word DST, and these newly added 32 bits are all set to "0". On the other left side, the MSB side (MSB-Most Significant Bit), there are also 32 Bits corresponding to the bit width of the target word are added for expansion, the value of these bits being selected in accordance with the value of the sign bit which is taken over from the accumulator 12, that is to say the bit at the position “79”. This process is also referred to as a "sign extend" (cf. also the bit field SIGN (SRC) of the expansion unit 16 in FIG. 5A. A total of 32 + 80 + 32 = 144 bits, thus, of the bit No. 0 to bit No. 143, the bits at positions 32-111 form the original number at the output 12a of the accumulator 12.
In Anschluss daran ist nun der Dezimalpunkt dieser auf insgesamt 144 Bits verlängerten Zahl anzupassen, und zwar derart, dass der Dezimalpunkt exakt an der erforderlichen Stelle im Hinblick auf die Zielzahl am Ausgang 10a der Umwandlungseinheit 10 zu liegen kommt. Es sei angenommen, dass das Bit Nr. 0 in der Quellenzahl, also am Ausgang 12a des Akkumulators 12, als Bit mit der Wertigkeit 2° immer links vom Dezimalpunkt liegt, so dass dieses Bit in der Quellenzahl an der Stelle „40" vorhanden ist, wobei es in der Zielzahl (Ausgang 10a der Umwandlungseinheit 10) an der Stelle „16" liegen soll. Es muss also eine „Verschiebung" um (40-16=) 24 Bits nach rechts (gemäß der Darstellung in Fig. 5A) erfolgen. Diese Verschiebung wird mit Hilfe der Verschiebeeinheit 17 („SHIFT") bewerkstelligt, wobei durch die schräge Darstellung ihres Ausganges 17a dieser Verschiebevorgang nach rechts (um 24 Stellen) schematisch veranschaulicht ist. An ihrem Steuereingang 17b erhält die Verschiebeeinheit 17, die beispielsweise durch einen Multiplexer-Steuerblock gebildet sein kann, die entsprechende Steuerinformation für diese Verschiebung von einer die Verschiebungsgröße berechnenden Steuereinheit 17' zugeführt. Diese Steuereinheit 17' berechnet den Verschiebebetrag aus den Werten des Format-Vorgaberegisters 11, welche an dessen Ausgang 11a liegen und der Steuereinheit 17' zugeführt werden. Der berechnete Verschiebebetrag ergibt sich aus dem Unterschied zwischen den Dezimalpunkt-Positionen des Quellenformats (SRC-Feld im Register 11) und des Zielformates (DST-Feld im Register 11; siehe Fig. 4). Konkret kann somit die Steuereinheit 17' aus einem Subtrahierer bestehen, welcher die Differenz zwischen den beiden Inhalten der Felder SRC und DST des Registers 11 bildet, und sie kann auch als Steuerstufe in die Verschiebeeinheit 17 direkt integriert sein.Then the decimal point of this number, which has been extended to a total of 144 bits, must be adjusted in such a way that the decimal point is exactly at the required point with regard to the target number comes to be at the output 10a of the conversion unit 10. It is assumed that bit no. 0 in the number of sources, that is to say at the output 12a of the accumulator 12, as a bit with a value of 2 ° is always to the left of the decimal point, so that this bit is present at the position “40” in the number of sources , where it should be in the target number (output 10a of the conversion unit 10) at the point "16". There must therefore be a "shift" by (40-16 =) 24 bits to the right (as shown in FIG. 5A). This shift is accomplished with the aid of the shift unit 17 ("SHIFT"), the oblique representation of its Exit 17a this shifting process to the right (by 24 digits) is schematically illustrated. At its control input 17b, the displacement unit 17, which can be formed, for example, by a multiplexer control block, receives the corresponding control information for this displacement from a control unit 17 'that calculates the displacement quantity. This control unit 17 'calculates the shift amount from the values of the format preset register 11, which are at its output 11a and are supplied to the control unit 17'. The calculated shift amount results from the difference between the decimal point positions of the source format (SRC field in register 11) and the target format (DST field in register 11; see FIG. 4). Specifically, the control unit 17 'can thus consist of a subtractor, which forms the difference between the two contents of the fields SRC and DST of the register 11, and it can also be integrated directly into the displacement unit 17 as a control stage.
In Fig. 5, konkret Fig. 5A, ist die so erhaltene Bit-Kette schematisch durch einen Bock 18 veranschaulicht, wobei durch strich- lierte, schräge Linien veranschaulicht ist, dass die ursprünglich aus dem Akkumulator 12 stammende Zahl nunmehr um eine entsprechende Anzahl (nämlich um 24 Bits) nach rechts verschoben worden ist. Bei dieser Verschiebung müssen auf der linken Seite die durch die Verschiebung frei werdenden Bitstellen vorzeichenrichtig aufgefüllt werden, d.h. es werden Bits mit dem Wert des Vorzeichenbits der Quellenzahl (Bit Nr. 79 im Akkumulator 12) zum Auffüllen verwendet.5, specifically FIG. 5A, the bit chain thus obtained is illustrated schematically by a block 18, it being illustrated by dashed, oblique lines that the number originally from the accumulator 12 is now increased by a corresponding number ( namely shifted to the right by 24 bits). With this shift, the bit positions released by the shift must be filled in with the correct sign, i.e. bits with the value of the sign bit of the source number (bit no. 79 in the accumulator 12) are used for filling.
Sollte anders als in Fig. 5 dargestellt eine Verschiebung nach links benötigt werden (um eine größere Anzahl von Nachkommastellen vorzusehen) , dann werden die auf der rechten Seite frei werdenden Bitstellen mit „0"-Bits gefüllt.Should be different from that shown in Fig. 5 a shift to are required on the left (in order to provide a larger number of decimal places), the bit positions that become free on the right are filled with "0" bits.
Nach dieser Verschiebung ist der Dezimalpunkt bereits an der richtigen Stelle, entsprechend jener in der Zielzahl, und die Zielzahl kann nun entsprechend der gewünschten Genauigkeit als Teilfeld aus dem Gesamtwort - d.h. aus der Bit-Kette 18 - entnommen werden. Im vorliegenden Fall ergibt sich die Genauigkeit für die Zielzahl durch deren Stellen mit 32 Bits. Die Felder des Gesamtwortes werden nicht verändert, sondern nur im Format der Zielzahl interpretiert. Dies kann auch als „Maskenwechsel" bezeichnet werden, und in Fig. 5 ist diese Operation mit dem Pfeil 18a veranschaulicht. Das Ergebnis davon ist in Fig. 5 (genauer: Fig. 5B) mit der Teilfeldeinheit 19 veranschaulicht, wobei ersichtlich ist, dass das eigentliche Zahlenfeld 19DST (DST - Destination - Zielzahl) nunmehr 32 Bits breit ist, wobei links davon in einem Vorzeichenfeld 19SIGN 80 Bits enthalten sind. Auf der rechten Seite sind an den Bit-Positionen „0" bis „31" die Bits für die wegzuschneidenden Stellen (Nachkommastellen) enthalten, wobei ein einfaches Wegschneiden einem Abrunden entspricht, hingegen unter bestimmten Voraussetzungen, wie nachstehend noch näher erläutert, mit Hilfe der Rundungseinheit 15 ein Aufrunden erfolgt. Bei der Entnahme der Bits für die Zielzahl (Ausgang 19a) kann eine Überschreitung bzw. Unterschreitung des gegebenen Zahlenbereiches erfolgen. Eine Überschreitung ist dabei nur möglich, wenn die Quellenzahl positiv war, eine Unterschreitung nur dann, wenn die Quellenzahl negativ war .After this shift, the decimal point is already in the right place, corresponding to that in the target number, and the target number can now be selected as a partial field from the total word - i.e. can be taken from the bit chain 18. In the present case, the accuracy for the target number results from its placement with 32 bits. The fields of the overall word are not changed, but only interpreted in the format of the target number. This can also be referred to as a "mask change", and this operation is illustrated by the arrow 18a in FIG. 5. The result of this is illustrated in FIG. 5 (more precisely: FIG. 5B) with the subfield unit 19, it being evident that the actual number field 19DST (DST - destination number) is now 32 bits wide, 80 bits to the left of which are contained in a sign field 19SIGN. On the right-hand side are the bits for the "0" to "31" positions contain digits to be cut away (decimal places), whereby simply cutting away corresponds to rounding off, on the other hand rounding up under certain conditions, as explained in more detail below, with the help of rounding unit 15. When the bits for the target number (output 19a) are removed, this can be exceeded If the number of sources was positive, an undershoot is only possible if the source number was negative.
Zum Erkennen einer etwaigen Überschreitung oder Unterschreitung („Overflow" oder „Underflow") des Zahlenbereichs ist eine Logikeinheit 20 vorgesehen, der über eine Verbindung 19b vom Ausgang der Teilfeldeinheit 19 alle 80 Vorzeichenbits des Vorzeichenfeldes 19SIGN sowie das Vorzeichenbit des Zielwortes im Zielwortfeld 19DST (Bit an der Stelle „31", in der Zeichnung mit DST (32) angegeben) zugeführt werden. Im Fall einer gültigen Zahl in der Teilfeldeinheit 19 sind alle Vorzeichenbits gleich, und zwar entweder alle gleich „0" oder alle gleich „1". Mit Hilfe eines ODER-Gatters 21 wird nun erkannt, ob alle Bitpositionen des Vorzeichenfeldes den Wert „0" aufweisen, und mit Hilfe eines UND-Gatters 22 wird erkannt, ob alle Bitpositionen des Vorzeichenfeldes den Wert „1" aufweisen. Die Ausgänge dieser Gatter 21, 22 sind an Eingänge eines Prüfblocks 23 gelegt, der eine Überschreitung oder Unterschreitung feststellt, wenn das Ausgangssignal (Ausgang 21a) des ODER-Gatters 21 ungleich „0" ist, oder das Ausgangssignal 22a des UND-Gatters 22 ungleich „1" ist. Vom Prüfblock 23 muss dann, wenn das Ausgangssignal 21a ungleich „0" ist oder das Ausgangssignal 22a ungleich „1" ist, nur mehr festgestellt werden, ob eine Überschreitung oder aber eine Unterschreitung vorliegt, und diese Feststellung erfolgt mit Hilfe des Vorzeichenbits der Quellenzahl, wie sie im Akkumulator 12 enthalten ist, vgl. auch die Verbindung 12s zum Prüfblock 23 in Fig. 5. Hat dieses Vorzeichenbit (Bit Nr. „79") den Wert „0", so liegt ein Überlauf oder eine Überschreitung (Overflow) vor, und es wird am Ausgang 23o des Prüfblocks 23 ein - vorläufiges - Überlaufsignal OFL aktiviert. Hat das Vorzeichenbit jedoch den Wert „1", so liegt eine Unterschreitung (Underflow) vor, und es wird am Ausgang 23u des Prüfblocks 23 ein Unterschreitungssignal UFL aktiviert. Dies ist dann auch das bereits in der Beschreibung der Fig. 3 angesprochene Status-Signal UFL am Ausgang 10b der Umwandlunseinheit 10.A logic unit 20 is provided in order to recognize a possible overshoot or undershoot ("overflow" or "underflow") of the number range, which, via a connection 19b from the output of the subfield unit 19, contains all 80 sign bits of the sign field 19SIGN and the sign bit of the target word in the target word field 19DST (bit at the point "31", indicated in the drawing with DST (32)). In the case of a valid number in the subfield unit 19, all sign bits are the same, either all equal to "0" or all equal to "1" With the help of an OR gate 21, it is now recognized whether all of the bit positions of the Sign field have the value "0", and with the help of an AND gate 22, it is recognized whether all bit positions of the sign field have the value "1". The outputs of these gates 21, 22 are connected to inputs of a test block 23 which determines whether the output signal (output 21a) of the OR gate 21 is not equal to "0" or the output signal 22a of the AND gate 22 is not equal Is "1". When the output signal 21a is not equal to "0" or the output signal 22a is not equal to "1", the test block 23 only has to determine whether there is an overshoot or an undershoot, and this determination is made with the aid of the sign bit of the source number, as it is contained in the accumulator 12, cf. also the connection 12s to the test block 23 in FIG. 5. If this sign bit (bit no. "79") has the value "0", there is an overflow or an overflow and the output 23o of the test block 23 a - provisional - overflow signal OFL activated. However, if the sign bit has the value "1", there is an underflow and an underflow signal UFL is activated at the output 23u of the test block 23. This is also the status signal already mentioned in the description of FIG. 3 UFL at the output 10b of the conversion unit 10.
Das Auswertungsergebnis des Prüfblocks 23 wird weiters auch über eine Verbindung 23a an eine Saturierungseinheit 24 abgegeben, die 33 Bits breit ist, also um ein Bit mehr als die Breite der Zielzahl beträgt, um so einen neuerlichen eventuellen Überlauf nach einer - noch zu beschreibenden - Rundungs-Addition erkennen zu können.The evaluation result of the test block 23 is also delivered via a connection 23a to a saturation unit 24, which is 33 bits wide, i.e. one bit more than the width of the target number, in order to repeat a possible overflow after a - to be described - rounding -To be able to recognize addition.
Die Saturierungseinheit 24 setzt entsprechend der Prüfauswertung durch den Prüfblock 23 (Ausgang 23a betreffend UFL/OFL-Zustand) die bei 19a zugeführte Zahl an ihrem Ausgang 24a auf den jeweils maximalen Endwert. Mehr im Detail ist dies im Fall eines Überlaufs (OFL) die größte positive Zahl, d.h. es werden in diesem Fall alle Bits mit Ausnahme der Vorzeichenbits (Bits Nr. 31 und 32) auf „1" gesetzt, wogegen die Vorzeichenbits an den Stellen 31 und 32 auf „0" gestellt werden. Im Falle einer Unterschreitung (UFL) wird die „größte" negative Zahl (d.h. die negative Zahl mit dem größten absoluten Betrag) am Ausgang 24a abgegeben, d.h. es werden in dieser Ausgangszahl alle Bits auf den Wert „0" gesetzt, mit Ausnahme der beiden Vorzeichenbits Nr. 31 und Nr. 32, welche auf den Wert „1" gesetzt werden. Wie bereits angeführt wird zusätzlich an den Ausgängen 10b bzw. 10c ein entsprechendes Unterschreitungssignal UFL bzw. Überlaufsignal OFL ergänzend abgegeben.The saturation unit 24 sets the number supplied at 19a at its output 24a to the respective maximum end value in accordance with the test evaluation by test block 23 (output 23a relating to the UFL / OFL state). In more detail, this is the largest positive number in the event of an overflow (OFL), ie in this case all bits with the exception of the sign bits (bits nos. 31 and 32) are set to "1", whereas the sign bits at positions 31 and 32 are set to "0". In the event of a shortfall (UFL), the “largest” negative number (ie the negative number with the largest absolute amount) becomes output 24a This means that all bits in this output number are set to the value "0", with the exception of the two sign bits No. 31 and No. 32, which are set to the value "1". As already mentioned, a corresponding undershoot signal UFL or overflow signal OFL is additionally emitted at the outputs 10b and 10c.
Beim Abschneiden der niederwertigen Bits (bei der Teilfeldeinheit 19 rechts vom Zielwort-Feld 19DST, also die Bits an den Stellen Nr. 0-31) entsteht ein systematischer Fehler, wobei sich bei mehrfacher Durchführung der beschriebenen Operationen (etwa wenn im Zuge von Filterrealisierungen Ergebnisse akkumuliert werden) diese Fehler ungünstig summieren und unter Umständen eine totale Fehlfunktion von bestimmten Algorithmen nach sich ziehen können. Um dem entgegen zu wirken, ist die bereits erwähnte Rundungseinheit 15 vorgesehen, welche die erzeugten systematischen Fehler im Mittel auf 0 reduzieren soll. In der Praxis kann beispielsweise das so genannte IEEE-Runden verwendet werden (vgl. beispielsweise IEEE Standard for Binary Floating- Point Arithmetic IEEE 754-1985) . Bei diesem Runden werden Aufrundungen dann und nur dann vorgenommen, wenn an den Nachkommastellen (hier die Bitpositionen Nr. 0-31) zumindest ein „1"-Bit zusätzlich zu einem „1"-Bit an der Stelle Nr. 31 irgendwo vorkommt (es genügt ein einziges solches zusätzliches ,,1"-Bit) , oder aber wenn nur das Bit Nr. 31 den Wert 1 hat, und wenn auch das LSB-Bit im Zielwort-Feld 19DST den Wert „1" hat. Ein solches Aufrunden bedeutet, dass mit Hilfe eines Addierers 25 zur am Ausgang der Saturierungseinheit 24 erhaltenen Zahl eine „1" (allgemein: der kleinste positive Wert) hinzu addiert wird. Eine Logikeinheit 26 mit einem ODER-Gatter 27 und einem UND-Gatter 28 erkennt, ob ein solches Runden (genau Aufrunden) tatsächlich durchzuführen ist. Dazu werden das niederwertigste Bit (LSB-Bit) aus dem Zielwort-Feld 19DST (siehe Verbindung 19c) sowie die abgeschnittenen Bits (siehe Verbindung 19d) an das ODER-Gatter 27 gelegt, dessen Ausgang 27a ebenso wie das Bit Nr. 31 der abgeschnittenen niederwertigen Bits (siehe Ausgang 19e) an das UND-Gatter 28 gelegt wird. Das erwähnte IEEE-Runden sieht ein Aufrunden, also das Addieren einer „1" im Addierer 25, dann vor (Ausgang „1" des UND-Gatters 28, Verbindung 28a), wenn irgendein Bit 19d oder 19c auf 1 gesetzt ist und gleichzeitig das Bit 19e (Bit Nr. 31 der Teilfeldeinheit 19) ebenfalls den Wert 1 hat.When the low-order bits are cut off (in the subfield unit 19 to the right of the target word field 19DST, that is to say the bits at positions No. 0-31), a systematic error arises, with repeated execution of the operations described (for example if results are obtained in the course of filter implementations) accumulate) these errors add up unfavorably and may result in a total malfunction of certain algorithms. To counteract this, the already mentioned rounding unit 15 is provided, which is to reduce the systematic errors generated to 0 on average. In practice, IEEE rounding can be used, for example (see, for example, IEEE Standard for Binary Floating-Point Arithmetic IEEE 754-1985). In this rounding, rounding up is only carried out if at least one "1" bit in addition to a "1" bit at point No. 31 occurs somewhere in the decimal places (here bit positions No. 0-31) (it a single such additional "1" bit is sufficient, or if only bit No. 31 has the value 1, and if the LSB bit in the target word field 19DST also has the value "1". Such rounding-up means that, with the aid of an adder 25, a “1” (generally: the smallest positive value) is added to the number obtained at the output of the saturation unit 24. A logic unit 26 with an OR gate 27 and an AND gate 28 recognizes whether such a rounding (exactly rounding up) is actually to be carried out by sending the least significant bit (LSB bit) from the target word field 19DST (see connection 19c) and the cut bits (see connection 19d) to the OR gate 27 whose output 27a, as well as bit no. 31 of the cut low-order bits (see output 19e), is applied to the AND gate 28. The aforementioned IEEE rounding sees a rounding up, that is to say the addition of a “1” in the adder 25, then before (output "1" of AND gate 28, connection 28a) if any bit 19d or 19c is set to 1 and at the same time bit 19e (Bit no. 31 of subfield unit 19) also has the value 1.
Ein solches Aufrunden erfolgt jedoch auch nur dann, wenn keine Unterschreitung (Signal UFL) durch den Prüfblock 23 festgestellt wurde, d.h. der Addierer 25 liegt mit einem Eingang auch am Ausgang 23u des Prüfblocks 23. Ist eine derartige Unterschreitung nicht festgestellt worden und ein Aufrunden durchzuführen, dann addiert der Addierer 25 die kleinstmögliche positive Zahl zum Ergebnis im Ausgang 24a der Saturierungseinheit 24.However, such a rounding up also only takes place if no shortfall (signal UFL) has been determined by the test block 23, i.e. the adder 25 is also connected to the output 23u of the test block 23 with an input. If such an undershoot has not been determined and rounding is performed, the adder 25 adds the smallest possible positive number to the result in the output 24a of the saturation unit 24.
Da ein solches Aufrunden wieder zu einem Zahlenüberlauf (Overflow - OFL) führen kann, ist eine weitere Saturierungseinheit 29 an den Ausgang 25a des Addierers 25 angeschlossen, und diese Saturierungseinheit 29 begrenzt in der gleichen Weise wie zuvor anhand der Saturierungseinheit 24 beschrieben das Ausgangsergebnis (das Zielwort) auf den höchstmöglichen Zahlenwert. Dieser höchstmögliche Zahlenwert wird am Ausgang 29a abgegeben und in einem Register 30 gespeichert. Sollte kein Überlauf erfolgen, so wird die vom Addierer 25 erhaltene Zahl direkt in das Register 30 eingeschrieben. Im Fall eines Überlaufs wird ein entsprechendes OFL-Signal beim Ausgang 29b der Saturierungseinheit 29 abgegeben, und dieses OFL-Signal wird mit dem OFL-Signal am Ausgang 23o des Prüfblocks 23 gemäß einer ODER-Funktion verknüpft, siehe das ODER-Gatter 31 in Fig. 5B, so dass auch im Fall bloß eines Überlaufs ein entsprechendes OFL-Signal am Ausgang 10c der Umwandlungseinheit 10 erhalten wird.Since such a rounding up can again lead to an overflow (OFL), a further saturation unit 29 is connected to the output 25a of the adder 25, and this saturation unit 29 limits the output result in the same way as previously described with the saturation unit 24 (i.e. Target word) to the highest possible numerical value. This highest possible numerical value is output at the output 29a and stored in a register 30. If there is no overflow, the number obtained from the adder 25 is written directly into the register 30. In the event of an overflow, a corresponding OFL signal is output at the output 29b of the saturation unit 29, and this OFL signal is combined with the OFL signal at the output 23o of the test block 23 according to an OR function, see the OR gate 31 in FIG 5B, so that even in the event of an overflow, a corresponding OFL signal is obtained at the output 10c of the conversion unit 10.
Aus Vorstehendem ist ersichtlich, dass im Fall, dass keine Überschreitung oder Unterschreitung der Zahl bei der Rückführung auf das Teilfeld (siehe Teilfeldeinheit 19) erfolgt, die Einheiten 24, 25 und 29 funktionslos bleiben und die Ausgangszahl 19a der Teilfeldeinheit 19 direkt zum Register 30 (als Ausgangs-Spei- chermittel) gelangt und dort gespeichert wird.From the above it can be seen that in the event that the number is not exceeded or undershot when returning to the subfield (see subfield unit 19), the units 24, 25 and 29 remain without function and the output number 19a of the subfield unit 19 goes directly to the register 30 ( as output storage means) and is stored there.
Damit ist die Zahlenformat-Umwandlung und etwaige Rundung abgeschlossen, und das Endergebnis, d.h. die Zielzahl DST, mit der gewünschten Bitbreite (entsprechend der Bitbreite des Zielzahlenfeldes 10DST der Teilfeldeinheit 19) , kann nun, wie vorstehend anhand insbesondere der Fig. 1 und 3 erläutert, als Ergebnis Y wieder in den allgemeinen Datenspeicher 3 einge- schrieben werden. Die Statussignale UFL und OFL werden hingegen in das Statusregister 14 (vgl. Fig. 3) geladen.This completes the number format conversion and any rounding, and the end result, ie the target number DST, with the desired bit width (corresponding to the bit width of the target number field 10DST of the subfield unit 19) can now, as explained above with reference in particular to FIGS. 1 and 3 , as result Y again in general data storage 3 be written. The status signals UFL and OFL, however, are loaded into the status register 14 (see FIG. 3).
Zur Ergänzung soll nun anhand der Fig. 6 und 7 noch kurz die so genannte 2er-Komplement-Darstellung der Binärzahlen als Beispiel erläutert werden, da diese 2er-Komplement-Darstellung den Operationen gemäß Fig. 5 zugrunde gelegt wurde. In Fig. 6 sind dabei mit einem Vorzeichenbit S versehene 4 Bit-Binärzahlen in einer Tabelle veranschaulicht, wobei bei diesem Beispiel der Wertebereich von -8 bis +7 reicht. Die positiven Zahlen sind bei P gezeigt, die negativen bei N. Wie ersichtlich ist dann, wenn das Vorzeichenbit S den Wert „0" hat, die Zahl positiv (wobei auch die Zahl 0 zu den positiven Zahlen hinzugerechnet werden soll) ; ist das Vorzeichenbit S hingegen „1", so ist die Zahl eine negative Zahl N. Bei einem Addieren oder aber Subtrahieren kann nun der Fall eintreten, dass die Zahlenbereichs-Grenzen über- bzw. unterschritten werden, vgl. die Pfeile 40 und 41 in Fig. 6. Beispielsweise kann im Fall einer Addition einer positiven Zahl zu einer positiven Zahl (vgl. Pfeil 40) der Bereich P der positiven Zahlen überschritten werden („Überlauf") , so dass eine negative Zahl „entsteht", da auf das Bitwort „Olli" (für die Zahl +7) in der gezeigten Binärzahlendarstellung die Zahl „1000" folgt, die aber bereits die größte negative Zahl (-8) ist. In ähnlicher Weise kann, wenn eine negative Zahl zu einer negativen Zahl (betragsmäßig) addiert wird (siehe Pfeil 41 in Fig. 6), eine positive Zahl entstehen (nämlich mit einer „0" an der Stelle des Vorzeichenbits S) , so dass sich ein Unterlauf oder eine Unterschreitung des Wertebereichs ergibt.6 and 7, the so-called 2's complement representation of the binary numbers will now be briefly explained as an example, since this 2's complement representation was used as the basis for the operations according to FIG. 5. 6 shows 4-bit binary numbers provided with a sign bit S in a table, the value range in this example ranging from -8 to +7. The positive numbers are shown at P, the negative numbers at N. As can be seen, if the sign bit S has the value "0", the number is positive (the number 0 should also be added to the positive numbers); it is the sign bit S, on the other hand, "1", the number is a negative number N. When adding or subtracting, it can now happen that the number range limits are exceeded or undershot, cf. arrows 40 and 41 in FIG. 6. For example, if a positive number is added to a positive number (see arrow 40), the range P of the positive numbers can be exceeded (“overflow”), so that a negative number “arises” "because the bit word" Olli "(for the number +7) in the binary number representation shown is followed by the number" 1000 ", which is, however, already the largest negative number (-8). Similarly, if a negative number is added to a negative number (in terms of amount) (see arrow 41 in FIG. 6), a positive number can arise (namely with a "0" at the position of the sign bit S), so that an underflow or an undershoot of the value range results.
In Fig. 7 sind ebenfalls mit einem Vorzeichen (wiederum in der 1. ten Spalte der Bits) behaftete 4 Bit-Binärzahlen mit ganzzahligen Anteilen I (I-Integer) und zwei Nachkommastellen F (F- Fraktion) veranschaulicht, wobei sich der Wertebereich dieser Binärzahlen von -2 bis +1,75 erstreckt. Bei Zugrundelegung des vorstehend anhand der Fig. 5 erwähnten IEEE-Rundens würde beispielsweise bei den Zahlen +0,75, +1,5 und +1,75 ein Aufrunden auf +1, +2 bzw. +2 erfolgen, sollten die Nachkommastellen weggeschnitten werden; kein Aufrunden würde jedoch bei der Zahl +0,5 durchgeführt werden. Bei diesem IEEE-Runden wird nämlich die Zahl 0,5 abgerundet, 0,51 wird bereits aufgerundet, ebenfalls wird die Zahl 1,5 aufgerundet, nicht jedoch die Zahl 2,5, jedoch wiederum die Zahl 3,5 usw.In Fig. 7 also signed (again in the 1st column of the bits) 4-bit binary numbers with integer parts I (I integer) and two decimal places F (F fraction) are illustrated, the range of values of which Binary numbers range from -2 to +1.75. Based on the IEEE rounding mentioned above with reference to FIG. 5, the numbers +0.75, +1.5 and +1.75 would be rounded up to +1, +2 and +2 if the decimal places were cut away become; however, no rounding up would be performed at the number +0.5. In this IEEE round, the number 0.5 is rounded down, 0.51 is already rounded up, likewise the number 1.5 is rounded up, but not the number 2.5, but again the number 3.5 etc.
In den Fig. 8 und 9 sind in Form von in Zeilen (1) bis (8) gezeigten, vereinfachten Bitdarstellungen (mit gegenüber Fig. 5 wesentlich kleineren Bitbreiten) Beispiele mit Formatumwandlung und Rundung, einmal mit einem Überlauf (Fig. 8) und einmal mit einer Unterschreitung (Fig. 9), veranschaulicht.8 and 9 in the form of simplified bit representations shown in lines (1) to (8) (with bit widths significantly smaller than in FIG. 5) are examples with format conversion and rounding, once with an overflow (FIG. 8) and once with a shortfall (Fig. 9).
Im Einzelnen zeigt die l.te Zeile in Fig. 8 eine 8 Bit-Quellenzahl SRC, die einen ganzzahligen 4 Bit-Anteil und 4 Bit-Nachkommastellen enthält. Das am weitesten links stehende Bit bei den ganzzahligen Anteilen ist das Vorzeichenbit S. Die in der 8.ten Zeile dargestellte Zielzahl DST besteht dagegen aus 6 Bits, wobei die ersten drei Bits die ganzzahligen Anteile einschließlich des Vorzeichenbits darstellen und die weiteren drei Bits die Nachkommastellen repräsentieren. Der Wert der Quellenzahl SRC beträgt +7,9375, was hier dem größten darstellbaren Wert entspricht .Specifically, the 1st line in FIG. 8 shows an 8-bit source number SRC, which contains an integer 4-bit portion and 4-bit decimal places. The leftmost bit for the integer parts is the sign bit S. The target number DST shown in the 8th line, on the other hand, consists of 6 bits, the first three bits representing the integer parts including the sign bit and the further three bits the decimal places represent. The value of the source number SRC is +7.9375, which corresponds to the largest value that can be represented here.
Gemäß der Zeile (2) wird links vom Vorzeichenbit S eine Erweiterung vorgenommen, wobei dieselbe Anzahl (nämlich sechs) von Bits (hier „0"-Bits) wie die Anzahl der Bits der Zielzahl DST vorangesetzt wird. Gleichzeitig werden genau so viele „0"-Bits (also sechs „0"-Bits) rechts an die Quellenzahl SRC angehängt.According to line (2), an expansion is made to the left of the sign bit S, with the same number (namely six) of bits (here “0” bits) being used as the number of bits of the target number DST "Bits (ie six" 0 "bits) are appended to the right of the source number SRC.
Für die nun erforderliche Verschiebung ist die Differenz zwischen der Anzahl der Nachkommastellen der Quellenzahl SRC und jener der Zielzahl DST zu berechnen (was gemäß Fig. 5 mit der Steuereinheit 17 bewerkstelligt wird) , und diese Differenz beträgt im Beispiel von Fig. 8 „1", d.h. die Bit-Kette wird um eine Stelle nach rechts geschoben, siehe Zeile (3) in Fig. 8; dabei wird auf der linken Seite mit dem Wert des Vorzeichenbits aufgefüllt, d.h. konkret wird hier ein „0"-Bit hinzugefügt. Sodann wird gemäß der Zeile (4) in Fig. 8 über diese Kette eine neue Maske, nun mit bloß sechs Stellen, entsprechend der Anzahl der Bits der Zielzahl DST, gelegt. Dabei ist diese Maske in Fig. 8 durch einen kürzeren Block (im Vergleich zu den Zeilen (1) bis (3)) erkenntlich. Wie ersichtlich wird dadurch die 6-Bit-Zahl in der 4.ten Zeile von Fig. 8 negativ („1"-Bit an der ganz linken Stelle) . Die links davon stehenden neun Bits (einschließlich des Vorzeichenbits der Zielzahl) werden nun auf Gleichheit überprüft, und da sie nicht alle gleich sind, wird eine Unterlauf-/ Überlauf-Bedingung festgestellt, vgl. die Logikeinheit 20 in Fig. 5. Um nun exakt zu bestimmen, ob ein Überlauf oder aber eine Unterschreitung vorliegt, wird das Vorzeichenbit der Quellenzahl SRC herangezogen; dieses Vorzeichenbit hat im vorliegenden Fall den Wert „0", so dass ein Überlauf (OFL) festgestellt wird. Hätte das Vorzeichenbit der Quellenzahl SRC den Wert „1", würde ein Unterlauf festgestellt werden. Mit Hilfe der Saturierungseinheit 24 (Fig. 5) erhält nun das Zielwort DST den höchsten positiven Wert, wie aus der 5.ten Zeile in Fig. 8 ersichtlich ist, wobei dieser Wert nun +3,875 beträgt. Die Rundungseinheit 15 (siehe Fig. 5) erkennt bei R in Fig. 8 die Notwendigkeit eines Aufrundens, wobei die Rundungseinheit 15 die sieben am weitesten rechts stehenden Bits hierfür heranzieht. Demgemäß wird die Zielzahl DST um den Wert 0,125 (der mit drei Bits kleinste darstellbare Wert) inkrementiert, wobei dieser Additionswert in der 6.ten Zeile von Fig. 8 dargestellt ist, hingegen der höchste positive Wert, der von der Saturierungseinheit 24 erhalten wird, in der 5.ten Zeile dargestellt ist.For the shift now required, the difference between the number of decimal places of the source number SRC and that of the target number DST is to be calculated (which is accomplished with the control unit 17 according to FIG. 5), and this difference is "1" in the example of FIG. 8. , ie the bit chain is shifted to the right by one position, see line (3) in FIG. 8, the value of the sign bit is padded on the left-hand side, ie specifically a “0” bit is added here. Then, according to line (4) in FIG. 8, a new mask is placed over this chain, now with only six digits, corresponding to the number of bits of the target number DST. This mask is recognizable in FIG. 8 by a shorter block (compared to lines (1) to (3)). As can be seen, the 6-bit number in the fourth line of FIG. 8 thereby becomes negative (“1” bit on the leftmost one Job) . The nine bits to the left of it (including the sign bit of the target number) are now checked for equality, and since they are not all the same, an underflow / overflow condition is determined, cf. the logic unit 20 in FIG. 5. In order to determine exactly whether there is an overflow or an underflow, the sign bit of the source number SRC is used; in the present case, this sign bit has the value “0”, so that an overflow (OFL) is determined. If the sign bit of the source number SRC had the value “1”, an underflow would be determined. With the help of the saturation unit 24 (FIG. 5), the target word DST now receives the highest positive value, as can be seen from the fifth line in FIG. 8, this value now being +3.875. The rounding unit 15 (see FIG. 5) recognizes the need for rounding up at R in FIG. 8, the rounding unit 15 using the seven right-most bits for this. Accordingly, the target number DST is incremented by the value 0.125 (the smallest representable value with three bits), this addition value being shown in the 6th line of FIG. 8, whereas the highest positive value obtained from the saturation unit 24 is shown in the 5th line.
Bei dieser Addition der Zahlen ergibt sich neuerlich eine negative Zahl, vgl. die 6.te Zeile in Fig. 8, was von der zweiten Saturierungseinheit 29 (siehe Fig. 5) erkannt wird. Die Zielzahl wird daher erneut auf den größten positiven Wert gestellt, was in der 7. ten Zeile von Fig. 8 gezeigt ist, und die so erhaltene Zahl wird an das Register 30 (siehe Fig. 5) als endgültige Zielzahl DST weitergegeben, wie in der 8. ten Zeile von Fig. 8 veranschaulicht ist. Gleichzeitig wird auch ein entsprechendes Überlauf-Signal OFL an das Statusregister 14 (siehe Fig. 3) abgegeben.This addition of the numbers results in a negative number again, cf. the 6th line in FIG. 8, which is recognized by the second saturation unit 29 (see FIG. 5). The target number is therefore set again to the greatest positive value, which is shown in the 7th line of FIG. 8, and the number obtained in this way is passed on to the register 30 (see FIG. 5) as the final target number DST, as in FIG the 8th line of FIG. 8 is illustrated. At the same time, a corresponding overflow signal OFL is also output to the status register 14 (see FIG. 3).
Beim Beispiel in Fig. 9 ist die Quellenzahl SRC wiederum eine 8 Bit-Zahl mit einem Vorzeichenbit S und vier Bit-Nachkommastellen, wobei die dargestellte Quellenzahl SRC den (dem Betrag nach) größten negativen Wert, nämlich -4,000, hat. Die Zielzahl soll wieder sechs Bitstellen haben, und entsprechend dieser Bitanzahl werden gemäß der 2. ten Zeile von Fig. 9 auf der linken Seite die Vorzeichenbits mit sechs „1"-Bits erweitert, hingegen werden die Bits auf der rechten Seite mit „0" aufgefüllt. Danach erfolgt wiederum - siehe die 3.te Zeile von Fig. 9 - eine Verschiebung der Kette um eine Stelle nach rechts, wobei neuerlich auf der linken Seite ein „1"-Bit eingefügt wird. Beim Ändern der Maske, gemäß der 4. ten Zeile in Fig. 9, um die Bitzahl auf sechs Bits, gemäß der Anzahl der Bits der Zielzahl DST, zu reduzieren, wird erkennbar, dass die Zahl nunmehr einen positiven Wert angenommen hat (das linke Bit, das Vorzeichenbit, hat den Wert „0"), und weiters wird bei der Überlauf-/Unterlauf-Prüfung auch festgestellt, dass die neun Bits auf der linken Seite nicht gleich sind. Daher wird, da dies als Unterlauf erkannt wird, die Zahl auf den größten negativen Wert gesetzt, vgl. die 5.te Zeile in Fig. 9. (Die Überprüfung auf Überlauf bzw. Unterlauf (OFL/UFL) ergibt in diesem Beispiel, dass ein Unterlauf oder eine Unterschreitung vorliegt, da das Vorzeichenbit S der Quellenzahl SRC den Wert „1" hat. )In the example in FIG. 9, the source number SRC is again an 8 bit number with a sign bit S and four bit decimal places, the source number SRC shown having the largest negative value (in terms of amount), namely -4,000. The target number should again have six bit positions, and according to this number of bits, the sign bits are expanded with six “1” bits on the left-hand side, according to the second line of FIG the bits on the right-hand side are filled with "0". Then, again - see the 3rd line of FIG. 9 - the chain is shifted by one position to the right, with a "1" bit again on the left-hand side is inserted. When changing the mask, according to the 4th line in FIG. 9, in order to reduce the number of bits to six bits, according to the number of bits of the target number DST, it can be seen that the number has now taken a positive value (the left one Bit, the sign bit has the value "0"), and further the overflow / underflow check also determines that the nine bits on the left are not the same. Therefore, since this is recognized as an underflow, the Number set to the largest negative value, see the 5th line in Fig. 9. (The check for overflow or underflow (OFL / UFL) shows in this example that there is an underflow or an underflow because the sign bit S the source number SRC has the value "1".)
Bei einem Unterlauf ist es dem Addierer 25 aber nicht möglich, ein etwaiges Rundungsergebnis zur Zielzahl zu addieren, d.h. die Zahl bleibt am Ausgang des Addierers 25 gleich, vgl. die 6.te Zeile in Fig. 9. Die weitere Saturierungseinheit 29 erkennt nun keinen Überlauf oder aber Unterlauf (7.te Zeile in Fig. 9) und gibt den Zahlenwert unverändert an das nachfolgende Register 30 weiter, vgl. die 8. te Zeile in Fig. 9.In the event of an underflow, however, the adder 25 is not able to add any rounding result to the target number, i.e. the number remains the same at the output of the adder 25, cf. the 6th line in FIG. 9. The further saturation unit 29 now recognizes no overflow or underflow (7th line in FIG. 9) and forwards the numerical value unchanged to the following register 30, cf. the 8th line in Fig. 9.
Die insbesondere anhand der Fig. 5 beschriebene Konfiguration kann in der Praxis bevorzugt in kombinatorischer Logik (also insbesondere mit UND- und ODER-Gattern sowie mit Multiplexer- Ketten zum Verschieben etc.) realisiert werden, ohne dass speichernde Elemente (Register) dazwischen vorgesehen werden. Auf diese Weise wird erreicht, dass im selben Taktzyklus, in dem die Rechenoperationen durchgeführt werden, auch die Formatanpassungen und etwaigen Rundungs-Operationen erfolgen können. Falls ganz kurze Taktzeiten zu realisieren sind, können auch wie bereits erwähnt Speicherelemente (Register) zwischen einzelnen Einheiten vorgesehen werden.The configuration described in particular with reference to FIG. 5 can in practice preferably be implemented in combinatorial logic (in particular with AND and OR gates as well as with multiplexer chains for shifting etc.) without storing elements (registers) being provided in between , In this way it is achieved that in the same clock cycle in which the arithmetic operations are carried out, the format adjustments and any rounding operations can also take place. If very short cycle times are to be realized, memory elements (registers) can also be provided between individual units, as already mentioned.
Vorstehend wurde in Zusammenhang mit der Rundung als Beispiel das IEEE-Runden erläutert. Selbstverständlich sind jedoch im Rahmen der Erfindung auch andere Arten von Rundungen denkbar, wie etwa ein kaufmännisches Runden, ein bloßes Wegschneiden der hinteren Stellen und andere bekannte Rundungsarten. Von Bedeutung ist hier nur, dass die entsprechende Logik Hardware-mäßig realisiert ist, anstatt eine Programmierung für das Rechenwerk 4 vorzusehen. IEEE rounding was explained above in connection with rounding as an example. Of course, other types of curves are also conceivable within the scope of the invention, such as commercial rounding, simply cutting away the back digits and other well-known types of rounding. It is only important here that the corresponding logic is implemented in terms of hardware, instead of providing programming for the arithmetic logic unit 4.

Claims

Patentansprüche : Claims:
1. Digitale Signalverarbeitungseinrichtung mit Eingangs-Spei- chermitteln (3; 5), mit einem daran angeschlossenen Rechenwerk (4), das einen Datenpfad (9) definiert und zumindest eine arithmetische Einheit (6) enthält sowie einen Steuereingang (2a) zur Vorgabe von Rechenoperationen aufweist, sowie mit Ausgangs-Speichermitteln (8), wobei im Datenpfad (9) zwischen der arithmetischen Einheit (6; 7) und den Ausgangs-Speichermitteln (8) eine Zahlenformat-Umwandlungseinheit (10) mit einer Verschiebeeinheit (17) enthalten ist, dadurch gekennzeichnet, dass der Zahlenformat-Umwandlungseinheit (10) eine Zahlenformat-Vorgabeeinheit (11) sowie eine damit verbundene, auf Basis der Zahlenformat- Vorgabe erforderliche Verschiebeoperationen berechnende Steuereinheit (17') zugeordnet sind, wobei Formatierungsoperationen automatisch aus Eingangs- und Ausgangsformat-Informationen errechnet und entsprechende Befehle an die Verschiebeeinheit (17) angelegt werden.1. Digital signal processing device with input storage means (3; 5), with an arithmetic unit (4) connected to it, which defines a data path (9) and contains at least one arithmetic unit (6) and a control input (2a) for specifying Has arithmetic operations, and with output storage means (8), the data path (9) between the arithmetic unit (6; 7) and the output storage means (8) containing a number format conversion unit (10) with a shifting unit (17) , characterized in that the number format conversion unit (10) is assigned a number format specification unit (11) and a related control unit (17 ') calculating shift operations required on the basis of the number format specification, formatting operations being automatically carried out from input and output format Information is calculated and corresponding commands are applied to the displacement unit (17).
2. Digitale Signalverarbeitungseinrichtung nach Anspruch 1, dadurch gekennzeichnet, dass die Steuereinheit (17') durch einen Subtrahierer gebildet ist.2. Digital signal processing device according to claim 1, characterized in that the control unit (17 ') is formed by a subtractor.
3. Digitale Signalverarbeitungseinrichtung nach Anspruch 1 oder 2, dadurch gekennzeichnet, dass die Steuereinheit (17') in die Verschiebeeinheit (17) integriert ist.3. Digital signal processing device according to claim 1 or 2, characterized in that the control unit (17 ') is integrated in the displacement unit (17).
4. Digitale Signalverarbeitungseinrichtung nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, dass die Zahlenformat- Vorgabeeinheit (11) in Form eines Registers ausgebildet ist.4. Digital signal processing device according to one of claims 1 to 3, characterized in that the number format specification unit (11) is designed in the form of a register.
5. Digitale Signalverarbeitungseinrichtung nach einem der Ansprüche 1 bis 4, dadurch gekennzeichnet, dass die Zahlenformat- Umwandlungseinheit (10) eine die Breite einer Eingangszahl (SRC) erweiternde Erweiterungseinheit (16) aufweist, wobei die mit dieser Erweiterungseinheit (16) verbundene Verschiebeeinheit (17) die Bits der erweiterten Eingangszahl um einen vorgegebenen Betrag verschiebt.5. Digital signal processing device according to one of claims 1 to 4, characterized in that the number format conversion unit (10) has a width of an input number (SRC) expanding unit (16), the displacement unit (16) connected to this extension unit (16) ) shifts the bits of the extended input number by a predetermined amount.
6. Digitale Signalverarbeitungseinrichtung nach einem der An- sprüche 1 bis 5, dadurch gekennzeichnet, dass an die Verschiebeeinheit (17) eine Teilfeldeinheit (19) angeschlossen ist.6. Digital signal processing device according to one of the Claims 1 to 5, characterized in that a subfield unit (19) is connected to the displacement unit (17).
7. Digitale Signalverarbeitungseinrichtung nach Anspruch 6, dadurch gekennzeichnet, dass die Teilfeldeinheit (19) ein Vorzeichenfeld (19SIGN) aufweist, an das eine Logikeinheit (20) angeschlossen ist, die erkennt, ob das Vorzeichenfeld (19SIGN) nur „0" (Nullen) oder nur „1" (Einsen) enthält, oder ob verschiedene Vorzeichen-Bitpositionen vorliegen, wobei der Zustand „nur Nullen" einem Überlauf (OFL) und der Zustand „nur Einsen" einer Unterschreitung (UFL) entspricht.7. Digital signal processing device according to claim 6, characterized in that the subfield unit (19) has a sign field (19SIGN) to which a logic unit (20) is connected, which detects whether the sign field (19SIGN) only "0" (zeros) or contains only "1" (ones), or whether there are different sign bit positions, the state "only zeros" corresponding to an overflow (OFL) and the state "only ones" corresponding to an undershoot (UFL).
8. Digitale Signalverarbeitungseinrichtung nach Anspruch 7, dadurch gekennzeichnet, dass die Logikeinheit (20) ein ODER-Gatter8. Digital signal processing device according to claim 7, characterized in that the logic unit (20) is an OR gate
(21) zum Erkennen des Zustandes „nur Nullen" und ein UND-Gatter(21) for recognizing the state "only zeros" and an AND gate
(22) zum Erkennen des Zustandes „nur Einsen" aufweist.(22) to recognize the state "only ones".
9. Digitale Signalverarbeitungseinrichtung nach Anspruch 7 oder 8, dadurch gekennzeichnet, dass an die Logikeinheit (20) sowie an die Teilfeldeinheit (19) eine Saturierungseinheit (24) angeschlossen ist, die bei einem Überlauf (OFL) die von der Teilfeldeinheit (19) abgegebene Zahl auf die größte positive Zahl und bei einer Unterschreitung (UFL) auf die größte negative Zahl setzt .9. Digital signal processing device according to claim 7 or 8, characterized in that a saturation unit (24) is connected to the logic unit (20) and to the sub-field unit (19), which is emitted by the sub-field unit (19) in the event of an overflow (OFL) Number sets to the largest positive number and, if the value is undershot (UFL), to the largest negative number.
10. Digitale Signalverarbeitungseinrichtung nach einem der Ansprüche 7 bis 9, dadurch gekennzeichnet, dass die Zahlenformat- Umwandlungseinheit (10) mit einer Rundungseinheit (15) kombiniert ist, die einen Addierer (25) enthält, der über eine Logikeinheit (26) an die Teilfeldeinheit (19) angeschlossen ist.10. Digital signal processing device according to one of claims 7 to 9, characterized in that the number format conversion unit (10) is combined with a rounding unit (15) which contains an adder (25) via a logic unit (26) to the subfield unit (19) is connected.
11. Digitale Signalverarbeitungseinrichtung nach Anspruch 10 und Anspruch 9, dadurch gekennzeichnet, dass an die Rundungseinheit (15) und an die Saturierungseinheit (24) eine weitere Saturierungseinheit (29) angeschlossen ist, die bei einem auf ein Aufrunden erfolgenden Überlauf die Ergebniszahl auf die größte positive Zahl setzt und zugleich ein Überlauf-Signal (OFL) abgibt. 11. A digital signal processing device according to claim 10 and claim 9, characterized in that a further saturation unit (29) is connected to the rounding unit (15) and to the saturation unit (24), which results in the number of results being the largest in the event of an overflow occurring on a rounding sets a positive number and at the same time emits an overflow signal (OFL).
EP04761027A 2003-09-08 2004-09-07 Digital signal processing device Withdrawn EP1665029A2 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
AT0140603A AT413895B (en) 2003-09-08 2003-09-08 DIGITAL SIGNAL PROCESSING DEVICE
PCT/AT2004/000305 WO2005024542A2 (en) 2003-09-08 2004-09-07 Digital signal processing device

Publications (1)

Publication Number Publication Date
EP1665029A2 true EP1665029A2 (en) 2006-06-07

Family

ID=34229714

Family Applications (1)

Application Number Title Priority Date Filing Date
EP04761027A Withdrawn EP1665029A2 (en) 2003-09-08 2004-09-07 Digital signal processing device

Country Status (5)

Country Link
US (1) US20070033152A1 (en)
EP (1) EP1665029A2 (en)
AT (1) AT413895B (en)
CA (1) CA2537549A1 (en)
WO (1) WO2005024542A2 (en)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7515456B2 (en) * 2006-09-11 2009-04-07 Infineon Technologies Ag Memory circuit, a dynamic random access memory, a system comprising a memory and a floating point unit and a method for storing digital data
US10380481B2 (en) 2015-10-08 2019-08-13 Via Alliance Semiconductor Co., Ltd. Neural network unit that performs concurrent LSTM cell calculations
US11226840B2 (en) 2015-10-08 2022-01-18 Shanghai Zhaoxin Semiconductor Co., Ltd. Neural network unit that interrupts processing core upon condition
US10228911B2 (en) * 2015-10-08 2019-03-12 Via Alliance Semiconductor Co., Ltd. Apparatus employing user-specified binary point fixed point arithmetic
US11221872B2 (en) 2015-10-08 2022-01-11 Shanghai Zhaoxin Semiconductor Co., Ltd. Neural network unit that interrupts processing core upon condition
US10725934B2 (en) 2015-10-08 2020-07-28 Shanghai Zhaoxin Semiconductor Co., Ltd. Processor with selective data storage (of accelerator) operable as either victim cache data storage or accelerator memory and having victim cache tags in lower level cache wherein evicted cache line is stored in said data storage when said data storage is in a first mode and said cache line is stored in system memory rather then said data store when said data storage is in a second mode
CN106485321B (en) * 2015-10-08 2019-02-12 上海兆芯集成电路有限公司 Processor with framework neural network execution unit
US10664751B2 (en) 2016-12-01 2020-05-26 Via Alliance Semiconductor Co., Ltd. Processor with memory array operable as either cache memory or neural network unit memory
US11029949B2 (en) 2015-10-08 2021-06-08 Shanghai Zhaoxin Semiconductor Co., Ltd. Neural network unit
US11216720B2 (en) 2015-10-08 2022-01-04 Shanghai Zhaoxin Semiconductor Co., Ltd. Neural network unit that manages power consumption based on memory accesses per period
US10474627B2 (en) 2015-10-08 2019-11-12 Via Alliance Semiconductor Co., Ltd. Neural network unit with neural memory and array of neural processing units that collectively shift row of data received from neural memory
US10776690B2 (en) * 2015-10-08 2020-09-15 Via Alliance Semiconductor Co., Ltd. Neural network unit with plurality of selectable output functions
US10423876B2 (en) 2016-12-01 2019-09-24 Via Alliance Semiconductor Co., Ltd. Processor with memory array operable as either victim cache or neural network unit memory
US10430706B2 (en) 2016-12-01 2019-10-01 Via Alliance Semiconductor Co., Ltd. Processor with memory array operable as either last level cache slice or neural network unit memory
US10515302B2 (en) 2016-12-08 2019-12-24 Via Alliance Semiconductor Co., Ltd. Neural network unit with mixed data and weight size computation capability
US10586148B2 (en) 2016-12-31 2020-03-10 Via Alliance Semiconductor Co., Ltd. Neural network unit with re-shapeable memory
US10565494B2 (en) 2016-12-31 2020-02-18 Via Alliance Semiconductor Co., Ltd. Neural network unit with segmentable array width rotator
US10140574B2 (en) 2016-12-31 2018-11-27 Via Alliance Semiconductor Co., Ltd Neural network unit with segmentable array width rotator and re-shapeable weight memory to match segment width to provide common weights to multiple rotator segments
US10565492B2 (en) 2016-12-31 2020-02-18 Via Alliance Semiconductor Co., Ltd. Neural network unit with segmentable array width rotator

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4041461A (en) * 1975-07-25 1977-08-09 International Business Machines Corporation Signal analyzer system
US4876660A (en) * 1987-03-20 1989-10-24 Bipolar Integrated Technology, Inc. Fixed-point multiplier-accumulator architecture
JPH07109975B2 (en) * 1989-10-02 1995-11-22 富士ゼロックス株式会社 Digital filter
US5666300A (en) * 1994-12-22 1997-09-09 Motorola, Inc. Power reduction in a data processing system using pipeline registers and method therefor
US5764549A (en) * 1996-04-29 1998-06-09 International Business Machines Corporation Fast floating point result alignment apparatus
US5930159A (en) * 1996-10-17 1999-07-27 Samsung Electronics Co., Ltd Right-shifting an integer operand and rounding a fractional intermediate result to obtain a rounded integer result
US5844827A (en) * 1996-10-17 1998-12-01 Samsung Electronics Co., Ltd. Arithmetic shifter that performs multiply/divide by two to the nth power for positive and negative N
US5745393A (en) * 1996-10-17 1998-04-28 Samsung Electronics Company, Ltd. Left-shifting an integer operand and providing a clamped integer result
KR100236533B1 (en) * 1997-01-16 2000-01-15 윤종용 Digital signal processor
US6317770B1 (en) * 1997-08-30 2001-11-13 Lg Electronics Inc. High speed digital signal processor
US6289365B1 (en) * 1997-12-09 2001-09-11 Sun Microsystems, Inc. System and method for floating-point computation
US6535900B1 (en) * 1998-09-07 2003-03-18 Dsp Group Ltd. Accumulation saturation by means of feedback
KR100325430B1 (en) * 1999-10-11 2002-02-25 윤종용 Data processing apparatus and method for performing different word-length arithmetic operations
US6829627B2 (en) * 2001-01-18 2004-12-07 International Business Machines Corporation Floating point unit for multiple data architectures

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See references of WO2005024542A2 *

Also Published As

Publication number Publication date
ATA14062003A (en) 2005-10-15
AT413895B (en) 2006-07-15
WO2005024542A3 (en) 2005-05-26
WO2005024542A2 (en) 2005-03-17
CA2537549A1 (en) 2005-03-17
US20070033152A1 (en) 2007-02-08

Similar Documents

Publication Publication Date Title
AT413895B (en) DIGITAL SIGNAL PROCESSING DEVICE
DE2616717C2 (en) Digital adder
DE4243374C2 (en) Rounding facility for a floating point number and method
DE2246968C2 (en) Device for multiplying two floating point numbers
DE4302898A1 (en) Arithmetic logic unit with accumulator function - has two memories and counter with selection to reduce delay in processing
DE2658248C2 (en)
DE1268886B (en) Binary series adder
DE2712224A1 (en) DATA PROCESSING SYSTEM
DE1236834B (en) Computing device
DE1162111B (en) Floating point arithmetic facility
DE2626432A1 (en) ARITHMETIC UNIT FOR AUTOMATIC CALCULATING DEVICES
DE2814078A1 (en) ADDING CONNECTION WITH TEMPORARY INTERMEDIATE STORAGE OF THE TRANSFER
DE2816711A1 (en) DIVISION FACILITY WITH TRANSFER RESCUE ADDING PLANT AND NON-EXECUTING FORESIGHT
DE3507584C2 (en)
EP0344347B1 (en) Digital signal processing unit
DE2405858A1 (en) NORMALIZING DISPLACEMENT COUNTER NETWORK
DE2758130A1 (en) BINARY AND DECIMAL HIGH SPEED ADDERS
DE2364865C2 (en) Circuit arrangement for the formation of extended addresses in a digital computer system
DE3447634C2 (en)
DE68927398T2 (en) Digital division circuit with an N / 2-bit subtractor for N subtractions
DE1499286B2 (en) DATA PROCESSING SYSTEM
EP0489952B1 (en) Circuit device for digital bit-serial signal processing
DE10329608A1 (en) Reduction of rounding errors when processing digital image data
DE10139099C2 (en) Carry ripple adder
DE1549485A1 (en) Arrangement for division of binary operands

Legal Events

Date Code Title Description
PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

17P Request for examination filed

Effective date: 20060302

AK Designated contracting states

Kind code of ref document: A2

Designated state(s): AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IT LI LU MC NL PL PT RO SE SI SK TR

17Q First examination report despatched

Effective date: 20060714

RAP1 Party data changed (applicant data changed or rights of an application transferred)

Owner name: ON DEMAND MICROELECTRONICS AG

DAX Request for extension of the european patent (deleted)
GRAP Despatch of communication of intention to grant a patent

Free format text: ORIGINAL CODE: EPIDOSNIGR1

RIC1 Information provided on ipc code assigned before grant

Ipc: G06F 7/499 20060101AFI20071023BHEP

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE APPLICATION IS DEEMED TO BE WITHDRAWN

18D Application deemed to be withdrawn

Effective date: 20080326