Een microschakeling die is ontworpen om elektronische apparaten te besturen. Microcontroller-programmering

microprocessor systeem(MPS) is een functioneel compleet product, bestaande uit een of meer apparaten, voornamelijk microprocessor: microprocessor of microcontroller.

microprocessor(MP) is een door software bestuurd apparaat ("processor") dat rekenkundige, logische bewerkingen, het proces van digitale informatieverwerking en -besturing uitvoert op één grote geïntegreerde schakeling (LSI) of een reeks van verschillende gespecialiseerde microschakelingen.

microcontroller(MK) is een microschakeling die is ontworpen om elektronische apparaten te besturen. combineert de functies van een processor en verschillende randapparatuur op één chip, bevat RAM of ROM. In feite is het een computer met één chip die eenvoudige taken kan uitvoeren.

microprocessor apparaat(MPU), is een functioneel en structureel compleet product, bestaande uit meerdere microschakelingen, waaronder een microprocessor; het is ontworpen om een ​​specifieke reeks functies uit te voeren: ontvangen, verwerken, verzenden, transformeren van informatie en beheren.

Op functionele basis worden microprocessors onderverdeeld in parlementsleden voor algemene doeleinden en gespecialiseerde parlementsleden. Deze laatste zijn onderverdeeld in microcontrollers en digitale signaalprocessors (DSP, English Digital Signal Processor - DSP). MCU's zijn er in 8-, 16- en 32-bits, terwijl DSP's in fixed-point (16- en 24-bit) en floating-point (32-bits) zijn. Kenmerkend voor de structuur van microcontrollers is de plaatsing op dezelfde chip met de centrale processor van het interne geheugen en een groot aantal randapparatuur.

architectuur processor is een complex van hardware en software die aan de gebruiker wordt geleverd. Dit algemene concept omvat een set van voor software toegankelijke registers en uitvoerende (operationele) apparaten, een systeem van basiscommando's en adresseringsmethoden, de hoeveelheid en structuur van adresseerbaar geheugen, typen en methoden van interruptverwerking.

CISC- de architectuur is geïmplementeerd in vele soorten microprocessors die een grote reeks instructies in meerdere formaten uitvoeren met behulp van talrijke adresseringsmethoden. RISC– De architectuur onderscheidt zich door het gebruik van een beperkte set instructies op vast formaat. VLIW Deze architectuur verscheen in de jaren negentig. Zijn eigenaardigheid is het gebruik van zeer lange opdrachten (tot 128 bits of meer), waarvan afzonderlijke velden codes bevatten die de uitvoering van verschillende bewerkingen garanderen.

Princeton-architectuur(Von Neumann) wordt gekenmerkt door het gebruik van gemeenschappelijk RAM voor het opslaan van programma's, gegevens en ook voor het organiseren van een stapel. Om toegang te krijgen tot dit geheugen, wordt een gemeenschappelijke systeembus gebruikt, waardoor zowel opdrachten als gegevens de processor binnenkomen. De aanwezigheid van gedeeld geheugen stelt u in staat om het volume snel te herdistribueren om individuele arrays van opdrachten, gegevens en stapelimplementatie op te slaan, afhankelijk van de taken die worden opgelost. Harvard- fysieke scheiding van instructiegeheugen (programma's) en datageheugen. De originele versie gebruikte ook een aparte stapel. Elk geheugen is via een aparte bus met de processor verbonden, wat het mogelijk maakt om de volgende instructie gelijktijdig op te halen en te decoderen met data read-write tijdens de uitvoering van de huidige instructie. hogere prestaties dan bij gebruik van de Princeton-architectuur.

Programma's ontwerpen. er wordt een programma ontworpen dat voldoet aan de eisen van de probleemstelling. Nadat de taak als geheel is ingesteld, wordt de programma-ontwerpfase uitgevoerd, die traditioneel wordt geassocieerd met het opstellen van een blokschema van het programma, maar in de programma-ontwikkelingsfase is het nuttig om de volgende ontwerpmethoden toe te passen:

Modulaire programmering een methode genoemd waarbij lange programma's worden opgedeeld in kortere programma's (modules).

top-down programmering een methode genoemd waarin de ontwikkelde taak wordt opgedeeld in verschillende algemene taken, die vervolgens verder worden gedetailleerd. Dit proces gaat van boven naar beneden door totdat de resulterende deeltaken zo zijn geformuleerd dat ze eenvoudig op een computer kunnen worden geïmplementeerd. Gestructureerd programmeren een methode genoemd waarin programma's worden geschreven volgens speciaal ontworpen regels (ze gebruiken alleen bepaalde soorten programma-instructies) en elk blok van het programma heeft slechts één invoer en één uitvoer.

Geheugenorganisatie microcontroller
I/O-poorten
Timers-Tellers
Onderbrekingen
Analoog-digitaalomzetter
Communicatie-interfaces
  • USART universele synchrone/asynchrone transceiver

Videocursus over het programmeren van STM32-microcontrollers

microprocessor wordt een programmagestuurd apparaat genoemd dat het proces van het verwerken van digitale informatie uitvoert en beheert. De microprocessor is geïmplementeerd in de vorm van een grote (LSI) of extra grote (VLSI) geïntegreerde schakeling. De microprocessor fungeert voor verschillende doeleinden als processor in digitale systemen.

Het belangrijkste kenmerk van de microprocessor is de mogelijkheid om de bedieningslogica te programmeren.

Microcontroller (MCU)- een microschakeling die is ontworpen om elektronische apparaten te besturen. Een typische microcontroller combineert de functies van een processor en randapparatuur en kan RAM en ROM bevatten. In feite is het een computer met één chip die eenvoudige taken kan uitvoeren. Het gebruik van een enkele chip in plaats van een stapel, zoals het geval is bij conventionele processors die in personal computers worden gebruikt, vermindert de omvang, het stroomverbruik en de kosten van op microcontrollers gebaseerde apparaten aanzienlijk.

Microprocessorsysteem (MPS) is een functioneel afgewerkt product, bestaande uit een of meer apparaten, voornamelijk microprocessor: microprocessor en/of microcontroller.

Microprocessorapparaat (MPU) is een functioneel en structureel compleet product, bestaande uit meerdere microschakelingen, waaronder een microprocessor; het is ontworpen om een ​​specifieke reeks functies uit te voeren: ontvangen, verwerken, verzenden, transformeren van informatie en beheren.

