15
TECHNISCHE UNIVERSITÄT ILMENAU Fakultät für Elektrotechnik und Informationstechnik Fachgebiet Elektronische Schaltungen und Systeme Dipl.-Ing. Th. Rommel Programmierbare Logikbausteine Studiengang: Ingenieurinformatik Aufgabe 1 und ASIC’s & PLD-Design Studiengang: Elektrotechnik und Informationstechnik Studiengang: Medientechnologie Aufgabe 1 Aufgabe 2 - Praktikumsanleitung - Für Altera’s Design Software Quartus II Baustein FLEX10K Praktikumsort: H 1555 PLD-Praktikum.doc 22.03.2011 13:42:00

PLD-Praktikum FLEX10K QuartusII · 2011-03-22 · Praktikum bereits erfolgt) Auswahl und Zuweisung der ge-wünschten Logikfamilie bzw. des gewählten Bausteins für das Projekt Compilieren

  • Upload
    others

  • View
    10

  • Download
    0

Embed Size (px)

Citation preview

TECHNISCHE UNIVERSITÄT ILMENAU

Fakultät für Elektrotechnik und Informationstechnik Fachgebiet Elektronische Schaltungen und Systeme Dipl.-Ing. Th. Rommel

Programmierbare Logikbausteine

Studiengang: Ingenieurinformatik Aufgabe 1

und

ASIC’s & PLD-Design

Studiengang: Elektrotechnik und Informationstechnik Studiengang: Medientechnologie

Aufgabe 1 Aufgabe 2

- Praktikumsanleitung -

Für Altera’s Design Software Quartus II

Baustein FLEX10K

Praktikumsort: H 1555

PLD-Praktikum.doc 22.03.2011 13:42:00

Programmierbare Logikbausteine / ASIC‘ & PLD verantwortlicher Betreuer Dipl.-Ing. Th. Rommel, Tel. 1170 2

