-
BEREICH DER ERFINDUNG
-
Die
vorliegende Erfindung betrifft allgemein ein Verfahren und eine
Vorrichtung zum Filtern von mehreren Kommunikationskanälen zugeordneten
Daten und insbesondere das Filtern von Daten in unterschiedlichen
Modi, wie einem rekursiven Filtermodus, einem Filtermodus mit unbegrenztem
Impulsansprechverhalten, einem Extrapolationsmodus, einem Dezimationsmodus
und einem Echounterdrückungsmodus.
-
HINTERGRUND DER ERFINDUNG
-
Drahtlose
Kommunikationssysteme erfordern eine extensive digitale Signalverarbeitung,
wobei das digitale Signal von mehreren Kommunikationskanälen stammen
kann. Eine digitale Signalverarbeitung kann ein rekursives Filtern
(d.h. eine FIR-Filterung, FIR: finite impulse response, begrenz tes
Impulsansprechverhalten), ein Filtern mit unbegrenztem Impulsansprechverhalten
(eine IIR-Filterung, IIR: infinite impulse response, unbegrenztes
Impulsansprechverhalten), eine Dezimation und eine Extrapolation
umfassen. Sowohl eine Dezimation als auch eine Extrapolation schließen eine
FIR-Filterung ein.
-
Ein
digitales Filteransprechverhalten hilft auch bei der Unterdrückung von
Echos, die aus der Kopplung von Benutzern am entfernten Ende und
Benutzern am nahegelegenen Ende resultieren. Auch die Echounterdrückung schließt eine
FIR-Filterung ein.
-
Digitale
Signalprozessoren gemäß dem Stand
der Technik handhaben die Mehrkanalfilterung auf ineffiziente Weise,
wobei das Springen von dem Prozess eines Kanals zu einem weiteren
die Speicherung einer verhältnismäßig großen Menge
an Datenstatus erforderte. Ein digitaler Prozessor gemäß dem Stand
der Technik musste mindestens zwei Register zur Speicherung des
Status jedes Kanals verwenden.
-
In
der
US-A-5 262 972 ist
ein Mehrkanalfilter gemäß dem Oberbegriff
des Patentanspruchs 1 offenbart.
-
Es
besteht Bedarf an einem verbesserten Filter zur Verarbeitung von
Daten von mehreren Kanälen.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Obwohl
die Erfindung in den beiliegenden Ansprüchen definiert ist, werden
Ausführungsformen
der Erfindung in der folgenden genauen Beschreibung im Zusammenhang
mit den beiliegenden Zeichnungen offenbart. Es zeigen:
-
1 eine
schematische Beschreibung eines mit einem externen Speicher und
mehreren Kommunikationskanälen
gekop pelten Filters mit einer zweiten Direktspeicherzugriffssteuerung
(d.h. einer DNA-Steuerung (DNA: direct memory access)) gemäß einer
bevorzugten Ausführungsform
der Erfindung;
-
2 eine
schematische Beschreibung einer Adressenerzeugungseinheit (d.h.
einer AGU (address generation unit)) gemäß einer bevorzugten Ausführungsform
der Erfindung;
-
3 ein
Ablaufdiagramm eines Verfahrens zur Umwandlung eines Filters in
ein Filter mit 2Z Anschlüssen;
-
4 eine
schematische Beschreibung der allgemeinen Organisation von Daten
und Koeffizienten, die einem einzigen Kanal zugeordnet sind, wenn
das Filter in unterschiedlichen Modi arbeitet, gemäß einer bevorzugten
Ausführungsform
der Erfindung;
-
5 eine
schematische Beschreibung der allgemeinen Organisation von Daten
und Koeffizienten, die mehreren Kanälen zugeordnet sind, gemäß einer
bevorzugten Ausführungsform
der Erfindung;
-
6 eine
schematische Beschreibung der allgemeinen Organisation von Daten
und Koeffizienten im internen Speicher gemäß einer bevorzugten Ausführungsform
der Erfindung;
-
7 eine
schematische Beschreibung des Inhalts des ersten Abschnitts der
ersten Speicherbank während
verschiedener Stadien eines Filterprozesses gemäß einer bevorzugten Ausführungsform
der Erfindung;
-
8 eine
schematische Beschreibung der allgemeinen Organisation von Daten
und Koeffizienten, die mehreren Kanälen zugeordnet sind, in unterschiedlichen
Stadien eines FIR-Filterungsprozesses gemäß einer bevorzugten Ausführungsform
der Erfindung;
-
9 ein
Ablaufdiagramm eines Verfahrens zur Durchführung einer FIR-Filterung gemäß einer
bevorzugten Ausführungsform
der Erfindung;
-
10 eine
schematische Beschreibung des Inhalts des (W + 1)-ten Abschnitts
der ersten Speicherbank während
unterschiedlicher Stadien des Filterungsprozesses gemäß einer
bevorzugten Ausführungsform der
Erfindung;
-
11 eine
schematische Beschreibung der allgemeinen Organisation von Daten
und Koeffizienten, die mehreren Kanälen zugeordnet sind, in unterschiedlichen
Stadien eines IIR-Filterungsprozesses gemäß einer bevorzugten Ausführungsform
der Erfindung;
-
12 ein
Ablaufdiagramm eines Verfahrens zur Ausführung einer IIR-Filterung gemäß einer
bevorzugten Ausführungsform
der Erfindung;
-
13 eine
schematische Beschreibung des Inhalts des (2W + 1)-ten Abschnitts
der ersten Speicherbank während
unterschiedlicher Stadien eines Dezimationsprozesses gemäß einer
bevorzugten Ausführungsform
der Erfindung;
-
14 ein
Ablaufdiagramm eines Verfahrens zur Ausführung einer Dezimation um den
Faktor M gemäß einer
bevorzugten Ausführungsform
der Erfindung;
-
15 ein
Ablaufdiagramm eines Verfahrens 1000 zum Ausführen einer
Extrapolation um den Faktor M gemäß einer bevorzugten Ausführungsform
der Erfindung;
-
16 eine
schematische Beschreibung der allgemeinen Organisation von Daten
und Koeffizienten, die einem einzigen Kanal zugeordnet sind, gemäß einer
bevorzugten Ausführungsform
der Erfindung;
-
17 eine
schematische Ausführungsform
eines mit einem Benutzer am nahegelegenen Ende, einem Benutzer am entfernten
Ende, einem Hybridverbindungselement, einem Echosummierelement,
einem Prozessor und einem externen Speicher gekoppelten Filters
gemäß einer
bevorzugten Ausführungsform
der Erfindung; und
-
18 ein
Ablaufdiagramm eines Verfahrens zur Unterdrückung von Echos gemäß einer
bevorzugten Ausführungsform
der Erfindung.
-
GENAUE BESCHREIBUNG DER ERFINDUNG
-
Es
wird darauf hingewiesen, dass die besonderen, verwendeten Begriffe
und Ausdrücke
und die speziellen, in der genauen Beschreibung und den beiliegenden
Zeichnungen offenbarten, strukturellen und operativen Einzelheiten
nur veranschaulichenden Zwecken dienen und den in den beiliegenden
Ansprüchen
beschriebenen Rahmen der Erfindung in keiner Weise einschränken sollen.
-
Allgemein
ist ein Aspekt der Erfindung ein verbessertes Filter zur Verarbeitung
von Daten von mehreren Kanälen.
-
Überdies
betrifft die Erfindung die Möglichkeit
des Umschaltens aus einem Betriebsmodus in einen anderen Betriebsmodus,
wobei das Umschalten lediglich das Speichern einer vernachlässigbaren
Menge an Statusparametern erfordert.
-
1 ist
eine schematische Beschreibung eines mit einem externen Speicher 110,
mehreren Kanälen 100 und
einer zweiten Direktspeicherzugriffssteuerung (d.h. einer DMA-Steuerung) 160 gekoppelten
Filters 90 gemäß einer
bevorzugten Ausführungsform
der Erfindung.
-
Das
Filter 90 kann mehrere Modi unterstützen. Bei der bevorzugten Ausführungsform
werden fünf
Betriebsmodi unterstützt:
Mehr-
oder Einkanal-FIR-Filterung
Mehr- oder Einkanal-IIR-Filterung
Mehr-
oder Einkanalechounterdrückung
Mehr-
oder Einkanaldezimation
Mehr- oder Einkanalextrapolation
-
Zweckmäßigerweise
umfasst ein Einkanalmodus das Filtern von einem einzigen Kanal zugeordneten Daten.
Das Filter 90 kann das Filtern eines Kanals in einem Einkanalmodus
beenden und mit dem Filtern bzw. Verarbeiten eines weiteren Kanals
in einem anderen Einkanalmodus beginnen. Ein Mehrkanalmodus umfasst die
gleichzeitige Verarbeitung oder Filterung von aus mehreren Kanälen empfangenen
Daten.
-
Zweckmäßiger Weise
haben die sämtlichen
W Kommunikationskanälen
zugeordneten Filter bei der Verarbeitung mehrerer Kanäle die gleiche
Länge – die Anzahl
V der Anschlüsse.
Anderenfalls arbeitet das Filter 90 in einem Einkanalmodus.
-
Verschiedene
Kommunikationskanäle
(d.h. Kanäle)
können
in unterschiedlichen Modi verarbeitet oder gefiltert werden. Der
K-te Kanal kann beispielsweise mittels eines FIR-Filters gefiltert werden, während der
(K + 1)-te Kanal durch ein IIR-Filter gefiltert werden kann, wobei
K ein Index mit Werten von 1 bis W ist. Zweckmäßigerweise arbeitet das Filter 90 in
einem Mehrkanalmodus, wenn sämtliche
W Kanäle
auf die gleiche Weise verarbeitet werden (beispielsweise durch eine
FIR-Filterung, eine IIR-Filterung, eine Extrapolation, eine Dezimation
oder eine Echounterdrückung).
-
Wenn
das Filter 90 in einem Mehrkanalmodus aktiviert wird, verarbeitet
es die verschiedenen Kanäle normalerweise
ein einer festen Reihenfolge. So beginnt das Filter 90 beispielsweise
mit der Verarbeitung des ersten Kanals, dann beginnt es mit der
Verarbeitung des zweiten Kanals, etc., dies ist jedoch nicht notwendig, und
das Filter 90 kann so programmiert werden, dass es verschiedene
Kanäle
in einer veränderlichen
Reihenfolge filtert.
-
Zur
Erleichterung der Erläuterung
wird davon ausgegangen, dass die Länge sämtlicher W Filter übereinstimmt
und dass sämtliche
W Kanäle
auf die gleiche Weise verarbeitet bzw. gefiltert werden, wenn das
Filter 90 in einem Mehrkanalmodus arbeitet.
-
Das
Filter 90 umfasst einen internen Speicher 130,
eine Adresserzeugungseinheit (d.h. eine AGU) 190 und eine
Multiplikations- und Summiereinheit (d.h. eine MAC-Einheit) 170.
Das Filter 90 kann auch eine Steuereinheit 180 sein.
Die Steuereinheit 180 kann auch durch einen (in 17 dargestellten)
externen Prozessor (d.h. einen Prozessor) 1220 implementiert
sein.
-
Mehrere
Kanäle 100 liefern
mehrere zu durch das Filter 90 filternde Datenabtastungen.
Mehrere Kanäle 100 weisen
mehrere, kollektiv durch 102 bezeichnete Ausgänge auf.
-
Der
externe Speicher 110 weist Eingänge/Ausgänge (d.h. I/Os) 116 und 114 und
einen Eingang 112 auf. Ein DMA 120 weist I/Os 126, 122 und 124 auf
und kann auch einen I/O 128 aufweisen. Der interne Speicher 130 weist
I/Os 132, 136 und einen Eingang 134 auf
und kann auch einen I/O 138 aufweisen. Die MAC-Einheit 170 weist
einen I/O 176 und einen Eingang 174 auf und kann
auch einen I/O 172 aufweisen. Die Steuereinheit 180 weist
Ausgänge 182, 184 und 186 auf
und kann auch einen Ausgang 188 aufweisen. Ein zweiter DMA 160 weist
I/Os 166 und 164 und einen Eingang 162 auf.
-
Zweckmäßiger Weise
ist das Filter 90 mit dem DMA 120 und dem externen
Speicher 110 gekoppelt. Wie durch gestrichelte Linien dargestellt,
sind die Steuereinheit 180 und die MAC-Einheit 170 mit
einem zweiten DMA 160 gekoppelt, die MAC-Einheit 170 ist
mit einem DMA 120 gekoppelt, und der interne Speicher 130 ist
mit mehreren Kanälen
gekoppelt, wodurch eine effizientere Übertragung von Daten, Koeffizienten,
und Ergebnissen von MAC-Operationen (die kollektiv als Informationen
bezeichnet werden) zwischen der MAC-Einheit 170 und dem
externen Speicher 110, zwischen der MAC-Einheit 170 und
dem internen Speicher 130 und zwischen mehreren Kanälen 100 und
dem inneren Speicher 130 erzielt wird.
-
Der
I/O mehrerer Kanäle 100 ist
mit dem I/O 112 des externen Speichers 110 gekoppelt.
Der I/O 126 des DMA 120 ist mit dem I/O 116 des
externen Speichers 110 gekoppelt. Der I/O 122 des
DMA 120 ist mit dem I/O 132 des internen Speichers 110 gekoppelt.
Der I/O 138 des externen Speichers 130 ist mit
dem I/O 102 mehrerer Kanäle 100 gekoppelt.
Der I/O 176 der MAC-Einheit 170 ist mit dem I/O 136 des
internen Speichers 110 gekoppelt. Der I/O 178 der
MAC-Einheit 170 ist mit dem I/O 128 des DMA 120 gekoppelt.
Der I/O 172 der MAC-Einheit 170 ist mit dem I/O 166 eines
zweiten DMA 160 gekoppelt. Die Ausgänge 182 184, 186 und 188 der
Steuereinheit 180 sind dementsprechend mit dem Eingang 124 des
DMA 120, dem Eingang 174 der MAC-Einheit 170,
dem Eingang 196 der AGU 190 und dem Eingang 162 des
zweiten DMA 160 gekoppelt.
-
Im
externen Speicher 110 können
Datenworte, Anschlüsse
und die Ergebnisse des Filterprozesses gespeichert werden. Arbeitet
das Filter 90 in einem Mehrkanal-FIR-Filterungs-, Dezimations-
oder Extrapolationsmodus, werden im externen Speicher W externe
Datenvektoren mit Y Elementen gespeichert. Arbeitet das Filter 90 mit
einer Mehrkanal-IIR-Filterung,
werden im externen Speicher 110 W externe Daten-/Ergebnisvektoren
gespeichert. Ein externer Daten-/Ergebnisvektor
umfasst anfänglich
Datenworte, die nach und nach durch die Ergebnisse der IIR-Filterung
ersetzt werden. Wenn das Filter 90 in einem Mehrkanalechounterdrückungsmodus
arbeitet, werden im externen Speicher 110 W externe Daten-/Abtastungsvektoren
gespeichert. Ein externer Daten-/Abtastungsvektor
umfasst anfänglich
Datenworte, die nach und nach durch Abtastungen von Signalen ersetzt
werden, die die W Kommunikationskanäle durchlaufen.
-
Wenn
das Filter 90 in einem Mehrkanal-FIR-Filterungs-, IIR-Filterungs-,
Dezimations- oder Echounterdrückungsmodus
arbeitet, sind im externen Speicher 110 W Koeffizientenvektoren
mit Z Elementen gespeichert. Arbeitet das Filter 90 im
Extrapolationsmodus, werden im externen Speicher 110 W
externe Koeffizientenvektoren mit Z Elementen gespeichert.
-
In
dem externen Speicher 110 können auch die Ergebnisse der
Filter- und Verarbeitungsoperationen gespeichert werden.
-
In
dem internen Speicher 130 können Datenworte, Anschlüsse und
die Ergebnisse des Filterprozesses gespeichert werden. Wenn das
Filter 90 im Mehrkanal-FIR-Filter- oder Dezimationsmodus
arbeitet, werden im internen Speicher W Datenvektoren mit Z Elementen
gespeichert. Wenn das Filter 90 in einem Mehrkanalextrapolationsmodus
arbeitet, werden im internen Speicher 130 W Datenvektoren
mit Z'' Elementen gespeichert.
Arbeitet das Filter 90 mit einer Mehrkanal-IIR-Filterung, werden
im internen Speicher 130 W Daten-/Ergebnisvektoren mit Z Elementen gespeichert.
Ein Daten/Ergebnisvektor umfasst anfänglich Datenworte, die nach
und nach durch die Ergebnisse der IIR-Filterung ersetzt werden.
Arbeitet das Filter 90 in einem Mehrkanalechounterdrückungsmodus,
werden in dem internen Speicher 130 W Daten-/Abtastungsvektoren mit
Z Elementen gespeichert. Ein Daten-/Abtastungsvektor umfasst anfänglich Datenworte,
die nach und nach durch Abtastungen von Signalen ersetzt werden,
die die W Kommunikationskanäle
durchlaufen.
-
Arbeitet
das Filter 90 in einem Mehrkanal-IR-Filter-, IIR-Filter-,
Dezimations- oder Echounterdrückungsmodus,
werden in dem internen Speicher 130 W Koeffizientenvektoren
mit Z Elementen gespeichert. Arbeitet das Filter 90 in
einem Extrapolationsmodus, werden in dem internen Speicher 130 W
externe Koeffizientenvektoren mit Z'' Elementen
gespeichert.
-
Im
internen Speicher 130 können
auch die Ergebnisse der Filter- und Verarbeitungsvorgänge gespeichert
werden.
-
Zur
Zweckmäßigkeit
der Erläuterung
wird ein dem K-ten Kommunikationskanal zugeordneter Vektor (entweder
ein Datenvektor, ein externer Datenvektor, ein Koeffizientenvektor,
ein externer Koeffizientenvektor, ein Daten/Ergebnisvektor, ein
externer Daten-/Ergebnisvektor, ein Daten-/Abtastungsvektor oder
ein externer Daten-/Abtastungsvektor)
als K-ter Vektor bezeichnet.
-
Das
Filter 90 filtert oder verarbeitet Daten*-Vektoren mittels
einer Folge von MAC-Funktionen eines Daten*-Vektors und eines Koeffizientenvektors.
Ein Daten*-Vektor ist bei einem Betrieb des Filters im FIR-Filtermodus,
im Extrapolationsmodus und im Dezimationsmodus ein Datenvektor,
bei einem Betrieb des Filters im IIR-Filtermodus ein Daten/Ergebnisvektor
und bei einem Betrieb des Filters im Echounterdrückungsmodus ein Daten-/Abtastungsvektor.
-
Im
FIR-Filter-, IIR-Filter-, Dezimations- und Echounterdrückungsmodus
führt das
Filter 90 Z MAC-Funktionen zwischen zwei Z-Elementvektoren
gleichzeitig aus. Im Extrapolationsmodus führt das Filter 90 Z'' MAC-Funktionen zwischen zwei Vektoren
mit Z'' Elementen gleichzeitig
aus. Zur Zweckmäßigkeit
der Erläuterung
wird eine einzige Folge von Z'' (wenn das Filter 90 im
Extrapolationsmodus ist) bzw. Z MAC-Funktionen als Iteration bezeichnet.
-
Zweckmäßiger Weise
empfängt
die MAC-Einheit 170 die Daten, Abtastungen, Koeffizienten
und Ergebnisse vom internen Speicher 130. Der interne Speicher 130 ist
normalerweise schneller und kleiner als der externe Speicher 110.
Der interne Speicher 130 umfasst eine erste und eine zweite
Speicherbank 140 und 150 (die in 2 nicht
dargestellt sind), wobei beide Abschnitte mit der MAC-Einheit 170 parallel
geschaltet sind, wodurch der MAC-Einheit 170 das gleichzeitige
Abrufen von Daten, eines Ergebnisses oder eines abgetasteten Worts
und eines Anschlusses ermöglicht
wird.
-
Zweckmäßiger Weise
sind die den unterschiedlichen Modi des Filters 90 zugeordneten
Datenvektoren, Daten-/Ergebnisvektoren
und Daten-/Abtastungsvektoren in unterschiedlichen Abschnitten einer
ersten Speicherbank 141 des internen Speichers 130 gespeichert.
Die den unterschiedlichen Modi des Filters 90 zugeordneten
Koeffizientenvektoren sind in unterschiedlichen Abschnitten einer
zweiten Speicherbank 150 des internen Speichers 130 gespeichert.
-
Die
dem FIR-Filtermodus zugeordneten Daten- und Koeffizientenvektoren
sind dementsprechend in den ersten W Abschnitten der ersten und
der zweiten Filterbank 140 und 150 des internen
Speichers 130 gespeichert. Ihnen folgen die dem IIR-Filtermodus
zugeordneten Daten- und Koeffizientenvektoren, die dem Dezimationsmodus
zugeordneten Daten- und Koeffizientenvektoren und die dem Extrapolationsmodus
und dem Echounterdrückungsmodus
zugeordneten Daten- und Koeffizientenvektoren. Zur Zweckmäßigkeit
der Erläuterung
ist die Adresse des ersten dem FIR-Filtermodus zugeordneten Speicherworts
in der ersten (zweiten) Speicherbank 140 (150)
durch DBASEF (CBASEF) bezeichnet. Die Adresse des ersten dem IIR-Filtermodus zugeordneten
Speicherworts in der ersten (zweiten) Speicherbank 140 (150)
ist durch DBASEI (CBASEI) bezeichnet. Die Adresse des ersten dem
Dezimationsmodus zugeordneten Speicherworts in der ersten (zweiten) Speicherbank 140 (150)
ist durch DBASED (CBASED) bezeichnet. Die Adresse des ersten dem
Extrapolationsmodus zugeordneten Speicherworts in der ersten (zweiten)
Speicherbank 140 (150) ist durch DBASEE (CBASEE)
bezeichnet. Die Adresse des ersten dem Echounterdrückungsmodus
zugeordneten Speicherworts in der ersten (zweiten) Speicherbank 140 (150)
durch DBASEA (CBASEA) bezeichnet.
-
2 ist
eine schematische Beschreibung einer AGU 190 gemäß einer
bevorzugten Ausführungsform der
Erfindung.
-
Die
AGU 190 umfasst ein V-Register (d.h. vreg) 210,
einen V/Z-Konverter (d.h. Konverter) 220, ein Datenbankregister
(d.h. dbaser) 230, einen P-Zähler (d.h. pcount) 250,
einen P-Komperator (d.h. pcomp) 240, eine Datenadressenad ditionseinrichtung
(d.h. dadd) 260, eine erste Additionseinrichtung 270,
einen K-Zähler (d.h.
kcount) 280, einen Teilungsmultiplexer (d.h. smux) 290,
einen K-Komperator (d.h. kcount) 300, eine Koeffizientenadressenadditionseinrichtung
(d.h. cadd) 310, ein Koeffizientenbankregister (d.h. cdaser) 320,
einen L-Zähler 330 und
einen L-Komperator
(d.h. lcomp) 340.
-
Das
verg 210 weist einen Eingange 212 und einen Ausgang 224 auf.
Der Konverter 220 weist einen Eingang 224 und
einen Ausgang 222 auf. Der pcomp 240 weist einen
Eingang 242, einen I/O 244 und einen Ausgang 246 auf.
Der kcount 280 weist einen Eingang 282 und Ausgänge 284 und 286 auf.
Der kcomp 300 weist einen I/O 302 und einen Ausgang 304 auf.
Der lcount 330 weist einen Eingang 332 und einen
I/O 334 auf. Der lcomp 340 weist einen I/O 342 und
einen Ausgang 344 auf. Der pcount 250 weist einen
I/O 254 und einen Ausgang 256 auf. Die erste Additionseinrichtung 270 weist
Eingänge 272 und 274 und
einen Ausgang 276 auf. Der smux 290 weist Eingänge 292, 294 und 298 und
einen Ausgang 296 auf. Der dbreg 230 weist einen
Eingang 234 und einen Ausgang 232 auf. Der dadd 260 weist
Eingänge 264 und 262 und
einen Ausgang 266 auf. Der cbreg 320 weist einen
Eingang 324 und einen Ausgang 322 auf. Der cadd 310 weist
Eingänge 314 und 312 und
einen Ausgang 316 auf.
-
Der
Ausgang des verg 210 ist mit dem Eingang 224 des
Konverters 220 gekoppelt. Der Ausgang 222 des
Konverters ist mit dem Eingang 242 des pcomp 240 gekoppelt.
Der Ausgang 246 des pcomp 240 ist mit dem Eingang 282 des
kcount 280 gekoppelt. Der I/O des kcount 280 ist
mit dem I/O 302 des kcomp 300 gekoppelt. Der Ausgang 304 des
kcomp 300 ist mit dem Eingang 332 des lcoumt 330 gekoppelt.
Der I/O des lcount 330 ist mit dem I/O 342 des
lcomp 340 gekoppelt. Der I/O 244 des pcomp 240 ist
mit dem I/O 254 des pcount 250 gekoppelt. Der
Ausgang 256 des pcount 250 ist mit dem Eingang 272 der
ersten Additionseinrichtung 270 und dem Eingang 294 des
smux 290 gekoppelt. Der Ausgang 286 des kcount 280 ist
mit dem Eingang 274 der ersten Additionseinrichtung 270 gekoppelt.
Der Ausgang 276 der ersten Additionseinrichtung 270 ist mit
dem Eingang 292 des smux 290 gekoppelt. Der Ausgang 278 der
ersten Additionseinrichtung 270 ist mit dem Eingang 262 des
dadd 260 gekoppelt. Der Ausgang 296 des smux 290 ist
mit dem Eingang 314 des cadd 310 gekoppelt. Der
Ausgang 323 des dbreg 230 ist mit dem Eingang 264 des
dadd 266 gekoppelt. Der Eingang 312 des cadd 310 ist
mit dem Ausgang 322 des cbreg 320 gekoppelt. Der
Eingang 243 des dbreg 230, der Eingang 324 des
cbreg 320 und der Eingang 212 des verg 210 sind
mit dem externen Speicher 110 bzw. dem internen Speicher 130 gekoppelt.
-
Im
verg 210 ist V gespeichert, wobei V die Länge eines
Filters oder die Anzahl der Anschlüsse eines Filters ist. V kann
durch den Programmierer des Filters definiert werden. Zweckmäßiger Weise
empfängt
das verg 210 V von dem externen Speicher 110.
Vorzugsweise stimmen Z und V bei sämtlichen Kanälen überein. Stimmen
sie nicht überein,
kann das Filter 90 in einem Einkanalmodus arbeiten.
-
Der
Konverter 220 empfängt
V und gibt Z aus, wobei Z = 2F und Z ≥ V > Z/2 gilt. Ein Filter
wird durch einen Koeffizientenvektor mit Z Elementen repräsentiert.
Der Koeffizientenvektor ist vorzugsweise in der zweiten Speicherbank 150 gespeichert.
-
Der
pcount 250 wird nach jeder Lese-/Schreiboperation im internen
Speicher 130 bzw. nach jeder MAC-Operation hochgezählt. Das
Ausgangssignal des pcount 250 ist durch P bezeichnet. Der
pcount 250 wird von dem pcomp 240 zurückgesetzt,
wenn P > Z gilt. Der
pcount 250 und der pcomp 240 können durch einen programmierbaren
Zähler
implementiert werden, der nach Z-maligem Hochzählen zurückgesetzt wird. Der kcount 280 zählt die
durch K bezeichnete Anzahl der Rückstellungen
des pcount 250. Jedes Mal, wenn der kcount 280 inkrementiert
wird, wird das Ausgangssignal am Ausgang 286 inkrementiert,
und das Ausgangssignal des Ausgangs 286 wird um Z hochgezählt. Der
kcount 280 wird vom kcomp 300 zurückgesetzt,
wenn K > W gilt, wobei
W die Anzahl der Kanäle
bezeichnet.
-
Der
lcount 330 wird hochgezählt,
wenn der kcount 280 zurückgesetzt
wird. Das Ausgangssignal des lcount 330 wird durch L bezeichnet.
Der lcount 330 wird hochgezählt, wenn sämtliche W Datenvektoren einer einzigen
Iteration unterzogen wurden. Der lcount 330 wird durch
den lcomp 340 zurückgesetzt,
wenn L einen vorgegebenen Wert erreicht. Bei einer Mehrkanal-FIR-Filterung
wird der lcomp 330 beispielsweise zurückgesetzt, wenn L > Y/Z gilt. Im IIR-Modus
wird der lcomp 330 zurückgesetzt,
wenn L > T gilt. Y
repräsentiert
die Anzahl der Elemente innerhalb eines externen Datenvektors. T
repräsentiert
die Anzahl der von einem IIR-Filter benötigten Iterationen.
-
Im
dbreg 230 ist ein Zeiger gespeichert. Zweckmäßiger Weise
zeigt der Zeiger auf das erste Datenwort, das verarbeitet wird,
wenn das Filter 90 zu arbeiten beginnt. Wenn das Filter 90 initialisiert
wird, zeigt der Zeiger normalerweise auf das erste Element des ersten
Daten-, Daten-/Ergebnis-
oder Daten-/Abtastungsvektors.
-
Im
cbreg 320 ist ein Zeiger gespeichert. Zweckmäßiger Weise
zeigt der Zeiger auf den ersten Anschluss, der verarbeitet wird,
wenn das Filter 90 zu arbeiten beginnt. Wenn das Filter 90 initialisiert
wird, zeigt der Zeiger normalerweise auf das erste Element des ersten
Koeffizientenvektors.
-
Die
erste Additionsvorrichtung 270 empfängt die Ausgangssignale vom
Ausgang 286 des kcount 280 und vom pcount 250.
Das Ausgangssignal der ersten Additionsvorrichtung 270 wird
an den dadd 260 gesendet, der das Ausgangssignal der ersten
Additionsvorrichtung 270 zum Ausgangssignal des dbreg 230 addiert. Das
Ausgangssignal ist eine Adresse in der ersten Speicherbank 140.
Das Signal wird an die erste Speicherbank 140 gesendet.
-
Der
smux 290 wählt
aus, ob das Ausgangssignal des pcount 250 oder das Ausgangssignal
der ersten Additionsvorrichtung 270 an den cadd 310 gesendet
wird.
-
Der
cadd 310 addiert das Ausgangssignal des smux 290 zu
dem Ausgangssignal des cbreg 320. Das Ausgangssignal ist
eine Adresse in der zweiten Speicherbank 150. Das Signal
wird an die zweite Speicherbank 150 gesendet. Wenn sämtliche
W Kanäle
durch das gleiche Filter gefiltert werden, wählt der smux 290 das Ausgangssignal
des pcount 250 aus.
-
3 ist
ein Ablaufdiagramm eines Verfahrens zur Umwandlung eines Filters
in ein Filter mit 2Z Anschlüssen.
-
In
einem Abfrageschritt 360 überprüft der Konverter 220,
ob das Q-te Bit von V „1" ist. Q ist eine
ganze Zahl mit Werten von 1 bis QMAX, wobei QMAX die höchste Anzahl
an zur Repräsentation
von Z verfügbaren Bits
ist. Gilt beispielsweise Q = 1, überprüft der Konverter
das am wenigsten signifikante Bit von V. Ist die Antwort „JA", folgt auf den Schritt 360 ein
Schritt 370, in dem Z den Wert 2Q erhält. Anderenfalls
folgt auf den Schritt 360 ein Schritt 380, in
dem Q verringert wird. Auf den Schritt 380 folgt der Schritt 360.
-
4 ist
eine schematische Beschreibung der allgemeinen Organisation von
einem einzigen Kanal zugeordneten Daten und Koeffizienten, wenn
das Filter 90 in unterschiedlichen Modi arbeitet, gemäß einer
bevorzugten Ausführungsform
der Erfindung.
-
Die
Daten und Koeffizienten sind auf diese Weise organisiert, wenn das
Filter 90 in einem der folgenden Modi arbeitet: einem Mehr-
oder Einkanal-FIR-Filter-, einem Mehr- oder Einkanal-Dezimations- oder einem
Mehr- oder Einkanalextrapolationsmodus.
-
Ein
Abschnitt 111 des externen Speichers 110 umfasst
Y + Z Speicherworte aus Adressen 11100 bis 11198.
Der erste externe Datenvektor, der Datenworte D(1, 1) bis D(1, Y) 5100–5188 umfasst,
ist in den Adressen 11100 bis 11188 gespeichert.
Der erste Koeffizientenvektor, der Z Anschlüsse C(1, 1) bis C1, Z) 6100–6108 umfasst,
ist in den Adressen 11190 bis 11198 gespeichert.
-
In
weiteren Abschnitten des externen Speichers 110 sind andere
externe Datenvektoren und andere Koeffizientenvektoren gespeichert.
In dem externen Speicher 110 werden ferner die Ergebnisse
der FIR-Filterung, der Dezimation bzw. der Extrapolation gespeichert.
-
Das
Filter 90 kann eine programmierbare Abfragetabelle zur
Speicherung der Position verschiedener externer Datenvektoren und
Koeffizientenvektoren enthalten. In der Abfragetabelle ist jedem
Kanal ein Index K zugeordnet, der die Reihenfolge der Verarbeitung
der den verschiedenen Kanälen
zugeordneten Daten definiert.
-
5 ist
eine schematische Beschreibung der allgemeinen Organisation der
mehreren Kanälen
zugeordneten Daten und Koeffizienten gemäß einer bevorzugten Ausführungsform
der vorliegenden Erfindung.
-
W
externen Datenvektoren und W Koeffizientenvektoren sind W Kanäle zugeordnet.
D(K, b) ist das b-te Datenelement des K-ten externen Datenvektors,
wobei b Werte von 1 bis Y und K Werte von 1 bis W aufweist.
-
C(K,
P) ist das P-te Koeffizientenelement des K-ten Koeffizientenvektors,
wobei P Werte von 1 bis Z und K Werte von 1 bis W aufweist. Zweckmäßiger Weise
ist jeder externe Datenvektor in einem separaten Abschnitt des externen
Speichers 110 gespeichert.
-
6 ist
eine schematische Beschreibung der allgemeinen Organisation von
Daten und Koeffizienten im internen Speicher gemäß einer bevorzugten Ausführungsform
der Erfindung. 6 beschreibt den anfänglichen
Inhalt des internen Speichers 130, wenn das Filter 90 in
den folgenden Modi aktiviert wird: dem Mehrkanal-FIR-Filter-, dem
Mehrkanal-IIR-Filter-
und dem Mehrkanalechounterdrückungsmodus.
-
Der
erste Datenvektor, der D(1, 1) – D(1,
Z) 5100–5108 umfasst,
ist in einem ersten Abschnitt 1141 der ersten Speicherbank 140 gespeichert.
Der erste Abschnitt 1141 der ersten Speicherbank 140 umfasst
Z Speicherworte 11410–11418.
Der zweite Datenvektor, der D(2, 1) – D(2, Z) 5200–5208 umfasst,
ist in einem zweiten Abschnitt 1142 der ersten Speicherbank 140 gespeichert.
Der zweite Abschnitt 1142 der ersten Speicherbank 140 umfasst
Z Speicherworte 11420–11428.
Der W-te interne Datenvektor, der D(W, 1) – D(W, Z) 5800–5808 umfasst,
ist im W-ten Abschnitt 1148 der ersten Speicherbank 140 gespeichert.
Der W-te Abschnitt 1148 der ersten Speicherbank 140 umfasst
Z Speicherworte 11480–11488.
Zweckmäßiger Weise
ist der K-te Abschnitt zwischen dem (K – 1)-ten und dem (K + 1)-ten
Abschnitt angeordnet.
-
Der
erste Koeffizientenvektor, der C(1, 1) – C(1, Z) 610–608 umfasst,
ist in einem ersten Abschnitt 1151 der zweiten Speicherbank 150 gespeichert.
Der erste Abschnitt 1151 der zweiten Speicherbank 150 umfasst Z
Speicherworte 11510–11518.
Der zweite Koeffizientenvektor, der C(2, 1)– C(2, Z) 620–628 umfasst,
ist in einem zweiten Abschnitt 1152 der zweiten Speicherbank 150 gespeichert.
Der zweite Abschnitt 1152 der zweiten Speicherbank 150 umfasst
Z Speicherworte 11520–11528.
Der W-te Koeffizientenvektor, der D(W, 1) bis D(W, Z) 680–688 umfasst,
ist im W-ten Abschnitt 1158 der zweiten Speicherbank 150 gespeichert.
Der W-te Abschnitt 1158 der zweiten Speicherbank 150 umfasst
Z Speicherworte 11580–11588.
-
Die
Adresse des P-ten Datenworts des dem FIR-Filtermodus zugeordneten K-ten Datenvektors
ist DBASEF + (K·Z)
+ P. Die Adresse des P-ten Anschlusses des dem FIR-Filtermodus zugeordneten
K-ten Koeffizientenvektors ist CBASEF + (K·Z) + P.
-
Als
der vom Filter 90 ausgeführte Prozess zur Beendigung
des Betriebs in einem bestimmten Modus (d.h. dem ersten Modus) ist
eine „Modusumschaltung" definiert. Der erste
Modus kann ein beliebiger der folgenden Modi sein: Ein Ein- oder Mehrkanal-FIR-Filter-,
IIR-Filter, Extrapolations-, Dezimations- oder Echounterdrückungsmodus.
-
Ein
einzigartiger Aspekt des Filters 90 ist seine Fähigkeit,
sogar vor dem Ende des Filterprozesses eine Modus umschaltung auszuführen, wobei
der Wechsel das Speichern einer vernachlässigbaren Anzahl an Statusparametern
einschließt.
Das Speichern der Statusparameter ermöglicht dem Filter 90 die
Wiederaufnahme der Arbeit im ersten Modus an der gleichen Stelle,
an der es die Arbeit im ersten Modus beendet hat. Zweckmäßiger Weise
umfassen die Statusparameter zwei Adressen. Die erste Adresse ist
die Adresse des Koeffizientenworts, das bei der nächsten Iteration
an die MAC-Einheit 170 gesendet werden soll. Die zweite Adresse
ist die Adresse eines Datenworts (wenn das Filter 90 im
Ein- oder Mehrkanal-FIR-Filter-, Extrapolations- oder Dezimationsmodus
arbeitet), die Adresse des Daten-/Ergebnisworts
(wenn das Filter 90 in einem Ein- oder Mehrkanal-IIR-Filtermodus
arbeitet) oder die Adresse eines Daten-/Abtastungsworts (wenn das
Filter 90 in einem Ein- oder Mehrkanalechounterdrückungsmodus
arbeitet), die bei der nächsten
Iteration an die MAC-Einheit 170 gesendet werden soll.
-
Diese
Adressen definieren sowohl den Kanal, der verarbeitet wird, als
auch die Anzahl der bereits ausgeführten Iterationen.
-
Wenn
das Filter 90 beispielsweise das Ausführen der FIR-Filterung beendet
und das nächste
zu filternde Wort das P-te Wort des K-ten Kanals ist, speichert
das Filter 90 jeweils die Adresse des P-ten Datenworts
und des P-ten Anschlusses des K-ten Kanals DAD(P, K) = (DBASEF +
(K·Z)
+ P) und CAD (K, P) = (CBASEF + (K – Z) + P) im internen Speicher 130.
Wenn das Filter 90 den FIR-Filterprozess beginnt, liest
der kcount 280 K, pcount 250 liest P, das dbreg 230 empfängt DBASEF
und das cbreg 320 empfängt
CBASEF. P zeigt an, dass der K-te Kanal P – 1 Iterationen unterzogen
wurde.
-
9 ist
ein Ablaufdiagramm eines Verfahrens 700 zum Ausführen einer
FIR-Filterung gemäß einer bevorzugten
Ausführungsform
der Erfindung. 8 ist eine schematische Beschreibung
der allgemeinen Organisation von Daten und Koeffizienten, die mehreren
Kanälen
zugeordnet sind, in unterschiedlichen Stadien eines FIR-Filterprozesses
gemäß einer
bevorzugten Ausführungsform
der Erfindung. 7 ist eine schematische Beschreibung
des Inhalts des ersten Abschnitts 141 der ersten Speicherbank 140 während verschiedener
Stadien eines FIR-Filterprozesses gemäß einer bevorzugten Ausführungsform
der Erfindung.
-
Jede
Iteration der FIR-Filterung umfasst eine Folge von MAC-Funktionen
zwischen einem Datenvektor mit Z Elementen und einem Koeffizientenvektor
mit Z Elementen. Der K-te Datenvektor weist Z Elements auf, während das
K-te externe Datenelement Y Elemente aufweist, daher müssen nach
der Verarbeitung der Z Elemente des K-ten Datenvektors Datenelemente
des K-ten externen Datenvektors abgerufen werden.
-
Das
Verfahren 700 umfasst die folgenden Schritte:
Einen
Initialisierungsschritt 710. Im Schritt 710 überprüft das Filter 90 den
Wert von V und verändert
Z entsprechend. Es gelten Z = 2F und Z ≥ V > Z/2. Wie durch die
Pfade 714 und 724 dargestellt, folgt auf den Schritt 710 ein
Schritt 720, auf den ein Schritt 730 folgt.
-
In
den Schritten 720 und 730 werden, wie unter Bezugnahme
auf 12 erläutert,
die ersten Z Datenelemente der K externen Datenvektoren und K Koeffizientenvektoren
an den internen Speicher 130 gesendet, so dass die Adresse
des P-ten Datenworts
des K-ten Datenvektors DBASE + (K·Z) + P ist. Die Adresse des
P-ten Anschlusses des K-ten Koeffi zientenvektors ist CBASE + (K·Z) + P.
Wie durch den Pfad 734 dargestellt, folgt auf den Schritt 730 ein
Schritt 740.
-
Im
Schritt 740 führt
das Filter 90 eine Iteration aus, es führt Z MAC-Operationen zwischen
dem K-ten Datenvektor und dem K-ten Koeffizientenvektor aus. Die
erste Gruppe von MAC-Operationen wird beispielsweise zwischen dem
ersten Datenvektor, der die ersten Z Elemente D(1, 1) bis D(1, Z) 5100–5108 des
ersten externen Datenvektors umfasst, und dem ersten Koeffizientenvektor
ausgeführt,
der C(1, 1) bis C(1, Z) 610–618 umfasst.
-
Wie
durch die Pfade 744 und 746 dargestellt, folgen
auf den Schritt 740 die Schritte 750 und 760.
Der Schritt 750 wird zweckmäßiger Weise parallel zu den
Schritten 760–790 ausgeführt.
-
Während des
Schritts 760 wird das Ergebnis R(K, L) der L-ten Iteration,
das den K-ten externen Datenvektor umfasst, im externen Speicher 110 gespeichert.
K wird erhöht,
so dass der (k + 1)-te Datenvektor bei der nächsten Ausführung des Schritts 740 einer
Filterung unterzogen wird.
-
Wie
durch den Weg 764 dargestellt, folgt auf den Schritt 760 ein
Abfrageschritt 760. Im Abfrageschritt 760 überprüft das Filter 90,
ob K > W gilt. Ist
die Antwort „NEIN", folgt auf den Schritt 740 ein
Schritt 770, wie durch einen Pfad 776 dargestellt.
Ist die Antwort „JA", wodurch angezeigt
wird, dass sämtliche
W Datenvektoren der L-ten
Iteration unterzogen wurden, werden L erhöht und K zurückgesetzt.
-
Wie
durch einen Pfad 784 dargestellt, folgt auf den Schritt 780 ein
Abfrageschritt 790. Im Abfrageschritt 790 überprüft das Filter 90,
ob L > W gilt. Ist
die Antwort „NEIN", folgt auf den Schritt 790 der
Schritt 740, wie durch einen Pfad 796 dargestellt.
Ist die Antwort „JA", wodurch angezeigt
wird, dass sämtliche
Elemente der W externen Datenvektoren gefiltert wurden, folgt auf
den Schritt 790 ein Schritt 798, in dem der Filterprozess endet
und L zurückgesetzt
wird.
-
In
den Schritten 740–790 wird
dafür gesorgt,
dass sämtliche
Elemente der W externen Datenvektoren gefiltert werden.
-
Wie
durch einen Pfad 744 dargestellt, wird beim Ausführen der
Schritte 760–790 und
selbst beim Ausführen
des Schritts 740 entsprechend dem (K + 1)-ten Datenvektor
das (K + L)-te Datenwort des K-ten externen Datenvektors aus dem
externen Speicher 110 abgerufen und ersetzt das (MODz(L))-te
Datenwort des K-ten Datenvektors.
-
Wie
in 7 gezeigt, wird beispielsweise das (Z + 1)-te
Datenwort D(1, Z + 1) 5110 des ersten externen Datenvektors
aus dem externen Speicher 110 abgerufen und ersetzt das
vorherige erste Datenwort 5100 des ersten Datenvektors,
nachdem der erste Datenvektor, der die ersten Z Elemente der ersten
externen Daten umfasst, einer Iteration unterzogen wurde. Das Abrufen
von D(1, Z + 1) 5110 kann erfolgen, während ein weiterer Datenvektor
einer Iteration unterzogen wird. Nachdem die ersten Z Datenelemente
sämtlicher
W externen Datenvektoren verarbeitet sind, wird der erste Datenvektor,
der (D(1, Z + 1) 5100 und D(1, 2) bis D(1, Z) 5102–5108 umfasst,
einer Iteration unterzogen. Auf die Iteration folgen das Abrufen
des (Z + 2)-ten Datenelements D(1, Z + 2) 5112 der ersten
externen Daten und das Ersetzten von D(1, 2) 5112 des ersten
Datenvektors. Nach Y – Z
Iterationen wird D(1, Y) 5188 abgerufen und ersetzt D(1,
Y – Z) 5178;
daher umfasst der erste Datenvektor D(1, Y – Z + 1) – D(Y) 5180–5188.
-
Wie
in 8 gezeigt, wird beispielsweise das erste Datenelement
des K-ten Datenvektors durch das (W + 1)-te Datenelement des K-ten
externen Datenvektors ersetzt, nachdem der K-te Datenvektor, der
die ersten Z Datenelemente des K-ten externen Datenvektors umfasst,
einer einzigen Iteration unterzogen wurde. Nachdem der erste Datenvektor,
der die ersten Z Elemente des ersten externen Datenvektors umfasst,
einer Iteration unterzogen wurde, wird das (Z + 1)-te Datenelement
D(1, Z + 1) 5110 des ersten externen Datenvektorelements
abgerufen und ersetzt das erste Datenwort D(1, 1) 5100 des
ersten Datenvektors. Nachdem der zweite Datenvektor, der die ersten
Z Elemente des zweiten externen Datenvektors umfasst, einer Iteration
unterzogen wurde, wird das (Z + 1)-te Datenelement D(2, Z + 1) 5210 des
zweiten externen Datenvektorelements abgerufen und ersetzt das erste
Datenwort D(2, 1) 5200 des zweiten Datenvektors. Nachdem
der dritte Datenvektor, der die ersten Z Elemente des dritten externen
Datenvektors umfasst, einer Iteration unterzogen wurde, wird das
(Z + 1)-te Datenelement D(3, Z + 1) 5310 des ersten externen
Datenvektorelements abgerufen und ersetzt das erste Datenwort D(3,
1) 5300 des dritten Datenvektors. Nachdem der W-te Datenvektor,
der die ersten Z Elemente des W-ten externen Datenvektors umfasst,
einer Iteration unterzogen wurde, wird das (Z + 1)-te Datenelement
D(W, Z + 1) 5810 des W-ten externen Datenvektorelements
abgerufen und ersetzt das erste Datenwort D(W, 1) 5800 des
W-ten Datenvektors.
-
12 ist
ein Ablaufdiagramm eines Verfahrens 800 zum Ausführen einer
IIR-Filterung gemäß einer bevorzugten Ausführungsform
der Erfindung. 11 ist eine schematische Beschreibung
der allgemeinen Organisation der Daten und Koeffizienten, die mehreren
Kanälen
zugeordnet sind, in unterschiedlichen Stadien eines IIR-Filterprozesses
gemäß einer
bevorzugten Ausführungsform
der Erfindung. 10 ist eine schematische Beschreibung
des Inhalts des (W + 1)-ten
Abschnitts 1241 der ersten Speicherbank 140 während unterschiedlicher
Stadien innerhalb des Filterprozesses gemäß einer bevorzugten Ausführungsform
der Erfindung.
-
Ein
Mehr- oder Einzelkanal-IIR-Filtern ist durch die folgende Gleichung
definiert:
-
-
T
ist ein Index, der die Anzahl der von dem IIR-Filter ausgeführten Iterationen
angibt.
-
Eine
IIR-Filterung eines einzigen Kanals erfolgt durch eine Folge von
MAC-Operationen zwischen einem Daten/Ergebnisvektor mit Z Datenelementen
und einem Koeffizientenvektor mit Z Elementen. Der K-te Daten-/Ergebnisvektor
und der Koeffizientenvektor werden dementsprechend im (W + K)-ten
Abschnitt der ersten und der zweiten Speicherbank 140 und 150 gespeichert.
So werden beispielsweise der erste, der zweite, der dritte und der
W-te Datenvektor entsprechend im (W + 1)-ten, im (W + 2)-ten, im
(W + 3)-ten und im 2W-ten Abschnitt 1241, 1242, 1243 und 1248 der
ersten Speicherbank 140 gespeichert. Der erste, der zweite, der
dritte und der W-te Koeffizientenvektor werden dementsprechend im
(W + 1)-ten, im (W + 2)-ten, im (W + 3)-ten und im 2W-ten Abschnitt 1251, 1252, 1253 und 1258 der
zweiten Speicherbank 150 gespeichert. Der (W + 1)-te Abschnitt 1241 der
ersten Speicherbank 140 umfasst Z Speicherworte 12410–12418.
-
Das
Verfahren 800 umfasst die folgenden Schritte:
Einen
Initialisierungsschritt. Im Schritt 810 überprüft das Filter 90 den
Wert von V und verändert
Z entsprechend. Es gelten Z = 2F und Z ≥ V > Z/2. Wie durch Pfade 814 und 824 dargestellt,
folgt auf den Schritt 810 ein Schritt 820, auf
den ein Schritt 830 folgt.
-
In
den Schritten 820 und 830 werden K Datenvektoren
und K Koeffizientenvektoren an den internen Speicher 130 gesendet,
so dass die Adresse des P-ten Datenworts des K-ten Datenvektors DBASEI + (K·Z) + P
ist. Die Adresse des P-ten Anschlusses des K-ten Koeffizientenvektors
ist CBASEI + (K·Z)
+ P. Wie durch einen Pfad 834 dargestellt, folgt auf den
Schritt 830 ein Schritt 840.
-
Im
Schritt 840 führt
das Filter 90 eine Iteration aus; es führt Z MAC-Operationen zwischen
dem K-ten Daten-/Ergebnisvektor
und dem K-ten Koeffizientenvektor aus. Die erste Gruppe MAC-Operationen
wird beispielsweise zwischen den Z Elementen D(1, 1) bis D(1, Z) 5100–5108 des
ersten Daten-/Ergebnis- und den Z Elementen C(1, 1) bis C(1, Z) 610–618 des
ersten Koeffizientenvektors ausgeführt. Wie durch Pfade 844 und 846 dargestellt,
folgen auf den Schritt 840 Schritte 850 und 860.
Der Schritt 850 wird zweckmäßiger Weise parallel zu den
Schritten 860–890 ausgeführt.
-
Während des
Schritts 860 wird K erhöht,
so dass die nächste
Ausführung
des Schritts 840 den (K + 1)-ten Daten- und Koeffizientenvektor einschließt.
-
Wie
durch einen Pfad 864 dargestellt, folgt auf den Schritt 860 ein
Abfrageschritt 860. Im Abfrageschritt 860 überprüft das Filter 90,
ob K > W gilt. Wenn
die Antwort „NEIN" ist, folgt auf den
Schritt 870 der Schritt 840, wie durch einen Pfad 876 dargestellt.
Ist die Antwort „JA", wodurch angezeigt
wird, dass bei der aktuellen (d.h. L-ten) Iteration sämtliche
W internen Vektoren gefiltert wurden, wird L erhöht und K zurückgesetzt.
-
Wie
durch einen Pfad 884 dargestellt, folgt auf den Schritt 880 ein
Abfrageschritt 890. Im Abfrageschritt 890 überprüft das Filter 90,
of L > T gilt. Ist
die Antwort „NEIN", folgt auf den Schritt 890 der
Schritt 840, wie durch einen Pfad 896 dargestellt.
Ist die Antwort „JA", wodurch angezeigt
wird, dass T Iterationen ausgeführt wurden,
folgt auf den Schritt 890 ein schritt 898, in
dem der Filterprozess endet und L zurückgesetzt wird.
-
In
den Schritten 840–890 wird
dafür gesorgt,
dass sämtliche
Kanäle
T Mal gefiltert werden.
-
Wie
durch einen Pfad 844 dargestellt, ersetzt bei der Ausführung der
Schritte 860–890 und
selbst bei der Ausführung
des Schritts 840 entsprechend dem (K – 1)-ten Daten-/Ergebnis- und
Koeffizientenvektor das Ergebnis R(K, L) der dem K-ten Daten-/Ergebnisvektor
zugeordneten L-ten Iteration das (MODz(L))-te Wort des K-ten Daten-/Ergebnisvektors.
-
Wie
in 10 gezeigt, ersetzt beispielsweise das Ergebnis
R(1, 1) 6110 der Iteration das im (W + 1)-ten Abschnitt 1241 der
ersten Speicherbank 140 gespeicherte vorherige erste Datenwort 5100 des
ersten Daten-/Ergebnisvektors, nachdem der erste Datenvektor, der
die ersten Z Elemente des ersten externen Daten-/Ergebnisvektors
umfasst, einer ersten Iteration unterzogen wurde. Das Ergebnis wird
abgerufen, während weitere
Daten-/Ergebnisvektoren einer ersten Iteration unterzogen werden.
Nachdem die W Daten-/Ergebnisvektoren einer ersten Iteration unterzogen
wurden, wird der erste Daten-/Ergebnisvektor, der R(1, 1) 6110 und D(1,
2) bis D(1, Z) 5102–5108 umfasst,
einer Iteration unterzogen. Auf diese Iteration folgt das Ersetzen
des zweiten Datenworts D(1, 2) 5112 des ersten Daten-/Ergebnisvektors
durch das Ergebnis R(1, 2) 6112 der Iteration. Nach T Iterationen
wird D(1, T) 6188 abgerufen und ersetzt R(1, Y – Z) 6178.
Der Filterprozess endet nach T Iterationen.
-
Wie
in 11 gezeigt, ersetzten beispielsweise die Ergebnisse
der ersten Iteration jedes der W Daten-/Ergebnisvektoren das vorherige erste
Datenelement des Daten-/Ergebnisvektors. R(1, 1) 6110 ersetzt D(1,
1) 5100, R(2, 1) 6210 ersetzt D(2, 1) 5200,
R(3, 1) 5310 ersetzt D(3, 1) und R(W, 1) 5810 ersetzt
D(W, 1) 5800.
-
14 ist
ein Ablaufdiagramm eines Verfahrens 900 zum Ausführen einer
Dezimation um einen Faktor M gemäß einer
bevorzugten Ausführungsform
der Erfindung. 13 ist eine schematische Beschreibung des
Inhalts des (2W + 1)-ten Abschnitts 1341 der ersten Speicherbank 140 während unterschiedlicher
Stadien eines Dezimationsprozesses gemäß einer bevorzugten Ausführungsform
der Erfindung.
-
Eine
Dezimation umfasst eine FIR-Filterung. Das Verfahren 900 ist
analog zum Verfahren 700, der Schritt 950 umfasst
jedoch statt dem Abrufen eines einzigen Datenworts während des
Schritts 750 das Abrufen von M Datenworten aus dem externen
Speicher 110. In einem Schritt 990 wird die Anzahl 1 der
Iterationen statt mit Y/Z, wie im Schritt 790, mit Y/(M·Z) verglichen.
-
Wie
in 13 gezeigt, werden beispielsweise D(1, 1 + Z)
bis D(1, Z + M) 5110–5114 aus
dem externen Speicher 110 abgerufen und ersetzen D(1, 1)
bis D(1, M) 5100–5104 des
ersten Datenvektors, nachdem der erste Datenvektor, der die ersten
Z Elemente der ersten externen Daten umfasst, einer Iteration unterzogen wurde.
D(1, 1 + Z) bis D(1, Z + M) 5110–5114 werden abgerufen,
während
das Filter 90 weitere Datenvektoren verarbeitet. Nachdem
die W Daten-/Ergebnisvektoren
einer ersten Iteration unterzogen wurden, wird der erste Datenvektor,
der D(1, 1 + Z) bis D(1, Z + M) 5110–5114 umfasst, einer
zweiten Iteration unterzogen. Nach ((Y – Z)/M) – 1 Iterationen werden D(1,
Y – M
+ 1) bis D(1, Y) 5186–5188 abgerufen
und ersetzen D(1, Y – 2M)
bis D(1, Y – M) 5178 bis 5184.
Der Filterprozess endet nach (Y + Z)/((M – 1)·Z) Iterationen.
-
15 ist
ein Ablaufdiagramm eines Verfahrens 1000 zum Ausführen einer
Extrapolation um einen Faktor M gemäß einer bevorzugten Ausführungsform
der Erfindung. 16 ist eine schematische Beschreibung
der allgemeinen Organisation von Daten und Koeffizienten, die einem
einzigen Kanal zugeordnet sind, gemäß einer bevorzugten Ausführungsform
der Erfindung.
-
Eine
Extrapolation umfasst eine FIR-Filterung. Das Verfahren 1000 ist
analog zum Verfahren 700, umfasst jedoch das Ausführen von
weniger MAC-Operationen pro Iteration und kleinere Koeffizienten-
und Datenvektoren.
-
Im
Extrapolationsmodus ist jeder Kanal einem als externen Koeffizientenvektor
bezeichneten Koeffizientenvektor mit Z Elementen zugeordnet. Im
internen Speicher 130 ist ein Teil des externen Koeffizientenvektors
gespeichert. Wenn der Extrapolationsfaktor M ist, ist im internen
Spei cher ein Koeffizientenvektor mit (Z/M) = Z'' Elementen
gespeichert. Eine Iteration umfasst Z'' MAC-Funktionen
zwischen einem Koeffizientenvektor mit Z'' Elementen
und einem Datenvektor mit Z'' Elementen. Ein Datenvektor
umfasst Z'' aufeinanderfolgende Datenworte.
Ein Koeffizientenvektor umfasst die (S·M + J)-ten Elemente des externen
Koeffizientenvektors, wobei J ein Index mit Werten von 1 bis Z'' und S ein Index mit Werten von 0 bis
M – 1
ist. Gelten beispielsweise Z = 64 und M = 4, so ist ein einziger
externer Koeffizientenvektor vorhanden, und es existieren vier Koeffizientenvektoren,
die jeweils 16 Elemente aufweisen. Der erste Koeffizientenvektor
umfasst das 1., 5., 9., 13., 17., 21., 25., 29., 33., 37., 41.,
45., 49., 53., 57. und 61. Element des externen Koeffizientenvektors.
-
Der
dem ersten Kanal zugeordnete externe Koeffizientenvektor (d.h. der
erste externe Koeffizientenvektor) ist beispielsweise im externen
Speicher 110 gespeichert und umfasst C(1, 1) bis C(1, Z) 6100 bis 6188. Der
erste externe Koeffizientenvektor wird in M Koeffizientenvektoren
aufgeteilt. Einer der M Koeffizientenvektoren wird in einen internen
Speicher 130 eingelesen. Anschließend wird dieser Vektor zum
Filtern von Daten verwendet, und ein weiterer Koeffizientenvektor
wird abgerufen. Anfänglich
wird der Koeffizientenvektor mit Z'' Elementen,
der C(1, 1), C(1, M + 1), ..., C(1, Z – M + 1) 6100, 6106,
..., 6184 umfasst, an den (3W + 1)-ten Abschnitt der zweiten
Speicherbank 150 gesendet. Der nächste in den (3W + 1)-ten Abschnitt
der zweiten Speicherbank 150 einzulesende Vektor umfasst
C(1, 2), C(1, M + 2), ..., C(1, Z – M + 2) 6102, 6108,
..., 6186. Der M-te Koeffizientenvektor, der in den (3W
+ 1)-ten Abschnitt der zweiten Speicherbank 150 eingelesen
wird, umfasst C(1, M – 1),
..., C(1, Z) 6104 bis 6188.
-
Das
Verfahren 1000 umfasst die folgenden Schritte:
Einen
Initialisierungsschritt 1010. Im Initialisierungsschritt 1010 überprüft das Filter 90 die
Werte von V und M und verändert
Z'' dementsprechend.
Es gelten Z'' = Z/M, Z = 2F und Z > V > Z/2. Wie durch Pfade 1014 und 1024 dargestellt,
folgt auf den Schritt 1010 ein Schritt 1020, auf
den ein Schritt 1030 folgt. In den Schritten 1020 und 1030 werden
K Datenvektoren und K Koeffizientenvektoren an den internen Speicher 130 gesendet,
so dass die Adresse des P-ten Datenworts des K-ten Datenvektors
DBASEE + (K·Z'') + P ist. Die Adresse des P-ten Anschlusses
des K-ten Koeffizientenvektors ist CBASEE + (K·Z'')
+ P. Wie durch den Pfad 1034 dargestellt, folgt auf den
Schritt 1030 ein Schritt 1040.
-
Ein
Datenvektor umfasst Z'' aufeinanderfolgende
Datenworte. Der Koeffizientenvektor umfasst die (S·M + t)-ten
Elemente des externen Koeffizientenvektors. In einem Schritt 1040 führt das
Filter 90 Z'' MAC-Operationen
zwischen dem K-ten Datenvektor und dem K-ten Koeffizientenvektor
aus.
-
Wie
durch Pfade 1044 und 1046 dargestellt, folgen
auf den Schritt 1040 Schritte 1050 und 1060.
Der Schritt 1050 wird zweckmäßiger Weise parallel zu Schritten 1060–1090 ausgeführt. Während des
Schritts 1060 wird das dem K-ten Kommunikationskanal zugeordnete
L-te Ergebnis R(K, L, S) im externen Speicher 110 gespeichert,
und K wird erhöht.
-
Wie
durch einen Pfad 1064 dargestellt, folgt auf den Schritt 1060 ein
Abfrageschritt 1070. Im Abfrageschritt 1070 überprüft das Filter 90,
ob K > W gilt. Ist
die Ant wort „NEIN", folgt auf den Schritt 1070 der
Schritt 1040, wie durch einen Pfad 1076 dargestellt.
Ist die Antwort „JA", wodurch angezeigt
wird, dass sämtliche
W Datenvektoren L Iterationen unterzogen wurden, werden L erhöht und K
zurückgesetzt.
-
Wie
durch einen Pfad 1084 dargestellt, folgt auf den Schritt 1080 ein
Abfrageschritt 1090. Im Abfrageschritt 1090 überprüft das Filter 90,
ob L > (Y/(W·Z)) gilt.
Ist die Antwort „NEIN", folgt auf den Schritt 1090 der Schritt 1040,
wie durch einen Pfad 1096 dargestellt. Ist die Antwort „JA", wodurch angezeigt
wird, dass sämtliche
Y Elemente der Daten sämtlicher
W externen Datenvektoren durch Z'' Koeffizientenvektoren
gefiltert wurden, folgt auf den Schritt 1090 ein schritt 1100.
-
Im
Schritt 1100 werden L zurückgesetzt und S erhöht.
-
Wie
durch einen Pfad 1104 dargestellt, folgt auf den Schritt 1100 ein
Schritt 1110. Im Schritt 1110 überprüft das Filter 90,
ob S > M gilt. Ist
die Antwort „JA", wodurch angezeigt
wird, dass der Extrapolationsprozess beendet ist, folgt auf den
Schritt 1100 ein Schritt 1118, wie durch einen
Pfad 1114 dargestellt. Ist die Antwort „NEIN", folgt auf den Schritt 1100 der
Schritt 1040.
-
Wie
durch einen Pfad 1044 dargestellt, ersetzt bei der Ausführung der
Schritte 1060–1090 entsprechend
dem K-ten Datenvektor und selbst bei der Ausführung des Schritts 1040 entsprechend
einem weiteren Datenvektor das (Z + L)-te Datenwort des K-ten externen
Datenvektors das (MODz(L))-te Datenwort des K-ten Datenvektors.
-
17 ist
eine schematische Ausführungsform
eines mit einem Benutzer 1200 am nahegelegenen Ende, einem
Benutzer 1230 am entfernten Ende, einem Hybridverbindungselement 1210,
einer Echoadditionseinrichtung 1240, einem Prozessor 1220 und
dem externen Speicher 110 gekoppelten Filters 90 gemäß einer
bevorzugten Ausführungsform
der Erfindung. 18 ist ein Ablaufdiagramm eines
Verfahrens 1200 zur Unterdrückung von Echos gemäß einer
bevorzugten Ausführungsform
der Erfindung.
-
Das
Verfahren 1200 umfasst die folgenden Schritte:
Einen
Initialisierungsschritt 1210. Im Schritt 1210 überprüft das Filter 90 den
Wert von V und ändert
Z entsprechend. Es gelten Z = 2F und Z ≥ V > Z/2. Wie durch Pfade 1214 und 1224 dargestellt,
folgt auf den Schritt 1210 ein Schritt 1220, auf
den ein Schritt 1230 folgt.
-
Wie
unter Bezugnahme auf 12 erläutert, werden in den Schritten 1220 und 1230 K
Daten-/Abtastungsvektoren und K Koeffizientenvektoren an den internen
Speicher 130 gesendet, so dass die Adresse des P-ten Worts
des K-ten Daten-/Abtastungsvektors
DBASEA + (K·Z)
+ P ist. Die Adresse des P-ten Anschlusses des K-ten Koeffizientenvektors
ist CBASEA + (K·Z)
+ P. Wie durch einen Pfad 1234 dargestellt, folgt auf den Schritt 1230 ein
Schritt 1236.
-
Im
Schritt 1236 empfängt
das Filter 90 eine dem K-ten Kommunikationskanal zugeordnete
L-te Datenabtastung. Diese Abtastung wird durch SP(K, L) bezeichnet.
L ist ein Index mit positiven Werten. Das MODz(L)-te Wort des K-ten
Daten-/Abtastungsvektors
wird durch SP(K, L) überschrieben.
Wie durch einen Pfad 1238 dargestellt, folgt auf den Schritt 1236 ein
Schritt 1240.
-
Im
Schritt 1240 führt
das Filter 90 eine Iteration aus – es führt Z MAC-Funktionen zwischen
dem K-ten Daten-/Abtastungsvektor
und dem K-ten Koeffizientenvektor aus.
-
Wie
durch Pfade 1244 und 1246 dargestellt, folgen
auf den Schritt 1240 Schritte 1250 und 1260.
Der Schritt 1250 wird zweckmäßiger Weise parallel mit Schritten 1260–1290 ausgeführt. Während des
Schritts 1260 wird K erhöht, so dass der (K + 1)-te
Daten-/Abtastungsvektor während
der nächsten
Ausführung
des Schritts 1240 einer Iteration unterzogen wird.
-
Wie
durch einen Pfad 1264 dargestellt, folgt auf den Schritt 1260 ein
Abfrageschritt 1270. Im Abfrageschritt 1270 überprüft das Filter 90,
ob K > W gilt. Ist
die Antwort „NEIN", folgt auf den Schritt 1270 der
Schritt 1240, wie durch einen Pfad 1276 dargestellt.
Ist die Antwort „JA", folgt auf den Schritt 1270 ein
Schritt 1280. Während
des Schritts 1280 werden L erhöht und K zurückgesetzt.
Wie durch einen Pfad 1284 dargestellt, folgt auf den Schritt 1280 ein
Schritt 1236.
-
Wie
durch einen Pfad 1244 dargestellt, folgt auf den Schritt 1240 der
Schritt 1250. Im Schritt 1250 wird R(K, H) an
den externen Speicher 110 gesendet. Wie durch einen Pfad 1254 dargestellt,
folgt auf den Schritt 1250 der Schritt 1290. Im
Schritt 1290 empfängt
der Prozessor 1220 ein Signal SE(K, L), das aus dem Leiten der
Abtastung SP(K, L) durch das Hybridverbindungselement 1210 resultiert.
Der Prozessor 1220 vergleicht dann das Signal SE(K, L)
mit der Abtastung SP(K, L). Die Differenz zwischen den beiden Signalen
ist ein durch E(K, L) bezeichnetes Fehlersignal. Der Prozessor 1210 überprüft auch,
ob E(K, L) > E(K)
gilt. E(K) ist ein vorgegebener Wert, der den dem K-ten Kommunikationskanal
zugeordneten erforderlichen Fehler angibt. Ist die Antwort „NEIN", folgt auf den Schritt 1290 ein
Schritt 1300, wie durch einen Pfad 1294 dargestellt.
Ist die Ant wort „JA", folgt auf den Schritt 1290 ein
Schritt 1310, in dem der Echounterdrückungsprozess endet und L zurückgesetzt
wird. Wie durch einen Pfad 1304 dargestellt, folgt auf
den Schritt 1300 der Schritt 1236.
-
Wie
durch einen Pfad 1244 dargestellt, werden die Schritte 1250 und 1300 während der
Ausführung der
Schritte 1260–1290 und
selbst während
der Ausführung
des Schritts 1240 entsprechend einem weiteren Daten-/Abtastungsvektor
ausgeführt.
-
Daher
wird hier eine Ausführungsform
beschrieben, die zumindest eine bevorzugte Ausführungsform eines verbesserten
Verfahrens und einer verbesserten Vorrichtung zur Gruppierung von
Datenprozessoranweisungen und Ausführungsformen von Anweisungssystemen
umfasst. Für
Fachleute ist ersichtlich, dass der offenbarte Gegenstand auf unterschiedlichste
Weise verändert
werden und zahlreiche Ausführungsformen
annehmen kann, die sich von den vorstehend speziell ausgeführten und
beschriebenen unterscheiden, wobei der Rahmen der Erfindung durch
die Ansprüche
definiert ist.