De belangrijkste voordelen van microprocessorsystemen: vergeleken met digitale systemen op basis van "harde logica".

  • Multifunctionaliteit: meer functies kunnen op één elementbasis worden geïmplementeerd.
  • Flexibiliteit: de mogelijkheid om het microprocessorprogramma te corrigeren en aan te passen om verschillende bedrijfsmodi van het systeem te implementeren.
  • Compactheid: de miniatuurafmetingen van microschakelingen en de vermindering van hun aantal in vergelijking met de implementatie op "harde logica" maken het mogelijk om de afmetingen van apparaten te verkleinen.
  • Verbetering van de ruisimmuniteit: minder aansluitgeleiders verhogen de betrouwbaarheid van apparaten.
  • Prestaties: de mogelijkheid om hogere werkfrequenties en complexere informatieverwerkingsalgoritmen te gebruiken.
  • Informatiebeveiliging: de mogelijkheid om het microprocessorprogramma te beschermen tegen lezen, stelt u in staat de auteursrechten van ontwikkelaars te beschermen.

Hoewel de microprocessor een universeel hulpmiddel is voor digitale informatieverwerking, vereisen bepaalde toepassingsgebieden echter de implementatie van bepaalde specifieke opties voor hun structuur en architectuur. Daarom worden, volgens het functionele kenmerk, twee klassen onderscheiden: microprocessors voor algemene doeleinden en gespecialiseerde microprocessors. Onder gespecialiseerde microprocessors zijn de meest gebruikte microcontrollers die zijn ontworpen om besturingsfuncties voor verschillende objecten uit te voeren, en digitale signaalprocessors (DSP - Digital Signal Processor), die zijn gericht op de implementatie van procedures die zorgen voor de noodzakelijke conversie van analoge signalen gepresenteerd in digitale formulier.

Een gedeeltelijke lijst van randapparatuur die aanwezig kan zijn op microcontrollers omvat:

  • verschillende I/O-interfaces zoals UART, I²C, SPI, CAN, USB, ETHERNET;
  • analoog-naar-digitaal en digitaal-naar-analoog converters;
  • vergelijkers;
  • pulsbreedtemodulatoren;
  • timers-tellers;
  • klok frequentie generator;
  • beeldscherm- en toetsenbordcontrollers;
  • ingebedde flash-geheugenarrays.

Het idee om een ​​microprocessor en randapparatuur op één chip te plaatsen is van de ingenieurs M. Kochren en G. Boon, medewerkers van Texas Instruments. De eerste microcontroller was de 4-bit TMS1000 van Texas Instruments, die RAM (32 bytes), ROM (1 kB), klok en I/O-ondersteuning bevatte. Uitgebracht in 1972, had het een nieuwe functie voor die tijd - de toevoeging van nieuwe instructies.

In 1976 (5 jaar na de creatie van de eerste microprocessor) werd de eerste Intel-microcontroller geboren, genaamd 8048. Naast de centrale processor waren er 1 kilobyte programmageheugen, 64 bytes datageheugen, twee 8-bit timers , een klokgenerator en 27 lijnen op de chip I/O-poorten. Microcontrollers van de 8048-familie werden gebruikt in de Magnavox Odyssey-spelconsoles, in de toetsenborden van de eerste IBM-pc's en in een aantal andere apparaten.

Tegenwoordig moeten onder de belangrijkste fabrikanten van microcontrollers Atmel, Microchip, ST Microelectronics, Texas Instruments, Freescale Semiconductor, NXP en anderen worden genoemd.

Een microcontroller is een microschakeling die is ontworpen om elektronische apparaten te besturen. Een typische microcontroller combineert de functies van een processor en randapparatuur op een enkele chip, bevat RAM en/of ROM. In feite is het een computer met één chip die relatief eenvoudige taken kan uitvoeren.

Met de komst van microcomputers met één chip wordt het begin van het tijdperk van massale toepassing van computerautomatisering op het gebied van management geassocieerd. Blijkbaar heeft deze omstandigheid de term "controller" bepaald.

Als gevolg van de daling van de binnenlandse productie en de toegenomen invoer van apparatuur, waaronder computers, heeft de term "microcontroller" (MC) de eerder gebruikte term "microcomputer met één chip" vervangen.

Het eerste patent voor een single-chip microcomputer werd in 1971 verleend aan de ingenieurs M. Kochren en G. Bun, medewerkers van het Amerikaanse Texas Instruments. Zij waren het die voorstelden om niet alleen de processor, maar ook het geheugen met input-output-apparaten op één chip te plaatsen.

In 1976 bracht het Amerikaanse bedrijf Intel de microcontroller i8048 uit. In 1978 bracht Motorola zijn eerste microcontroller uit, de MC6801, die compatibel was met de eerder uitgebrachte microprocessor MC6800. Na 4 jaar, in 1980, brengt Intel de volgende microcontroller uit: i8051. Een goede set randapparatuur, een flexibele keuze uit extern of intern programmageheugen en een betaalbare prijs zorgden ervoor dat deze microcontroller een succes werd in de markt. Vanuit het oogpunt van technologie was de i8051-microcontroller voor zijn tijd een zeer complex product - 128 duizend transistors werden in het kristal gebruikt, wat 4 keer het aantal transistors was in de 16-bits i8086-microprocessor.

Tot op heden zijn er meer dan 200 modificaties van microcontrollers die compatibel zijn met de i8051, geproduceerd door twee dozijn bedrijven, en een groot aantal microcontrollers van andere typen. Populair onder ontwikkelaars zijn 8-bit PIC-microcontrollers van Microchip Technology en AVR van Atmel, 16-bit MSP430 van TI, evenals 32-bits microcontrollers, de ARM-architectuur, die is ontwikkeld door ARM Limited en in licentie gegeven aan andere bedrijven voor hun productie . Ondanks de populariteit van de bovengenoemde microcontrollers in Rusland, ziet de wereldranglijst in termen van verkoop er volgens Gartner Grup-gegevens uit 2009 anders uit: Renesas Electronics bezet de eerste plaats met een ruime marge, gevolgd door Freescale, de derde

Een microprocessorsysteem is een computer-, instrumentatie- of controlesysteem, waarbij het belangrijkste informatieverwerkingsapparaat de MP is. Het microprocessorsysteem is opgebouwd uit een reeks microprocessorgebaseerde grootschalige geïntegreerde schakelingen (LSI).

