DE4442958C2 - Method and circuit arrangement for performing multi-stage butterfly operations - Google Patents

Method and circuit arrangement for performing multi-stage butterfly operations

Info

Publication number
DE4442958C2
DE4442958C2 DE19944442958 DE4442958A DE4442958C2 DE 4442958 C2 DE4442958 C2 DE 4442958C2 DE 19944442958 DE19944442958 DE 19944442958 DE 4442958 A DE4442958 A DE 4442958A DE 4442958 C2 DE4442958 C2 DE 4442958C2
Authority
DE
Germany
Prior art keywords
arithmetic unit
stages
butterfly
transformation
stage
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.)
Expired - Fee Related
Application number
DE19944442958
Other languages
German (de)
Other versions
DE4442958A1 (en
Inventor
Sven Fiedrich
Klaus Grueger
Gerriet Mueller
Ulrich Schneider
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.)
Sci Worx GmbH
Original Assignee
SICAN 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 SICAN GmbH filed Critical SICAN GmbH
Priority to DE19944442958 priority Critical patent/DE4442958C2/en
Priority to US08/565,848 priority patent/US5831881A/en
Publication of DE4442958A1 publication Critical patent/DE4442958A1/en
Application granted granted Critical
Publication of DE4442958C2 publication Critical patent/DE4442958C2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • G06F17/147Discrete orthonormal transforms, e.g. discrete cosine transform, discrete sine transform, and variations therefrom, e.g. modified discrete cosine transform, integer transforms approximating the discrete cosine transform
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • G06F17/141Discrete Fourier transforms
    • G06F17/142Fast Fourier transforms, e.g. using a Cooley-Tukey type algorithm

Abstract

Bei einem Verfahren zur Durchführung von mehrstufigen Transformationen mittels Butterfly-Operationen werden aufeinanderfolgende Stufen der Transformation in einem gemeinsamen Rechenwerk zur Durchführung von Butterfly-Operationen im Zeitmultiplex berechnet, wobei die Berechnungsergebnisse nach der Berechnung einer Stufe permutiert, über eine Verzögerungsleitung in das Rechenwerk zurückgekoppelt und einer weiteren Butterfly-Operation unterzogen werden, wobei das Rechenwerk für die Teilberechnungen der einzelnen Stufen gemeinsam genutzt wird und die Teilberechnungen der Stufen alterniernd ausgeführt werden, und dass die verbleibenden Stufen der Transformation in mindestens einem weiteren Rechenwerk ohne Zeitmultiplex berechnet werden.In a method for performing multi-stage transformations using butterfly operations, successive stages of the transformation are calculated in a common arithmetic unit for performing butterfly operations in time-division multiplex, the calculation results permuting after the calculation of one stage, fed back into the arithmetic unit via a delay line and one be subjected to a further butterfly operation, the arithmetic unit being used jointly for the partial calculations of the individual stages and the partial calculations of the stages being carried out alternately, and the remaining stages of the transformation being calculated in at least one further arithmetic unit without time multiplexing.

Description

Die Erfindung betrifft ein Verfahren und eine Schaltungsanordnung zur Durchführung mehrstufiger Transformationen mittels Butterfly-Operationen, wie sie z. B. bei der Trans­ formationscodierung und -decodierung, insbesondere für die Diskrete-Cosinus- Transformation (DCT) verwendet werden.The invention relates to a method and a circuit arrangement for Implementation of multi-level transformations using butterfly operations, such as those B. in the Trans formation coding and decoding, in particular for the discrete cosine Transformation (DCT) can be used.

Technisches GebietTechnical field

Verschiedene Blocktransformationsalgorithmen lassen sich besonders effek­ tiv berechnen, wenn die Berechnung mehrstufig ausgeführt wird. Der Signalfluß­ graph wird dafür in kleinere, möglichst ähnliche Teilgraphen mit je zwei Ein- und Ausgängen zerlegt, die meist die Form eines Schmetterlings haben und daher Butterfly genannt werden. Üblich sind dabei Butterflies mit jeweils zwei Ein- und Ausgängen. Als interne Rechenoperationen für die Butterflies werden üblicher­ weise Additionen, Subtraktionen und die vergleichsweise aufwendigen Multiplika­ tionen benötigt. Im Signalflußgraphen werden dabei in jeder Stufe mehrere Butterflies parallel benötigt. Beispiele dafür sind die Fast-Fourier-Transformation (FFT), die ausführlich in "Digital Signal Processing" von A. V. Oppenheim und R. W. Schäfer, Engelwood Cliffs: Prentice Hall, 1975, beschrieben ist, und die Diskrete-Cosinus-Transformation (DCT) und die inverse DCT (IDCT). Weitere Ausführungen finden sich auch in:
[N. Ahmed, T. Natarajan & K. R. Rao: "Discrete Cosine Transform", IEEE transactions on Computer, Vol. C-23, S. 90-93, Jan. 1974],
[B. G. Lee: "A New Algorithm to Compute the Discrete Cosine Transform", IEEE transactions on Acoustics, Speed and Signal Processing, Vol. 32, No. 6, S. 1243- 1245, Dec. 1984], y
[A. Artieri, F. Jutand: "Procédé de détermination de transformée en cosinus discrète", Brevet No. 89 02347, Feb. 1989], [C. Loeffler, A. Lightenberg, G. S. Moschytz: "Practical Fast 1-D DCT Algorithmus with 11 Multiplications", IEEE, S. 988-991, 1989],
[M. Vetterli, H. Nussbaumer: "Simple FFT and DCT Algorithms with Reduced Number of Operations", Signal Processing, Vol. 6, S. 267-278, Aug. 1984].
Various block transformation algorithms can be calculated particularly effectively if the calculation is carried out in several stages. The signal flow graph is broken down into smaller, possibly similar subgraphs with two inputs and two outputs, which mostly have the shape of a butterfly and are therefore called butterfly. Butterflies with two entrances and two exits are common. Additions, subtractions and the comparatively complex multiplications are usually required as internal arithmetic operations for the butterflies. In the signal flow graph, several butterflies are required in parallel in each stage. Examples of this are the Fast Fourier Transform (FFT), which is described in detail in "Digital Signal Processing" by AV Oppenheim and RW Schäfer, Engelwood Cliffs: Prentice Hall, 1975, and the Discrete Cosine Transform (DCT) and the inverse DCT (IDCT). Further versions can also be found in:
[N. Ahmed, T. Natarajan & KR Rao: "Discrete Cosine Transform", IEEE transactions on Computer, Vol. C-23, pp. 90-93, Jan. 1974],
[BG Lee: "A New Algorithm to Compute the Discrete Cosine Transform", IEEE transactions on Acoustics, Speed and Signal Processing, Vol. 32, No. 6, pp. 1243-1245, Dec. 1984], y
[A. Artieri, F. Jutand: "Procédé de détermination de transformée en cosinus discrète", certification no. 89 02347, Feb. 1989], [C. Loeffler, A. Lightenberg, GS Moschytz: "Practical Fast 1-D DCT Algorithm with 11 Multiplications", IEEE, pp. 988-991, 1989],
[M. Vetterli, H. Nussbaumer: "Simple FFT and DCT Algorithms with Reduced Number of Operations", Signal Processing, Vol. 6, pp. 267-278, Aug. 1984].

