Digital signalprocessor

Digital signalprocessor ( eng.  digital signal processor , DSP , digital signal processor (DSP) - en specialiseret mikroprocessor designet til at behandle digitaliserede signaler (normalt i realtid ) [1] .

Arkitektoniske træk

Arkitekturen af ​​signalprocessorer, i sammenligning med mikroprocessorer til generelle formål, har nogle funktioner forbundet med ønsket om at fremskynde udførelsen af ​​typiske digitale signalbehandlingsopgaver så meget som muligt, såsom digital filtrering , Fourier-transformation , signalsøgning osv. Matematisk reduceres disse opgaver til elementvise multiplikationselementer af multikomponentvektorer af reelle tal, efterfulgt af summering af produkterne (for eksempel i digital filtrering er udgangssignalet fra et filter med en endelig impulsrespons lig med summen af produkter af filterkoefficienterne af vektoren af ​​signalprøver, udføres lignende beregninger, når der søges efter maksima for korrelations- og autokorrelationsfunktionerne for signalprøver). Derfor er signalprocessorer optimeret til hastighed til at udføre netop sådanne operationer. Og DSP'er er først og fremmest orienteret mod den gentagne udførelse af multiplikation med beregningen "on the fly" af adresserne på de array-elementer, der skal multipliceres:

De begrænsede hardwareressourcer fra de første DSP'er efterlod et betydeligt aftryk på deres arkitektur:

I moderne mikroelektronik indeholder processorer til generelle formål ofte hardwareunderstøttelse til typiske DSP-operationer. Særligt tidskrævende DSP-opgaver løses ud fra programmerbar logik , hvor det er muligt at opnå den største optimering af udførelsen af ​​en bestemt operation. Specialiserede DSP-processorer bliver i stigende grad lavet til vektor . Samtidig giver klassiske DSP'er avancerede instruktionssæt til processorer til generelle formål og udjævner funktionerne i softwaremodellen og placerer dem som produkter til generelle formål med accelererede DSP-funktioner. Alle disse tendenser fører til sløring af det klassiske koncept for DSP.

Ansøgninger

Historie

Tidligere udviklinger

Før 1980 producerede flere virksomheder enheder, der kan betragtes som forløbere for DSP'er. Så i 1978 udgav Intel den "analoge signalprocessor" 2120. Den inkluderede en ADC , en DAC og en digital dataprocessor, men der var ingen hardwaremultiplikationsfunktion. I 1979 frigiver AMI S2811, en perifer enhed styret af computerens hovedprocessor. Begge produkter havde ikke succes på markedet.

Første generation (begyndelsen af ​​1980'erne)

DSP'ernes hovedhistorie tælles normalt fra 1979-1980, da Bell Labs introducerede den første Mac 4 single-chip DSP, og også NEC 's µMPD7720 og AT&T 's DSP1 blev vist på IEEE International Solid-State Circuits Conference '80 , som dog ikke fik stor udbredelse. De facto-standarden var Texas Instruments TMS32010 krystal udgivet lidt senere , som overgår konkurrenternes produkter i mange parametre og succesfulde tekniske løsninger. Her er nogle af dens egenskaber:

Anden generation (midten af ​​1980'erne)

På grund af fremskridt inden for halvlederteknologi i denne periode blev der frigivet produkter, der havde forbedrede funktioner sammenlignet med den første generation. Karakteristiske forskelle omfatter:

Meget senere blev der også frigivet enheder, der formelt tilhørte anden generation, men med følgende forbedringer:

Tredje generation (slutningen af ​​1980'erne)

Den tredje generation af DSP'er er normalt forbundet med starten af ​​produktionen af ​​produkter, der implementerer flydende kommaaritmetik. Karakteristiske træk ved de første frigivne prøver:

Fjerde generation

Fjerde generation af DSP'er er kendetegnet ved en betydelig udvidelse af instruktionssæt, skabelsen af ​​VLIW og superskalære processorer. Urfrekvenserne er steget mærkbart. Så for eksempel blev udførelsestiden for MAC-instruktionen ( Y := X + A × B ) reduceret til 3 ns.

Moderne DSP'er

De bedste moderne DSP'er kan karakteriseres ved følgende parametre:

Grundlæggende DSP-parametre

DSP'ens integralkarakteristika bruges også ofte, for eksempel "power / current / speed"-indikatoren, for eksempel ma / MIPS (milliampere pr. 1 million instruktioner pr. sekund), som gør det muligt at estimere det reelle strømforbrug afhængig af kompleksiteten af ​​den opgave, der løses af processoren på et bestemt tidspunkt.

Valget af DSP er helt bestemt af formålet med det system, der udvikles. For eksempel er billige processorer og lavt strømforbrug vigtigt for massemobilenheder, mens omkostningerne ved at udvikle et system falder i baggrunden. På den anden side er processoreffektivitet, tilgængeligheden af ​​avancerede værktøjer, multiprocessing osv. vigtige for måleudstyr, audio- og videoinformationsbehandlingssystemer.

Evaluering og sammenligning af præstationer

Som nævnt tidligere gør individuelle karakteristika såsom klokfrekvens, MIPS, MOPS, MFLOPS det muligt at evaluere ydeevnen af ​​en DSP ret tvetydigt. Derfor, for at løse problemet med at måle og sammenligne karakteristika for forskellige DSP'er, bruges specielle sæt af test, der efterligner nogle almindelige digitale signalbehandlingsopgaver. Hver test består af flere små programmer, der er skrevet i assembler og optimeret til en given arkitektur. Disse tests kan omfatte implementering af:

Den mest autoritative testpakke i dag er BTDImark2000-testen ( BDTI DSP Kernel Benchmarks™ (BDTImark2000™) Certified Results ), som udover disse algoritmer også inkluderer en vurdering af den hukommelse, der bruges af algoritmen, systemudviklingstid og andet parametre.

Enhed

Harvard arkitektur

Digitale signalprocessorer er bygget på basis af de såkaldte. "Harvard-arkitektur", et karakteristisk træk ved det er, at programmer og data er lagret i forskellige hukommelsesenheder - programhukommelse og datahukommelse. I modsætning til von Neumann-arkitekturen , hvor processoren har brug for mindst tre buscyklusser for at hente en instruktion og to operander, kan en DSP lave samtidige adgange til både instruktionshukommelse og datahukommelse, og ovenstående instruktion kan modtages i to buscyklusser. I virkeligheden, takket være omtanken i kommandosystemet og andre foranstaltninger, kan denne tid reduceres til en cyklus. I rigtige enheder kan instruktionshukommelsen gemme ikke kun programmer, men også data. I dette tilfælde siges DSP'en at være bygget i henhold til en modificeret Harvard-arkitektur.

Instruktionshukommelse og datahukommelse er normalt placeret på DSP-chippen. På grund af det faktum, at denne hukommelse har en relativt lille volumen, bliver det nødvendigt at bruge eksterne (i forhold til processorchippen) lagerenheder. For sådanne enheder anvendes separate kommando- og databusser ikke, da dette ville kræve en betydelig stigning i antallet af eksterne krystalstifter, hvilket er dyrt og upraktisk. Derfor sker interaktionen af ​​DSP'en med eksterne lagerenheder over ét sæt busser uden adskillelse i kommandoer og data. Det skal også bemærkes, at adgang til ekstern hukommelse altid tager meget mere tid end intern hukommelse, så i applikationer, der er kritiske for udførelsestiden, skal sådanne adgange minimeres.

Strukturdiagram

Pipeline udførelse af kommandoer

Pipelinen er en beregningstråd, der udfører en bestemt mikrooperation på hvert trin , så der er flere kommandoer på forskellige stadier af udførelse på pipelinen på et givet tidspunkt. Dette forbedrer ydeevnen.

Tilstedeværelsen af ​​flere rørledninger implementerer en superskalær arkitektur.

Ved parallel bearbejdning af kommandoer på forskellige pipelines opnås den maksimale effekt på den samme type kommandoer, som ikke er afhængige af hinanden. Hvis programmet indeholder kommandoer af forskellige typer, introduceres ventecyklusser på pipelinen.

For at optimere belastningen af ​​transportbånd kræves følgende:

Som følge heraf udføres kommandoerne ikke i den rækkefølge, som programmøren skrev dem ned.

Hardware implementering af de vigtigste funktioner

Multiplikatorer

En hardwaremultiplikator bruges til at reducere eksekveringstiden for en af ​​de vigtigste DSP-operationer - multiplikationsoperationen. I processorer til generelle formål implementeres denne operation i flere skifte- og additionscyklusser og tager meget tid, og i DSP, takket være en specialiseret multiplikator, i én instruktionscyklus.

Funktionelt er multiplikatorer opdelt i to typer:

  • Simpel multiplikator. Udfører en ord-dækkende multiplikationsoperation. Resultatet er dobbelt ord bredt og lagres enten i et dobbelt-bredde register eller i to almindelige registre (eller to hukommelsesplaceringer).
  • Multiplikator-adder (MAC - Multiplikator / Akkumulator). Udfører en multiplikations-akkumuleringsoperation, der er meget brugt i mange digitale signalbehandlingsalgoritmer. For detaljer om, hvordan du bruger denne kommando, se #Classifying DSPs by Architecture .
Skiftere

En shifter er både en enhed, der udfører en dataskiftoperation og et register, der gemmer resultatet af skiftet [2] .

Med hensyn til deres funktioner er skiftere opdelt i:

  • Forskiftere , der udfører et skift før starten af ​​operationen eller under dens udførelse;
  • Efterskiftere , der udfører et skift, efter at operationen er blevet udført.

I begge tilfælde er strukturen af ​​det register, der gemmer resultatet af skiftet, den samme som strukturen af ​​akkumulatoren .

Forskifterfunktioner
  • foreløbig skalering. Bruges i komplekse regnekommandoer, for eksempel, samt indlæsningskommandoer med et skift af formen ;
  • Skift før du udfører komplekse logiske operationer, for eksempel ;
  • Aritmetiske, logiske og cykliske skift under udførelsen af ​​de tilsvarende kommandoer.
Postshifter funktioner
  • Skaleringsresultater, når du gemmer i hukommelsen. Samtidig forbliver indholdet af akkumulatoren (resultatet af hovedoperationen) uændret;
  • Fjernelse af tegnforlængerbits;
  • Normalisering;
  • Valg af samme ordre.
Adressegenereringsenheder Hardware tilrettelæggelse af cyklusser

ALU

ALU er en processorenhed, der under styring af en instruktionsdekoder udfører aritmetiske og logiske transformationer på data, som i dette tilfælde kaldes operander. Bitbredden af ​​operanderne kaldes normalt størrelsen af ​​maskinordet.

Registre

Batteri

En akkumulator er et register designet til at lagre resultaterne af operationer. Arkitekturen af ​​mange DSP'er har to akkumulatorer, hvilket gør det muligt at fremskynde udførelsen af ​​operationer, der kræver lagring af mellemresultater. Teknisk set kan en akkumulator bestå af flere registre [2] :

  • EXT - udvidelsesregister;
  • MSP - højt ordregister;
  • LSP - lavordregister.

Tilstedeværelsen af ​​EXT-registret giver dig mulighed for at øge nøjagtigheden af ​​beregningen af ​​mellemresultater samt øge lagringsområdet for værdier, der ikke fører til overløb. Når en akkumulatorværdi er lagret i en hukommelsescelle eller almindeligt register, afrundes dens værdi til standardbredden af ​​den pågældende celle eller register. På den anden side, hvis det er nødvendigt, kan indholdet af EXT-registret lagres separat.

Adresseringsmetoder

Processoren understøtter direkte adressering, præ- og post-inkrement indirekte adressering og DSP-specifik cyklisk adressering og adressebit-vendende adresseringstilstande.

Klassificering af DSP'er efter arkitektur

Det skal bemærkes, at klassificeringen nedenfor [2] er temmelig betinget, da de mange tekniske løsninger ofte ikke tillader en utvetydigt at tilskrive hver specifik enhed til en af ​​de angivne typer. Derfor bør det følgende hellere bruges som et materiale til at forstå funktionerne i DSP-arkitekturen end til en reel klassificering af produkter.

Det er praktisk at overveje funktionerne i DSP-arkitekturen på eksemplet med en specifik digital databehandlingsalgoritme, for eksempel et FIR-filter , hvis udgangssignal kan skrives som:

, hvor

  •  — aflæsninger af indgangssignalet;
  •  er filterkoefficienterne.

Som du nemt kan se, er udregning af resultatet et klassisk eksempel på brug af multiplikation-akkumuleringsoperationen - MAC (Y := X + A × B) .

Standard DSP'er

Figuren viser to muligheder for at udføre en MAC-instruktion på en standard DSP. I den første variant er begge operander gemt i datahukommelsen, så det tager to cyklusser at hente dem, det vil sige, at udførelsestiden for n tilføjelser er 2n . I det andet tilfælde er en af ​​operanderne gemt i programhukommelsen, så instruktionen udføres i én cyklus, og den samlede udførelsestid af løkken vil være lig med n cyklusser (det skal præciseres, at i virkeligheden, for udførelse i en cyklus, skal MAC'en udføres inde i en speciel loop-instruktion for at undgå genhentning af selve instruktionskoden, hvilket kræver en ekstra clock-cyklus). Det kan ses her, at den effektive implementering af algoritmen kræver brug af programhukommelse til at lagre data.

En af de muligheder, der giver dig mulighed for at opgive brugen af ​​programhukommelse til datalagring, er brugen af ​​den såkaldte. "dual-port memory", det vil sige hukommelse, der har to sæt inputbusser - to adresse- og databusser. Denne arkitektur tillader samtidig adgang til to adresser (de skal dog være i forskellige adresserbare blokke). Denne løsning bruges i DSP'er fra Motorola (DSP56000) og Lucent (DSP1600).

Med denne arkitektur er den eneste måde at forbedre ydeevnen på at øge clock-frekvensen.

Forbedrede standard DSP'er

"Enhanced Standard DSP'er" bruger følgende parallelitetsforbedringsteknikker til at forbedre systemets ydeevne i forhold til standard DSP'er:

  • Forøgelse af antallet af drifts- og computerenheder;
  • Introduktion af specialiserede coprocessorer;
  • Busudvidelse for at øge mængden af ​​overførte data;
  • Brug af hukommelse med flere adgange (flere adgange pr. cyklus);
  • Komplikation af kommandosystemet;

Mange af disse metoder har eksisteret siden de allerførste processorer, så det er ofte umuligt entydigt at klassificere dem som "standard" eller "forbedret".

Figuren viser et eksempel på implementering af beregningen af ​​to parallelle MAC-kommandoer. For at gøre dette indeholder DSP'en to MAC-moduler og to batterier. MAC-blokke modtager data på tre busser på samme tid, og en af ​​værdierne er fælles for dem. Således udføres to kommandoer samtidigt:

  • AK1 := AK1 + D1 × D2
  • AK2 := AK2 + D1 × D3

Det særlige ved den viste løsning er, at mange DSP-algoritmer kan reduceres til udførelse af to parallelle kommandoer med én fælles faktor, for eksempel:

  • FIR-filter med symmetriske koefficienter. Filterkoefficienter bruges som identiske faktorer, og to forskellige sæt signalprøver føres til separate busser, det vil sige, at to halvdele af filteret beregnes parallelt, som derefter summeres.
  • Dual kanal behandling. Signalprøver føres til den fælles bus, og sæt af koefficienter føres til separate busser.

Nogle processorer (Lucent DSP16xxx, ADI ADSP-2116x) bruger to identiske kerner, hver med sin egen hukommelse, det vil sige, at en instruktion udføres samtidigt i to kerner med forskellige data. Dette omgår begrænsningen for at bruge fuldstændig uafhængige data.

En karakteristisk ulempe ved sådanne processorer kan betragtes som behovet for en højt kvalificeret udvikler, da effektiv brug af disse funktioner kræver programmering i assemblersprog, et godt kendskab til arkitekturen og kommandosystemet, det vil sige, at disse enheder betragtes som "uvenlige" til sprog på højt niveau.

DSP med VLIW-arkitektur

Den største forskel mellem VLIW- processorer er, at instruktionskoderne samles til store "superinstruktioner" på kompileringsstadiet og udføres parallelt. Typisk bruger sådanne processorer en RISC-arkitektur med en fast instruktionslængde, hvor hver af dem udføres i en separat driftsenhed. De karakteristiske egenskaber ved sådanne processorer omfatter:

  • Et stort sæt betjeningsmoduler, der fungerer uafhængigt af hinanden. Disse moduler kan omfatte:
    • Aritmetik:
      • moduler af aritmetiske operationer og sammenligningsoperationer;
      • moduler af logiske operationer;
      • moduler til at gange tal med flydende og fast punkt;
      • konstant generation moduler.
    • Adressegenereringsmoduler, herunder dem til lineære og cykliske buffere;
  • Behovet for at optimere compileren for hver processormodel, da sammensætningen og funktionerne af computerenheder kan ændres mellem modellerne, hvilket medfører en ændring i listen over kommandoer, der kan udføres samtidigt;
  • Behovet for ultrabrede databusser (ca. 128 bit), så operationskoden, bestående af individuelle kommandoer (op til 8), kan hentes fra hukommelsen i et opkald.
  • Høje krav til mængden af ​​programhukommelse, hvilket også er forbundet med en stor længde af operationen.

Normalt, hvis processoren har flere identiske moduler, er det, når du opretter et program i assembler, kun muligt at specificere typen af ​​det nødvendige driftsmodul, og den specifikke enhed vil blive tildelt af compileren. På den ene side forenkler dette programmeringen af ​​sådanne enheder, og på den anden side gør det det muligt at bruge deres ressourcer ret effektivt.

Superscalar DSP'er

Superscalar-processorer er også kendetegnet ved et stort sæt parallelle driftsenheder og evnen til at udføre flere instruktioner samtidigt. Men sammenlignet med VLIW har de to fremtrædende træk:

  • Processorinstruktioner er ikke grupperet i blokke, hver af dem går uafhængigt ind i processoren;
  • Instruktioner til parallel eksekvering er grupperet i processoren baseret på sammensætningen og den aktuelle arbejdsbelastning af driftsblokke, samt forholdet mellem data.

Ved at bruge den beskrevne tilgang kan du komme uden om følgende ulemper ved VLIW:

  • Ineffektiv hukommelsesbrug på grund af stor gruppedriftslængde;
  • Afhængigheden af ​​den kompilerede kode af sammensætningen af ​​driftsmodulerne i en bestemt processor.

Prisen for at løse disse problemer er en væsentlig komplikation af processorkredsløbet, hvor et modul til planlægning af instruktionsudførelse vises.

Superscalar-processorer planlægger udførelsen af ​​instruktioner ikke kun baseret på information om arbejdsbyrden af ​​driftsblokke, men også baseret på analysen af ​​afhængigheder mellem data. For eksempel kan en instruktion om at gemme resultatet af en aritmetisk operation ikke udføres før selve beregningsoperationen, selvom hukommelsesadgangsmodulet i øjeblikket er ledigt. Denne funktion fører blandt andet til, at det samme sæt instruktioner kan udføres forskelligt forskellige steder i programmet, hvilket gør det umuligt at vurdere ydeevnen præcist. Dette er især vigtigt for systemer, der kører i realtid, fordi den dårligste resultatvurdering vil føre til, at processorressourcerne ikke bliver brugt fuldt ud. I disse systemer forbliver problemet med nøjagtigt at estimere ydeevnen af ​​superskalære DSP'er åbent.

Hybrid DSP'er

Hybride DSP'er forstås normalt som specialiserede enheder, der kombinerer funktionerne fra en mikrocontroller og en digital signalprocessor. Typisk er sådanne produkter designet til at udføre én funktion - for eksempel kontrol af elektriske motorer eller andre objekter i realtid. Et andet bredt område af deres applikation er for nylig blevet mobiltelefoni, hvor to processorer tidligere blev brugt - en konventionel til styring af enhedens funktioner (skærm, tastatur) og den anden til behandling af stemmesignaler (kodning osv.).

Klassificering af DSP efter formål

Generelt kan DSP'ens formål opdeles i to grupper:

  • DSP generelle formål;
  • Problemorienterede DSP'er.

"Problemorientering" refererer normalt ikke til yderligere kommandoer, men til et sæt indbyggede specialiserede perifere enheder. For eksempel kan DSP'er designet til at styre elektriske motorer indeholde PWM -signalgeneratorer på chip , industrielle LAN-controllere osv. Processorer, der bruges til at behandle stemmesignaler, indeholder ofte bitmanipulationsenheder (BMU'er) og fejlkorrektions-coprocessorer. Digitale foto- og videokameraer bruger DSP'er med MPEG1, MPEG4, JPG, MP3, AAC osv. kodnings-/afkodningsmoduler.

DSP programmering

Til DSP-programmering bruges normalt et af to sprog - assembly og C. Hovedegenskaberne ved DSP-samlere er de samme som for konventionelle mikroprocessorsprog og kan generelt beskrives som:

  • Assemblysproget er maskinorienteret, det vil sige, at hver familie af processorer har et sprog, der er forskelligt fra sproget i andre familier;
  • Én assemblersprogsinstruktion svarer normalt til én maskinsprogsinstruktion;
  • Ved programmering i assembler har programmøren adgang til alle processorens og systemets ressourcer, hvilket gør det muligt at bruge dem så effektivt som muligt;
  • Programmøren skal have et godt kendskab til arkitekturen af ​​hver specifik processor, som han arbejder med, det vil sige, at den nødvendige kvalifikation af personalet skal være tilstrækkelig høj;
  • Oprettelse og fejlretning af programmer i assembler er en lang og besværlig proces, som også kræver høje kvalifikationer.

På den anden side, når man bruger mellem- og højniveausprog, især C, er det muligt at forenkle og fremskynde oprettelsen af ​​programmer betydeligt, men systemressourcerne vil blive brugt mindre effektivt sammenlignet med et program, der er skrevet udelukkende i assembler.

I virkeligheden bruges der normalt en tilgang, der kombinerer fordelene ved både højniveausprog og effektiviteten af ​​assemblerprogrammer. Dette kommer til udtryk i, at standardbiblioteker normalt oprettes i assembler, samt kritiske dele af koden med hensyn til eksekveringstid og hukommelsesstørrelse. Samtidig kan hjælpemoduler oprettes i et sprog på højt niveau, hvilket fremskynder og forenkler udviklingen af ​​et softwaresystem som helhed.

Funktioner af DSP assemblers

Interessante egenskaber ved DSP-samlere inkluderer følgende:

  • Tilstedeværelsen af ​​to former for at skrive mange kommandoer - mnemonisk og algebraisk . Mnemonisk form ligner skrivekommandoer til konventionelle mikroprocessorer, for eksempel ADD dst, src . En anden, algebraisk, bruges sjældnere i assemblere af standard mikroprocessorer, mens den nævnte kommando i DSP-sproget kan skrives som dst = dst + src . Normalt forstår DSP-montører begge notationsformer, men f.eks. bruger Analog Devices og Lucent Technologies- montører kun algebraisk notation.
  • Midler til at organisere standardstrukturer, for eksempel specielle hardwareinstruktioner til gentagelse af en instruktion eller kodeblok. På samme tid, i modsætning til gentagelseskommandoer fra konventionelle processorer, kan DSP'en springe cyklussen med at hente koden for den gentagne instruktion over, hvilket reducerer udførelsestiden for hver gentagelse med mindst 1 buscyklus, som med en to-cyklus instruktion, giver dobbelt gevinst i tid.

Kompatibilitet inden for DSP-familier

Normalt produceres DSP'er i familier, og produkter inden for familier har lignende assemblersprog eller endda kompatibilitet på maskinkodeniveau. Også inden for en familie bruges de samme sæt subrutinebiblioteker normalt. Som med konventionelle mikroprocessorer kan ældre modeller af DSP'er ofte udføre maskinkoden for lavere modeller, eller deres assembler inkluderer alle instruktionerne fra lavere modeller som en delmængde af deres eget instruktionssæt.

Debugging programmer

Normalt udføres fejlfinding af programmer skrevet til DSP ved hjælp af specielle værktøjer, herunder softwaresimulatorer og emulatorer . De inkluderer også ofte profileringsværktøjer (måling af hastigheden for udførelse af kodeblokke).

Noter

  1. Digitale signalprocessorer: en håndbog. Under. udg. A. G. Ostapenko, M., Radio og kommunikation, 1994.
  2. 1 2 3 Solonina A. I., Ulakhovich D. A., Yakovlev L. A. Algoritmer og processorer for digital signalbehandling. - Sankt Petersborg. : BHV-Petersburg, 2001. - 464 s. — ISBN 5-94157-065-1 .

Litteratur

  • Solonina AI, Ulakhovich DA, Yakovlev LA Algoritmer og processorer til digital signalbehandling. - Sankt Petersborg. : BHV-Petersburg, 2001. - 464 s. — ISBN 5-94157-065-1 .
  • Anvendelse af digital signalbehandling \ Ed. E. Openheim - VERDEN, 1980.
  • Digitale signalprocessorer. PC World, 5'93
  • Zilog digitale signalprocessorer og deres applikationer. CHIPNEWS, nr. 2 (11) 1997
  • Markov. C. Digitale signalprocessorer. Bog 1. M .: Microart, 1996