Praktikum „Programmierbare Logikbausteine “ Grundlagen Für das Praktikum wird eine Universalplatine von Altera und eine spezielle Platine (nur Auf-gabe 1) verwendet. Die Hardware ist also vollständig vorgefertigt und Änderungen an dieser sind dem Praktikumsverantwortlichen vorbehalten. Auf der Universalplatine befinden sich 2 PLD-Bausteine einmal ein FLEX 10K und zum anderen ein MAX 7000- Baustein. Der MAX 7000-Baustein ist en EPROM-basierender Schaltkreis, der die Referenzschaltung beinhaltet. Die Schaltung soll in einem FLEX 10K Baustein (EPF10K20RC240) realisiert werden. Der FLEX 10K Altera’s FLEX 10K Bausteine basieren auf rekonfigurierbaren CMOS SRAM Elementen. Die Flexible Logic Element MatriX ( FLEX ) Architektur beinhaltet alle grundsätzlichen Struktu-ren die notwendig sind, um Gate Array Megafunctions auszuführen. Mit bis zu 250.000 Gat-ter stellt die FLEX 10K Familie die Geschwindigkeit, Dichte und Möglichkeiten zur Verfü-gung, ganze Systeme, einschließlich 32-Bit Busse, in einem einzigen Baustein zu integrieren. FLEX 10K Bausteine sind konfigurierbar und 100% getestet. Demzufolge braucht der Ent-wickler keine Testvektoren zur Fehlerbestimmung zu generieren, sondern kann sich auf die Simulation und Designüberprüfung konzentrieren. Ebenfalls muss sich der Designer nicht um die verschiedenen Gate Array Designs kümmern, die FLEX 10K Bausteine können für die spezifischen Funktionen, die benötigt werden, `on board´ konfiguriert werden. hohe Dichte: - 10,000 bis 250,000 Gatter - bis zu 49,960 RAM bits; 2,048 bits pro embedded array block (EAB) System - MultiVoltTM I/O interface Unterstützung - 5.0 V Eingang in FLEX 10KA und 3.3 V Eingang in FLEX 10KB Bau-

steinen - geringer Leistungsverbrauch (weniger als 0.5 mA im Stand-By Modus

für die meisten Bausteine) Die genauen Spezifikationen entnehmen Sie bitte der Tabelle 1.

Tabelle 1

Feature EPF 10K10

EPF 10K20

EPF 10K30

EPF 10K40

EPF 10K50

typical gates (logic and RAM)

10.000 20.000 30.000 40.000 50.000

Usable gates 7.000 to 31.000

15.000 to 63.000

22.000 to 69.000

29.000 to 93.000

36.000 to 116.000

Logic elements 576 1.152 1.728 2.304 2.880 LABs 72 144 216 288 360 Total RAM bits 6.144 12.288 12.288 16.384 20.480 Maximum user I/O pins

134 189 246 189 310

Programmierbare Logikbausteine / ASIC‘ & PLD verantwortlicher Betreuer Dipl.-Ing. Th. Rommel, Tel. 1170 3

Funktion Jeder FLEX 10K Baustein enthält EA (embedded array) um Speicher- und spezielle Logik-funktionen auszuführen und LA (logic array) für allgemeine Logik. Die EA besteht aus einer Reihe von EAB’s (embedded array blocks). Beim Ausführen von Speicherfunktionen stellt jeder EAB 2,048 bits zur Verfügung, welche genutzt werden kön-nen, um RAM, ROM, dual-port RAM oder FIFO Funktionen zu realisieren. Bei Logikfunkti-onen kann jeder EAB 100 bis 600 Gatter für komplexe Logikfunktionen beitragen, wie Multi-plizierer, Microcontroller, State machines und DSP Funktionen. Die EAB’s können unabhän-gig benutzt werden, oder mehrere zum Ausführen größerer Funktionen kombiniert werden. Ein EAB ist ein flexibler Block von RAM mit Registern an den Ein- und Ausgängen und wird dazu benutzt, Gate Array Megafunctions auszuführen. Die EAB’s sind auch geeignet für Funktionen wie Multiplexer und Fehlerkorrekturschaltungen, da sie groß und flexibel sind. Ein LA besteht aus LAB’s (logic array blocks). Jeder LAB enthält acht LE’s (logic elements) und eine lokale Verbindung. Die LE’s bestehen aus LUT’s (look up tables), einem program-mierbaren FlipFlop und Signalpfaden für Hilfs- und Kaskadenfunktionen. Die acht LE’s kön-nen zum Erstellen von mittleren Logikblöcken, wie 8-Bit Zählern, Adressdecodern, State ma-chines, oder in Verbindung mit anderen LAB’s für größere Logikblocks eingesetzt werden. Jeder LAB stellt etwa 96 benutzbare Logikgatter dar. Eine Übersicht darüber stellt Bild 3 bis Bild 6 dar.

Bild 3: Device Block Diagramm

Programmierbare Logikbausteine / ASIC‘ & PLD verantwortlicher Betreuer Dipl.-Ing. Th. Rommel, Tel. 1170 4

Bild 4: Embedded Array Block

Bild 5: Logic Array Block

Programmierbare Logikbausteine / ASIC‘ & PLD verantwortlicher Betreuer Dipl.-Ing. Th. Rommel, Tel. 1170 5

Bild 6: Logic Element

Allgemeine Bedienungshinweise Die Praktikumsrechner sind mit dem Betriebssystem Windows 7 ausgestattet. Login Benutzername: prak_pld Kennwort: prak_pld Arbeitsverzeichnis: C:\PLD-Prak\GruppeXX Nur in diesem Verzeichnis werden Dateien gespeichert!

Programmierbare Logikbausteine / ASIC‘ & PLD verantwortlicher Betreuer Dipl.-Ing. Th. Rommel, Tel. 1170 6

Quartus Einführung Um die genannte Aufgabe zu lösen, soll hier die Design Software Quartus II (Web Edition) der Firma Altera verwendet werden. Dieses Programm stellt eine architekturunabhängige Entwicklungsumgebung zur Verfügung, die es erlaubt, jedes benötigte Design einzugeben, zu testen und zu programmieren. Ich mache darauf aufmerksam, dass die hier folgende Kurzan-leitung nur einen Leitfaden für die Handhabung darstellt. Design Flow:

Hierarchisches Design:

Der grundlegende Ablauf zur Erstellung eines neuen Projektes vom Konzept bis zur Fertigstellung kann in einfacher Weise wie folgt dargestellt werden : Erzeugen von einem oder mehreren

„Design Files“ mit Hilfe der Quar-tus II Editoren.

Erstellen eines Top-Level Design Files mit dem Projektnamen (im Praktikum bereits erfolgt)

Auswahl und Zuweisung der ge-wünschten Logikfamilie bzw. des gewählten Bausteins für das Projekt

Compilieren des Projektes mit dem Quartus II Compiler

Durchführung einer Simulation und Timing Analysis

Programmieren der angeschlosse-nen Bausteine mit dem erstellten Projekt

TOPDESIGN (.bdf)

SUBDESIGN Graphicfile(.bdf)

SUBDESIGN AHDL(.tdf)

SUBDESIGN Wavefile(.wdf)

SUBDESIGN Graphicfile(.bdf)

SUBDESIGN VHDL(.vhd)

SUBDESIGN AHDL(.tdf)

Programmierbare Logikbausteine / ASIC‘ & PLD verantwortlicher Betreuer Dipl.-Ing. Th. Rommel, Tel. 1170 7

Starten des Programms Starten Sie Quartus II (Web Edition) aus dem Menü Programme oder vom Desktop. Grundlagen Alle Tools zum Erstellen eines Logikdesigns sind im Programm enthalten. Quartus II enthält vielfältige Möglichkeiten um ein neues Design File einzugeben, z.B. als Block Dia-gram/Schematic File (Graphische Eingabe), als AHDL-, VHDL,- oder Verilog File (Text Edi-tor), als Tcl Script File oder auch als State Machine File (Graphische Eingabe von Zustands-automaten). Nach der Eingabe gibt es alle notwendigen und hilfreichen Tools um das Design zu Compilie-ren, zu Simulieren, zu Analysieren und auf die entsprechende Hardware zu programmieren. Screenshot Quartus II:

Hier ist eine fürs Praktikum sinnvolle Fenstereinteilung angezeigt: Arbeitsfläche: Eingabe und Ausgabe von Schematics, State Machines, Simulation usw. Project Navigator: erlaubt eine schnelle Navigation durch das hierarchische Design Status: zeigt Fortschritt des Designs Message: Alle notwendigen Informationen, Fehler, Warungen und Hinweise für das Design

Programmierbare Logikbausteine / ASIC‘ & PLD verantwortlicher Betreuer Dipl.-Ing. Th. Rommel, Tel. 1170 8

Project auswählen Um ein neues Project zu erstellen nutzt man für gewöhnlich den „New Project Wizard“, in dem alle notwendigen Einstellungen (Bibliotheken, zusätzliche Softwaretools, Devices usw.) vorgenommen werden. Für beide Praktikumsaufgaben sind vom Praktikums-verantwortlichen diese Projects schon angelegt worden, die sie nur noch mit „Open Pro-ject“ öffnen müssen. Design Entry Erstellen eines Schematic Files

1. Wählen Sie „New“ (File menu) 2. Markieren Sie „Block Diagram/Schematic File“ 3. Wählen Sie „Save As“ (File menu) 4. Geben Sie den Pfad und den Namen für ihr File ein (Wenn der Schematic Filename

mit dem Blockname im übergeordneten Level übereinstimmt, geschieht eine automati-sche Zuordnung)

Jetzt können Sie beginnen, ihre Schaltung einzugeben. In Quartus II haben Sie eine Vielzahl von Symbolen für verschiedene Logikfunktionen zur Verfügung, die Sie im Graphic Editor verwenden können. Diese beinhalten sowohl sogenannte „Primitives“ das sind Basisfunktio-nen wie Buffer, Flipflops, Latches, I/O, usw., wie auch „Megafunctions“, welche komplexe Funktionen darstellen und zusammen mit Primitives oder anderen Megafunctions benutzt werden können um Logic Designs zu erstellen. Eingabe eines „Logic Functions Symbol“ (Logikgatter):

1. Doppelklicken Sie auf eine freie Stelle im Fenster, was gleichzeitig den Einfügepunkt festlegt und das Fenster zur Auswahl des Symbols öffnet.

2. Wählen Sie das benötigte Symbol aus der entsprechenden Bibliothek aus (für die Auf-gabe 1 benötigen Sie nur die Bibliothek „primitives“). Hier können Sie alle benötigen Flip-Flops, Gatter und I/O-Pins (Jedes Subdesign benötigt Input und Output Pins, da-mit eine Anbindung in einer höheren Hierarchieebene erfolgen kann.

3. Drücken Sie „OK“.

4. Wiederholen Sie die Schritte 1 bis 3, um alle benötigten Elemente einzufügen. In der linken unteren Ecke jedes Symbols befindet sich eine Identifikationsnummer. Diese wird automatisch in der Reihenfolge der Symbolaufrufe vergeben. Diese Nummer hat nichts mit der Funktion der Elemente zu tun, sondern dient lediglich der Identifikation. Danach verdrahten sie die Symbole und Pins. Speichern des Files im Filemenu unter „Save as“. Wenn alles fehlerfrei funktioniert, müssen Sie nun noch ein „Default Symbol“ anlegen, wel-ches Ihr aktuelles File repräsentiert. Dieses Symbol kann dann in allen anderen Graphic De-sign Files verwendet und kombiniert werden. Wählen Sie dazu „Create/Update – Create Symbol Files for current File“ (File menu). Jetzt haben sie Symbol File mit dem Namen <filename>.bsf angelegt. Dieses kann dann in einer anderen Hierarchi-

Programmierbare Logikbausteine / ASIC‘ & PLD verantwortlicher Betreuer Dipl.-Ing. Th. Rommel, Tel. 1170 9

stufe (z.B. im Top-Level File) wiederverwendet werden. Achten Sie darauf, dass die entwor-fenen Subdesigns, den gleichen Namen wie im Top-Level Design (licon_flex.bdf) haben. Erstellen eines Text Design Files

1. Wählen Sie „New“ (File menu). Markieren Sie „AHDL File“ (VHDL File)und drücken Sie dann „OK“. Jetzt wird automatisch ein File angelegt, dass <Filename>.tdf (vhd) heißt und der Compiler weiß jetzt, dass es sich um ein AHDL-File (VHDL-File) handelt.

2. Um ein AHDL(VHDL)-Textfile zu schreiben, können Sie Templates nutzen, die

Ihnen unter dem Symbol „ Insert Templates“ neben vielen anderen nützlichen Hil-fen für die Hardwarebeschreibungssprache zu Verfügung stehen. Dort wird Ihnen der genaue Syntax vorgegeben und somit die Fehlerquote drastisch gesenkt wird.

Wenn Sie alle benötigten Symbole erstellt haben, müssen diese noch zusammengebracht und verbunden werden. Nun müssen Sie noch entsprechende Inputs und Outputs anschließen. Dies geschieht im Top-Level Graphic Design File. Danach wird die Schaltung compiliert und dabei auf Fehler getestet und anschließend simuliert. Sie können auch jedes Symbol einzeln compi-lieren und simulieren. Das vereinfacht eine mögliche Fehlersuche und erhöht die Wahrschein-lichkeit, dass die gesamte Schaltung auf Anhieb funktioniert, erfordert allerdings einen erhöh-ten Aufwand. Compilieren und Fehlersuche Jeder einzelne Block, den Sie eingegeben haben, sollte separat compiliert und simuliert wer-den. Dazu müssen Sie dem Compiler mitteilen, welchen Block er compilieren soll. Das ge-schieht, in dem Sie im „Project Navigator“ Fenster den entsprechenden Block mit der rech-ten Maus anklicken und den Punkt „Set as Top-Level Entity“ anwählen. Jetzt beziehen sich alle Tools (z.B. auch Simulation, die sie anwählen nur auf diesen Block!!!!

1. Unter „Settings“ (Assingment Menue) können alle Einstellungen, wie Devicename, Pinassingments, usw. eingestellt werden. Da in allen Praktikumsversuche bereits Top-Level erstellt worden sind auch die notwendigen Assignments schon voreingestellt.

2. Wählen Sie „Start Compilation“ (Processing menu). Wenn der Compiling Vorgang erfolgreich beendet ist, kommt ein entsprechender Hinweis. Ansonsten erscheinen alle Fehler und Warnungen im Messagefenster. Vorhandene Fehler finden Sie, indem Sie einen Doppelklick auf dem Fehler machen. Im Compilation Report werden alle Informationen aufbereitet. Nachdem ihre Schaltung fehlerfrei compiliert wurde, ist es ratsam, eine Simulation durchzu-führen, um zu gewährleisten, dass die Schaltung die entsprechenden Timing- und Functionbe-dingungen erfüllt.

Programmierbare Logikbausteine / ASIC‘ & PLD verantwortlicher Betreuer Dipl.-Ing. Th. Rommel, Tel. 1170 10

Simulation

1. Erstellen Sie über „New“ (File menu) ein „Vector Waveform File“! 2. Über rechte Mausklick im Feld „Name“ des Waveform1.vwf können Sie „Insert

Node or Bus“ auswählen und danach über „Node Finder..“ alle notwendigen Pins, Signalnamen oder Nodes aufLISTen lassen. Übernehmen Sie die für Sie interessanten gefunden Nodes in die „Selected Nodes“-Liste!

3. Zum Bearbeiten der Signalverläufe, markieren Sie das Signal oder auch nur bestimmte Intervalle, die sie editieren wollen. Mit Hilfe der in der linken Leiste des Waveform-fensters befindlichen Buttons können Sie den markierten Intervallen des Signals den entsprechenden Wert zuweisen.

4. Speichern Sie das VWF-File mit „Save“ (File menu). 5. Bei „Settings“ (Assignment Menu) unter „Simulation Settings“ stellen

Sie jetzt ihr Simulation Input File ein! 6. „Start Simulation“ (Processing Menu).

Wenn Fehler auftreten bzw. Signale sich nicht wie erwartet verhalten, müssen Sie den Fehler suchen, das notwendige File ändern, compilieren und wieder alle Schritte bis hierher durch-gehen. Programmierung eines Bausteins Die Programmierung wird vom Betreuer durchgeführt!

Programmierbare Logikbausteine / ASIC‘ & PLD verantwortlicher Betreuer Dipl.-Ing. Th. Rommel, Tel. 1170 11

Aufgabe 1

Problemstellung

Es existiert ein Raum mit zwei Türen in das kein Licht von außen einfallen kann. Die Innen-raumbeleuchtung soll automatisch eingeschaltet werden, wenn sich jemand im Raum aufhält. Da in dem Raum oft bewegungsarme Arbeiten ausgeführt werden, fällt eine Lösung mit Infra-rotsensor aus. Ein 7-Segment Display soll außerdem stets anzeigen, wie viele Personen sich im Raum befinden. Zusätzlich dazu soll ein Warnsignal ertönen, wenn sich mehr als 4 Leute im Raum aufhalten. Lösung

Um das obige Problem zu lösen, sind an beiden Türen jeweils zwei Lichtschranken installiert (Bild 1). Diese sollen alle Personen, die den Raum betreten oder verlassen, registrieren. Eine Lichtschranke befindet sich an der Innenseite der Tür und eine zweite an der Außenseite. So-mit kann genau festgestellt werden, ob eine Person den Raum betritt oder verlässt, bzw. ob sie eventuell zwischendurch die Richtung wechselt. Damit eine Person als ein- bzw. austretend erkannt wird, muss sie beide Lichtschranken durchlaufen, so dass ein Signalverlauf, wie in Bild 2 gezeigt, erfolgt. Bild 1

Bild 2

Programmierbare Logikbausteine / ASIC‘ & PLD verantwortlicher Betreuer Dipl.-Ing. Th. Rommel, Tel. 1170 12

Erweiterung: Erweitern Sie die Schaltung so, dass der Zähler nicht nur bis 9 sondern bis 99 (dezimal) zählt.

Zur Erleichterung wird Ihnen ein Top-Leveldesign mit der Bezeichnung licon_flex.gdf vor-gegeben:

Programmierbare Logikbausteine / ASIC‘ & PLD verantwortlicher Betreuer Dipl.-Ing. Th. Rommel, Tel. 1170 13

Aufgabe 2 Einleitung: In diesem Praktikum soll eine bestehende VGA-Ansteuerung (640 x 480) zu einem Art Vi-deospiel erweitert werden. Auf dem vorhandenen Demoboard ist ein FLEX 10 K Baustein der Firma Altera und die nötigen Tasten, sowie die notwendige Hardwareverdrahtung, um einen VGA-Bildschirm anzusteuern, implementiert. Die notwendige VGA-Schaltung ist in der Schaltung VGA.gdf (siehe Anhang) bereits entwor-fen und soll dementsprechend modifiziert und weiterentwickelt werden. Jeder VGA Monitor hat einen internen Takt, der bestimmt, wann jedes Pixel neu geschrieben wird. Dieser Takt arbeitet bei der VGA-spezifischen Frequenz von 25,175 MHz. Der Monitor erneuert den Bildschirm (Refresh) in einer bestimmten Art und Weise, die gesteuert wird durch ein horizontales und vertikales Synchronisationssignal. Der Monitor beginnt jeden Refreshzyklus mit einem Update der Pixel in der linken oberen Ecke (0,0) des Bildschirmes. Nachdem das erste Pixel einen Refresh erhält, erzeugt der Monitor für die verbleibenden Pixel in der Reihe einen Refresh. Wenn der Monitor ein Impuls für die horizontale Synchronisation erhält, erzeugt er die nötigen Refreshsignale für die nächste Reihe. Dieser Prozess wird wie-derholt bis der Monitor die unterste Zeile des Schirmes erreicht. Mit dem enstprechenden ver-ticalen Synchronisationssignal springt er wieder auf die erste Zeile (0,0) des Schirmes. Damit der Monitor richtig arbeitet, muss er seine seine Impuls zu bestimmten Zeiten empfan-gen. Horizontale und Vertikale Synchronisations Impulse müssen zu einer bestimmten Zeit anliegen, damit die Farbsignale (Red, Green, Blue) entsprechend eingeordnet werden können. Bild 1 und 2 zeigen die Waveform der entsprechenden Farbinformation in Abhängigkeit von den horizontalen und vertikalen Synchronisationssignalen. Diese Signale stellt der Block counter_h_v zur Verfügung. Parameter A B C D E Time 31,77 µs 3,77 µs 1,89 µs 25,17 µs 0,94 µs Anzahl der Takte(Tpixel) 807 95 48 640 24 Bild 1

ENABLE_HORIZ

HORIZ_SYNC

A

B C D E

Programmierbare Logikbausteine / ASIC‘ & PLD verantwortlicher Betreuer Dipl.-Ing. Th. Rommel, Tel. 1170 14

Parameter O P Q R S Time 16,6 ms 64 µs 1,02ms 15,25ms 0,35 ms Anzahl der Takte (Horizontal Refresh Cycles)

514 3 31 480 10

Bild 2 Teilaufgabe I: Machen sie sich mit der bestehenden Schaltung soweit vertraut, dass sie den schaltungstechni-schen Hintergrund verstehen. Ein Verständnis der Schaltung ist notwendig, da sonst keine Modifizierung erfolgen kann. Teilaufgabe II: Entwickeln Sie die Schaltung VGA.gdf so weiter, das das eingeblendete Logo (auf dem Bild-schirm oben links) mit Hilfe der Tasten FLEX_PB1 und FLEX_PB2 auf dem Bildschirm in X- und Y-Richtung positioniert werden kann. Die Schaltungsblöcke Counter_h_v und Logo_counter, dürfen nicht verändert werden, genau-so wenig, wie die direkten Ausgangstreiber (Open-Drain), da sonst eine Zerstörung des Bild-schirmes möglich ist. Auf welche Art und Weise (Schematic, VHDL, AHDL oder Waveform) sie die Schaltung entwerfen ist ihnen überlassen! Im Schematic haben sie die Möglichkeit, sogenannte LPM (library of parameterized modules) zu verwenden. LPM sind vorgefertigte Module (in AHDL geschrieben), die sie über Dialog-fenster modifizieren können und somit ihren Erfordernissen anpassen können. Solche Makros sind für fast alle digitalen Funktionen, wie ADDER, COUNTER, SHIFTREGISTER, RAM, ROM usw. verfügbar Teilaufgabe III:

ENABLE_VERT

VERT_SYNC

O

P Q R S

Programmierbare Logikbausteine / ASIC‘ & PLD verantwortlicher Betreuer Dipl.-Ing. Th. Rommel, Tel. 1170 15

Entwickeln sie die nun vorhandene Schaltung so weiter, dass sie über die zusätzlichen Tasten (MAX_PB1 und MAX_PB2) ein weiteres Logo (z.b. weisser Rahmen) auf dem Bildschirm positionieren können. Teilaufgabe IV: Verändern sie die in Teilaufgabe III entworfene schaltung so, dass das Logo (weisser Rah-men) jeweils auf Tastendruck (MAX_PB1) an einer zufälligen Position des Bildschirmes er-scheint.