DCT und IDCT werden häufig für die Datenkompression von Videosignalen eingesetzt. Die Verfahren sind in den Standards JPEG, MPEG, "Information Technology - Coding of Moving Pictures and Associated Audio for Digital Storage Media up to about 1.5 Mbit/s", Draft International Standard ISO/IEC DIS 11172, 1992, definiert. Dabei wird eine zweidimensionale Form der DCT eingesetzt, die in zwei eindimensionale DCT-Transformationen mit einer Länge von 8 separierbar ist.DCT and IDCT are commonly used for data compression of video signals used. The procedures are in the standards JPEG, MPEG, "Information Technology - Coding of Moving Pictures and Associated Audio for Digital Storage Media up to about 1.5 Mbit / s ", Draft International Standard ISO / IEC DIS 11172, 1992. A two-dimensional form of the DCT is used, which in two one-dimensional DCT transformations with a length of 8 separable is.

Das Problem ist auch in "Video Codec for Audiovisual Services at p × 64 kbit/s, Recommendation H. 261 ", The International Telegraph and Telephone Consultative Committee (CCITT), 1990 näher definiert.The problem is also in "Video Codec for Audiovisual Services at p × 64 kbit / s, Recommendation H. 261 ", The International Telegraph and Telephone Consultative Committee (CCITT), 1990 further defined.

Zur Implementation von Signalflußgraphen für Blocktransformations­ algorithmen stehen im Prinzip mehrere Möglichkeiten zur Verfügung. Der gesamte Signalflußgraph kann direkt in Hardware überführt werden, so daß jede Multiplika­ tion einen festverdrahteten Multiplizierer, jede Addition einen Addierer und jede Subtraktion einen Subtrahierer erfordert. Diese Vorgehensweise führt zwar zu extrem hohen Durchsatzraten, ist jedoch mit vergleichsweise hohem Aufwand verbunden. Das andere Extrem liegt darin, alle Operationen nacheinander in einer programmierbaren Einheit im einfachen Zeitmultiplex durchzuführen. Ein Beispiel ist auf Seite 265 in dem Datenhandbuch von LSI-Logic ausgeführt (Implementing Fast Fourier Transform Systems with the L64280/81 Chipset. Digital Signal Processing (DSP) Databook. Milpitas: LSI Logic, June 1990, S. 258-268). Dieses Vorgehen ist zwar sehr flexibel und liefert hohe Auslastungsraten, führt jedoch zu niedrigen Durchsatzraten.In principle, there are several options for implementing signal flow graphs for block transformation algorithms. The entire signal flow graph can be converted directly into hardware, so that each multiplication requires a hard-wired multiplier, each addition an adder and each subtraction a subtractor. Although this procedure leads to extremely high throughput rates, it is comparatively expensive. The other extreme is to perform all operations one after the other in a programmable unit using simple time division multiplexing. An example is given on page 265 of the LSI-Logic data manual (Implementing Fast Fourier Transform Systems with the L64280 / 81 Chipset. Digital Signal Processing (DSP) Databook. Milpitas: LSI Logic, June 1990 , pp. 258-268). This procedure is very flexible and delivers high utilization rates, but leads to low throughput rates.

Häufig wird hierbei die Möglichkeit genutzt, die Anzahl der reali­ sierten Butterflies über einen Zeit-Multiplexbetrieb der gewünschten Durchsatzrate anzupassen. Dabei ist in der Regel jeder Verarbeitungsstufe eine Butterfly zuge­ ordnet (LSI-Logic, Databook, Seite 261, Figure 1 und 2). Die Zuordnung kann bei­ spielsweise über einen Projektionsalgorithmus erfolgen. Für den Betrieb werden zusätzlich zu den eigentlichen Butterflies Permutationselemente benötigt, um die Daten in die jeweils vorgegebene, in jeder Stufe unterschiedliche zeitliche Reihen­ folge zu bringen.Often, the possibility is used to adjust the number of butterflies realized via a time multiplex operation to the desired throughput rate. A butterfly is usually assigned to each processing level (LSI-Logic, Databook, page 261, Figure 1 and 2 ). The assignment can take place, for example, via a projection algorithm. In addition to the actual Butterflies, permutation elements are required for operation in order to bring the data into the predefined, chronological order in each stage.

