FI98326C - Osoiteprosessori signaaliprosessoria varten - Google Patents

Osoiteprosessori signaaliprosessoria varten Download PDF

Info

Publication number
FI98326C
FI98326C FI923253A FI923253A FI98326C FI 98326 C FI98326 C FI 98326C FI 923253 A FI923253 A FI 923253A FI 923253 A FI923253 A FI 923253A FI 98326 C FI98326 C FI 98326C
Authority
FI
Finland
Prior art keywords
mod
address
reg
buffer
filter
Prior art date
Application number
FI923253A
Other languages
English (en)
Swedish (sv)
Other versions
FI98326B (fi
FI923253A (fi
FI923253A0 (fi
Inventor
Tore Mikael Andr
Roejaos Karl-Gunnar Andersson
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 FI923253A publication Critical patent/FI923253A/fi
Publication of FI923253A0 publication Critical patent/FI923253A0/fi
Publication of FI98326B publication Critical patent/FI98326B/fi
Application granted granted Critical
Publication of FI98326C publication Critical patent/FI98326C/fi

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)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Complex Calculations (AREA)
  • Debugging And Monitoring (AREA)

Description

9 ϋ O L O
Osoiteprosessori signaaliprosessoria varten
Esillä oleva keksintö koskee signaaliprosessorin osoiteprosessoria digitaalisen suodattimen kirjoitus/luku-5 muistiin sisältyvien tilamuuttujien osoitteiden laskemiseksi.
Keksinnön tausta
Toteutettaessa digitaalisia suodattimia signaaliprosessoreissa, joissa suodattimen sisääntulodatanäytteet 10 tallennetaan kirjoitus/lukumuistiin, tarvitaan jonkinta-painen osoiteprosessori suodattimen tilamuuttujien kirjoittamista ja lukemista varten. Nämä suodattimet voivat olla joko rekursiivisia (IIR) tai ei-rekursiivisia FIR). Suodatin lasketaan lukemalla tilamuuttujat muistista ja 15 laskemalla ulostulodata. Tästä ulostulodatasta tulee sitten sisääntulodata tai tilamuuttujat seuraavalle suodatti-melle ja se kirjoitetaan tämän vuoksi takaisin muistiin. Yleisesti voi suodatinjärjestelmä muodostua lukuisista suodattimista, joilla voi jopa olla eri näytteenottotaa-20 juudet.
Sen jälkeen kun suodatinarvo on laskettu, pitää kaikki tilamuuttujat suodattimessa siirtää yhden muistipaikan verran muistissa. Vanhimman tilamuuttujan päälle kirjoitetaan seuraavaksi vanhin ja uusi näytteenottoarvo 25 tallennetaan tämän siirron kautta vapautuneeseen muisti paikkaan.
Tähän menetelmään liittyvä epäkohta on, että siirtotapahtuma muistissa on aikaa vaativa operaatio, koska kaikki tilamuuttujat täytyy lukea ja sen jälkeen kirjoit-30 taa uusiin muistipaikkoihin.
Lisäepäkohta on, että tämä siirto-operaatio on li säksi tehoa vaativa. Tällä on merkitystä esimerkiksi akku-käyttöisten puhelinten signaaliprosessoreissa, joissa saatavilla oleva energia on rajoitettu.
2 O r ° < y o J l u
Tekniikan tason kuvaus
Tavallinen menetelmä signaaliprosessorin ja kirjoitus /lukumuis tin avulla toteutetun digitaalisen suodattimen tilamuuttujien osoittamiseksi ja siirtämiseksi on käyttää 5 ympyräpuskuria, jonka suuruus on 2n, missä n on nollaa suurempi kokonaisluku. Osoitin antaa vanhimman tilamuuttujan muistipaikan, ts. ympyräpuskurin taitto-osoite. Sen jälkeen kun vanhin tilamuuttuja on luettu, kirjoitetaan tähän osoitettuun muistipaikkaan uusi näytteenottoarvo, jolloin 10 vanhin tilamuuttuja kirjoitetaan yli. Jos nyt osoitin muutetaan osoittamaan seuraavaksi vanhinta tilamuuttujaa, tulee osoitin antamaan uuden taitto-osoitteen. Tämä aikaisemmin seuraavaksi vanhin tilamuuttuja on nyt vanhin ja tämän proseduurin tulos on ekvivalenttinen sen kanssa, 15 että kaikkia tilamuuttujia ympyräpuskurissa siirretään muistipaikan verran, ilman että niitä on puhtaasti fyysisesti siirretty. Ainoastaan osoitinta on päivitetty antamaan uusi taitto-osoite. Menetelmää kutsutaan tämän vuoksi virtuaaliseksi siirroksi. Kun osoitin osoittaa ympyräpus-20 kurin ensimmäistä muistipaikkaa, se tulee seuraavalla siirrolla osoittamaan viimeistä muistipaikkaa. Puskurin osoitusta voidaan täten kutsua "modulo 2n -osoitukseksi".
Oleellinen epäkohta tässä tunnetussa menetelmässä on kuitenkin, että puskurin suuruus voi olla vain 2", niin 25 että suodattimenkin täytyy olla pituudeltaan 2n. Tämä tekee menetelmän sopivaksi ainoastaan tietyille erikoissuodatti-mille.
Toinen tunnettu menetelmä käyttää puskuria, jolla on mielivaltainen pituus ja joka hyödyntää osoitinta, joka 30 askeltaa alaspäin puskurin lopussa kohti sen alkua suoda-tinlaskennan aikana. Kun osoitin saavuttaa puskurin alun, osoitin ladataan uudelleen puskurin lopun osoitteella, niin että proseduuri voidaan toistaa.
Tämän tunnetun menetelmän epäkohta on, että ei ole 35 mahdollista mielivaltaisella ajanhetkellä osoittaa mieli- r. ' ;:· ,- ; ,; 3 <-' -J L· Ο valtaista tilamuuttujaa mielivaltaisessa suodattimessa. Menetelmä toimii ainoastaan, jos suodattimet lasketaan yllä esitetyn mukaisesti sekvenssissä. Tämä tekee menetelmän käyttökelvottomaksi yleisen osoiteprosessorin ulostu-5 lokohtana.
Keksinnön päämäärä
Esillä oleva keksintö tähtää tarjoamaan johdannossa mainitun tyyppisen osoiteprosessorin, jonka tulee kyetä ainakin ympyräpuskurissa osoittaa ja virtuaalisesti siir- 10 tää ainakin kahden peräkkäin puskuriin tallennetun digi taalisen suodattimen tilamuuttujia mielivaltaisen viive-elementtien määrän verran tai mielivaltaisen pituuden verran, mutta samalla näytteenottotaajuudella.
Keksinnön yhteenveto 15 Yllä oleva päämäärä saavutetaan keksinnön mukaises ti osoiteprosessorilla, joka käsittää patenttivaatimuksessa 1 annetut tunnusmerkit.
Piirroksen lyhyt kuvaus
Keksintö tullaan selostamaan lähemmin alla viitaten 20 oheiseen piirrokseen, jossa: kuvio 1 esittää datamuistin jaon esillä olevassa keksinnössä; kuvio 2 esittää puskurin jaon esillä olevassa keksinnössä; 25 kuvio 3 esittää suodatinkaavion kuvion 2 puskurissa oleville suodattimille; kuvio 4 havainnollistaa suodattimien ja taitto-osoitteiden paikkaa kuvion 2 puskurissa toisiaan seuraa-vien laskentavaiheiden aikana; 30 kuvio 5 esittää esillä olevan keksinnön mukaisen osoiteprosessorin ensisijaisen suoritusmuodon; kuvio 6 esittää kuvion 5 mukaisen osoiteprosessorin laskenta-ajoituskaavion; ja kuvio 7 esittää kuvion 5 mukaisen osoiteprosessorin 35 signaaliajoituskaavion kolmelle suodattimelle A, B ja C, 4 p r 7 r\ ,- y o o z o joilla on vastaavasti 2, 1 ja N tappia, missä N on mielivaltainen positiivinen kokonaisluku.
Ensisijaisten suoritusmuotojen selitys
Kuvio 1 esittää muistiorganisaation sille osalle 5 RAM-muistia, joka sisältää eri suodattimien tilamuuttujat. Tässä tapauksessa oletetaan, että muisti sisältää suodattimen kahdeksaa kanavaa CH 0 - CH 7 varten. Jokainen kanava sisältää puskurit BUFF 0 - BUFF 2. Puskurien lukumäärä on mielivaltainen, mutta jokaisella kanavalla on sama mää-10 rä puskureita, joilla on vastaavat pituudet. Puskurit sisältävät puolestaan suodattimet FILTER 0 - FILTER 2. Puskureilla on normaalisti erilaisia pituuksia, mutta jokaisessa puskurissa suodattimet vastaavat samaa näytteenottotaajuutta. Esillä olevassa keksinnössä sisältää ainakin 15 yksi puskuri kaksi tai useampia suodattimia. Puskuripituu-det riippuvat suodatinpituuksien summasta; tarkemmin määriteltynä puskurin pituus muodostuu siihen sisällettyjen suodattimien viive-elementtien lukumäärän summasta lisättynä yhdellä.
20 Kuviossa 1 esitetään datamuisti, joka on jaettu kahdeksaan kanavaan CH 0 - CH 7. Keksintöä ei kuitenkaan ole rajoitettu juuri kahdeksaan kanavaan, vaan mielivaltainen määrä kanavia on mahdollinen. Edelleen kuviossa 1 ilmaistaan datamuisti, joka muodostuu 512 muistisolusta. 25 Tätäkin lukumäärää voidaan muuttaa.
Kuviossa 2 esitetään yhden puskurin sisältö yksityiskohtaisemmin. Esimerkissä puskuri sisältää kolme suodatinta, joilla on suodatinalkuosoitteet filter_addr(0), filter_addr(1), filter_addr(2). Puskurin absoluuttisia 30 alkuosoitteita merkitään mod_start. Tilamuuttujia tässä ensimmäisessä suodattimessa merkitään X(n), X(n-l), X(n-2), X(n-3). Tässä X(n) antaa viimeisimmän näytteenotto-arvon, X(n-l) seuraavaksi viimeisimmän näytteenottoarvon, jne.
35 Seuraavan selityksen yksinkertaistamiseksi olete- c f "·' o <
^ \j v-.1 U
taan aluksi, että nämä kolme suodatinta kuvion 2 puskurissa eivät ole rekursiivisia.
Suodatinta 0 laskettaessa haetaan tällöin tilamuuttujat vuoronsa mukaan muistista, aloittaen vanhimmasta 5 tilamuuttujasta X(n-3) ja kerrotaan vastaavilla suodatin-kertoimilla, jotka haetaan RAM- tai ROM-muistista. Suodatin lasketaan summaamalla nämä kerrotut tilamuuttujat. Sen jälkeen kun suodatin on laskettu, saadut arvot Y(n) kirjoitetaan vanhimman tilamuuttujan X(n-3) muistisoluun. 10 Kuviossa 2 tämä on ilmaistu siten, että tilamuuttuja tai näytteenottoarvo X(n-3) jakaa muistisolun suodattimen ulostulosignaalin Y(n) kanssa. Lasketut suodatinarvot Y(n), Y(n-l),... muodostavat tällä tavoin sisääntulosig-naalit suodattimelle 1. Suodatin 1 lasketaan vastaavalla 15 tavalla, ja kun se on laskettu, sen arvo kirjoitetaan vanhimman tilamuuttujan Y(n-2) muistisoluun suodattimen 2 sisääntulosignaalina. Tämä proseduuri, jossa yhden suodattimen ulostulosignaali muodostaa seuraavan suodattimen sisääntulosignaalin, on mahdollinen siltä pohjalta, että 20 puskurissa olevat suodattimet vastaavat samaa näytteenottotaajuutta.
Jotta valaistaisiin lisää laskentaproseduuria ja erityisesti niitä komplikaatioita, joita syntyy rekursiivisen suodattimen yhteydessä, viitataan kuvioihin 3 ja 4. 25 Kuvio 3 esittää yleisen suodatinkaavion kuvion 2 puskurissa oleville suodattimille. Kuten aikaisemmin, ensimmäinen suodatin, FILTER 0, on ei-rekursiivinen suodatin, joka sisältää vain transversaaliosan. Toinen suodatin, FILTER 1, sisältää sitävastoin rekursiivisen aseman 30 puoleisen osan ja transversaalisen oikeanpuoleisen osan. Kolmas suodatin, FILTER 2, sisältää ainoastaan rekursiivisen osan eikä lainkaan transversaalista osaa.
Kuviossa 3 on viive-elementit ilmaistu T:llä. Kuten kuviosta 2 ilmenee, suodatin 0 sisältää kolme viive-ele-35 menttiä T ja neljä kerrointa a0...a3. Suodatin 1 sisältää 6 9C326 2 viive-elementtiä T ja kaksi kerrointa bw b2 rekursiivisessa osassa sekä kolme kerrointa c0...c2 transversaali-osassa. Suodatin 2 sisältää kaksi viive-elementtiä T sekä kaksi kerrointa dw d2. Yllä olevan laskentasäännön mukai-5 sesti on puskurin pituus näin ollen 3+2+2+1, ts. 8.
Kuvio 4 esittää kuvion 3 kolmen suodattimen lasken-tasekvenssin.
Kaksi asiaa on oleellista huomioida kuviossa 4. Ensinnäkin tilamuuttujien X(n)..., Y(n)..., W(n)... 10 arvot ovat koko ajan paikoillaan siinä muistisolussa, johon ne kerran jaetaan. Jokaisen uuden kuvion (a)-(h) kohdalla kasvaa n yhdellä, ts. X(n) tullaan kutsumaan X(n-l), jne. Tilamuuttujien arvot sijaitsevat kuitenkin alkuperäisessä muistisolussa. Vanhimmat tilamuuttujat kirjoitetaan 15 tämän jälkeen yli uusilla tilamuuttuja-arvoilla, kun niitä ei enää tarvita. Näin ollen ei vaadita minkäänlaista tila-muuttujien siirtämistä.
Toiseksi puskurin taitto-osoitetta mod_pointer päivitetään koko ajan. Tämä osoitin osoittaa koko ajan sen 20 muistiosoitteen, jossa ympyräpuskuri taittuu, tässä ta pauksessa suodattimen 2 ja suodattimen 0 välistä rajaa. Osoitin mod_pointer muodostaa "nollareferenssin", jonka avulla on mahdollista säilyttää oikea absoluuttinen osoite aktuellille tilamuuttujalle, mitä tullaan valaisemaan lä- 25 hemmin alla.
Tietyn tilamuuttujan osoitteen laskennassa hyödynnetään seuraavia muuttujia: mod_start = puskurin absoluuttinen alkuosoite; data_addr = valitun tilamuuttujan siirtymä suhtees-30 sa puskurin alkuosoitteeseen, mod_start; write_addr = valittu kirjoitusosoite suhteessa puskurin alkuosoitteeseen, mod_start; mod_numb = puskurin pituus, joka voidaan valita mielivaltaisesti; 35 mod_pointer = puskurin aktuelli taitto-osoite; 7
G G V
> V. ^ JL o rel_addr = laskettu osoite suhteessa puskurin al-kuosoitteeseen, mod_start; dmaddr = lopullinen absoluuttinen muistiosoite.
Tilamuuttujan osoitteen laskennassa lasketaan en-5 siksi summa data_addr + mod_pointer Tämän jälkeen testataan onko tämä summa pienempi kuin mod_numb. Jos näin on laita, asetetaan rel_addr tähän 10 saatuun summaan, ts.
rel_addr = data_addr + mod_pointer
Jos ehto sitä vastoin ei täyty, ts. summa on suu-15 rempi tai yhtä suuri kuin mod_numb, niin rel_addr asetetaan arvoon rel_addr = data_addr + mod_pointer - mod_numb 20 Molemmissa tapauksissa on nyt saatu haetun muisti paikan siirtymä suhteessa puskurin alkuosoitteeseen mod_ start. Lopullinen absoluuttinen datamuistiosoite dmaddr saadaan siten, että mod_start lisätään saatuun tulokseen, ts.
25 dmaddr = rel_addr + mod_start
Alkutilanteessa asetetaan mod_ponter = mod_numb - 1 30 niin, että rel_addr = data_addr - 1 35 Sisäänkirjoitusosoite lasketaan samalla tavoin sil- 8 Q / ή V· L·. \j lä erotuksella, että data_addr korvataan kaikkialla osoitteella write_addr.
Suodattimen 0, suodattimen 1 ja suodattimen 2 laskenta tapahtuu seuraavalla tavalla.
5 1) Sisääntulosignaali kirjoitetaan paikkaan X(n).
2) Suodatin 0 lasketaan seuraavalla tavalla. Ensinnä asetetaan data_addr = filter_addr(0) + indeksi, missä indeksi = 3. Tällä data_addr:n arvolla lasketaan yllä esitetyn mukaisesti osoite X(n-3):lle. X(n-3) haetaan osoiteli) tusta muistisolusta ja kerrotaan kertoimella a3. Tämän jälkeen pienennetään indeksiä ja sitä kautta myös osoitetta data_addr yhdellä. X(n-2) haetaan ja kerrotaan a2:lla. Tulo summataan aikaisemmin saatuun tuloon. Vastaavalla tavalla askelletaan indeksiä aina arvoon 0 asti, niin että kaikki 15 suodattimen 0 muuttujat haetaan vuorollaan, kerrotaan vastaavalla kertoimella ja summataan. Suodatin 0 on tämän jälkeen laskettu valmiiksi.
3) Suodatin 1 lasketaan seuraavalla tavalla. Ensiksi lasketaan rekursiivinen vasemman puoleinen osa siten, 20 että data_addr asetetaan yhtä suureksi kuin filter_addr(1) + indeksi, missä indeksi = 2. Tämän jälkeen osoitetaan Y(n-2), joka kerrotaan b2:llä, minkä jälkeen indeksiä ja sitä kautta myös osoitetta data_addr pienennetään yhdellä. Saatu tulo summataan suodattimesta 0 saatuun lopputulok-25 seen. Vastaavalla tavalla myös kertoimella b3 kerrottu Y(n-l) summataan aikaisemmin saatuun tulokseen. Seuraavalla indeksin pienentämisellä saadaan osoite paikkaan X(n3)/ Y(n). Tähän muistipaikkaan kirjoitetaan nyt saatu tulos Y(n) aikaisemman tilamuuttujan X(n-3) päälle. Nyt ovat 30 kaikki tarpeelliset tilamuuttujat Y(n), Y(n-l) ja Y(n-2) saatavilla suodattimen 1 transversaalisen oikeanpuoleisen osan laskemista varten. Tämä laskenta tapahtuu samalla tavoin kuin suodattimen 0 laskenta, sillä erolla, että osoitteen data_addr laskennassa käytetään osoitetta fil-35 ter_addr(l) ja indeksi = 2 ulostulotilassa.
li 9 C f ': 'Ί:, 2 V· x.y L·. w 4) Suodatin 2 lasketaan samalla tavoin kuin suodattimen 1 rekursiivinen osa, sillä erolla, että osoitteen data_addr laskentaan käytetään osoitetta filter_addr(2), ja dlf d2 käytetään kertoimina. Ulostulotilassa asetetaan 5 indeksi = 2. Kun indeksi saavuttaa arvon 0, kirjoitetaan tulos W(n) arvon Y(n-2) päälle.
Kaikki nämä laskutoimitukset suoritetaan tilassa, joka esitetään kuviossa 4(a). Siirryttäessä kuvioon 4(b) pienennetään mod_pointer:ia yhdellä ja kasvatetaan n:ää 10 yhdellä, niin että X(n) tämän jälkeen kutsutaan X(n-l), jne. Seuraava sisääntulosignaalin arvo kirjoitetaan siihen paikkaan, jota merkitään X(n), minkä jälkeen yllä esitetyn tyyppinen laskentasykli toistetaan.
Tällä tavoin askelletaan mod_pointer:iä yhden yksi-15 kön verran kutakin kuvioista 4(a)-(h) kohti. Kun suodattimet on laskettu kuviossa 4(h) ja mod_pointer pitää päivittää, tapahtuu käännös takaisin siihen tilaan, joka esitetään kuviossa 4(a), minkä jälkeen koko proseduuri toistetaan.
20 Yllä olevasta selviää, että puskurin muistialue hyödynnetään hyvin tehokkaalla tavalla. Erityisesti voidaan puskuria osoittaa modulo n -periaatteella, missä n on mielivaltainen positiivinen kokonaisluku. Tämä menetelmä on osoittautunut olevan erityisen edullinen, jos täytyy 25 realisoida monta lyhyttä suodatinta.
Alla seuraa nyt osoiteprosessorin ensisijaisen suoritusmuodon selitys viitaten kuvioihin 5-7.
Kuvion 5 mukaisesti voidaan osoiteprosessori loogisesti jakaa kolmeen eri osaan. Ensimmäiseen, ylimpään 30 osaan tallennetaan puskurivakiot. Toisessa, keskimmäisessä osassa suoritetaan osoitelaskenta. Kolmannessa, alimmassa osassa tallennetaan lopulliset osoitteet muistihakuja varten sopivana ajankohtana.
Jokaista näytteenottotaajuutta, sample_rate, kohti 35 tallennetaan osoitin mod_pointer. Ensisijaisessa suoritus- or: ·: //·, 10 muodossa sisältää osoiteprosessori rekisterijärjestelyn S, joka sisältää neljä rekisteriä mod_pointer:in neljän erilaisten arvojen tallentamiseksi, yksi kutakin näytteenottotaajuutta ja tätä kautta kutakin puskuria varten. Ensi-5 sijaisessa suoritusmuodossa nämä rekisterit ovat viisi bittiä pitkiä. Dekrementointipiiri DEC, joka on esimerkiksi muodostettu puolivähentäjästä, dekrementoi valittua osoitinta ja lataa saman takaisin vastaavaan rekisteriin sen jälkeen kun sitä on käytetty yllä kuvatulla tavalla. 10 Kun osoitin saavuttaa arvon 0, ts. kun puskurin käännös on ajankohtainen, ladataan rekisteriin vakio. Tämä vakio voi olla langoitettu rekisterisisääntuloihin. Vakion arvo on mod_numb-l, missä mod_numb on puskurin pituus. Mod_poin-ter:in dekrementointi tehdään, kun signaali dec_mod_count 15 on ylhäällä. Valittu osoitin ladataan rekisteriin mod_reg ennenkuin se dekrementoidaan tai ladataan laskentaosaan. Puskurikoon vakiot ja puskurin sijoitus muistissa voi myös olla langoitettu rekistern sisääntuloissa. Signaali samp-le_rate valitsee ne vakiot, jotka vastaavat tiettyä näyt-20 teenottotaajuutta eri rekistereihin lataamista varten.
Jokainen rekisteri sisältää keksinnön ensisijaisessa suoritusmuodossa neljä sisääntuloa D1-D4, yksi kutakin näytteenottotaajuutta varten. Puskurikoon vakio, mod_numb, ladataan 2-komplementtiarvona, ts. -mod_numb. Vakio lada-25 taan viisi bittiä pitkään rekisteriin mod_num_reg. Vakio puskurin muistiin sijoittamista varten ladataan arvona mod_start rekisterin mod_sta_reg, jonka sananpituus on kuusi bittiä.
Laskentaosa muodostuu kahdesta rekisteristä A_reg, 30 joka on kuusi bittiä pitkä, B_reg, joka on viisi bittiä pitkä, sekä kuuden bitin summaimesta, esimerkiksi nk. carry boost -summain, jossa summaimen eniten merkitsevä bitti on puolisummainsolu.
Osoitteenlaskenta alkaa lataamalla joko data_addr 35 tai write_addr rekisterin B_reg riippuen siitä, tuleeko li 11 C ' · 9 ·* ^ ’w’ Z. C' tapahtumaan luku vai kirjoitus. A_reg ladataan joko sisääntulossa D2 olevalta rekisteriltä mod_reg saatavalta mod_pointer:illa tai sisääntulossa Dl olevalla nollalla. Rekisterin A_reg latausta ohjaa modulodeaktivoiva signaali 5 mod_dis riippuen valitusta osoitemoodista, joku modulo-tai absoluuttinen osoitus.
Absoluuttisessa osoitusmoodissa (mod_dis on ylhäällä) ladataan 0 rekisteriin A_reg, niin että sisään syötetty osoite, data_addr tai write_addr, summataan nollaan. 10 Tämä tekee laskentayksikön läpinäkyväksi absoluuttiselle osoitukselle.
Modulo-moodissa lisätään rekisteriin A_reg ladattu mod_pointer rekisteriin B_reg ladattuun osoitteeseen, da-ta_addr tai write_addr. Tulos syötetään takaisin rekiste-15 rin B_reg sisääntuloon D3.
Rekisteriin mod_num_reg ladattu mod_numbsn kaksi-komplementtiarvo, ts. -mod_numb, siirretään rekisteriin A_reg ja summataan rekisterin B_reg sisältöön. Tulos ladataan rekisteriin B_reg, jos tulos ei ole negatiivinen. Jos 20 tulos on negatiivinen, säästetään vanha rekisterissä B_reg oleva arvo seuraavaa operaatiota varten. Sillä että rekisteri mod_numb_reg ladataan mod_numb:n -komplementilla, ts. -mod_numb, yksinkertaistetaan koko tätä testiproseduuria sillä, että summauksen tuloksen etumerkki voidaan suoraan 25 lukea tuloksen eniten merkitsevästä bitistä. Tämä bitti ohjaa johtimen +/- yhdessä kuviossa 7 esitettyjen signaalien CHSST ja IXZ kanssa rekistern B_reg latausta.
Rekisteristä mod_stat_reg rekisterin A_reg siirretty vakio mod_start lisätään seuraavassa vaiheessa rekis-30 terin B_reg sisältöön ja tulos tallennetaan rekisterissä RREG lukuoperaatiota varten tai rekisterissä WREG kirjoitusoperaatiota varten. Tämä on lopullinen muistiosoite lukua tai kirjoitusta varten.
Kertoimien lukemisessa, jossa käytetään absoluut-35 tista osoitusta, syötetään kerroinosoite coe_addr suoraan
C f - O
s s-' -- ^ o rekisterille CAREG.
Osoiteprosessorin alin osa, joka on tarkoitettu osoitteen tallennusta varten ja muistihakua varten, muodostuu viidestä kappaleesta kuusi bittiä pitkistä rekiste-5 reistä. Rekisterit RREG ja WREG on jo mainittu ja sisältävät ainoastaan sisääntulon Dl. Rekisterit DAREG ja CAREG on liitetty datamuistiväyIällä DMADDRSST sekä vastaavasti kerroinmuistidataväylällä CMADDRSST. Viides rekisteri FBREG tallentaa luku- ja kirjoitusosoitteet syklisellä 10 tavalla. Osoitteet syötetään uudelleen ulostuloväyliltä CMADDRSST sekä DMADDRSST vastaaviin sisääntuloihin Dl ja D2. Uudelleensyöttöä ohjaavat kuvion 7 signaalit PDMWSST ja PCMWSST.
Takaisinkytkentäosoituskaaviota käytetään vain kun 15 osoiteprosessori antaa vuorotellen kirjoitus- ja luku-osoitteita. Tämä tapahtuu, kun suodatinlaskenta on saatettu päätökseen ja tulos kirjoitetaan muistisoluun samanaikaisesti kun uusi suodatinlaskenta aloitetaan seuraavalle suodattimelle ja data luetaan muistista tätä laskentaa 20 varten. Kirjoitus tapahtuu kun CHSST on parillinen ja luku tapahtuu kun CHSST on pariton, katso kuviota 6 (kuvioissa 6 ja 7 R on lukemista varten ja W on kirjoitusta varten).
Keksinnön ensisijaisessa suoritusmuodossa käsitellään kahdeksaa kanavaa syklisessä luku/kirjoitusprosessis-25 sa. Kahta kanavaa käsitellään samanaikaisesti, niin että viimeinen luku/kirjoitus tulee tapahtumaan sykleissä 6 ja 7.
Esillä olevan keksinnön mukaisen osoiteprosessorin ensisijaisen suoritusmuodon toiminnan yksityiskohtaisempaa 30 selitystä varten viitataan tämän jälkeen seuraaviin osoiteprosessorin signaalimäärityksiin sekä sen jälkeen seu-raavaan osoiteprosessorin simulointiin Texas Instruments'-in simulointikielellä RTL.
li Ο Λ V o ·: 13
Osoiteprosessorin signaalimääritykset
Osoiteprosessorin sisääntulosignaalit 5 =====================================
Signaalit ja muuttujat, jotka päättyvät "sst" tarkoittavat, että arvot ovat "stabiileja" "orja"-kellovaiheessa ja ovat ("True") tositilassa.
10 ----------------------------------------- BUS 8 chsst; # kanavanvalinta (Channel Select)
SIGNAL izlsst; # Indeksi Nolla ja chsst veräjöidään. IXZ
SIGNAL iz6sst; # menee ylätilaan, kun viimeinen näyte 15 SIGNAL iz7sst; # luetaan muistista.
SIGNAL pdmwsst; # Valmistaudu datamuistiin kirjoittamiseen 20 (Prepare Data Memory Write).
SIGNAL pcmwsst; # Valmistaudu kerroinmuistiin kirjoittami seen (Prepare Coefficient Memory Write).
Ohjaa data- ja kerroinkirjoitusosoitteiden lataamista 25 ulostulorekistereihin DAREG, CAREG ja FBREG.
SIGNAL cwsst; # Kerrointen kirjoitusmoodi (Coefficient 3 0 Write mode).
Asettaa osoiteprosessorin absoluuttisen osoitteen lakenta-moodiin. Kerroinmuistin kirjoitusosoitteen laskenta alkaa, kun tämä signaali menee ylätasolle.
"apcsst" muodostaa osan komentosanasta, joka tulee ohjaus- 35 C f 9 n ^ ^·; o Z U 14 yksiköltä.
BUS 23 apcsst # Osoiteprosessorin ohjaus (Address Processor Control).
5 coe_addr = apcsst[5:0]; # 6-bittinen kerroinosoite.
data_addr = apcsst[10:6}; # 5-bittinen dataosoite.
write_addr = apcsst[15:11]; # 5-bittinen kirjoitus- osoite .
10 Data- ja kirjoitusosoitteita pienennetään yhdellä joka kerta kun indeksirekisteriä pienennetään. Indeksirekisteri ladataan suodattimen pituudella ("number of taps"). Kaikki tämä tehdään ohjausyksikössä.
15 dec_mod_count = apcsst[16] # 1-bittinen. Ohjaussig naali modulolaskurin pienentämistä varten.
mod_en_r = apcsst[17]; # 1-bittinen. Vapauttaa modulo-osoitelaskennan.
20 sample_rate_r = apcsst[19:18];# 2-bittinen. Valitsee ympyräpuskurin, lukumoodi. mod_en-w = apcsst[20] # 1-bittinen. Vapauttaa modulo-osoitelaskennan, kirjoitusmoodi.
25 sample_rate_w = apcsst[22:21]; # 2-bittinen. Valitsee ympyräpuskurin, kirjoitus-moodi .
30 Kello- ja testisignaalit SIGNAL 1st; # Paikallinen Orjakello tosi (True).
35 SIGNAL lmt; # Paikallinen Pääkello tosi (True).
SIGNAL ltt; # Paikallinen Testikello tosi 15 CT ').<
^ ^ - L· VJ
(True).
SIGNAL lgsrlltt; # Paikallinen testikello globaalia pyyhkäisyketjua varten.
SIGNAL lscanisst; # Testipyyhkäisyn paikallinen si- 5 sääntulosignaali (Test scan Local
Input).
SIGNAL gscanisst; # Testipyyhkäisyn globaalinen si- saantulosignaali (Test scan Global Input).
10 SIGNAL lscanosst; # Testipyyhkäisyn paikallinen ulos tulosignaali (Test scan Local Output ) .
SIGNAL gscanosst; # Testipyyhkäisyn globaalinen ulos tulosignaali (Test scan Global Out- 15 put).
Osoiteprosessorin ulostulosignaalit 20 =================================== BUS 6 dmaddrsst; # Datamuistiosoite BUS 6 cmaddrsst; # Kerroinmuistiosoite 25
Paikalliset muuttujat REG 6 d_a_reg; # Dataosoiterekisteri DAREG.
30 REG 6 c_a_reg; # Kerroinosoiterekisteri CAREG.
REG 6 w_del_reg_m; # Kirjoitusviiverekisteri isäntä WREG.
REG 6 w_del_reg_s; # Kirjoitusviiverekisteri orja.
REG 6 r_del_reg_m; # Lukuviiverekisteri isäntä RREG.
16 O ' v r ' ? o ^ u REG 6 r_del_reg_s; # Lukuviiverekisteri orja.
REG 6 feedback_reg_m; # Takaisinkytkentärekisteri isäntä FBREG.
REG 6 feedback_reg_s; # Takaisinkytkentärekisteri orja 5 REG 6 a_reg; # Sisääntulorekisteri summaimelle.
REG 6 b_reg; # sisääntulorekisteri summaimelle.
REG 5 mod_reg_m; # Modulo-osoitinrekisteri isäntä.
REG 5 mod_reg_s; # Modulo-osoitinrekisteri orja.
REG 6 mod_numb__reg_m; # Modulonumerorekisteri isäntä.
10 REG 6 mod_numb_reg_s; # Modulonumerorekisteri orja.
REG 6 mod_start_reg_m; # Modulokäynnistysrekisteri isäntä. REG 6 mod_start_reg_s; # Modulokäynnistysrekisteri orja.
Indeksi nolla veräjöity kanavanvalinta-aikavälin 7 kanssa.
FF iz7_dell_m; # Indeksi nollan viivekiikku isäntä.
FF iz7_dell; # Indeksi nollan viivekiikku orja.
FF iz7_del2_m; # Indeksi nollan viivekiikku isäntä.
20 FF iz7_del2; # Indeksi nollan viivekiikku orja.
REG 5 mod_a_reg_m(4 ); # Modulo-osoitinrekisteripino isäntä (mod_numb-l).
REG 5 mod_a_reg_s (4 ); # Modulo-osoitinrekisteripino or ja.
25 REG 6 sum; # Summaimen ulostuloväylä.
SIGNAL mod_dis; # Moduloesto, absoluuttinen osoitus, jos tosi.
BUS 2 sample_rate; # Näytteenottotaajuus, Valitsee ym- pyräpuskurin näytteenottotaa juudes- 30 ta riippuen.
ROM 5 mod_numb(4); # 4, 5-bitin Modulonumerovakioita (-mod_numb).
ROM 6 mod_start(4); # 4, 6-bitin Modulokäynnistysvaki- oita.
17 9 ο ό 2 6
Osoiteprosessorin simulointi RTL:ssä BLOCK addrpr ( INPUT BUS 8 chsst; # Kanavanvalinta 5 INPUT SIGNAL izlsst; # Indeksi Nolla INPUT SIGNAL iz6sst; INPUT SIGNAL iz7sst; INPUT SIGNAL pdmwsst; # Valmistaudu datamuistiin kir- j oittamiseen 10 INPUT SIGNAL pcmwsst; # Valmistaudu kerroinmuistiin kirj oittamiseen INPUT SIGNAL cwsst; # Kerrointen kirjoitus INPUT BUS 23 apcsst; # Osoiteprosessorin ohjaus coe_addr = apcsst[5:0]; # 6-bittinen. Kerroin 15 data_addr = apcsst[10:6]; # 5-bittinen. Data- osoite write_addr = apcsst[15:11]; # 5-bittinen. Kirjoi- tusosoite dec_mod_count = apcsst[16]; #l-bittinen. Ohjaus-20 signaali mod_en_r = apcsst[17]; #l-bittinen. Vapau tus. Luku sample_rate_r = apcsst[19:18] ; #2-bittinen. Valinta.
Luku 25 mod_en_w = apcsst[20]; #l-bittinen. Vapau tus. Kirjoitus sample_rate_w = apcsst[22:21] ; #2-bittinen. Valinta.
Kirjoitus INPUT SIGNAL 1st; # Orjakello 30 INPUT SIGNAL lmt; # Pääkello INPUT SIGNAL ltt; # Paikallinen testikello INPUT SIGNAL lgsrlltt; # Globaalinen testikello INPUT SIGNAL lscanisst; # Testipyyhkäisyn paikallinen sisääntulosignaali 35 INPUT SIGNAL gscanisst; # Testipyyhkäisyn globaalinen sisääntulosignaali 18 OUTPUT SIGNAL lscanosst; # Testipyyhkäisyn paikallinen ulostulosignaali OUTPUT SIGNAL gscanosst; # Testipyyhkäisyn globaalinen ulostulosignaali 5 OUTPUT BUS 6 dmaddrsst; # Datamuistiosoite OUTPUT BUS 6 cmaddrsst;) # Kerroinmuistiosoite LOCAL REG 6 d_a_reg; # Dataosoiterekisteri LOCAL REG 6 c_a_reg; # Kerroinosoiterekisteri 10 LOCAL REG 6 w_del_reg_m; # Kirjoitusviiverekisteri isäntä LOCAL REG 6 r_del_reg_s; # lukuviiverekisteri orja LOCAL REG 6 feedback_reg_m; # Takaisinkytkentärekisteri isäntä 15 LOCAL REG 6 a_reg; # Sisääntulorekisteri summain LOCAL REG 6 b_reg; # Sisääntulorekisteri summain LOCAL REG 5 mod_reg_m; # Modulorekisteri isäntä LOCAL REG 5 mod_reg_s; # Modulorekisteri orja LOCAL REG 6 mod_numb_reg_m; # Modulonumerorekisteri isäntä 20 LOCAL REG 6 mod_numb_reg_s; # Modulonumerorekisteri orja LOCAL REG 6 mod_start_reg_m; # Modulokäynnistysrekisteri isäntä LOCAL REG 6 mod_start_reg_s;# Modulokäynnistysrekisteri orja 25 LOCAL FF iz7_dell_m; # Indeksi nollan viivekiikku isäntä LOCAL FF iz7_dell; # Indeksi nollan viivekiikku orja LOCAL FF iz7_del2_m; # Indeksi nollan viivekiikku 30 isäntä LOCAL FF iz7_del2; # Indeksi nollan viivekiikku orja LOCAL REG 5 mod_a_reg_m(4); # Modulorekisteripino isäntä LOCAL REG 5 mod_a_reg_s(4); # Modulorekisteripino orja 35 LOCAL REG 6 sum; # Ulostulorekisteri summain LOCAL SIGNAL mod_dis; # Moduloesto
II
19 G/ ''';·.
s V. VJ L
LOCAL BUS 2 sample_rate; # Näytteenottotaajuus ROM 5 mod_numb(4); # Modulonumerovakiota ROM 6 mod_start(4); # Modulokäynnistysvakiota
BEHAVIOR
# Circular buffer constants, Sampling Frequency 10 # ------------------------- ------------------ mod_numb(0):=15; # 32 kHz, Puskurin koko mod_numb{1):=16; # 16 kHz mod_numb(2):=9; # 8 kHz mod_numb(3):=5; # 500 Hz 15 mod_start(0):=49; # 32 kHz, Aloitusosoite muistissa mod_start(1):=33; # 16 kHz mod_start(2):=24; # 8 kHz mod_start(3):=20; # 500 Hz 20 # Jos tosi, absoluuttinen osoitustila # --------------------------------- mod_dis:=(Amod_en_w+cwsst)*(iz6sst+iz7sst+iz7-dell)+ 25 Amod_en_r*(chsst[3]+chsst[4]+chsst[5]); # **** modulolaskuri **** sample_rate:=SELECT( chsst[5] : sample_rate_w; # Valitsee 30 ELSE sample_rate_r ); # ympyrä- # puskurin # Osoita lmt reuna, "vähennä modulolaskuria" "Indeksi # Nolla 1" aikavälillä 35 # ------------------------------------------------------- IF lmt * Λ\lmt * dec_mod_count * i z1s st 20 cr '-V).< ^ yj IF mod_reg_s =0 # Alusta puskuriosoitin mod_a_reg_m(sample_rate):=mod_numb(sample_rate) - 1; ELSE # Vähentää puskuriosoitinta mod_a_reg_m(sample_rate) := mod_reg_s - 1;
5 END
END
IF 1st # Isännältä orjalle mod_a_reg_s(sample_rate):=mod_a_reg_m(sample_rate);
END
10 # ======================================================= IF lmt # Isäntäkellovaihe iz7_dell_m:=iz7sst; # "Viivästä indeksi nolla 1" 1 ja 2 15 iz7_del2_m:=iz7_dell; # Kierrosta vastaavasti # Lataa modulorekisteri pinosta mod_reg_m:=mod_a_reg_s(saraple_rate); IF ( chsst[2] + chsst[5] ) # Lataa puskurin koko 20 mod_numb_reg_m:=(-mod_numb(sample_rate)); # Lataa puskurin aloitusosoite mod_start_reg_m:=mod_start(sample_-rate);
END
25 # Lataa data rekistereihin A ja B
# ----------------------------------------------------
a_reg := SELECT
( (chsst[5]+chsst[O])*Amod_dis : mod_start_reg-s; 30 (chsst[4]+chsst[7])*Amod_dis : mod_numb_reg_s; (chsst [3]+chsst [6] ) */'mod-dis : mod_reg_s; mod_dis : OXOO; # absoluuttinen osoitustila ELSE \a_reg # Pidä vanha data rekisterissä
A
21
Qf ' . / : v. \.J /L· \w ) ;
b_reg := SELECT
( chsst[3] : data_addr; 5 iz6sst : write_addr;
Asum[5]*(chsst[4]+chsst[5]+iz7sst+iz7_dell) : sum; ELSE \b_reg # Pidä vanha data rekisterissä B
) ; 10 IF chsst[6]
r_del_reg_m := sum; # Lataa laskettu osoite R & EG
END # "lukuviiverekisteriin"RREG
IF iz7_del2
w_del_reg_m := sum; # Lataa laskettu osoite WREG
15 END # "kirjoitusviiverekisteriin" #------------------------------------------------------ # **** Lataa kerroinosoite CAREG **** c_a_reg := SELECT 20 ( iz7sst*pcmwsst : w_del_reg_s; # WREG chsst[0] : coe_addr; # Ulkoinen osoite
Aiz7sst*Achsst[0]*pcmwsst : feedback_reg_s ; ELSE \ c_a_reg 25 ) ; #---------------------------------------------------- # **** Lataa dataosoite DAREG ****
30 d_a_reg :=SELECT
(
iz7sst*pdmwsst : w_del_reg_s; # WREG chsst[O] : r_del_reg_s; # RREG
Aiz7sst*Achsst[0]*pdmwsst : feedback_reg_s; 22 f; f 7 r: <
Ϊ t k; L· U
ELSE \ d_a_reg ) ; #---------------------------------------------------- 5 # **** Lataa takaisinkytketty osoite FBREG ****
feedback_reg_m :=SELECT
( pdmwsst : dmaddrsst; # Datamuistiosoite pcmwsst : cmaddrsst; # Kerroinmuis- 10 tiosoite ELSE \ feedback_reg_m ); END # lmt # Siirto isännältä orjalle # ------------------------- IF 1st mod_reg_s := mod_reg_m; 20 mod__numb_reg-s := mod_numb_reg_m; mod_start_reg_s := mod_start_reg_ru; sum := a_reg + b_reg; # laske r_del_reg_s := r_del_reg_m; w_del_reg_s := w_del_reg_m; 25 feedback_reg_s := feedback_reg_m; dmaddrsst := d__a_reg; # Aseta dataosoite väylään cmaddrsst := c_a_reg; # Aseta kerroinosoite väylään iz7_dell := iz7_dell_m; 30 iz7_del2 := iz7_del2_m; END # ensimmäinen END # toiminto
On ymmärrettävä, että keksintöä ei ole rajoitettu 23 0Γ 0 0:-, --7 o. oo L· o o näihin erityisesti kuvattuihin suoritusmuotoihin, vaan ammattimies voi jatkaa monilla erilaisilla suoritusmuodoilla. Tällöin voidaan esimerkiksi puskurin pituutta pienentää yhdellä, niin että siitä tulee puskuriin sisältyvi-5 en suodattimien viive-elementtien lukumäärien summa, jos viimeinen näytteenottoarvo X(n) tämän sijaan varastoidaan ylimääräiseen rekisterin. Edelleen voidaan kanavien lukumäärää, puskurien lukumäärää kussakin kanavassa, eri rekistereiden sananpituutta ja tapaa, jolla vakiot ladataan 10 eri rekistereihin vaihdella ilman että poiketaan keksinnön perusajatuksesta, joka määritellään oheisissa patenttivaatimuksissa .

Claims (9)

24 9 C 3 2 6
1. Osoiteprosessori signaaliprosessoria varten, tunnettu välineestä osoitteen laskemiseksi kirjoi- 5 tus/luku-muistissa, joka sisältää ainakin yhden ympyräpus-kurin digitaalisen suodattimen tilamuuttujien (X(n), X(nl),...; Y(n), Y(n-l),...; W(n), W(n-1),...) tallenta miseksi, jolloin ainakin yksi puskuri sisältää tilamuuttujat ainakin kahdelle digitaaliselle suodattimelle, kaikki 10 suodattimet samassa puskurissa vastaavat samaa näytteenottotaajuutta (sample_rate) ja puskuripituus (mod_numb) riippuu kyseistä puskuria vastaavissa suodattimissa olevien viive-elementtien lukumäärien summasta, jotka välineet sisältävät: 15 a) järjestelyn (S) rekistereitä jokaisen ympyräpus- kurin senhetkisen taitto-osoitteen (mod_pointer) tallentamiseksi suhteessa puskurin absoluuttiseen alkuosoitteeseen (mod_start); ja b) laskentayksikön (+) seuraavien vaiheiden suorit- 20 tamiseksi 1. senhetkisen taitto-osoitteen (mod_pointer) sum maamiseksi valitun tilamuuttujan (X(n), X(n-l),...; Y(n), Y(n-l),...; W(n), W(n-1),...) siirtymään (data_addr, write_addr) suhteessa vastaavan puskurin alkuosoitteeseen 25 (mod_start), 2. vaiheessa (1) saadun summan (data_addr + mod_-pointer, write_addr + mod_pointer) pienentämisen vastaavan puskurin pituudella (mod_numb), jos summa ylittää tai on yhtä suuri kuin tämä puskurin pituus, ja 30 3) puskurin alkuosoitteen (mod_start) summaamisen vaiheessa (2) saatuun tulokseen valitun tilamuuttujan absoluuttisen osoitteen saamiseksi.
2. Patenttivaatimuksen 1 mukainen osoiteprosessi, tunnettu siitä, että puskurin pituus (mod_numb) II 25 C : 7 · v.. V- i_ V.1 muodostuu kyseistä puskuria vastaavissa suodattamissa olevien viive-elementtien lukumäärien summasta lisättynä yhdellä .
3. Patenttivaatimuksen 1 tai 2 mukainen osoitepro- 5 sessi, tunnettu siitä, että laskentayksikkö (+) muodostuu summaimesta, jolloin mahdollinen pienentäminen vaiheesta (2) suoritetaan siten, että puskurin pituuden kaksi-komplementti (-mod_numb) summataan vaiheen (1) summaan .
4. Patenttivaatimuksen 3 mukainen osoiteprosessi, tunnettu ensimmäisestä rekisteristä (A_reg) senhetkisen taitto-osoitteen (mod_pointer), puskurin pituuden kaksi-komplementin (-mod_numb) ja puskurin alkuosoitteen (mod_start) tallentamiseksi sekvenssissä toistensa jäl- 15 keen.
5. Patenttivaatimuksen 4 mukainen osoiteprosessi, tunnettu toisesta rekisteristä (B_reg) valitun tilamuuttujan (X(n), X(n-l),...; Y(n), Y(n-l),...; W(n), W(n-1),...) siirtymän (data_addr, write_addr) suhteessa 20 vastaavan puskurin alkuosoitteeseen (mod_start), vaiheessa (1) saadun summan ja mahdollisesti vaiheessa (2) saadun tuloksen tallentamiseksi sekvenssissä toistensa jälkeen.
6. Patenttivaatimuksen 5 mukainen osoiteprosessi, tunnettu siitä, että summaimen (+) eniten merkit- 25 sevää bittiä vaiheen (2) jälkeen käytetään etumerkkibitti- nä ja että vaiheessa (1) saatu tulos pidetään toisessa rekisterissä (B_reg), jos vaiheen (2) tulos on negatiivinen, ja että vaiheessa (1) saatu tulos toisessa rekisterissä (B_reg) korvataan vaiheessa (2) saadulla tuloksella, jos 30 tämä ei ole negatiivinen.
7. Jonkin edellisen patenttivaatimuksen mukainen osoiteprosessi, tunnettu siitä, että jokainen suodatin lasketaan siten, että suodattimen tilamuuttujat (X(n), X(n-1) . . . ; Y(n), Y(n-l),...; W(n), W(n-1),...) ja 26 C ·' / ^ ·- V, L vastaavat kertoimet haetaan sekvenssissä toistensa jälkeen indeksin avulla, joka on yhtä suuri kuin suodattimessa olevien viive-elementtien lukumäärä, jolloin mainittu indeksi summataan suodattimen alkupaikkaan vanhimman tila-5 muuttujan ja vastaavan kertoimen saamiseksi ja sitten askelletaan alaspäin nollaan kaikkien nuorempien tilamuuttujien saamiseksi.
8. Patenttivaatimuksen 7 mukainen osoiteprosessi, tunnettu siitä, että lasketun suodattimen arvo 10 kirjoitetaan aikaisemman suodattimen vanhimman tilamuuttujan muistipaikkaan, niin että tämä muistipaikka käytetään uudelleen.
9. Jonkin edellisen patenttivaatimuksen mukainen osoiteprosessi, tunnettu siitä, että rekisteri- 15 järjestely (S) sisältää neljä rekisteriä. 27 c; v ZL Vv
FI923253A 1990-01-16 1992-07-15 Osoiteprosessori signaaliprosessoria varten FI98326C (fi)

Applications Claiming Priority (4)

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

Publications (4)

Publication Number Publication Date
FI923253A FI923253A (fi) 1992-07-15
FI923253A0 FI923253A0 (fi) 1992-07-15
FI98326B FI98326B (fi) 1997-02-14
FI98326C true FI98326C (fi) 1997-05-26

Family

ID=20378264

Family Applications (1)

Application Number Title Priority Date Filing Date
FI923253A FI98326C (fi) 1990-01-16 1992-07-15 Osoiteprosessori signaaliprosessoria varten

Country Status (20)

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

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

Similar Documents

Publication Publication Date Title
FI98326C (fi) Osoiteprosessori signaaliprosessoria varten
EP0293851B1 (en) Digital signal processor
NL192698C (nl) Verwerkingsstelsel voor het verwerken van digitale data.
JP3027970B2 (ja) デイジタル信号プロセツサメモリ管理ユニツトおよびその方法
KR100325430B1 (ko) 상이한 워드 길이의 산술연산을 수행하는 데이터 처리장치 및 그 방법
US4754421A (en) Multiple precision multiplication device
EP0185215A2 (en) Forth-like language microprocessor
US5381360A (en) Modulo arithmetic addressing circuit
JP3188467B2 (ja) 最小値・最大値検索装置
GB2059124A (en) Data processing system
JPH05113930A (ja) フレキシブルなn−ウエイ・メモリ・インターリーブ方式
EP1019805A2 (en) Data processing unit with digital signal processing capabilities
US4426680A (en) Data processor using read only memories for optimizing main memory access and identifying the starting position of an operand
EP0764900A2 (en) Information processing apparatus for realizing data transfer to/from a plurality of registers using instructions of short word length
WO1980001215A1 (en) An output processing system for a digital electronic musical instrument
US4240142A (en) Data processing apparatus providing autoincrementing of memory pointer registers
EP1003094A2 (en) Central processing unit having a data extension instruction
EP0310701A1 (en) BCD arithmetic using binary arithmetic and logical operations
US4250545A (en) Data processing apparatus providing autoloading of memory pointer registers
EP0220327B1 (en) Address expanding system
EP0140158B1 (en) Apparatus and method for converting a number in binary format to a decimal format
CN115146769A (zh) 一种基于范围可寻址查找表计算tanh函数的数字电路模块
JPH1055352A (ja) 浮動小数点数累積加算装置
US4751631A (en) Apparatus for fast generation of signal sequences
GB2129589A (en) Array processor cell

Legal Events

Date Code Title Description
BB Publication of examined application