NO301951B1 - Adresseprosessor for en signalprosessor - Google Patents

Adresseprosessor for en signalprosessor Download PDF

Info

Publication number
NO301951B1
NO301951B1 NO922568A NO922568A NO301951B1 NO 301951 B1 NO301951 B1 NO 301951B1 NO 922568 A NO922568 A NO 922568A NO 922568 A NO922568 A NO 922568A NO 301951 B1 NO301951 B1 NO 301951B1
Authority
NO
Norway
Prior art keywords
mod
address
buffer
filter
sum
Prior art date
Application number
NO922568A
Other languages
English (en)
Other versions
NO922568L (no
NO922568D0 (no
Inventor
Tore Mikael Andre
Karl-Gunnar Andersson Roejaas
Original Assignee
Ericsson Telefon Ab L M
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 Ericsson Telefon Ab L M filed Critical Ericsson Telefon Ab L M
Publication of NO922568L publication Critical patent/NO922568L/no
Publication of NO922568D0 publication Critical patent/NO922568D0/no
Publication of NO301951B1 publication Critical patent/NO301951B1/no

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/355Indexed addressing
    • G06F9/3552Indexed addressing using wraparound, e.g. modulo or circular addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/065Partitioned buffers, e.g. allowing multiple independent queues, bidirectional FIFO's
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03HIMPEDANCE NETWORKS, e.g. RESONANT CIRCUITS; RESONATORS
    • H03H17/00Networks using digital techniques
    • H03H17/02Frequency selective networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2205/00Indexing scheme relating to group G06F5/00; Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F2205/06Indexing scheme relating to groups G06F5/06 - G06F5/16
    • G06F2205/066User-programmable number or size of buffers, i.e. number of separate buffers or their size can be allocated freely

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Complex Calculations (AREA)
  • Debugging And Monitoring (AREA)
  • Information Transfer Between Computers (AREA)

Description

Den foreliggende oppfinnelse vedrører en adresseprosessor
for en signalprosessor for beregning av adresser i et lese/skrive-lager inneholdende tilstandsvariable for digitale filtre.
Oppfinnelsens bakgrunn
I forbindelse med implementeringen av digitale filtre i signalprosessorer hvor inndataprøver til filtrene lagres i et lese/skrive-lager, behøves det en form for adresseprosessor for skriving og lesing av filtrenes tilstandsvariabler. Disse filtrene kan være både rekursive (IIR) og ikke-rekursive (FIR). Et filter beregnes ved å lese tilstandsvariablene fra lageret og beregne utdata. Disse utdata blir da inndata eller tilstandsvariabler til det neste filter og skrives derfor tilbake i lageret. Generelt kan et filtersystem bestå av et antall filtre, hvilke også kan ha forskjellige prøvetakningsfrekvenser.
Etter en beregning av en filterverdi blir alle tilstandsvariabler i et filter skiftet én posisjon i lageret. Den eldste tilstandsvariabel skrives over av den nesteldste, og en ny prøveverdi lagres i lagerposisjonen som er frigjort ved skiftoperasjonen.
En mangel ved denne tidligere kjente fremgangsmåte, er at skiftingen i lageret er en tidkrevende operasjon, ettersom alle tilstandsvariabler må leses og skrives inn i nye lagerpos i s j oner.
En annen mangel er at denne skiftoperasjon dessuten er effektkrevende. Dette er viktig, f.eks. i forbindelse med signalprosessorer i batteridrevne telefoner, hvor den tilgjengelige energi er begrenset.
Beskrivelse av kjent teknikk
En vanlig fremgangsmåte for adressering og skifting av tilstandsvariabler for et digitalt filter implementert av en signalprosessor og et lese/skrive-lager, er å anvende en sirkulær buffer av størrelsesorden 2n, hvor n er et helt tall større enn 0. En peker angir den eldste tilstandsvari-ables lagerposisjon, dvs. den sirkulære buffers foldeadresse. Etter lesing av den eldste tilstandsvariable, blir en ny prøveverdi innskrevet i den indikerte lagerposisjonen, hvor den eldste tilstandsvariable overskrives. Hvis pekeren nå endres til å peke mot den nest eldste tilstandsvariabel, vil pekeren indikere en ny foldeadresse. Den tidligere nesteldste tilstandsvariabel er nå den eldste, og resultatet av prosedyren er ekvivalent med at alle tilstandsvariabler i en sirkulær buffer skiftes en lagerposisjon uten fysisk å forflytte dem. Bare pekeren er blitt oppdatert til å angi den nye foldeadressen. Fremgangsmåten kalles derfor virtuell skifting. Når pekeren har nådd den sirkulære buffers første lagerposisjon, vil den, etter neste skifting, peke på den siste lagerposisjonen. Adresse-ringen av bufferen kan derfor betegnes som "adressering modulo 2<n>".
En vesentlig mangel ved denne kjente fremgangsmåte er imidlertid at bufferen bare kan ha størrelsen 2n, slik at filtrene må være av størrelsen 2n. Dette gjør fremgangsmåten egnet bare for enkelte spesielle filtre.
En annen tidligere kjent fremgangsmåte bruker en buffer med vilkårlig lengde og bruker en peker som skiftes ned fra bufferens slutt til begynnelsen under filterberegningene. Når pekeren har nådd bufferens begynnelse, lastes pekeren enda en gang med adressen til slutten av bufferen, slik at prosedyren kan gjentas.
En mangel ved denne tidligere kjente fremgangsmåte er at det ikke er mulig ved et tilfeldig tidspunkt å adressere en tilfeldig tilstandsvariabel i et tilfeldig filter. Fremgangsmåten virker bare dersom filtrene beregnes i sekvens i overensstemmelse med ovenstående. Dette gjør fremgangs måten ubrukbar som utgangspunkt for en generell adresseprosessor.
US-A-4 800 524 omhandler en adresseprosessor der start- og sluttadressen kun kan være et multippel av 2n.
Oppfinnelsens formål
Et formål med den foreliggende oppfinnelse er å tilveie-bringe en adresseprosessor av den typen som er nevnt ovenfor, hvilken prosessor er i stand til å adressere og virtuelt skifte tilstandsvariabler hos i det minste én sirkulær buffer for i det minste to digitale filtre lagret etter hverandre i bufferen, idet filtrene har et tilfeldig antall forsinkelseselementer eller en tilfeldig lengde, men den samme samplingsfrekvens.
Sammenfatning av oppfinnelsen
I overensstemmelse med oppfinnelsen oppnås ovennevnte formål med en adresseprosessor med særtrekk ifølge patentkrav 1.
Kort beskrivelse av tegningen
Oppfinnelsen vil bli beskrevet i detalj nedenfor med henvisning til medfølgende tegning, hvor: figur 1 viser datalagerets inndeling i overensstemmelse med den foreliggende oppfinnelse;
figur 2 viser inndelingen av en buffer i forbindelse med den foreliggende oppfinnelse;
figur 3 viser et filterdiagram for filtrene i bufferen på figur 2;
fig. 4 illustrerer lokaliseringen av filtrene og foldeadressen til bufferen på figur 2 under etterfølgende beregningstrinn;
figur 5 viser en foretrukken utførelsesform av en adresseprosessor i overensstemmelse med den foreliggende oppfinnelse;
figur 6 viser et beregningstidsdiagram for adresseprosessoren ifølge figur 5; og
figur 7 viser et signaltidsdiagram for adresseprosessoren ifølge figur 5 for tre filtre A, B og C med henholdsvis 2, 1 og N uttak, hvor N er et tilfeldig positivt helt tall.
Beskrivelse av foretrukne utførelsesformer
Figur 1 viser lagerorganiseringen for den del av RAM som inneholder tilstandsvariablene for de forskjellige filtre. I dette tilfellet er det forutsatt at lageret omfatter filtre for åtte kanaler CH 0 - CH 7. Hver kanal inneholder buffere BUFF 0 - BUFF 2. Antallet buffere er tilfeldig, men hver kanal har det samme antall buffere med tilsvarende lengder. Bufferene i sin tur inneholder filtre FILTER 0 - FILTER 2. Bufferene har normalt forskjellige lengder, men filtrene i hver buffer tilsvarer den samme samplingsfrekvens. Ifølge den foreliggende oppfinnelse omfatter minst én buffer to eller flere filtre. Bufferlengdene avhenger av summen av filterlengdene; faktisk er bufferlengden dannet av summen av antallet av forsinkelseselementer i de inn-befattede filtre pluss 1. Figur 1 viser et datalager inndelt i åtte kanaler CH 0 - CH 7. Oppfinnelsen er ikke begrenset til åtte kanaler, snarere er et tilfeldig antall kanaler mulig. Videre indikeres det på figur 1 at datalageret omfatter 512 lagerceller. Dette antall kan imidlertid også varieres. Figur 2 viser en buffers innhold i detalj. I eksempelet omfatter bufferen tre filtre med filterstartadresser filter_addr(0), filter_-addr(1), filter_addr(2). Den absolutte startadresse er betegnet mod_start. Tilstandsvariablene i det først filter er betegnet X(n), X(n-1), X(n-2), X( -3). X(n) indikerer her den siste prøvetakning, X(n-1) den nestsiste prøvetak-ning, osv.
For å lette den foreliggende beskrivelse, antas det til å begynne med at de tre filtrene i bufferen på figur 2 er ikke-rekursive.
I dette tilfellet blir tilstandsvariablene hentet en etter en fra lageret i løpet av beregningen av FILTER 0, med start fra den eldste tilstandsvariablen X(n-3), og multipliseres med tilsvarende filterkoeffisienter, hvilke hentes fra RAM eller ROM. Filteret beregnes ved summering av disse multipliserte tilstandsvariabler. Når filteret er beregnet, blir den oppnådde verdi Y(n) skrevet inn i lagercellen for den eldste tilstandsvariable X(n-3). På figur 2 har dette blitt indikert ved å la den tilstandsvariable eller prøven X(n-3) dele lagercellen med filterutsignalet Y(n). De beregnede filterverdiene Y(n), Y(n-1) ... danner på denne måte innsignalene til FILTER 1 . FILTER 1 er beregnet på tilsvarende måte, og etter beregningen er verdien skrevet inn i lagercellen for den eldste tilstandsvariable Y(n-2) som innsignal til FILTER 2. Denne prosedyre, hvor ut-signalet fra ett filter danner innsignalet til det neste filter, er mulig på grunn av det faktum at filtrene i bufferen tilsvarer den samme samplingsfrekvensen. Figurene 3 og 4 illustrerer ytterligere beregningsproses-sen, i særdeleshet også komplikasjonene som oppstår i forbindelse med de rekursive filtre. Figur 3 viser et mer generelt filterdiagram for filtrene i bufferen på figur 2. Som tidligere er det første filter FILTER 0, et ikke-rekursivt filter som bare inneholder en transversen del. Det andre filter, FILTER 1, inneholder en rekursiv venstredel og en transversen høyredel. Det tredje filter FILTER 2, inneholder bare en rekursiv del og ingen transversen del.
På figur 3 har forsinkelseselementene blitt indikert med T. Det fremgår av figur 2 at FILTER 0 inneholder tre forsinkelseselementer T, og fire koeffisienter a0...a3. FILTER 1 inneholder to forsinkelseselementer T, og to koeffisienter , b2i den rekursive delen, og tre koeffisienterCg...c21 den transverselle delen. FILTER 2 inneholder to forsinkelseselementer T og to koeffisienter d-|, d2. Ifølge ovenstående beregningsregel har bufferen en lengde på 3 + 2 + 2 + 1, dvs. 8.
Figur 4 viser en sekvens av beregninger for de tre filtrene i figur 3.
Det er vesentlig å merke seg to ting på figur 4.
For det første ligger verdiene av tilstandsvariablene X(n)..., Y(n)..., W(n)... alltid stille i lagercellen som de en gang er blitt tildelt. For hver ny figur (a)-(h) er n øket med 1, dvs. at X(n) vil bli benevnt X(n-1), osv. Tilstandsvariablenes verdi vil imidlertid fortsatt forbli i den opprinnelige lagercellen. De eldste tilstandsvariabler overskrives da med nye tilstandsvariabler når de ikke lenger behøves. Det er således ikke nødvendig å flytte tilstandsvariablene.
For det andre oppdateres hele tiden bufferens foldeadresse, mod_pointer. Denne pekeren peker alltid på den lageradresse hvor den sirkulær buffer foldes, i dette tilfellet grensen mellom FILTER 2 og FILTER 0. Pekeren mod_pointer danner en "null-referanse", med hvilken det er mulig å oppnå en korrekt absolutt adresse for en aktuell tilstandsvariabel, hvilket vil bli illustrert i detalj nedenfor.
Ved beregning av adressen for en bestemt tilstandsvariabel, utnyttes følgende variabler: mod_start = bufferens absolutte startadresse; data_addr = forskyvningen av den valgte tilstandsvari ablen relativt til buffer startadressen, mod_start; write_addr = den valgte skriveadresse relativt til buffer startadressen, mod_start; mod_numb = bufferlengden, kan være valgt tilfeldig; mod_pointer = bufferens aktuelle foldeadresse; rel_addr = den beregnede adressen relativt til buffer ens startadresse, mod_start; dmaddr = den endelige, absolutte lageradressen. Ved beregningen av adressen til en tilstandsvariabel, beregnes først summen
Deretter blir det testet om denne sum er mindre enn mod_numb. Hvis dette er tilfelle, settes rel_addr lik den oppnådde sum, dvs.
Dersom betingelsene imidlertid ikke er oppfylt, dvs. at summen er større eller lik mod_numb, sette rel_addr til
rel_addr = data_addr + mod_pointer - mod_numb
I begge tilfeller er den søkte lagerposisjons forskyvning relativt til bufferens startadresse, mod_start, oppnådd. Den endelige, absolutte datalageradressen, dmaddr, oppnås ved å addere mod_start til det oppnådde resultat, dvs.
Opprinnelig settes mod_pointer til slik at
En skriveadresse beregnes på samme måte med den forskjell at data_addr erstattes med write_addr.
Beregningen av FILTER 0, FILTER 1 og FILTER 2 er utført på følgende måte.
1) Innsignalet skrives inn i posisjon X(n).
2) FILTER 0 beregnes på følgende måte. Først settes data_addr til filter_addr(0) + indeks, hvor indeks=3. Med denne verdi for data_addr beregnes adressen til X(n-3) i overensstemmelse med ovenstående. X(n-3) hentes fra lagercellen som er utpekt og multipliseres med koeffisienten a3. Deretter minskes indeksen og derfor også data_addr med 1. X(n-2) hentes og multipliseres med a2. Produktet adderes til det tidligere oppnådde produkt. På tilsvarende måte trappes indeksen ned helt til 0, slik at alle variablene i FILTER 0 blir hentet i sin tur, det ene etter det andre, multipliseres med tilsvarende koeffisient og adderes. FILTER 0 er deretter ferdigberegnet. 3) FILTER 1 beregnes på følgende måte. Først beregnes den rekursive venstre delen ved å sette data_addr til filter_addr(1) + indeks, hvor indeks=2. Herved utpekes Y(n-2) og multipliseres med b2, hvoretter indeks og derfor også data_addr blir redusert med 1 . Det oppnådde produkt adderes til resultatet oppnådd fra FILTER 0. På tilsvarende måte blir Y(n-1) multiplisert med koeffisienten b-|, også addert til det tidligere oppnådde resultat. Ved neste nedtrapping av indeksen oppnås adressen til posisjon
X(n-3)/Y(n). Det oppnådde resultat Y(n) skrives nå over den tidligere tilstandsvariable X(n-3) i denne lagerposisjon. Nå finnes alle nødvendige tilstandsvariabler Y(n), Y(n-1) og Y(n-2) til-gjengelig for beregning av den transverselle høyre delen av FILTER 1 . Denne utregning er gjort på samme måte som utregningen av FILTER 0, for-skjellen er at filter_addr(1 ) og indeks=2 er brukt for beregningen data_addr i det første trinn. 4) FILTER 2 beregnes på samme måte som den rekursive delen for FILTER 1 , med den forskjell at filter_-addr(2) brukes for utregningen av data_addr og d1, d2brukes som koeffisienter. I utgangstrinnet settes indeksen lik 2. Når indeksen har nådd verdien 0, skrives resultatet W(n) over verdien Y(n-2).
Alle disse beregningene gjennomføres ved det trinn som er vist på figur 4(a). Ved overgangen til figur 4(b) minskes mod_pointer med 1 og n økes med 1, slik at X(n) nå benevnes X(n-1), osv. Neste innsignalverdi skrives inn i denne posisjon som betegnes X(n), hvoretter ovenstående beregn-ingssyklus gjentas.
På denne måte telles mod_pointer ned én enhet for hver av figur 4(a)-(h). Når filtrene på figur 4(h) er beregnet og mod_pointer skal oppdateres, utføres en folding tilbake til posisjonen vist på figur 4(a), hvoretter hele prosedyren gjentas.
Fra ovenstående fremgår det klart at bufferens lagerområde brukes meget effektivt. I særdeleshet kan bufferen adres-seres modulo n, hvor n er et tilfeldig positivt helt tall. Denne fremgangsmåte har vist seg å være særlig fordelaktig dersom mange korte filtre skal realiseres.
En foretrukken utførelsesform av adresseprosessoren vil bli
beskrevet nedenfor med henvisning til figurene 5-7.
I overensstemmelse med figur 5, kan adresseprosessoren logisk deles i tre forskjellige seksjoner. I den første, toppseksjonen, lagres bufferkonstantene. I den andre, mellomdelen, utføres adresseberegningen. I den tredje, nederste delen, lagres til slutt adressene for tilgang til lagrene ved passende tidspunkt.
For hver samplingsfrekvens, sample_rate, lagres en peker, mod_pointer. I den foretrukne utførelsesform omfatter adresseprosessoren et registersett S inneholdende fire registre for lagring av fire ulike verdier av mod_pointer, én for hver samplingsfrekvens og derved for hver buffer. I den foretrukne utførelsesform har disse registrene en lengde på fem biter. En dekrementeringskrets DEC, f.eks. omfattende en halv-subtraherer, minsker en valgt peker og lagrer den samme i det tilsvarende registeret etter bruk i overensstemmelse med ovenstående. Når pekeren antar verdien 0, dvs. når en folding i bufferen er hensiktsmessig, blir en konstant lastet inn i registeret. Denne konstant kan være fast forbundet med registerinngangene. Verdien av konstanten er mod_numb-1, hvor mod_numb er bufferens lengde. En minking av mod_pointer er utført når signalet dec_mod_count er høyt. En valgt peker lastes inn i et register mod_reg før den er minsket eller lastet inn i beregningsseksjonen. Konstantene for bufferstørrelsen og bufferlokasjonen i lageret kan også være fast forbundet med registerinngangene. Signalet sample_rate velger konstantene tilsvarende en bestemt samplingsfrekvens for lagring i de forskjellige registrene. Hvert register i den foretrukne utførelsesform inneholder fire innganger D1-D4, én for hver samplingsfrekvens. Konstanten for bufferstørrelsen,
mod_numb, er innlastet som en tokomplementverdi, dvs.
som -mod_numb. Konstanten innlastes i et register mod_num_reg med en lengde på fem bits. Konstanten for bufferlokasjonen i lageret innlastes som mod_start i et
register mod_sta_reg med en ordlengde på 6 biter.
Beregningsseksjonen inneholder to registre A_reg, som har en lengde på 6 bits, B-reg, som har en lengde på 5 biter, og også en 6 bit summerer, f.eks. en såkalt "carry boost adder", hvor addererens mest signifikante bit er en halv-adderercelle.
Adresseberegningen begynner med innlastningen av enten data_addr eller write_addr i B_reg, avhengig av om en lese eller skriveoperasjon er utført. A_reg innlastes med enten mod_pointer fra mod_reg på inngang D2 eller 0 på inngang D1. Innlastningen av registeret A_reg styres av et modulo deaktiverende signal mod_dis i avhengighet av den valgte adressemodus, enten modulo eller absolutt adressering.
I absolutt adresseringsmodus (mod_dis er høy) innlastes 0 i registeret A_reg, slik at inngangsadressen, data_addr eller write_addr, adderes til 0. Dette gjør beregningsenheten transparent for absolutt adressering.
I modulo-modus adderes den iA_reg innlastede mod_pointer til den i B_reg innlastede adressen, enten data_addr eller write_addr. Resultatet mates tilbake til inngangen D3 i registeret B_reg.
Tokomplementverdien av mod_numb, dvs, -mod_numb, lagret i registeret mod_num_reg, overføres til registeret A_reg og adderes til innholdet i registeret B_reg. Resultatet lagres i B_reg dersom nevnte resultat er ikke-negativt. Hvis resultatet er negativt, lagres den gamle verdi i registeret B_reg for den neste operasjon. Ettersom registeret mod_num_reg har blitt innlastet med tokomplementet av mod_numb, dvs. -mod_numb, er denne testprosedyre forenklet ved at tegnet for resultatet fra editeringen direkte kan utleses fra den mest signifikante bit i nevnte resultat. Denne bit over linje +/- sammen med signalene CHSST og IXZ
på figur 7 styrer innlastningen av registeret B_reg.
Konstanten mod_start overført fra registeret mod_sta_reg til register A_reg i neste trinn adderes til innholdet av register B_reg, og resultatet lagres i register RREG for en leseoperasjon, eller i register WREG for en skriveoperasjon. Dette resultat er den endelige lageradresse for lesing og skriving.
For lesing av koeffisientene, hvor absolutt adressering brukes, mates koeffisientadressen coe_addr direkte til et register CAREG.
Den nederste seksjonen av adresseprosessoren, som er tilveiebrakt for lagring av adressene og som har aksess til lageret, omfatter fem, seks bit-registre. Registrene RREG og WREG har allerede blitt nevnt og omfatter bare én inngang D1 . Registrene DAREG og CAREG er forbundet med henholdsvis datalagerbuss DMADDRSST og koeffisientlageret databussen CMADDRSST. Det femte registeret FBREG lagrer lese- og skriveadressene på en syklisk måte. Adressene blir tilbakeført fra en utgangsbuss, henholdsvis CMADDRSST og DMADDRSST, til de tilsvarende innganger D1 og D2. Denne tilbakekoblingsoperasjon er styrt av signalene PDMWSST og PCMWSST på figur 7.
Tilbakekoblingsadresseringsskjemaet brukes bare når adresseprosessoren alternativt gir skrive- og leseadresser. Dette inntreffer når en filterberegning er fullstendig, og resultatet innskrives i lagercellen samtidig med starten av en ny filterberegning for det neste filter, og data leses fra lageret for denne beregningen. Skriving utføres når CHSST er liketallig og lesing utføres når CHSST er liketallig, se figur 6 (på figurene 6 og 7 står R for lesing og W for skriving).
I den foretrukne utførelsesform av oppfinnelsen prosesseres åtte kanaler i en syklisk lese/skrive-prosess. To kanaler prosesseres samtidig slik at den siste lese/skrive-operasjon vil bli utført i syklene 6 og 7.
For en mer detaljert beskrivelse av virkemåten av den foretrukne utførelsesform av adresseprosessoren i overensstemmelse med den foreliggende oppfinnelse, refereres det til følgende signaldefinisjoner for adresseprosessoren og til følgende simulering av adresseprosessoren i simule-ringsspråket RTL fra Texas Instruments.
Det innses at oppfinnelsen ikke er begrenset til de spesielt beskrevne utførelsesformer, og at mange modifikasjoner kan utføres av en fagmann. F.eks. kan bufferlengden reduseres med én, slik at den blir summen av antall av forsinkelseselementer i filtrene som er innbefattet i bufferen, hvis den siste prøvetakningenX(n) i stedet for lagres i et ekstra register. Ytterligere kan antall kanaler, antall buffere i hver kanal, ordlengden for forskjellige registre og fremgangsmåten for innlastning av konstanter i forskjellige registre varieres uten at det avvikes fra den oppfinner i ske idé som er definert i de følgende patentkrav.