In den meisten Fällen wird jedoch bei der Konzeption von Verarbeitungs­ komponenten ein einfaches Systemkonzept angestrebt, indem im Mittel mit jedem Taktschritt ein Datum verarbeitet wird. Jeder Taktschritt kann dabei ggf. auch aus mehreren Teiltakten bestehen. Auch synchron getaktete Zwischenspeicher, die eventuell zwischen mehreren Verarbeitungseinheiten zur Anpassung von Daten­ formaten benötigt werden, liefern pro Taktschritt meist maximal ein Datum, sofern sie nicht aufwendig unterteilt sind. Deshalb werden manchmal auch Butterflies im Zeitmultiplex für mehrere Stufen gemeinsam eingesetzt. Um eine optimale Aus­ lastung der Verarbeitungseinheiten (Prozessoren) und damit einen möglichst niedrigen Aufwand zu erhalten, muß die Anzahl der Prozessoren an die Durch­ satzrate angepaßt werden.In most cases, however, when designing processing components aimed for a simple system concept, on average with everyone Clock step a date is processed. Each cycle step can also, if necessary  consist of several partial measures. Even synchronously clocked buffers that possibly between several processing units for adapting data formats are required, usually deliver a maximum of one date per measure, provided that they are not divided in a complex manner. That is why butterflies are sometimes used in Time division multiplex used together for several levels. For an optimal out load on the processing units (processors) and therefore one if possible To get low effort, the number of processors must pass through rate can be adjusted.

Die aufwendige Implementierung von Multiplizierern kann dadurch minimiert werden, daß die Transformation mit einer möglichst großen Anzahl von Multiplika­ tionen mit festem Koeffizienten ausgeführt wird. Zum Beispiel bei der Kombination von festverdrahteten Addier-, Subtrahier- und Schiebe-Operationen liegt der Aufwand für eine Multiplikation mit festem Koeffizienten erheblich niedriger, als für eine Multiplikation mit variablem Koeffizienten [K. Hwang: Computer Arithmetic, Principles, Architectures and Design. John Wiley & Sons, 1979) und (P. Pirsch: VLSI Implemenation Strategies. in: P. Pirsch (Hrsgb.): VLSI Implementations for Image Communications, Elsevier 1993, S. 67].The complex implementation of multipliers can be minimized by carrying out the transformation with as large a number of multiplications as possible with a fixed coefficient. For example, in the combination of hard-wired add, subtract and shift operations, the effort for a multiplication with a fixed coefficient is considerably lower than for a multiplication with a variable coefficient [K. Hwang: Computer Arithmetic, Principles, Architectures and Design. John Wiley & Sons, 1979) and (P. Pirsch: VLSI Implementation Strategies. In: P. Pirsch (ed.): VLSI Implementations for Image Communications, Elsevier 1993 , p. 67].

Die Butterflies arbeiten mit 2 Werten pro Taktschritt meist schneller als die Speicher und die Datenzu- und -abfuhr, die meist 1 Wert pro Taktschritt benötigen. Entsprechende Verhältnisse ergeben sich auch bei der Verarbeitung komplexer Zahlen wie sie beispielsweise bei der FFT benötigt werden. Häufig werden alle n Ebenen zeitlich nacheinander abgearbeitet. Bei optimaler Datenzuführung über angepaßte Zwischenspeicher sinkt dann aber die bei n Stufen erreichte Durchsatzrate auf das 2/n-fache des Wertes ab. Für die Erzielung einer optimalen Durchsatzrate mit minimalem Aufwand ist es daher notwendig, die Anzahl der realisierten Butterflies so zu wählen, daß der Wert n/2 der Anzahl der zu verarbeitenden Werte je Taktschritt entspricht. Bei ungerader Anzahl n ergibt sich jedoch das Problem, daß n/2 nicht ganzzahlig ist. Entsprechendes gilt für vergleichbare Aufgaben, bei denen die optimale Anzahl der Butterflies nicht ganzzahlig ist. In all diesen Fällen ist bislang keine optimale Implementierung möglich.With 2 values per cycle step, the Butterflies usually work faster than that Memory and data infeed and outfeed, usually 1 value per clock step need. Corresponding conditions also arise during processing complex numbers such as those required for FFT. Frequently all n levels are processed one after the other. With optimal Data supply via adapted buffers then drops, however, that at n Levels reached throughput rate to 2 / n times the value. For achieving an optimal throughput rate with minimal effort, it is therefore necessary Select the number of butterflies made so that the value n / 2 is the number of corresponds to the values to be processed per cycle step. If the number is odd, n results however, the problem arises that n / 2 is not an integer. The same applies to comparable tasks where the optimal number of butterflies is not is an integer. In all of these cases, implementation is not yet optimal possible.

Dies trifft beispielsweise auf dreistufig implementierte Signalflußgraphen für die 8-Punkte-DCT zu. Wird dabei beispielsweise mit nur einem Butterfly- Prozessor gearbeitet, so wird zwar der Verarbeitungseinheit zeitlich vollständig genutzt, die Durchsatzrate von Speicher und Gesamtsystem ist jedoch auf 2/3 des Maximalwertes gesunken. Werden dagegen zwei, bzw. drei Butterfly-Prozessoren eingesetzt, um eine Durchsatzrate von einem Wert/Takt zu erreichen, so sind dagegen die Prozessoren nicht vollständig ausgelastet.This applies, for example, to three-stage implemented signal flow graphs for the 8-point DCT too. For example, if only one butterfly Processor worked, so the processing unit is complete in time used, but the throughput rate of memory and overall system is 2/3 of the Maximum value decreased. In contrast, two or three butterfly processors  are used to achieve a throughput rate of one value / clock however, the processors are not fully utilized.

In dem US-Patent 4,821,224 ist ein Verfahren und eine Schaltungsanordnung zur Berechnung einer Fast-Fourier-Transformation beschrieben, bei dem eine Vielzahl von Butterfly-Berechnungsmodulen parallel und wahlweise schaltbar angeordnet sind. Jedes Butterfly-Berechnungsmodul erfordert nachteilig einen aufwendigen Multiplizierer.In US Patent 4,821,224 a method and a circuit arrangement for Computation of a Fast Fourier transform described using a variety Butterfly calculation modules arranged in parallel and optionally switchable are. Each butterfly calculation module disadvantageously requires a complex one Multiplier.

In dem US-Patent 5,293,330 ist ein Verfahren zur Berechnung einer Fast-Fourier- Transformation beschrieben, bei dem die Transformation seriell hintereinander ausgeführt wird. Hierzu sind eine Vielzahl von Butterfly-Berechnungsmodulen seriell hintereinander geschaltet, wobei zwischen den Butterfly-Berechnungsmodulen Permutatoren zur Steuerung der Berechnungsfolgen vorgesehen sind. Die serielle Durchführung der Transformation erfordert sehr aufwendig zu implementierende Rechenwerke.US Pat. No. 5,293,330 describes a method for calculating a Fast Fourier Transformation described, in which the transformation is serial one after the other is performed. For this purpose, a large number of butterfly calculation modules are serial connected in series, between the butterfly calculation modules Permutators for controlling the calculation sequences are provided. The serial Implementation of the transformation requires very complex to implement Arithmetic units.

