NO301951B1 - Adresseprosessor for en signalprosessor - Google Patents
Adresseprosessor for en signalprosessor Download PDFInfo
- 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
Links
- 239000000872 buffer Substances 0.000 claims description 70
- 238000004364 calculation method Methods 0.000 claims description 27
- 238000005070 sampling Methods 0.000 claims description 11
- 230000000295 complement effect Effects 0.000 claims description 5
- 238000006073 displacement reaction Methods 0.000 claims description 2
- 238000000034 method Methods 0.000 description 18
- 210000000352 storage cell Anatomy 0.000 description 8
- 238000010586 diagram Methods 0.000 description 4
- 238000013500 data storage Methods 0.000 description 3
- 125000004122 cyclic group Chemical group 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 210000004027 cell Anatomy 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000010998 test method Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/355—Indexed addressing
- G06F9/3552—Indexed addressing using wraparound, e.g. modulo or circular addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods 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/065—Partitioned buffers, e.g. allowing multiple independent queues, bidirectional FIFO's
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03H—IMPEDANCE NETWORKS, e.g. RESONANT CIRCUITS; RESONATORS
- H03H17/00—Networks using digital techniques
- H03H17/02—Frequency selective networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2205/00—Indexing scheme relating to group G06F5/00; Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F2205/06—Indexing scheme relating to groups G06F5/06 - G06F5/16
- G06F2205/066—User-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.
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)
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)
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 |
-
1990
- 1990-01-16 SE SE9000155A patent/SE465393B/sv unknown
- 1990-12-05 JP JP91503839A patent/JPH05506735A/ja active Pending
- 1990-12-05 CA CA002070668A patent/CA2070668C/en not_active Expired - Fee Related
- 1990-12-05 WO PCT/SE1990/000805 patent/WO1991010955A1/en active IP Right Grant
- 1990-12-05 AU AU71882/91A patent/AU644848B2/en not_active Ceased
- 1990-12-05 DK DK90850397.2T patent/DK0438991T3/da active
- 1990-12-05 ES ES90850397T patent/ES2096583T3/es not_active Expired - Lifetime
- 1990-12-05 EP EP90850397A patent/EP0438991B1/en not_active Expired - Lifetime
- 1990-12-05 KR KR1019920701667A patent/KR970008186B1/ko not_active IP Right Cessation
- 1990-12-05 DE DE69029796T patent/DE69029796T2/de not_active Expired - Fee Related
- 1990-12-05 BR BR909007978A patent/BR9007978A/pt not_active IP Right Cessation
-
1991
- 1991-01-04 IE IE2391A patent/IE77511B1/en not_active IP Right Cessation
- 1991-01-08 DZ DZ910004A patent/DZ1478A1/fr active
- 1991-01-10 US US07/639,545 patent/US5282275A/en not_active Expired - Lifetime
- 1991-01-15 PT PT96482A patent/PT96482B/pt not_active IP Right Cessation
- 1991-01-15 TN TNTNSN91002A patent/TNSN91002A1/fr unknown
- 1991-01-15 CN CN91100219A patent/CN1022591C/zh not_active Expired - Fee Related
-
1992
- 1992-06-29 NO NO922568A patent/NO301951B1/no unknown
- 1992-07-15 FI FI923253A patent/FI98326C/fi active
-
1997
- 1997-01-28 GR GR970400121T patent/GR3022380T3/el unknown
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) | アドレス履歴装置 |