P ro g ra mm Da te n b u s Ad re s s b u s S p e ic h e r P ro g ra … · 2019. 1. 9. ·...

22
MCT 10.01.2019 1 / 22 MCT_Vorlesung_09_WS2018.doc Speicherarchitekturen Grundsätzliche Möglichkeiten: Prozessor Programm und Daten Speicher Prozessor Programm Speicher Datenbus Adressbus "Von-Neumann-Architektur" Daten Speicher "Harvard-Architektur" Oft genügt ein gemeinsamer Programm und Datenspeicher Signalprozessoren: meist in Harvard-Architektur schneller

Transcript of P ro g ra mm Da te n b u s Ad re s s b u s S p e ic h e r P ro g ra … · 2019. 1. 9. ·...

  • MCT 10.01.2019

    1 / 22 MCT_Vorlesung_09_WS2018.doc

    Speicherarchitekturen

    Grundsätzliche Möglichkeiten:

    Prozessor

    ProgrammundDatenSpeicher

    Prozessor

    ProgrammSpeicher

    Datenbus Adressbus

    "Von-Neumann-Architektur"

    DatenSpeicher

    "Harvard-Architektur"

    Oft genügt ein gemeinsamer Programm und Datenspeicher

    Signalprozessoren: meist in Harvard-Architektur schneller

  • MCT 10.01.2019

    2 / 22 MCT_Vorlesung_09_WS2018.doc

    Anschaltung von externem Speicher

    Für 64 kByte Speicher: 16 Adreßleitungen und 8 Datenleitungen nötig

    Adreß- und Datenleitungen:

    Port 0: abwechselnd Adreßleitung 0-7 und Datenleitung 0-7 = Zeitmultiplex

    durch Steuerleitung ALE (adress latch enable) Unterscheidung möglich

    Port 2: Adreßleitung 8-15

    Steuerleitungen:

    PSEN (program store enable) = Lesezugriff auf ROM

    RD (read) = Lesezugriff auf RAM

    WR (write) = Schreibzugriff auf RAM

    Frage: Warum gibt es keinen

    Schreibzugriff auf das ROM?

  • MCT 10.01.2019

    3 / 22 MCT_Vorlesung_09_WS2018.doc

    Schaltungsaufbau

    P0.0 - P0.7

    ALE

    PSEN

    P2.0 - P2.7

    WR

    RD

    Latch

    ROM RAM

    OE WR RD80535

    Daten- und Adressbus

    Adressbus

    8 Bit

    8 Bit

    8 Bit

    16 Bit

    AT89C5131

  • MCT 10.01.2019

    4 / 22 MCT_Vorlesung_09_WS2018.doc

    Zugriff auf externen Programmspeicher

    internerTakt

    ALE

    PSEN

    Port 0

    Port 2

    1 us

    A8 - A15

    A0 - A7

    DatenAdressen

    Adressen

    D0-7

    Adressen

    A8 - A15

    Adressen

    A0 - A7

    Daten

    D0-7

    µs Zykluszeit 1µs bei

    12 MHz Quarz

    Praktikum: 750ns

  • MCT 10.01.2019

    5 / 22 MCT_Vorlesung_09_WS2018.doc

    Ablauf des Speicherzugriffs

    1.) Controller gibt Adressinformation an Port 0 und Port 2 aus

    2.) Fallende Flanke von ALE: Adressen 0-7 werden von Adresslatch gespeichert

    3.) Sobald PSEN auf 0 geht: ROM gibt Inhalt der adressierten Speicherstelle aus

    4.) Nach 2 Taktperioden werden die Daten vom Controller übernommen

    pro Maschinenzyklus (1us) werden 2 Byte gelesen

    Port 0 schaltet um zwischen Ausgeben (Adressen) und Einlesen (Daten)

    Adressen 0-7 werden in Adresslatch zwischengespeichert

    ROM Speicher muss Daten schnell genug ausgeben

    Controller kann nicht warten (keine „wait-states“)

  • MCT 10.01.2019

    6 / 22 MCT_Vorlesung_09_WS2018.doc

    Adresslatch

    Beispiel: 74LS373 = Transparenter 8 Bit Registerbaustein

    LS373

    D1

    D8

    Q1

    Q8

    Enable

    Adress-undDatenbus

    ALE

    AdressbusA0 - A7

    wenn ALE = 5V (high): Ausgang = Eingang (Q1 = D1, ...) = transparent

    ALE = 0V (low) Ausgangszustand wird „eingefroren“

  • MCT 10.01.2019

    7 / 22 MCT_Vorlesung_09_WS2018.doc

    Zeitbedingungen für Speicherbausteine

    1.) Lesezugriff auf Programmspeicher

    Zeit: Adressen gültig bis Daten einlesen = 302 ns (aus Datenblatt)

    PSEN low bis Daten einlesen = 150 ns

    ROM muß diese Bedingung einhalten

    beachten: Adresslatch verzögert die Adressleitungen um einige ns

    2.) Lesezugriff auf Datenspeicher

    Zeit: Adressen gültig bis Daten eingelesen = 585 ns

    RD low bis Daten einlesen = 252 ns

    unterschiedliche Zeitbedingungen für RAM und ROM

  • MCT 10.01.2019

    8 / 22 MCT_Vorlesung_09_WS2018.doc

    Symbolische Darstellung von Digitalsignalen

    Signalform Eingang Ausgang

    Muß stabil sein Muß stabil sein

    Kann von "1" nach

    "0"w echselnKann von "1" nach

    "0"w echseln

    Kann von "0" nach

    "1"w echselnKann von "0" nach

    "1"w echseln

    nicht beachtenJeder Wechsel erlaubt

    WechseltZustand nicht bekannt

    macht keinenSinn

    Mittellinie bedeutet " hochohmiger Zustand"

    ( J. Walter, Mikrocomputertechnik mit der 8051-Controller-Familie)

  • MCT 10.01.2019

    9 / 22 MCT_Vorlesung_09_WS2018.doc

    Timing: Lesezugriff Programmspeicher

    ALE

    PSEN

    Port 0

    Port 2

    A0-A7

    A8-A15

    Instr. N A0-A7

    tLHLL

    tAVLL tPLPH

    tAZPL

    tLLAX

    tLLPL

    tPLIV

    tAVIV

    tPXIX

    tPXIZ

    tPXAV

    tLLIV

    J. Walter, Mikrocomputertechnik mit der 8051-Controller-Familie)

  • MCT 10.01.2019

    10 / 22 MCT_Vorlesung_09_WS2018.doc

    Zusammenstellung: Datentypen des C-51-Compilers

    Datentyp Größe Verwendung

    bit 1 Bit für Bit-Variablen

    sbit 1 Bit für Bits in "special function registers", z.B. Port-Bits

    (signed) char 8 Bit mit Vorzeichen (Wertebereich -128 bis +127)

    unsigned char 8 Bit ohne Vorzeichen (Wertebereich 0 bis 255)

    sfr 8 Bit 1-Byte-Variable in einem "special function register"

    (signed) int 16 Bit mit Vorzeichen (ca. -32000 bis ca. +32000)

    unsigned int 16 Bit ohne Vorzeichen (0 bis ca. 64000)

    sfr 16 16 Bit 2-Byte-Variable im "special function register"-Bereich

    (signed) long 32 Bit mit Vorzeichen (ca. –2 · 10+9 bis 2 · 10+9)

    unsigned long 32 Bit ohne Vorzeichen (0 bis ca. 4 10+9)

    float 32 Bit ca. 1,2 · 10-38 bis 3,4 · 10+38

    pointer 8 - 24 Bit für Addressen von Variablen

  • MCT 10.01.2019

    11 / 22 MCT_Vorlesung_09_WS2018.doc

    Auszug aus der Header-Datei reg5131.h

    /*--------------------------------------------------------------

    REG5131.H

    ---------------------------------------------------------------*/

    ...

    /* BYTE Register */

    sfr P0 = 0x80;

    sfr P1 = 0x90;

    sfr P2 = 0xA0;

    sfr P3 = 0xB0;

    sfr P4 = 0xE8;

    ...

    /* BIT Register */

    ...

    sbit TF1 = 0x8F;

    sbit TR1 = 0x8E;

    sbit TF0 = 0x8D;

    sbit TR0 = 0x8C;

    ...

    damit stehen diese Variablen für die C-Programmierung zur Verfügung

    Bekanntgabe der Adressen der

    Special Function Register

    Bekanntgabe der Adressen der

    bitadressierbaren Bits

    in den Special Function Registern

  • MCT 10.01.2019

    12 / 22 MCT_Vorlesung_09_WS2018.doc

    Wiederholung: Timer-Programmierung in C

    Aufgabe: LED 1 mit 5 Hz (d.h. Puls-Dauer TP = 100ms) blinken lassen

    #include

    sbit LED1 = P1^0; /* Bit 0 von Port P1 */

    #define TH0_Startwert 0xfc /* 65536 - 1000 ( = 1 ms) */

    #define TL0_Startwert 0x18 /* ergibt fc18 als Startwert */

    /* Hauptprogramm */

    void main(void)

    {

    char zaehler;

    TMOD = 0x01; /* Timer 0 als 16 Bit Timer initialisieren */ TH0 = TH0_Startwert;

    TL0 = TL0_Startwert;

    t

    100 ms

    Algorithmus: programmiere einen 1ms Timer, zähle die

    Timerdurchläufe, bei Durchlauf 100: LED-Zustand

    invertieren und Zähler auf 0 setzen

    P1.0

  • MCT 10.01.2019

    13 / 22 MCT_Vorlesung_09_WS2018.doc

    zaehler = 0; /* Zähler für die Schleifendurchläufe */

    TF0 = 0; /* Timer 0 Überlauf-Flag löschen */

    TR0 = 1; /* Timer 0 Run-Bit setzen (Timer starten) */

    while (1) /* Endlosschleife */ {

    if (TF0 == 1) /* d.h.: Timer abgelaufen */ {

    TF0 = 0;

    TH0 = TH0_Startwert;

    TL0 = TL0_Startwert;

    zaehler++;

    if (zaehler > 100) /* 100 ms */ {

    LED1 = ~LED1; /* LED-Bit invertieren */ zaehler = 0; }

    }

    }

    }

  • MCT 10.01.2019

    14 / 22 MCT_Vorlesung_09_WS2018.doc

    Übung: Dimmer

    Aufgabe 1: Schreiben Sie ein Programm in C, das die LED mit einer Frequenz von 1 Hz ein- und

    ausschaltet, mit einem Tastverhältnis von 1:9 (10% eingeschaltet, 90% ausgeschaltet)

    Lösungshinweis: Bei Zählerstand 100 ausschalten, bei Zählerstand 1000 ausschalten

    Aufgabe 2: Erhöhen Sie die Umschaltfrequenz so weit, dass das Auge den Umschaltvorgang nicht

    mehr erkennen kann (Hinweis: mindestens 25 Hz).

    Aufgabe 3: Programmieren Sie einen „Dimmer“, d.h. eine Möglichkeit, die LED-Helligkeit im

    Bereich von 0 bis 100% einzustellen. Sie könnten die Helligkeit per Tastenabfrage am

    Experimentierboard einstellen oder per Serieller Schnittstelle übertragen.

    Zusatzaufgabe: Stellen Sie die Helligkeit als Prozentangabe auf dem LCD-Display dar.

    t

    100 ms

    900 ms

    P1.0

  • MCT 10.01.2019

    15 / 22 MCT_Vorlesung_09_WS2018.doc

    Taktversorgung des AT89C5131

    Ansteuerung durch Quarz

    Externes Taktsignal

    Quarz (12 MHz)

    22 pF

    22 pF

    XTAL1

    XTAL2

    80535

    XTAL1

    XTAL2

    80535+5V

    externesTaktsignal

    wichtig: kurze Verbindungsleitungen

    sinnvoll: Taktsignal durch vorgeschaltetes

    Gatter regenerieren

    Taktanschaltung für andere 8051-Varianten

    anders als beim AT89C5131 !

    27pF

    27pF

    Quarz (16MHz) AT89C5131 AT89C5131

  • MCT 10.01.2019

    16 / 22 MCT_Vorlesung_09_WS2018.doc

    Erzeugung des Reset-Signals

    Zwei Resetquellen: a) Einschalten der Versorgungsspannung

    b) Reset-Taste

    Reset-Eingang ist „aktiv-low“ 0 V, mindestens 2 s lang unter High-Pegel

    2,2 µF

    (intern)

  • MCT 10.01.2019

    17 / 22 MCT_Vorlesung_09_WS2018.doc

    Spannungsversorgung

    Beispiel:

    Spannungs-regler 7805+

    1uF

    +

    1uF 100nF

    Induktivität(Ferritperle)

    KerkoElko

    Eingang:8..12 V =

    Ausgang:

    5 V =

    Ferritperle: verhindert Rückwirkungen der Mikrocontrollerschaltung

    Versorgungsspannung

    +5V einige

    mV

    Schaltvorgang im 80535

    Elko (Elektrolytkondensator): schwächt größere, langsame Schwankungen ab.

    Kerko (Keramischer Kondensator): schwächt schnelle Spannungsschwankungen ab.

    Schaltvorgang im Mikrocontroller

  • MCT 10.01.2019

    18 / 22 MCT_Vorlesung_09_WS2018.doc

    Aufbau der I/O Ports

    Latch = "D-Flipflop"

    = Speicher für ein Port-Bit

    D = Daten-Eingang

    Q = Speicher-Ausgang

    C = Takt-Eingang (Clock)

    Zustand von D wird ge-

    speichert, wenn Taktsignal

    aktiviert C wird.

    Port-Latch speichert den Zustand des Port-Bits nach dem Schreiben

    gelesen wird entweder - Inhalt des Latch

    oder - Zustand des Port-Pin

    abhängig Flipflop-Zustand !

    C

    Q

    Q

    D

    Port-Latch

    Schreib-

    signal für

    das Latch

    Interne

    Busleitung

    Latch-Inhalt lesen

    Pin-Zustand lesen

    Ausgangs-

    treiber

  • MCT 10.01.2019

    19 / 22 MCT_Vorlesung_09_WS2018.doc

    Schematischer Aufbau von Port 1,3,4 und 5

    Prinzip: N-Kanal FET (Feldeffekt-Transistor) mit internem Pull-Up-Widerstand

    Schreiben: Datenbit = 0 Q-Ausgang ist 1 Transistor leitet Port-Pin = low

    Datenbit = 1 Q-Ausgang ist 0 Transistor sperrt Port-Pin = high

    Lesen: Transistor V1 muß sperren, sonst wird immer 0 gelesen

    C

    Q

    Q

    D

    Port-Latch

    Schreib-

    signal für

    das Latch

    Interne

    Busleitung

    Latch-Inhalt lesen

    Pin-Zustand lesen

    Port-

    pin

    UB (5 Volt)

    Interner

    Pull-up

    Widerstand

    Feldeffekt

    Transistor

    (FET)

  • MCT 10.01.2019

    20 / 22 MCT_Vorlesung_09_WS2018.doc

    Schematischer Aufbau von Port 2

    Prinzip: wie Port 1,3,4,5 aber zusätzlich Adreßausgabe (obere 8 Bit der Adresse)

    Umschalter: - legt entweder Adresse oder Port-Latch auf den Port-Pin

    - Zeitmultiplex: von der Ablaufsteuerung angesteuert (automatisch)

    C

    Q

    Q

    D

    Port-Latch

    Schreib-

    signal für

    das Latch

    Interne

    Busleitung

    Latch-Inhalt lesen

    Pin-Zustand lesen

    Port-

    pin

    UB (5 Volt)

    Umschalter

    Adress-Bit

    1 Inverter

  • MCT 10.01.2019

    21 / 22 MCT_Vorlesung_09_WS2018.doc

    Schematischer Aufbau von Port 0

    Prinzip: „Open-Drain“ Schaltung ( = Drain-Strom fließt nach außen)

    wegen zweitem Transistor: auch High-Pegel mit niedrigem Widerstand (hoher Strom)

    Zeitmultiplex: Untere 8 Bit der Adresse, Daten oder Zustand des Port-Latch

    wichtig: Bei Ausgabe von Latch-Zustand „1“: beide Transistoren sperren

    = Pegel am Pin ist undefiniert, muß durch externe Schaltung sichergestellt werden !

    C

    Q

    Q

    D

    Port-Latch

    Schreib-

    signal für

    das Latch

    Interne

    Busleitung

    Latch-Inhalt lesen

    Pin-Zustand lesen

    Port-

    pin

    UB (5 Volt)

    Umschalter

    Adress-Bit

    1

    Schalter

  • MCT 10.01.2019

    22 / 22 MCT_Vorlesung_09_WS2018.doc

    Grenzwerte der Strombelastung

    Port 1 - 5: Pull-Up Widerstand ca. 10 kOhm - 40 kOhm

    Grenzwert für Strom: IQH = - 80 A ( high-Zustand )

    IQL = 1,6 mA ( low-Zustand )

    Grenzwert für Spannung: UH = min 2,4 V ( high Zustand )

    UL = max 0,45 V ( low-Zustand )

    Port 0:

    Grenzwert für Strom: IQH = - 400 A ( high-Zustand )

    IQL = 3,2 mA ( low-Zustand )

    Beispiel: LED direkt an Port anschalten

    a) LED muß im low-Zustand des Ports leuchten (höherer Strom)

    b) Vorwiderstand muss so groß sein, daß IQL nicht überschritten wird