In der DE 39 00 349 A1 ist eine Schaltungsanordnung zur Echtzeit-Durchführung einer schnellen Fouriertransformation beschrieben, bei dem die beiden Hälften einer Folge von komplexen Eingangsworten über einen Serien-Parallel-Eingangsregister und einen Zwischenspeicher auf mehrere parallel arbeitende Butterfly-Operatoren übergeben werden. Auf diese Weise erfolgt eine quasi-parallele Berechnung der komplexen Zahlen bei serieller Durchführung der Transformation.DE 39 00 349 A1 describes a circuit arrangement for real-time implementation described a fast Fourier transformation, in which the two halves one Sequence of complex input words via a series-parallel input register and a buffer to several butterfly operators working in parallel be handed over. In this way, a quasi-parallel calculation of the complex numbers when performing the transformation in series.

Aufgabe der Erfindung war es, ein Verfahren und eine Schaltungsanordnung zur Durchführung mehrstufiger Transformationen mittels Butterfly-Operationen anzugeben, bei denen der Implementierungsbedarf, insbesondere die Anzahl an Multiplizierern minimal sein sollte, wobei für eine ungerade Anzahl von Butterfly-Stufen ein optimaler Ausnutzungsgrad der Rechenwerke erzielt wird.The object of the invention was to provide a method and a circuit arrangement Implementation of multi-stage transformations using butterfly operations, in which the Implementation needs, in particular the number of multipliers to be minimal should be an optimal one for an odd number of butterfly levels Utilization of the arithmetic units is achieved.

Die Aufgabe wird durch das Verfahren gemäß Patentanspruch 1 dadurch gelöst, dass aufeinanderfolgende Stufen der Transformation in einem gemeinsamen Rechenwerk zur Durchführung von Butterfly-Operationen im Zeitmultiplex berechnet werden, wobei die Berechnungsergebnisse nach der Berechnung einer Stufe permutiert, über eine Verzögerungsleitung in das Rechenwerk zurückgekoppelt und einer weiteren Butterfly-Operation unterzogen werden, wobei das Rechenwerk für die Teilberechnungen der einzelnen Stufen gemeinsam genutzt wird und die Teilbe­ rechnungen der Stufen alternierend ausgeführt werden, und dass die verbleibenden Stufen der Transformation in mindestens einem weiteren Rechenwerk ohne Zeitmultiplex berechnet werden.The object is achieved by the method according to claim 1 in that that successive stages of transformation in a common  Calculator for performing butterfly operations in time division multiplexing the calculation results after the calculation of a stage permuted, fed back into the arithmetic logic unit via a delay line and undergo a further butterfly operation, the arithmetic unit for the Partial calculations of the individual levels are shared and the partial calculations Calculations of the stages are carried out alternately, and that the remaining stages the transformation in at least one other arithmetic unit without time division multiplexing be calculated.

Damit ist die Transformation so aufgeteilt, dass ausgewählte, geeignet aufeinanderfolgende Stufen im Zeitmultiplex und die verbleibenden Stufen ohne Zeitmultiplex berechnet werden. Im Zeitmultiplex können die Berechnungen für die Stufen abwechselnd im gleichen Rechenwerk ausgeführt werden.This transforms the transformation so that it is selected and suitable successive stages in time division multiplexing and the remaining stages without Time division multiplex can be calculated. The calculations for the Stages are carried out alternately in the same calculator.

Die Butterflies in den Signalflußgraphen für die Blocktransformationsalgorithmen müssen hierbei so geschickt gewählt sein, dass nur in maximal n - 1 Stufen die vergleichsweise aufwendigen programmierbaren Multiplikationen implementiert werden müssen.The butterflies in the signal flow graphs for the block transformation algorithms must be chosen so skillfully that the comparatively complex programmable multiplications implemented Need to become.

Entsprechend hat die Schaltungsanordnung ein Rechenwerk zur Berechnung einer Butterfly-Operation für aufeinanderfolgende Stufen der Transformation im Zeitmultiplex, wobei das Rechenwerk zwei Eingänge und zwei Ausgänge hat und ein Serien-Parallel-Wandler einen Eingang des Rechenwerks zur Umwandlung eines seriellen Datenstroms in einen parallelen Datenstrom und ein Parallel-Serien- Wandler an dem Ausgang des Rechenwerks zur Umwandlung des parallelen Datenstroms an den beiden Ausgängen des Rechenwerks in einen seriellen Datenstrom vorgesehen ist, und dass die Ausgänge des Rechenwerks über eine Schaltung zur Permutation und nachfolgende Verzögerungselemente auf Multiplexer an den beiden Eingängen des Rechenwerkes rückgekoppelt sind, und dass an den seriellen Eingang oder den seriellen Ausgang des Rechenwerks ein weiteres Rechenwerk zur Durchführung einer Butterfly-Operation ohne Zeitmultiplex geschaltet ist. Accordingly, the circuit arrangement has an arithmetic unit for calculating a Butterfly operation for successive stages of transformation in the Time-division multiplexing, with the arithmetic unit having two inputs and two outputs and one Series-parallel converter an input of the calculator to convert a serial data stream into a parallel data stream and a parallel serial Converter at the output of the calculator to convert the parallel Data stream at the two outputs of the arithmetic unit in a serial Data stream is provided, and that the outputs of the arithmetic unit via a Circuit for permutation and subsequent delay elements on multiplexers are fed back at the two inputs of the arithmetic unit, and that at the serial input or the serial output of the calculator another Calculator for performing a butterfly operation without time division is switched.  