Karakteristieke kenmerken van microprocessorinformatie- en controlesystemen die zijn ontworpen om technologische processen te automatiseren: de aanwezigheid van een beperkt aantal duidelijk gedefinieerde taken, realtime werking, de aanwezigheid van een ontwikkeld systeem van externe apparaten, hoge betrouwbaarheidsvereisten, rekening houdend met de lange duur van continue werking, moeilijke bedrijfsomstandigheden; zorgen voor automatische werking of modus met de deelname van de operator als onderdeel van het systeem.

Het gebruik van een voldoende krachtig computerapparaat met brede mogelijkheden in een moderne microcontroller, gebouwd op een enkele chip in plaats van een hele set, vermindert de omvang, het stroomverbruik en de kosten van apparaten die op zijn basis zijn gebouwd aanzienlijk. Wordt gebruikt om verschillende apparaten en hun afzonderlijke eenheden te bedienen:

In computertechnologie: moederborden, controllers voor harde schijven en diskettes, cd's en dvd's;

In elektronica en een verscheidenheid aan huishoudelijke apparaten die elektronische besturingssystemen gebruiken - wasmachines, magnetrons, vaatwassers, telefoons en moderne apparaten;

In auto's: boordcomputers, motormanagementsystemen, enz.;

In de industrie: industriële automatiseringsapparatuur - van programmeerbare relais en embedded systemen tot PLC, machinebesturingssystemen.

Momenteel is er een enorm scala (meer dan 10.000) van verschillende microcontrollers die verschillen in reikwijdte, parameters en randapparatuur die in het kristal zijn ingebouwd. Meer dan een dozijn fabrikanten houden zich bezig met de productie van microcontrollers.

  • INVOERING
    • 1.1 Classificatie en structuur van microcontrollers
    • 1.2 De structuur van de processorkern van de microcontroller:
    • 2. Speciaal onderdeel
    • 2.1 CISC- en RISC-processorarchitectuur
    • 2.2 RISC-architectuur.
    • 2.3 Microcontroller met RISC-architectuur
    • Conclusie
    • Lijst met gebruikte literatuur
INVOERING Microcontroller (MCU) - een microschakeling die is ontworpen om elektronische apparaten te besturen. Een typische microcontroller combineert de functies van een processor en randapparatuur en kan RAM en ROM bevatten. In feite is het een computer met één chip die eenvoudige taken kan uitvoeren. Het gebruik van een enkele chip in plaats van een stapel, zoals het geval is bij conventionele processors die in personal computers worden gebruikt, vermindert de omvang, het stroomverbruik en de kosten van op microcontrollers gebaseerde apparaten aanzienlijk. Microcontrollers vormen de basis voor het bouwen van embedded systemen; ze zijn te vinden in veel moderne apparaten, zoals telefoons, wasmachines, enz. De term "microcontroller" (MC) heeft de eerder gebruikte term "single-chip microcomputer" vervangen. Het allereerste patent voor een microcomputer met één chip werd in 1971 verleend aan de ingenieurs M. Kochren en G. Bun, medewerkers van Texas Instruments. Zij waren het die voorstelden om niet alleen een microprocessor, maar ook geheugen, input-output-apparaten op één chip te plaatsen. Met de komst van microcomputers met één chip wordt het begin van het tijdperk van computerautomatisering op het gebied van beheer geassocieerd. Blijkbaar heeft deze omstandigheid de term "microcontroller" (controle - beheer) bepaald. In 1979 ontwikkelde NII TT een 16-bits computer met één chip K1801BE1, waarvan de architectuur "Electronics NTs" werd genoemd. In 1980 bracht Intel de microcontroller i8048 uit. Iets later in het jaar brengt Intel de volgende microcontroller uit: i8051. Een goede set randapparatuur, een flexibele keuze uit extern of intern programmageheugen en een betaalbare prijs zorgden ervoor dat deze microcontroller een succes werd in de markt. Vanuit het oogpunt van technologie was de i8051-microcontroller voor zijn tijd een zeer complex product - 128 duizend transistors werden in het kristal gebruikt, wat 4 keer hoger was dan het aantal transistors in de 16-bits i8086-microprocessor. er zijn meer dan 200 modificaties van microcontrollers die compatibel zijn met de i8051, geproduceerd door twee dozijn bedrijven, en een groot aantal microcontrollers van andere typen. Populair onder ontwikkelaars zijn 8-bit PIC-microcontrollers van Microchip Technology en AVR van Atmel, zestien-bit MSP430 van TI, evenals ARM, waarvan de architectuur is ontwikkeld door ARM en in licentie gegeven aan andere bedrijven voor hun productie, processors - microcontrollers. Bij het ontwerpen van microcontrollers moet je een balans vinden tussen grootte en kosten enerzijds en flexibiliteit en prestaties anderzijds. Voor verschillende toepassingen kan de optimale verhouding van deze en andere parameters sterk variëren. Daarom zijn er een groot aantal soorten microcontrollers die verschillen in de architectuur van de processormodule, de grootte en het type ingebouwd geheugen, de set randapparatuur, het type behuizing, enz.

1. Algemeen deel