Claims (9)

1 . Adresseprosessor for en signalprosessor,karakterisert vedmidler for adresseberegninger i et skrive/leselager inneholdende i det minste én sirkulær buffer for lagring av digitale filtres tilstandsvariabler (X(n), X(n-1), ...; Y(n), Y(n-1), ...; W(n), W(n-1), ...), idet minst én buffer inneholder tilstandsvariable for i det minste to digitale filtre, idet hver av filtrene i samme buffer tilsvarer samme samplingsf rekvens (sample_rate) og idet bufferlengden (mod_numb) er lik det totale antall av tilstandsvariable i de filtre som svarer til hver respektive buffer, hvilke midler omfatter: (a) et sett (S) registre for lagring av den aktuelle foldeadresse (mod_pointer) for hver sirkulær buffer relatert til en tilsvarende buffer startadresse (mod_start) i nevnte skrive/lese-lager, og (b) en beregningsenhet (+) for å utføre trinnene - addering av den aktuelle foldeadresse (mod_pointer) til forskyvningen (data_addr, write_addr) av en valgt tilstandsvariabel (X(n), X(n-1), ...; Y(n), Y(n-1), ... ; W(n), W(n-1), ...) relativt til den tilsvarende bufferstartadresse (mod_start), - redusering av summen (data_addr + mod_pointer, write_addr + mod_pointer) med nevnte tilsvarende bufferlengde (mod_numb) hvis nevnte sum overskrider eller er lik denne bufferlengden, og - addering av buffer startadressen (mod_start) til den reduserte sum for å oppnå den absolutte adresse av nevnte valgte tilstandsvariable, idet - hver buffer er av vilkårlig lengde og har vilkårlig startadresse.
2. Adresseprosessor ifølge krav 1,karakterisert vedat nevnte bufferlengde (mod_numb) blir dannet av summen av antall forsinkelseselement i filtrene tilsvarende den respektive buffer pluss én.
3. Adresseprosessor ifølge krav 1 eller 2,karakterisert vedat beregningsenheten (+) blir dannet av en adderer, idet den mulige reduksjon blir utført ved å addere toerkomplementet av bufferlengden (-mod_numb) til nevnte sum.
4. Adresseprosessor ifølge krav 3,karakterisert vedet første register (A_reg) for lagring av den aktuelle foldeadresse (mod_pointer), toerkomplementet (-mod_numb) av nevnte bufferlengde og buffer-startadressen (mod_start) i sekvens etter hverandre.
5. Adresseprosessor ifølge krav 4,karakterisert vedet andre register (B_reg) for lagring av forskyvningen (data_addr, write_addr) av den valgte tilstandsvariable (X(n), X(n-1), ...; Y(n)>Y(n-1), ...; W(n), W(n-1), ...) relativt til den tilsvarende buffer-start (mod_start), summen og eventuelt den reduserte sum i sekvens etter hverandre.
6., Adresseprosessor ifølge krav 5,karakterisert vedat den mest signifikante biten i nevnte adderer (+) blir brukt som en tegnbit, og at den oppnådde sum beholdes i det andre register (B_reg) den reduserte sum er negativ, og at den oppnådde sum i det andre registeret (B_reg) erstattes med den reduserte sum hvis denne ikke er negativ.
7. Adresseprosessor ifølge hvilket som helst av de tidligere krav, karakterisert vedat hvert filter beregnes ved at filterets tilstandsvariabler (X(n), X(n-1), ...; Y(n), Y(n-1), ...; W(n), W(n-1), ...) og tilsvarende koeffisienter hentes i sekvens etter hverandre ved hjelp av en indeks, som er lik antall forsinkelseselementer i nevnte filter, idet nevnte indeks blir addert til filterets startposisjon for å oppnå den eldste tilstandsvariable og tilsvarende koeffisient, og deretter blir minsket ned til 0 for å oppnå yngre og yngre tilstandsvariable.
8. Adresseprosessor ifølge krav 7,karakterisert vedat verdien av et beregnet filter innskrives i lagerposisjonen for den eldste tilstandsvariable i det foregående filter, slik at denne lagerposisjon blir brukt på ny.
9. Adresseprosessor ifølge hvilket som helst av de tidligere krav, karakterisert vedat nevnte registersett (S) innholder fire registre.
NO922568A 1990-01-16 1992-06-29 Adresseprosessor for en signalprosessor NO301951B1 (no)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
SE9000155A SE465393B (sv) 1990-01-16 1990-01-16 Adressprocessor foer en signalprocessor
PCT/SE1990/000805 WO1991010955A1 (en) 1990-01-16 1990-12-05 Address processor for a signal processor