Zur Durchführung von Butterfly-Operationen, zum Beispiel für FFT oder DCT, wird an den Ausgang der Schaltungsanordnung zur Berechnung mehrerer Stufen im Zeitmultiplex ein Rechenwerk zur Durchführung von Butterfly-Operationen und Permutationen geschaltet, das ohne stufenweisen Zeitmultiplex arbeitet. Für die Berechnung der inversen Transformationen wird ein ohne stufenweisen Zeitmultiplex arbeitendes Rechenwerk zur Durchführung von Butterfly-Operationen und Permutationen der durch Zeitmultiplex gekennzeichneten Schaltung vorgeschaltet.To perform butterfly operations, for example for FFT or DCT, is on the output of the circuit arrangement for calculating several stages in the Time division multiplexing an arithmetic unit for performing butterfly operations and Permutations switched that works without gradual time division multiplexing. For the The inverse transformations are calculated without a step-wise time multiplex working calculator for performing butterfly operations and Permutations upstream of the circuit characterized by time division multiplexing.

Bei einer ungeraden Anzahl n lässt sich so mindestens eine der Butterfly- Verarbeitungseinheiten mit festem bzw. umschaltbaren Multiplikationskoeffizien­ ten realisieren. Diese Verarbeitungseinheit ist zumeist am Ein- bzw. Ausgang der Schaltung angeordnet. Es ist daher möglich, daß n - 1 Butterfly-Stufen im zwei­ fachen Zeitmultiplex betrieben werden und die verbleibende Stufe separat ohne Zeitmultiplex implementiert wird. Dadurch wird bei den aufwendigen Stufen ein Ausnutzungsgrad von 1 erreicht, während lediglich bei der ersten, bzw. letzten Stufe der Ausnutzungsgrad bei 0,5 liegt. Da die separate Stufe im allgemeinen nur einen Bruchteil des Gesamtaufwand ausmacht, wird so Gesamtausnutzungs­ grad von fast 1 erreicht. Entsprechendes läßt sich häufig auch bei anderen Durchsatzraten erreichen.With an odd number n, at least one of the butterfly Processing units with fixed or switchable multiplication coefficients  realize. This processing unit is usually at the entrance or exit of the Circuit arranged. It is therefore possible that n - 1 butterfly levels in two times time division multiplex and the remaining stage separately without Time division multiplex is implemented. This will result in the elaborate stages Utilization rate reached 1, while only the first or last one Level of utilization is 0.5. Because the separate stage in general makes up only a fraction of the total effort, so it becomes total utilization degree of almost 1 reached. The same can often be done with others Achieve throughput rates.

Zeichnungendrawings

Die Erfindung wird anhand der Figuren näher erläutert. Es zeigen:The invention is explained in more detail with reference to the figures. Show it:

Fig. 1: Beispiel eines geeigneten DCT-Datenflußdiagramms mit drei Stufen Fig. 1: Example of a suitable DCT data flow diagram with three stages

Fig. 2: Gemischter Multiplex-Normal-Betrieb mit optimaler Ausnutzung der Butterflies Fig. 2: Mixed multiplex normal operation with optimal use of the butterflies

Fig. 3: Gemischter Multiplex-Normal-Betrieb für IDCT (mit IDCT-Butterflies) Fig. 3: Mixed multiplex normal operation for IDCT (with IDCT butterflies)

Fig. 4: Permutationsschaltung Fig. 4: permutation circuit

AnwendungsbeispieleExamples of use

Die Erfindung findet z. B. Anwendung bei den vergleichsweise regulär aufge­ bauten Transformationen FFT und IFFT, beschrieben in "Digital Signal Processing" (Seite 293, Figure 6.6, bzw. Seite 304, Figure 6.17), sowie für einige relativ irregulär aufgebauter DCT- und der IDCT-Implementierungen, wie etwa die auf dem Algorithmus von Lee basierenden Signalflußgraphen für die 8- Punkte-DCT (N. Demassieux, F. Jutand: "Orthogonal Transforms", in P. Pirsch, "Implementations for Image Communications," Elsevier, 1993, S. 217-250, insb. S. 223, Figure 3).The invention finds z. B. Application for the comparatively regular transformations FFT and IFFT, described in "Digital Signal Processing" (page 293, Figure 6.6 , and page 304, Figure 6.17 ), as well as for some relatively irregular DCT and IDCT implementations such as the signal flow graphs based on Lee's algorithm for the 8-point DCT (N. Demassieux, F. Jutand: "Orthogonal Transforms", in P. Pirsch, "Implementations for Image Communications," Elsevier, 1993, p. 217-250, esp. P. 223, Figure 3 ).

Bei der FFT wird mit komplexen Zahlen gerechnet. Die benötigten Operatio­ nen lassen sich aber auch auf reelle Additionen, Subtraktionen und Multiplikatio­ nen zurückführen. Bei den Formen der FFT wird neben Addition und Subtraktion in der ersten bzw. letzten Stufe lediglich die Multiplikation mit dem Wert 1 benö­ tigt, in der zweiten, bzw. vorletzten Stufe die Multiplikation mit der imaginären Zahl i. Beide lassen sich leicht ohne einen Hardware-Multiplizierer realisieren. In der dritten, bzw. drittletzten Stufe wird zusätzlich die Multiplikation mit der Quadrat­ wurzel von 2 benötigt, die sich dann mit festverdrahteten Multiplizierern realisieren läßt. In diesem Falle kann sich das Herausnehmen von bis zu drei Stufen lohnen.Complex numbers are expected at the FFT. The required operations However, they can also be based on real additions, subtractions and multiplication lead back. The forms of FFT include addition and subtraction in the first or last stage only the multiplication with the value 1 is required in the second or penultimate stage, multiplication with the imaginary number i. Both can be easily implemented without a hardware multiplier. In the The third or third to last level is additionally multiplied by the square  root of 2 is required, which can then be realized with hard-wired multipliers leaves. In this case, removing up to three levels can be worthwhile.