1.1 Classificatie en structuur van microcontrollers Er worden momenteel een aantal typen MK geproduceerd. Al deze apparaten kunnen worden onderverdeeld in drie hoofdklassen: 8-bits MK voor embedded toepassingen; 16- en 32-bits MK; digitale signaalprocessors (DSP). De meest voorkomende vertegenwoordiger van de MK-familie zijn 8-bits apparaten die veel worden gebruikt in industrie, huishoudelijke en computerapparatuur. In hun ontwikkeling zijn ze van de eenvoudigste apparaten met relatief onderontwikkelde randapparatuur gegaan naar moderne multifunctionele controllers die de implementatie van complexe besturingsalgoritmen in realtime bieden. De reden voor de levensvatbaarheid van 8-bits microcontrollers is hun gebruik om echte objecten te besturen, die voornamelijk algoritmen gebruiken met een overwicht van logische bewerkingen, waarvan de verwerkingssnelheid praktisch niet afhankelijk is van de processorcapaciteit bekende bedrijven zoals Motorola , Microchip, Intel, Zilog, Atmel en vele anderen. Moderne 8-bits microcontrollers hebben in de regel een aantal onderscheidende kenmerken. We noemen de belangrijkste: modulaire organisatie, waarbij een reeks (lijn) microcontrollers is ontworpen op basis van één processorkern (centrale processor), verschillend in de hoeveelheid en type programmageheugen, gegevensgeheugengrootte, set perifere modules , synchronisatiefrequentie; het gebruik van een gesloten microcontroller-architectuur, die wordt gekenmerkt door de afwezigheid van adreslijnen en datasnelwegen op de terminals van de MK-behuizing. De MC is dus een compleet gegevensverwerkingssysteem, dat naar verwachting niet zal worden uitgebreid met parallelle adres- en gegevenssnelwegen; het gebruik van typische functionele randmodules (timers, gebeurtenisprocessors, seriële interfacecontrollers, analoog-naar-digitaalomzetters, enz. .) verschillen in de werkingsalgoritmen in MC's van verschillende fabrikanten; uitbreiding van het aantal bedrijfsmodi van perifere modules die zijn ingesteld tijdens de initialisatie van de registers van speciale functies van de MC. Met het modulaire constructieprincipe kunnen alle MC's van één familie bevatten een processorkern die hetzelfde is voor alle MC's van deze familie, en een variabel functioneel blok, dat MK van verschillende modellen onderscheidt. De processorkern omvat: de centrale processor; interne controller snelweg (VKM) als onderdeel van banden van het adres, gegevens en controle; MK-synchronisatieschema; controleschema van de MK-bedieningsmodi, inclusief ondersteuning voor modi met laag stroomverbruik, eerste opstart (reset), enz. Het variabele functionele blok omvat geheugenmodules van verschillende soorten en maten, invoer-/uitvoerpoorten, klokgeneratormodules (G), timers. In relatief eenvoudige microcontrollers maakt de interruptafhandelingsmodule deel uit van de processorkern. In meer complexe MK is het een aparte module met geavanceerde mogelijkheden. De structuur van het variabele functionele blok kan ook aanvullende modules omvatten zoals spanningsvergelijkers, analoog-naar-digitaalomzetters (ADC) en andere. Elke module is ontworpen om als onderdeel van de MC te werken, rekening houdend met het VKM-protocol. Met deze aanpak kunt u een verscheidenheid aan MC-structuren binnen dezelfde familie creëren. 1.2 De structuur van de processorkern van de microcontroller: De belangrijkste kenmerken die de prestaties van de MC-processorkern bepalen, zijn: een reeks registers voor het opslaan van tussentijdse gegevens; een processorinstructiesysteem; methoden voor het adresseren van operanden in geheugenruimte; organisatie van opdrachtselectie- en uitvoeringsprocessen. bit MK implementeert een van twee principes voor het construeren van processors: processors met een CISC-architectuur die de zogenaamde complete instructieset implementeren (Complicated Instruction Set Computer); processors met een RISC-architectuur die een gereduceerde instructieset implementeren (Reduced Instruction Set Computer) CISC-processors voeren een grote set uit van commando's met geavanceerde adresseringsmogelijkheden, waardoor de ontwikkelaar de mogelijkheid krijgt om het meest geschikte commando te kiezen om de vereiste bewerking uit te voeren. Bij toepassing op 8-bits MCU's kan een CISC-processor instructie-indelingen van één byte, twee bytes en drie bytes (zelden vier bytes) hebben. De uitvoeringstijd van de instructie kan van 1 tot 12 cycli zijn. MC's met CISC-architectuur omvatten Intel MC's met de MCS-51-kern, die tegenwoordig worden ondersteund door een aantal fabrikanten, MC's van de HC05-, HC08- en HC11-families van Motorola, en een aantal anderen. reeks uitvoerbare instructies wordt tot een minimum beperkt. Om complexere bewerkingen uit te voeren, moet u opdrachten combineren. In dit geval hebben alle opdrachten een formaat met een vaste lengte (bijvoorbeeld 12, 14 of 16 bits), het ophalen van de opdracht uit het geheugen en de uitvoering ervan wordt uitgevoerd in één synchronisatiecyclus (cyclus). De instructieset van een RISC-processor gaat uit van de mogelijkheid van gelijk gebruik van alle processorregisters. Dit biedt extra flexibiliteit voor een aantal bewerkingen. RISC MCU's omvatten Atmel's AVR MCU's, Microchip's PIC16 en PIC17 MCU's en andere. Tegelijkertijd is de prestatiekwestie in de praktijk complexer en dubbelzinniger.Vanuit het oogpunt van het organiseren van de processen van het selecteren en uitvoeren van een instructie in moderne 8-bit MC's, wordt een van de twee reeds genoemde MPS-architecturen gebruikt : von Neumann (Princeton) of Harvard Neumann is een vereenvoudiging van het MPS-apparaat, omdat er maar één gedeeld geheugen wordt gebruikt. Bovendien maakte het gebruik van een enkel geheugengebied het mogelijk om bronnen snel te herverdelen tussen programma- en datagebieden, wat de flexibiliteit van de MPS vanuit het oogpunt van een softwareontwikkelaar aanzienlijk verhoogde. Door de stapel in het gedeelde geheugen te plaatsen, werd het gemakkelijker om toegang te krijgen tot de inhoud. Het is geen toeval dat de von Neumann-architectuur de belangrijkste architectuur werd van universele computers, inclusief personal computers. De Harvard-architectuur werd bijna niet gebruikt tot het einde van de jaren 70, toen de MK-fabrikanten beseften dat het bepaalde voordelen gaf aan ontwikkelaars van autonome besturing Het is een feit dat, te oordelen naar de ervaring met het gebruik van MPS om verschillende objecten te besturen, voor de implementatie van de meeste besturingsalgoritmen, voordelen van de Von Neumann-architectuur als flexibiliteit en universaliteit niet van groot belang zijn. Een analyse van echte besturingsprogramma's toonde aan dat de benodigde hoeveelheid MC-datageheugen die wordt gebruikt om tussenresultaten op te slaan, in de regel een orde van grootte kleiner is dan de benodigde hoeveelheid programmageheugen. Onder deze omstandigheden leidde het gebruik van een enkele adresruimte tot een toename in het formaat van opdrachten door het aantal bits voor adresseringsoperanden te vergroten. Het gebruik van een apart klein datageheugen hielp om de lengte van instructies te verminderen en het zoeken naar informatie in het datageheugen te versnellen.Bovendien biedt de Harvard-architectuur een potentieel hogere uitvoeringssnelheid van het programma in vergelijking met de von Neumann-architectuur vanwege de mogelijkheid parallelle operaties uit te voeren. Het ophalen van de volgende instructie kan gelijktijdig plaatsvinden met de uitvoering van de vorige, en het is niet nodig om de processor te stoppen terwijl de instructie wordt opgehaald. Deze methode voor het implementeren van bewerkingen maakt het mogelijk om de uitvoering van verschillende instructies voor hetzelfde aantal cycli te garanderen, wat het mogelijk maakt om de uitvoeringstijd van cycli en kritieke delen van het programma gemakkelijker te bepalen.De meeste fabrikanten van moderne 8-bit MCU's gebruik de Harvard-architectuur. Tegelijkertijd is de Harvard-architectuur niet flexibel genoeg om sommige softwareprocedures te implementeren. Daarom moet een vergelijking van microcontrollers gemaakt volgens verschillende architecturen worden uitgevoerd met betrekking tot een specifieke toepassing Momenteel zijn de meest prominente vertegenwoordigers van SISC- en RISC-microcontrollers, die respectievelijk een von Neumann- en Harvard-architecturen hebben, de i8051- en AVR-microcontrollers - Atmel-microcontrollers, die volgens een aantal kenmerken de zeer bekende PIC-microcontrollers overtroffen. Overweeg daarom de organisatie en opstelling van de bovenstaande vertegenwoordigers. 2. Speciaal onderdeel 2.1 CISC- en RISC-processorarchitectuur De twee belangrijkste architecturen voor instructieset die tegenwoordig door de computerindustrie worden gebruikt, zijn de CISC- en RISC-architecturen. De grondlegger van de CISC-architectuur - architectuur met een complete instructieset (CISC - Complete Instruction Set Computer) kan worden beschouwd als IBM met zijn basis IBM / 360-architectuur, waarvan de kern sinds 1964 wordt gebruikt en tot op de dag van vandaag bestaat, voor bijvoorbeeld in moderne mainframes, zoals IBM ES / 9000. De leider in de ontwikkeling van microprocessors met een volledige set commando's is Intel met X86- en Pentium-microprocessors. Dit is praktisch de standaard voor de microprocessormarkt. De eenvoud van de architectuur van de RISC-processor zorgt voor zijn compactheid, de praktische afwezigheid van problemen met de koeling van het kristal, die niet aanwezig is in de processors van Intel, die hardnekkig vasthoudt aan het ontwikkelingspad van de CISC-architectuur. De CISC-architectuurstrategie werd gevormd vanwege de technologische mogelijkheid om het "zwaartepunt" van gegevensverwerking over te brengen van het softwareniveau van het systeem naar het hardwareniveau, aangezien de belangrijkste manier om de efficiëntie van een CISC-computer te verhogen, eerst werd gezien allemaal, door compilers te vereenvoudigen en de uitvoerbare module te minimaliseren. Tegenwoordig bezetten CISC-processors bijna uitsluitend de pc-sector op de computermarkt, maar RISC-processors hebben geen gelijke in de sector van krachtige servers en werkstations. De belangrijkste kenmerken van een RISC-architectuur met vergelijkbare kenmerken van een CISC-architectuur worden als volgt weergegeven (tabel 1): Tabel 1. Belangrijkste kenmerken van de architectuur