Publications (3)

Publication Number Publication Date
NO922568L NO922568L (no) 1992-06-29
NO922568D0 NO922568D0 (no) 1992-06-29
NO301951B1 true NO301951B1 (no) 1997-12-29

Family

ID=20378264

Family Applications (1)

Application Number Title Priority Date Filing Date
NO922568A NO301951B1 (no) 1990-01-16 1992-06-29 Adresseprosessor for en signalprosessor

Country Status (20)

Country Link
US (1) US5282275A (no)
EP (1) EP0438991B1 (no)
JP (1) JPH05506735A (no)
KR (1) KR970008186B1 (no)
CN (1) CN1022591C (no)
AU (1) AU644848B2 (no)
BR (1) BR9007978A (no)
CA (1) CA2070668C (no)
DE (1) DE69029796T2 (no)
DK (1) DK0438991T3 (no)
DZ (1) DZ1478A1 (no)
ES (1) ES2096583T3 (no)
FI (1) FI98326C (no)
GR (1) GR3022380T3 (no)
IE (1) IE77511B1 (no)
NO (1) NO301951B1 (no)
PT (1) PT96482B (no)
SE (1) SE465393B (no)
TN (1) TNSN91002A1 (no)
WO (1) WO1991010955A1 (no)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5448706A (en) * 1992-05-13 1995-09-05 Sharp Microelectronics Technology, Inc. Address generator for multi-channel circular-buffer style processing
DE69325207T2 (de) * 1992-06-15 1999-12-09 Koninklijke Philips Electronics N.V., Eindhoven Prozessor zur Verarbeitung zeitdiskreter Signale
US5463749A (en) * 1993-01-13 1995-10-31 Dsp Semiconductors Ltd Simplified cyclical buffer
JPH07244649A (ja) * 1994-03-08 1995-09-19 Fujitsu Ltd 割込処理分散方式
FR2718262B1 (fr) * 1994-03-31 1996-05-24 Sgs Thomson Microelectronics Mémoire tampon à adressage modulo.
JP2820048B2 (ja) * 1995-01-18 1998-11-05 日本電気株式会社 画像処理システムとその記憶装置およびそのアクセス方法
US5764939A (en) * 1995-10-06 1998-06-09 Lsi Logic Corporation RISC processor having coprocessor for executing circular mask instruction
JPH11109911A (ja) * 1997-09-30 1999-04-23 Fuurie Kk 表示装置
GB2386485B (en) * 2002-03-12 2004-06-23 Toshiba Res Europ Ltd Modulo addressing apparatus and methods
US8117248B2 (en) 2005-02-28 2012-02-14 Hitachi Global Storage Technologies Netherlands B.V. Digital filter instruction and filter implementing the filter instruction
US8051090B2 (en) * 2007-12-28 2011-11-01 Realtek Semiconductor Corp. File management method of a ring buffer and related file management apparatus
US8219782B2 (en) * 2008-09-18 2012-07-10 Xilinx, Inc. Address generation
KR102244613B1 (ko) * 2013-10-28 2021-04-26 삼성전자주식회사 Qmf 필터링 방법 및 이를 수행하는 장치
CN109408276A (zh) * 2018-10-25 2019-03-01 江苏华存电子科技有限公司 一种纠正码中规律交错器低延迟平行化架构位址绕线机制

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0042452B1 (en) * 1980-06-24 1984-03-14 International Business Machines Corporation Signal processor computing arrangement and method of operating said arrangement
SU1223346A1 (ru) * 1984-08-25 1986-04-07 Предприятие П/Я А-1811 Нерекурсивный цифровой фильтр
US4722067A (en) * 1985-03-25 1988-01-26 Motorola, Inc. Method and apparatus for implementing modulo arithmetic calculations
US4800524A (en) * 1985-12-20 1989-01-24 Analog Devices, Inc. Modulo address generator
US4908748A (en) * 1987-07-28 1990-03-13 Texas Instruments Incorporated Data processing device with parallel circular addressing hardware