Auch bei der für Bildcodierungsverfahren häufig benötigten DCT der Länge 8 lassen sich Butterflies so finden, daß nur in den ersten beiden Butterfly-Stufen B1 und B2 die sehr aufwendigen, programmierbaren Multiplizierer benötigt werden (Fig. 1). In der dritten Butterfly-Stufe B3 wird stattdessen lediglich ein sehr einfacher, festverdrahteter Multiplizierer benötigt, der mit der Quadratwurzel von 2 (Faktor 2 . P4) oder mit der Hälfte der Quadratwurzel von 2 (Faktor P4) multiplizieren muß. Die Umschaltung zwischen diesen beiden Multiplikatoren ist daher sehr einfach möglich. Beispielsweise erfordert sie bei Verwendung des üblichen Dualzahlensystems lediglich ein bitweises Verschieben der Multiplikanden. Zusätzlich ist ein einfaches Korrektur-Netz K und eine Skalierung Sk notwendig. Das Korrektur-Netz enthält nur einfache Additionen und kann daher vergleichsweise einfach aufgebaut werden. Die Skalierung für den Faktor P4/2 entspricht einem Viertel der Quadratwurzel von 2. Wird eine zweidimensionale DCT (2D-DCT) wie für Bildcodierungsaufgaben berechnet, so wird diese Skalierung zweimal benötigt. Aufgrund der prinzipiellen Linearität der Anordnung lassen sich daher die beiden Skalierungsfaktoren zum Faktor 1/8 zusammenfassen. Dieser Faktor entspricht einer Zweierpotenz und kann daher in Verbindung mit den üblicherweise eingesetzten Zahlensystemen mit einer festverdrahteten Schiebe-Operation ohne zusätzliche Hardware implementiert werden.Butterflies can also be found in the DCT of length 8 , which is frequently required for image coding methods, in such a way that the very complex, programmable multipliers are only required in the first two butterfly stages B1 and B2 ( FIG. 1). In the third butterfly stage B3, only a very simple, hard-wired multiplier is required, which multiplies by the square root of 2 (factor 2. P4) or by half the square root of 2 (factor P4). Switching between these two multipliers is therefore very easy. For example, when using the usual dual number system, it only requires a bit-wise shifting of the multiplicands. In addition, a simple correction network K and a scaling Sk are necessary. The correction network contains only simple additions and can therefore be set up comparatively easily. The scaling for the factor P4 / 2 corresponds to a quarter of the square root of 2. If a two-dimensional DCT ( 2 D-DCT) is calculated as for image coding tasks, this scaling is required twice. Due to the principle linearity of the arrangement, the two scaling factors can be combined to a factor of 1/8. This factor corresponds to a power of two and can therefore be implemented in connection with the commonly used number systems with a hard-wired sliding operation without additional hardware.

Insgesamt wird also neben dem Aufwand für die Implementierung der Datenzu- und -abführung nur Hardware für die Implementierung der 1., 2. und 3. Butterfly-Stufen mit Permutation und dem Korrektur-Netz benötigt.Overall, in addition to the effort required to implement the Data input and output only hardware for the implementation of the 1st, 2nd and 3rd Butterfly levels with permutation and the correction network required.

Es ist daher möglich, die Verarbeitung erfindungsgemäß so aufzuteilen, daß die beiden ersten aufwendigen Butterfly-Stufen B1/B2 im Zeitmultiplex arbeiten, die letzte, einfach aufgebaute Butterfly-Stufe B3 jedoch direkt mit dem Verarbei­ tungstakt betrieben wird (Fig. 2). Die Stufe B3 muß dabei auch die für das not­ wendige Korrektur-Netz beinhalten. Für die Einführung der Zeitmultiplex-Verarbei­ tung sind lediglich zusätzliche synchrone Verzögerungen D (Pipeline-Stufen) und Multiplexer M erforderlich, um die Serien/Parallel-Wandlung und die Paral­ lel/Serien-Wandlung durchzuführen. Wird die Stufe 3 im Zeitmultiplex betrieben, so wird die Parallel/serien-Wandlung erst nach dieser Stufe durchgeführt (Fig. 3). It is therefore possible to divide the processing according to the invention in such a way that the first two complex butterfly stages B1 / B2 work in time-division multiplex, but the last, simply constructed butterfly stage B3 is operated directly with the processing cycle ( FIG. 2). The level B3 must also include the correction network necessary for the necessary. For the introduction of time-division multiplexing, only additional synchronous delays D (pipeline stages) and multiplexer M are required to carry out the series / parallel conversion and the parallel / series conversion. If stage 3 is operated in time division multiplexing, the parallel / series conversion is only carried out after this stage ( FIG. 3).

Bei einem derartigen Multiplex-Betrieb wird zumindest der aufwendig aufge­ baute Teil der Verarbeitungseinheit vollständig genutzt, ohne daß die maxi­ mal mögliche Durchsatzrate reduziert wird. Diese Eigenschaft ermöglicht effizi­ ente Hardware-Realisierungen.In such a multiplex operation, at least the is expensive built part of the processing unit fully used without the maxi possible throughput rate is reduced. This property enables effizi ent hardware implementations.

Mit angepaßten Butterflies und Umkehrung der Verarbeitungsmodi läßt sich dieses Grundprinzip auch auf die IDCT-Verarbeitung anwenden (Fig. 4). In diesem Fall braucht der für die Butterfly B1 eingesetzte Multiplizierer nur mit festverdrahteten Koeffizienten ohne Zeitmultiplex betrieben werden, während die aufwendigen Einheiten für die Butterflies B2/B3 im Zeitmultiplex betrieben werden. Auch hierbei sind zusätzlich wieder lediglich wenige Verzögerungen D und Multiplexer für den Zeitmultiplex-Betrieb erforderlich.With adapted butterflies and reversal of the processing modes, this basic principle can also be applied to IDCT processing ( FIG. 4). In this case, the multiplier used for the Butterfly B1 only needs to be operated with hard-wired coefficients without time multiplex, while the complex units for the Butterflies B2 / B3 are operated in time multiplex. Again, only a few delays D and multiplexers are required for time-division multiplexing.