Een van de belangrijke voordelen van de RISC-architectuur is de hoge snelheid van rekenkundige berekeningen. RISC-processors waren de eersten die de lat van de meest gebruikte IEEE 754-standaard bereikten, die een 32-bits formaat vaststelt voor het weergeven van vaste-kommagetallen en een 64-bits "volledige precisie" -formaat voor drijvende-kommagetallen. De hoge snelheid van het uitvoeren van rekenkundige bewerkingen, gecombineerd met de hoge nauwkeurigheid van berekeningen, geeft RISC-processors onvoorwaardelijk leiderschap op het gebied van snelheid in vergelijking met CISC-processors.

Een ander kenmerk van RISC-processors is een set tools die de non-stop werking van rekenkundige eenheden garanderen: een dynamischme, een groot aantal operationele registers en een ingebouwd cachegeheugen met meerdere niveaus.

De organisatie van de registerstructuur is het belangrijkste voordeel en het grootste probleem van RISC. Vrijwel elke implementatie van de RISC-architectuur maakt gebruik van verwerkingsbewerkingen op drie plaatsen, waarbij het resultaat en twee operanden een onafhankelijke adressering hebben - R1: = R2, R3. Hierdoor kunt u zonder noemenswaardige tijdsinvestering operanden selecteren uit adresseerbare operationele registers en het resultaat van de bewerking naar het register schrijven. Bovendien geven ternaire operaties de compiler meer flexibiliteit dan typische CISC 2-plaats register-naar-geheugen operaties. Gecombineerd met snelle rekenkunde, worden register-naar-register RISC-bewerkingen een zeer krachtige manier om de processorprestaties te verbeteren.

Tegelijkertijd is het vertrouwen op registers de achilleshiel van de RISC-architectuur. Het probleem is dat tijdens de uitvoering van een taak het RISC-systeem herhaaldelijk wordt gedwongen om de inhoud van de processorregisters bij te werken, en wel in de kortst mogelijke tijd om geen lange inactiviteit van de rekeneenheid te veroorzaken. Voor CISC-systemen bestaat dit probleem niet, aangezien de wijziging van registers kan optreden tijdens het verwerken van opdrachten van het "geheugen-naar-geheugen"-formaat.

Er zijn twee benaderingen om het probleem van het wijzigen van registers in de RISC-architectuur op te lossen: een hardware-benadering, voorgesteld in de RISC-1- en RISC-2-projecten, en een software-benadering, ontwikkeld door specialisten van IBM en Stanford University. Het fundamentele verschil tussen beide is dat de hardware-oplossing gebaseerd is op de wens om de procedureaanroeptijd te verminderen door extra processorhardware te installeren, terwijl de softwareoplossing gebaseerd is op de mogelijkheden van de compiler en zuiniger is in termen van processorhardware.