Also Published As

Publication number Publication date
CN1053693A (zh) 1991-08-07
CA2070668C (en) 1996-06-18
EP0438991B1 (en) 1997-01-22
BR9007978A (pt) 1992-12-01
EP0438991A1 (en) 1991-07-31
NO922568L (no) 1992-06-29
SE9000155L (sv) 1991-07-17
FI923253A0 (fi) 1992-07-15
IE910023A1 (en) 1991-07-17
CA2070668A1 (en) 1991-07-17
PT96482B (pt) 1998-07-31
DK0438991T3 (da) 1997-02-10
DE69029796T2 (de) 1997-05-07
SE9000155D0 (sv) 1990-01-16
TNSN91002A1 (fr) 1992-10-25
FI98326B (fi) 1997-02-14
FI923253A (fi) 1992-07-15
US5282275A (en) 1994-01-25
GR3022380T3 (en) 1997-04-30
DE69029796D1 (de) 1997-03-06
IE77511B1 (en) 1997-12-17
KR970008186B1 (ko) 1997-05-21
AU7188291A (en) 1991-08-05
DZ1478A1 (fr) 2004-09-13
FI98326C (fi) 1997-05-26
WO1991010955A1 (en) 1991-07-25
NO922568D0 (no) 1992-06-29
PT96482A (pt) 1991-10-31
SE465393B (sv) 1991-09-02
CN1022591C (zh) 1993-10-27
AU644848B2 (en) 1993-12-23
ES2096583T3 (es) 1997-03-16
JPH05506735A (ja) 1993-09-30