Zwischen den Stufen müssen die Daten ggf. permutiert werden, damit die Ausgangsdaten für die nächste Stufe in der richtigen Reihenfolge am Eingang der Butterfly-Stufe anliegen. Die Permutation kann z. B. mit der in Fig. 5 gezeigten Schaltungsanordnung durchgeführt werden. Die Anordnung der Speicher und Multiplexer ist hier jedoch abhängig von dem Transformationsalgorithmus und muß der jeweiligen Aufgabe entsprechend angepaßt werden. Between the stages, the data may have to be permuted so that the output data for the next stage are in the correct order at the input of the butterfly stage. The permutation can e.g. B. with the circuit arrangement shown in Fig. 5. However, the arrangement of the memories and multiplexers is dependent on the transformation algorithm and must be adapted to the respective task.

BezugszeichenlisteReference list

D Verzögerungsglied
M Multiplexer
B1 erste Butterfly-Stufe
B2 zweite Butterfly-Stufe
B3 dritte Butterfly-Stufe
PS Permutationsschaltung
P1-P7 Wichtungsfaktoren
K Korrekturnetz
Sk Skalierung
D delay element
M multiplexer
B1 first butterfly level
B2 second butterfly level
B3 third butterfly level
PS permutation circuit
P1-P7 weighting factors
K correction network
Sk scaling

Claims (4)

1. Verfahren zur Durchführung von mehrstufigen Transformationen mittels Butterfly- Operationen, dadurch gekennzeichnet, dass aufeinanderfolgende Stufen der Transformation in einem gemeinsamen Rechenwerk zur Durchführung von Butter­ fly-Operationen im Zeitmultiplex berechnet werden, wobei die Berechnungsergeb­ nisse nach der Berechnung einer Stufe permutiert, über eine Verzögerungsleitung in das Rechenwerk zurückgekoppelt und einer weiteren Butterfly-Operation unter­ zogen werden, wobei das Rechenwerk für die Teilberechnungen der einzelnen Stufen gemeinsam genutzt wird und die Teilberechnungen der Stufen alternierend ausgeführt werden, und dass die verbleibenden Stufen der Transformation in min­ destens einem weiteren Rechenwerk ohne Zeitmultiplex berechnet werden.1. A method for performing multi-stage transformations using butterfly operations, characterized in that successive stages of the transformation are calculated in a common arithmetic unit for performing butter fly operations in time multiplex, the calculation results permuting after the calculation of a stage, via a The delay line is fed back into the arithmetic unit and subjected to a further butterfly operation, the arithmetic unit being shared for the partial calculations of the individual stages and the partial calculations of the stages being carried out alternately, and that the remaining stages of the transformation in at least one additional arithmetic unit without Time division multiplex can be calculated. 2. Schaltungsanordnung zur Durchführung von mehrstufigen Transformationen mittels Butterfly-Operation, gekennzeichnet durch ein Rechenwerk zur Berechnung einer Butterfly-Operation für aufeinanderfolgende Stufen der Transformation im Zeitmulti­ plex, wobei das Rechenwerk zwei Eingänge und zwei Ausgänge hat und ein Seri­ en-Parallel-Wandler einen Eingang des Rechenwerks zur Umwandlung eines seri­ ellen Datenstroms in einen parallelen Datenstrom und ein Parallel-Serien-Wandler an dem Ausgang des Rechenwerks zur Umwandlung des parallelen Datenstroms an den beiden Ausgängen des Rechenwerks in einen seriellen Datenstrom vorge­ sehen ist, und dass die Ausgänge des Rechenwerks über eine Schaltung zur Per­ mutation und nachfolgende Verzögerungselemente auf Multiplexer an den beiden Eingängen des Rechenwerkes rückgekoppelt sind, und dass an den seriellen Ein­ gang oder den seriellen Ausgang des Rechenwerks ein weiteres Rechenwerk zur Durchführung einer Butterfly-Operation ohne Zeitmultiplex geschaltet ist.2. Circuit arrangement for carrying out multi-stage transformations by means of Butterfly operation, characterized by an arithmetic unit for calculating a Butterfly operation for successive stages of transformation in time multiples plex, where the arithmetic unit has two inputs and two outputs and a Seri Parallel converter an input of the arithmetic unit for converting a seri ellen data stream into a parallel data stream and a parallel-series converter  at the output of the arithmetic unit for converting the parallel data stream featured in a serial data stream at the two outputs of the arithmetic unit can be seen, and that the outputs of the arithmetic unit via a circuit to the Per mutation and subsequent delay elements on multiplexers at the two Inputs of the arithmetic unit are fed back, and that to the serial on gear or the serial output of the calculator to another calculator Performing a butterfly operation without time division multiplexing. 3. Schaltungsanordnung nach Anspruch 2, dadurch gekennzeichnet, dass der Par­ allel-Serien-Wandler ein Verzögerungselement an einem der Ausgänge des Re­ chenwerkes und einen Multiplexer hat, wobei der andere Ausgang des Rechenwer­ kes und der Ausgang des Verzögerungselementes an den Multiplexer geschaltet ist.3. Circuit arrangement according to claim 2, characterized in that the par allel series converter a delay element at one of the outputs of the Re chenwerkes and a multiplexer, the other output of the arithmetic unit kes and the output of the delay element connected to the multiplexer is. 4. Schaltungsanordnung nach Anspruch 2 oder 3, dadurch gekennzeichnet, dass der Serien-Parallel-Wandler ein Verzögerungselement und jeweils einen Multiplexer an den Eingängen des Rechenwerkes hat, wobei der serielle Eingang an das Ver­ zögerungselement und den einen Multiplexer und der Ausgang des Verzögerungs­ elementes an den anderen Multiplexer geschaltet ist.4. Circuit arrangement according to claim 2 or 3, characterized in that the series-parallel converter has a delay element and a multiplexer each has at the inputs of the arithmetic unit, the serial input to the ver delay element and the one multiplexer and the output of the delay element is connected to the other multiplexer.
DE19944442958 1994-12-02 1994-12-02 Method and circuit arrangement for performing multi-stage butterfly operations Expired - Fee Related DE4442958C2 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
DE19944442958 DE4442958C2 (en) 1994-12-02 1994-12-02 Method and circuit arrangement for performing multi-stage butterfly operations
US08/565,848 US5831881A (en) 1994-12-02 1995-12-01 Method and circuit for forward/inverse discrete cosine transform (DCT/IDCT)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE19944442958 DE4442958C2 (en) 1994-12-02 1994-12-02 Method and circuit arrangement for performing multi-stage butterfly operations