2.2 RISC-architectuur. In de jaren 70 van de 20e eeuw kwamen wetenschappers op het idee, destijds revolutionair, om een ​​microprocessor te creëren die slechts het minimaal mogelijke aantal commando's "begrijpt", programmeurs die in de jaren 70 in de VS en Engeland werden uitgevoerd. Hun directe resultaat is de bekende "80/20-regel": 80% van de code van een typisch applicatieprogramma gebruikt slechts 20% van de eenvoudigste machine-instructies uit de gehele beschikbare set. De eerste "echte" RISC-processor met 31 instructies is gemaakt onder leiding van David Patterson van de University of Berkeley, gevolgd door een processor met een set van 39 instructies. Ze omvatten 20-50 duizend transistors. De vruchten van Pattersons werk werden gebruikt door Sun Microsystems, dat eind jaren zeventig de SPARC-architectuur met 75 instructies ontwikkelde. In 1981 lanceerde Stanford University het MIPS-project om een ​​RISC-processor met 39 instructies te produceren. Als gevolg hiervan werd Mips Computer Corporation halverwege de jaren 80 opgericht en werd de volgende processor ontworpen met al 74 instructies. Volgens het onafhankelijke bedrijf IDC nam de SPARC-architectuur in 1992 56% van de markt in beslag, gevolgd door MIPS - 15% en PA-RISC - 12,2% Rond dezelfde tijd ontwikkelde Intel de 80386-serie, de laatste "echte" CISC-processors in de IA-32-familie. De laatste keer dat de prestatieverbetering alleen werd bereikt door de complexiteit van de processorarchitectuur te vergroten: deze ging van 16-bits naar 32-bits, extra hardwarecomponenten ondersteunden virtueel geheugen en er werden een aantal nieuwe instructies toegevoegd. processors: Verminderde instructieset (van 80 naar 150 instructies). De meeste instructies worden uitgevoerd in 1 cyclus. Een groot aantal algemene registers. De aanwezigheid van starre meertraps pijplijnen. Alle instructies hebben een eenvoudig formaat en weinig adresseringsmethoden RISC-processors van de derde generatie De grootste ontwikkelaars van RISC-processors zijn Sun Microsystems (SPARC - Ultra SPARC-architectuur), IBM (Power multi-chip processors, PowerPC single-chip - PowerPC 620), Digitale apparatuur (Alpha - Alpha 21164), Mips Technologies (sinds familie Rxx00 - R 10000), evenals Hewlett-Packard (architectuur PA-RISC - PA-8000) ingebouwde pijplijneenheden met drijvende-kommaberekening; hebben een cachegeheugen met meerdere niveaus. De meeste RISC-processors cachen vooraf gedecodeerde instructies; ze zijn vervaardigd met behulp van CMOS-technologie met 4 metallisatielagen. Voor gegevensverwerking worden een dynamisch algoritme voor het voorspellen van vertakkingen en een methode voor het opnieuw toewijzen van registers gebruikt, waardoor instructies buiten de volgorde kunnen worden uitgevoerd. Verbeterde prestaties van RISC-processors wordt bereikt door de klokfrequentie en complexiteit van het kristalcircuit te verhogen. Vertegenwoordigers van de eerste richting zijn DEC Alpha-processors, Hewlett-Packard-processors blijven de meest complexe.De vermindering van de reeks machine-instructies in de RISC-architectuur maakte het mogelijk om een ​​groot aantal algemene registers op een rekenkernchip te plaatsen. Een toename van het aantal registers voor algemene doeleinden maakte het mogelijk om de toegang tot langzame RAM te minimaliseren, waardoor alleen de bewerkingen van het lezen van gegevens van RAM naar een register en het schrijven van gegevens van een register naar RAM om met RAM te werken, alle andere machine-instructies gebruiken registers voor algemene doeleinden als operanden De belangrijkste voordelen RISC-architectuur is de aanwezigheid van de volgende eigenschappen: Een groot aantal registers voor algemene doeleinden Een universeel formaat voor alle microbewerkingen Gelijke uitvoeringstijd voor alle machine-instructies Vrijwel alle gegevensoverdracht bewerkingen worden uitgevoerd langs de register-registerroute.transportbandprincipe, d.w.z. hardware-onderdelen worden gesynchroniseerd, waarbij rekening wordt gehouden met de sequentiële overdracht van besturing van het ene hardwareblok naar het andere.Hardwareblokken in de RISC-architectuur: Het instructielaadblok omvat de volgende componenten: een instructie-ophaaleenheid uit het instructiegeheugen, een instructieregister waarin de instructie wordt geplaatst nadat het is opgehaald, en instructiedecoderingseenheid. Deze fase wordt de instructie-ophaalfase genoemd.Registers voor algemene doeleinden vormen samen met registerbesturingseenheden de tweede fase van de pijplijn die verantwoordelijk is voor het lezen van instructie-operanden. De operanden kunnen worden opgeslagen in de instructie zelf of in een van de registers voor algemene doeleinden. Deze fase wordt de operand fetch-fase genoemd.De rekenkundige logische eenheid en, indien geïmplementeerd in deze architectuur, de accumulator, samen met de besturingslogica, die op basis van de inhoud van het instructieregister bepaalt welk type micro-op moet worden uitgevoerd. Naast het register van instructies kan de gegevensbron een programmateller zijn bij het uitvoeren van micro-operaties van een voorwaardelijke of onvoorwaardelijke sprong. Deze fase wordt de uitvoeringsfase van de pijplijn genoemd.Een reeks registers voor algemene doeleinden, schrijflogica en soms RAM vormen de fase voor gegevensopslag. In dit stadium wordt het resultaat van het uitvoeren van instructies naar algemene registers of naar het hoofdgeheugen geschreven.Tegelijkertijd, tegen de tijd dat de RISC-architectuur werd ontwikkeld, werd de Intel x86-architectuur, gebaseerd op de CISC-architectuur, de de facto industriestandaard voor microprocessors. De aanwezigheid van een groot aantal programma's geschreven voor de Intel x86-architectuur maakte een massale overgang van computers naar de RISC-architectuur onmogelijk. Om deze reden waren microcontrollers het belangrijkste gebruiksgebied van de RISC-architectuur, omdat ze niet gebonden waren aan bestaande software. Bovendien begonnen sommige computerfabrikanten, onder leiding van IBM, ook computers te produceren die gebouwd waren op de RISC-architectuur, maar de incompatibiliteit van de software tussen Intel x86 en de RISC-architectuur beperkte grotendeels de distributie van laatstgenoemde. RISC-architectuur was zo belangrijk dat ingenieurs een manier hebben gevonden om naar RISC-computers te migreren zonder bestaande software te verlaten. De kernen van de meeste moderne microprocessors die de Intel x86-architectuur ondersteunen, zijn gemaakt volgens de RISC-architectuur met ondersteuning voor multiscalaire pijplijnverwerking. De microprocessor krijgt een instructie in het Intel x86-formaat als invoer en wij vervangen deze door meerdere (maximaal 4) RISC-instructies. Zo worden de kernen van de meeste moderne microprocessors, te beginnen met de Intel 486DX, gemaakt volgens de RISC-architectuur met ondersteuning voor een externe Intel x86-interface. Bovendien wordt de overgrote meerderheid van microcontrollers, evenals sommige microprocessors, geproduceerd volgens de RISC-architectuur.Een moderne RISC-processor gebruikt minstens 32 registers, vaak meer dan 100, terwijl klassieke computers gewoonlijk 8-16 registers voor algemeen gebruik hebben. . Als gevolg hiervan heeft de processor 20% -30% minder kans om toegang te krijgen tot coöperatief geheugen, wat ook de snelheid van gegevensverwerking verhoogde. Bovendien maakt de aanwezigheid van een groot aantal registers het voor de compiler gemakkelijker om registers voor variabelen toe te wijzen. De topologie van de processor, uitgevoerd in de vorm van een enkele geïntegreerde schakeling, werd vereenvoudigd, de ontwikkelingstijd werd verminderd, hij werd goedkoper.Na de komst van RISC-processors werden traditionele processors aangeduid als CISC - dat wil zeggen, met een complete instructieset (Complete Instructie Set Computer). Momenteel worden RISC-processors veel gebruikt. Moderne RISC-processors worden gekenmerkt door het volgende: een vereenvoudigde instructieset; instructies met een vaste lengte en een vast formaat worden gebruikt; eenvoudige adresseringsmethoden, die het mogelijk maken om de logica voor het decoderen van instructies te vereenvoudigen; de meeste instructies worden uitgevoerd in één processorcyclus; microprogramma implementatie, er zijn geen macro's die de structuur van de processor compliceren en de snelheid verminderen; interactie met RAM is beperkt tot gegevensoverdracht; voor de verwerking worden in de regel drie-adresopdrachten gebruikt, die, naast het vereenvoudigen van de ontsleuteling, maakt het mogelijk om een ​​groter aantal variabelen in registers op te slaan zonder dat ze daarna opnieuw worden geladen; er is een opdrachtpijplijn gecreëerd waardoor u er meerdere tegelijk kunt verwerken; de aanwezigheid van een groot aantal registers; er wordt gebruik gemaakt van snel geheugen. RISC-processors, is de verwerking van een machine-instructie verdeeld in verschillende fasen, elk: De tweede fase wordt bediend door afzonderlijke hardware en de gegevensoverdracht wordt georganiseerd van de ene fase naar de volgende. De productiviteit neemt toe met dit alles vanwege het feit dat verschillende commando's tegelijkertijd worden uitgevoerd in verschillende stadia van de pijplijn. De uitvoering van een typische instructie kan worden onderverdeeld in de volgende fasen: programmateller, de opdracht wordt uit het geheugen opgehaald; 2) decodering van de ID-opdracht - de betekenis ervan achterhalen, operanden uit de registers ophalen; 3) de EX-bewerking uitvoeren, indien nodig, toegang tot het geheugen - berekenen het fysieke adres; 4) toegang tot het ME-geheugen; 5) het opslaan van het resultaat WB In processors met een RISC-architectuur is de reeks uitvoerbare instructies tot een minimum beperkt. Om complexere bewerkingen uit te voeren, moet u opdrachten combineren. In dit geval hebben alle opdrachten een formaat met een vaste lengte (bijvoorbeeld 12, 14 of 16 bits), het ophalen van de opdracht uit het geheugen en de uitvoering ervan wordt uitgevoerd in één synchronisatiecyclus (cyclus). De instructieset van een RISC-processor gaat uit van de mogelijkheid van gelijk gebruik van alle processorregisters. Dit biedt extra flexibiliteit voor een aantal bewerkingen. RISC MCU's omvatten Atmel's AVR MCU's, Microchip's PIC16 en PIC17 MCU's en andere. Tegelijkertijd is de prestatiekwestie in de praktijk complexer en dubbelzinniger. implementatie van de meeste besturingsalgoritmen. Een analyse van echte besturingsprogramma's toonde aan dat de benodigde hoeveelheid MC-datageheugen voor het opslaan van tussenresultaten in de regel een orde van grootte kleiner is dan de benodigde hoeveelheid programmageheugen. Onder deze omstandigheden leidde het gebruik van een enkele adresruimte tot een toename van het instructieformaat door het aantal bits voor adresseringsoperanden te vergroten. Het gebruik van een apart klein datageheugen hielp om de lengte van instructies te verminderen en het zoeken naar informatie in het datageheugen te versnellen.Bovendien biedt de Harvard-architectuur een potentieel hogere uitvoeringssnelheid van het programma in vergelijking met de von Neumann-architectuur vanwege de mogelijkheid parallelle operaties uit te voeren. Het ophalen van de volgende instructie kan gelijktijdig plaatsvinden met de uitvoering van de vorige, en het is niet nodig om de processor te stoppen terwijl de instructie wordt opgehaald. Deze methode voor het implementeren van bewerkingen maakt het mogelijk om de uitvoering van verschillende instructies voor hetzelfde aantal cycli te garanderen, wat het mogelijk maakt om de uitvoeringstijd van cycli en kritieke delen van het programma gemakkelijker te bepalen.De meeste fabrikanten van moderne 8-bit MCU's gebruik de Harvard-architectuur. Tegelijkertijd is de Harvard-architectuur niet flexibel genoeg om sommige softwareprocedures te implementeren. Daarom moet een vergelijking van microcontrollers op basis van verschillende architecturen worden uitgevoerd met betrekking tot een specifieke toepassing. 2.3 Microcontroller met RISC-architectuur PIC16C71 behoort tot de familie van CMOS-microcontrollers. Het onderscheidt zich doordat het een interne 1K x 14 bit EPROM voor programma's, 8-bit data en een 64-byte ingebouwde analoog-naar-digitaal converter heeft. Ze worden gekenmerkt door lage kosten en hoge prestaties.Gebruikers die bekend zijn met de PIC16C5X-familie kunnen een gedetailleerde lijst van verschillen zien tussen de nieuwe en eerder geproduceerde controllers.Alle commando's bestaan ​​uit één woord (14 bits breed) en worden in één cyclus uitgevoerd (200 ns bij 20 MHz), behalve voor commando-overgangen die plaatsvinden in twee cycli (400 ns) De PIC16C71 heeft een vier-source interrupt en een hardware-stack met acht niveaus, bidirectionele I/O-lijnen en een acht-bits ADC. De hoge belastingscapaciteit (25 mA max. stroom in, 20 mA max. stroom uit) van de I/O-lijnen vereenvoudigt externe drivers en verlaagt zo de totale kosten van het systeem. Gemiddelde conversietijd van 30 µs inclusief bemonsteringstijd De PIC16C71-serie is geschikt voor een breed scala aan toepassingen, van snelle besturingscircuits voor auto's en elektrische motoren tot kosteneffectieve zendontvangers op afstand, indicatie-instrumenten en communicatieprocessors. Door de aanwezigheid van ROM kunt u de parameters in applicatieprogramma's aanpassen (zendercodes, motorsnelheden, ontvangerfrequenties, enz.). Kleine verpakkingsgroottes, zowel voor conventionele als opbouwmontage, maken deze serie microcontrollers geschikt voor draagbare toepassingen. , snelheid , gebruiksgemak en I/O-flexibiliteit maken de PIC16C71 aantrekkelijk, zelfs in gebieden waar microcontrollers nog niet eerder zijn gebruikt. Bijvoorbeeld timers, vervanging van harde logica in grote systemen, coprocessors.De microcontroller heeft: slechts 35 eenvoudige commando's; alle commando's worden uitgevoerd in één cyclus (200ns), behalve de overgangscommando's - 2 cycli; werkfrequentie 0 Hz ... 20 MHz (min. opdrachtcyclus van 200 ns) 14-bits opdrachten; 8-bits gegevens; 36 x 8 registers voor algemeen gebruik; 15 speciale hardware SFR-registers; hardware-stack met acht niveaus; directe, indirecte en relatieve adressering van gegevens en opdrachten; vier onderbrekingsbronnen: externe ingang INT timer overloop RTCC onderbreking bij Voltooiing van A/D-conversie Onderbreekt wanneer signalen veranderen op poort B-lijnen. Randapparatuur, input en output van de microcontroller heeft: 13 individueel configureerbare I/O-lijnen; Sink/sink-stroom om de LED's aan te sturen. max. inkomende stroom - 25 mA. 20 mA max uitgangsstroom 8-bit RTCC timer/teller met 8-bit programmeerbare prescaler; ADC-module: 4 gemultiplexte analoge ingangen aangesloten op één analoog-digitaalomzetter Sample/hold-schakeling 20 µs conversietijd per kanaal Omvormer - 8 bits, met +- tolerantie 1 LSB-ingang voor externe referentiespanning Vref (Vref<= Vdd)диапазон входных аналоговых сигналов от Vss до Vrefавтоматический сброс при включении;таймер включения при сбросе;таймер запуска генератора;Watchdog таймер WDT с собственным встроенным генератором, обеспечивающимповышенную надежность;EPROM бит секретности для защиты кода;экономичный режим SLEEP;выбираемые пользователем биты для установки режима возбуждения встроенного генератора:RC генератор RCобычный кварцевый резонатор XTвысокочастотный кварцевый резонатор HSэкономичный низкочастотный кристалл LPвстроенное устройство самопрограммирования EPROM памяти программ,используются только две ножки.Обозначения ножек и их функциональное назначение:RA4/RTCC - Вход через триггерШмидта. Ножка порта ввода/вывода соткрытым стоком или вход частоты длтаймера/счетчика RTCC.RA0/AIN0 - Двунаправленная линия ввода/вывода.Аналоговый вход канала 0.Как цифровой вход имеет уровни ТТЛ.RA1/AIN1 - Двунаправленная линия ввода/вывода.Аналоговый вход канала 1.Как цифровой вход имеет уровни ТТЛ.RA2/AIN2 - Двунаправленная линия ввода/вывода.Аналоговый вход канала 2.Как цифровой вход имеет уровни ТТЛ.RA3/AIN3/Vref - Двунаправленная линия ввода/вывода.RB0/INT - Двунаправленная линия портавывода или внешний вход прерывания.RB1 - RB5 - Двунаправленные линии ввода/вывода.RB6 - Двунаправленные линии ввода/вывода.RB7 - Двунаправленные линии ввода/вывода./MCLR/Vpp - Низкий уровень на этомвходе генерирует сигнал сбросадля контроллера. Активный низкий.Вход через триггер Шмидта.OSC1 - Для подключения кварца, RC или вход внешней тактовой частоты.OSC2 - Генератор, выход тактовойCLKOUT - частоты в режиме RC генератора, в остальных случаях - для подкл. кварцаVdd -Напряжение питания.Vss -Общий (земля).Conclusie In deze cursus werken microcontrollers met RISC- en CISC-architectuur. RISC-architectuur werd dieper en nauwkeuriger bekeken. De classificatie, structuur van de microcontroller, de structuur van de processorkern van de microcontroller, de belangrijkste kenmerken van de RISC-architectuur worden genoteerd.Tot op heden zijn er meer dan 200 modificaties van microcontrollers die compatibel zijn met de i8051, geproduceerd door twee dozijn bedrijven, en een groot aantal microcontrollers van andere typen. Populair onder ontwikkelaars zijn 8-bit PIC-microcontrollers van Microchip Technology en AVR van Atmel, zestien-bit MSP430 van TI, evenals ARM, waarvan de architectuur is ontwikkeld door ARM en in licentie gegeven aan andere bedrijven voor hun productie, processors - microcontrollers. Bij het ontwerpen van microcontrollers moet je een balans vinden tussen grootte en kosten enerzijds en flexibiliteit en prestaties anderzijds. Voor verschillende toepassingen kan de optimale verhouding van deze en andere parameters sterk variëren. Daarom zijn er een groot aantal soorten microcontrollers die verschillen in de architectuur van de processormodule, de grootte en het type ingebouwd geheugen, de set randapparatuur, het type behuizing, enz. Lijst met gebruikte literatuur

1. "?????? ????????????????? ???????", ?????? ?.?. ??????? ? ?.?. ????????????.

2. "??????????? ?????????????? ??????". ?????? "????? ? ?????" 1990 ?. ????? ?.?. ???????.

3. "??????????-?????????????? ?????? ? ???????". ?????? "????? ? ?????" 1991 ?. ?????? ?.?. ?????.