Similar Documents

Publication Publication Date Title
NO301951B1 (no) Adresseprosessor for en signalprosessor
US4244033A (en) Method and system for operating an associative memory
US5293607A (en) Flexible N-way memory interleaving
US4802113A (en) Pipeline control system
JPH08129551A (ja) ハッシュ方式
JPH0476884A (ja) スタックメモリ
US6073155A (en) Floating-point accumulator
EP0426111A2 (en) Memory control system
JP3190700B2 (ja) アドレス変換装置
US6658440B1 (en) Multi channel filtering device and method
US4561071A (en) Storage system having buffer storage
US5148530A (en) Method for reexecuting instruction by altering high bits of instruction address based upon result of a subtraction operation with stored low bits
EP0292791A2 (en) Microprogrammed systems software instruction undo
JPS58151644A (ja) デイジタル演算装置
KR100209670B1 (ko) 자동계수갱신기능을 갖는 디지탈 필터
JPH0520350A (ja) ベクトル処理装置
JP3245488B2 (ja) リストベクトル処理装置
JPH04220826A (ja) 転送データ格納方式
CN115774829A (zh) 基于fft的数据处理方法、装置及电子设备
JPH0315772B2 (no)
JP2518387B2 (ja) シリアルデ―タ伝送回路
EP1193608B1 (en) Apparatus and method for a sorting mode in a direct memory access controller of a digital signal processor
JP2674747B2 (ja) シグナル・プロセツサ
JP2576589B2 (ja) 仮想記憶アクセス制御方式
JPS6049948B2 (ja) アドレス履歴装置