Publications (2)

Publication Number Publication Date
DE4442958A1 DE4442958A1 (en) 1996-06-05
DE4442958C2 true DE4442958C2 (en) 2001-05-10

Family

ID=6534754

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19944442958 Expired - Fee Related DE4442958C2 (en) 1994-12-02 1994-12-02 Method and circuit arrangement for performing multi-stage butterfly operations

Country Status (1)

Country Link
DE (1) DE4442958C2 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19906868C1 (en) * 1999-02-18 2000-05-04 Siemens Ag Method of calculating discrete orthogonal transformation, such as FFT or IFFT e.g. for telecommunications engineering
CN112149046A (en) * 2020-10-16 2020-12-29 北京理工大学 FFT (fast Fourier transform) processor and processing method based on parallel time division multiplexing technology

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3416536A1 (en) * 1983-05-04 1984-11-08 Victor Company Of Japan, Ltd., Yokohama, Kanagawa COMPUTING DEVICE FOR FAST FOURIER TRANSFORMATION
US4821224A (en) * 1986-11-03 1989-04-11 Microelectronics Center Of N.C. Method and apparatus for processing multi-dimensional data to obtain a Fourier transform
DE3900349C2 (en) * 1989-01-07 1990-10-11 Diehl Gmbh & Co, 8500 Nuernberg, De
US5293330A (en) * 1991-11-08 1994-03-08 Communications Satellite Corporation Pipeline processor for mixed-size FFTs

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3416536A1 (en) * 1983-05-04 1984-11-08 Victor Company Of Japan, Ltd., Yokohama, Kanagawa COMPUTING DEVICE FOR FAST FOURIER TRANSFORMATION
US4821224A (en) * 1986-11-03 1989-04-11 Microelectronics Center Of N.C. Method and apparatus for processing multi-dimensional data to obtain a Fourier transform
DE3900349C2 (en) * 1989-01-07 1990-10-11 Diehl Gmbh & Co, 8500 Nuernberg, De
US5293330A (en) * 1991-11-08 1994-03-08 Communications Satellite Corporation Pipeline processor for mixed-size FFTs

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
AHMED, N. et.al.: "Discrete Cosine Transform", in: IEEE Transactions on Computer, Vol. C-23, S. 90-93, Jan. 1974 *
LEE, B.G.: "A New Algorithm to Compute the Discrete Cosine Transform", in: IEEE Transactions on Acoustics, Speed and Signal Processing, Vol. 32, No. 6, S. 1243-1245, Dec. 1984 *
LOEFFLER, A. et.al.: "Practical Fast 1-D DCT Algorithmus with 11 Multiplications", in: IEEE, S. 988-991, 1989 *
VETTERLI, M. et.al.: "Simple FFT and DCT Algorithms with Reduced Number of Operations", Signal Processing, Vol. 6, S. 267-278, Aug. 1984 *

Also Published As

Publication number Publication date
DE4442958A1 (en) 1996-06-05

Similar Documents

Publication Publication Date Title
DE69435034T2 (en) METHOD OF DEVICE FOR CARRYING OUT A QUICK HADAMARD TRANSFORM
DE69332975T2 (en) DIGITAL FILTER WITH HIGH ACCURACY AND EFFICIENCY
DE3209450A1 (en) DIGITAL FILTER BANK
DE60210494T2 (en) HIGH-SPEED CALCULATION IN ARITHMETIC AND LOGIC CIRCUITS
DE19758079A1 (en) Computer system for determining product of two Galois field elements
DE102013217181A1 (en) Method and system for performing spectral analysis of a non-stationary signal in real time
DE102005039684A1 (en) Sample rate doubling using alternating ADCS
DE4345029C2 (en) Discrete cosine transform circuit
DE4038240A1 (en) PROCESSOR FOR CARRYING OUT AN ORTHOGONAL TRANSFORMATION
DE2338469A1 (en) PROGRAMMABLE DIGITAL DATA PROCESSING DEVICE
EP1312220A2 (en) Method for carrying out integer approximation of transform coefficients, and coder and decoder
DE4215094A1 (en) IMAGE PROCESSING METHOD AND DEVICE
DE69830971T2 (en) Pipeline processor for fast Fourier transformation
DE10357661A1 (en) Montgomery modular multiplier for public-key cryptographic system, has compressor performing additions required for each bit before additions in carry propagation adder to remove propagation delay time to improve performance
DE4442958C2 (en) Method and circuit arrangement for performing multi-stage butterfly operations
DE60313247T2 (en) Method of performing a fast Fourier transform and a fast inverse Fourier transform
DE2615498A1 (en) CONVOLUTIONAL FUNCTION GENERATOR AND ITS APPLICATION IN DIGITAL FILTERS
DE102006045794A1 (en) Device for poly-phase resampling, has coefficient generator for producing multiple coefficient, and coefficient generator is formed and controlled for producing coefficients as linear interpolated coefficients for resampling
DE3545106C2 (en)
Feig et al. Scaled DCT's on input sizes that are composite
DE60022282T2 (en) Device for motion compensation for digital video format down-conversion
DE69821145T2 (en) AREA EFFICIENT MANUFACTURE OF COEFFICIENT ARCHITECTURE FOR BIT SERIAL FIR, IIR FILTERS AND COMBINATORIAL / SEQUENTIAL LOGICAL STRUCTURE WITHOUT LATENCY
DE2545825A1 (en) CALCULATOR WITH POSSIBILITIES FOR MEMORY ADDRESS CALCULATION
EP0237928B1 (en) Method for correcting blockwise transmitted discrete values
DE4022381C2 (en) Use of long digital filters in the event of rounding errors

Legal Events

Date Code Title Description
OM8 Search report available as to paragraph 43 lit. 1 sentence 1 patent law
8110 Request for examination paragraph 44
8127 New person/name/address of the applicant

Owner name: SICAN GMBH, 30419 HANNOVER, DE

D2 Grant after examination
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: SCI-WORX GMBH, 30419 HANNOVER, DE

8339 Ceased/non-payment of the annual fee