hardwarenahe analyse und entwicklung einer performanten...

114
Bachelorarbeit Thorben Schnirpel Hardwarenahe Analyse und Entwicklung einer performanten Kommunikationsschnistelle zwischen Mikrocontroller und Field Programmable Gate Array basierend auf dem Flexible Static Memory Controller Fakultät Technik und Informatik Studiendepartment Informatik Faculty of Engineering and Computer Science Department of Computer Science

Upload: trinhdieu

Post on 14-Aug-2019

213 views

Category:

Documents


0 download

TRANSCRIPT

BachelorarbeitThorben Schnirpel

Hardwarenahe Analyse und Entwicklung einer performantenKommunikationsschni�stelle zwischen Mikrocontroller undField Programmable Gate Array basierend auf dem Flexible

Static Memory Controller

Fakultät Technik und InformatikStudiendepartment Informatik

Faculty of Engineering and Computer ScienceDepartment of Computer Science

Thorben Schnirpel

Hardwarenahe Analyse und Entwicklung einer performantenKommunikationsschnittstelle zwischen Mikrocontroller undField Programmable Gate Array basierend auf dem Flexible

Static Memory Controller

Bachelorarbeit eingereicht im Rahmen der Bachelorprüfung

im Studiengang Bachelor of Science Technische Informatikam Department Informatikder Fakultät Technik und Informatikder Hochschule für Angewandte Wissenschaften Hamburg

Betreuender Prüfer: Prof. Dr. Michael SchäfersZweitgutachter: Prof. Dr. Tim Tiedemann

Eingereicht am: 12. Januar 2018

Thorben Schnirpel

Thema der ArbeitHardwarenahe Analyse und Entwicklung einer performanten Kommunikationsschnittstellezwischen Mikrocontroller und Field Programmable Gate Array basierend auf dem FlexibleStatic Memory Controller

StichworteFSMC, FPGA, Mikrocontroller, Kommunikationsschnittstelle, Mikroprozessorinterface, Perfor-mance

KurzzusammenfassungIm Rahmen dieser Bachelorarbeit wird eine performante Kommunikationsschnittstelle entwor-fen und implementiert. Diese Kommunikationsschnittstelle besteht aus einem Mikroprozesso-rinterface und einer digitalen Schaltung für die Kommunikation. Die Kommunikation �ndetdabei zwischen einem STM32F4 Mikrocontroller und einem Field Programmable Gate Array(FPGA) der Spartan-6 Familie über den Flexible Static Memory Controller (FSMC) von ST statt.Um eine möglichst performante Kommunikation zu realisieren, wurde im ersten Schritt dieFSMC-Schnittstelle ausführlich analysiert. Die aus der Analyse gewonnenen Informationenwurden im nächsten Schritt verwendet, um Entwürfe für mögliche digitale Schaltungen zurKommunikation zu entwerfen. Es werden drei Entwürfe vorgestellt und diskutiert. Neben derdigitalen Schaltung zur Kommunikation wurde auch ein Mikroprozessorinterface entworfen.Der Entwurf des Mikroprozessorinterfaces wurde zusammen mit einem ausgewählten Entwurffür die Kommunikation auf einem FPGA implementiert. Anschließend wird die Performance derKommunikationsschnittstelle gemessen, diskutiert und mit anderen Schnittstellen verglichen.Thorben Schnirpel

Title of the paperLow-level analysis and development of a high-performance communication interface betweena microcontroller and a Field Programmable Gate Array based on the Flexible Static MemoryController

KeywordsFSMC, FPGA, microcontroller, communication interface, microprocessor interface, performance

AbstractThis thesis is about the design and the implementation of a high-performance communicationinterface. This communication interface consists of a microprocessor interface and a digitalcircuit for communication. Communication takes place between a STM32F4 microcontrollerand a Field Programmable Gate Array (FPGA) of the Spartan-6 family via the Flexible StaticMemory Controller (FSMC) from ST. In order to implement a high-performance communication,the FSMC was analyzed in the �rst step. The information from the analysis was used in thenext step to design drafts for possible digital circuits for communication. Three designs will bepresented and discussed. In addition to the digital communication circuit, a microprocessorinterface was designed. The design of the microprocessor interface in combination with aselected design for communication was implemented on an FPGA. Afterwards, the performanceof the communication interface is measured, discussed and compared with other interfaces.

iv

Inhaltsverzeichnis

1. Einleitung 11.1. Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2. Zielsetzung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.3. Vorgehensweise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

2. Grundlagen 42.1. Arten von Speichern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42.2. Flexible Static Memory Controller . . . . . . . . . . . . . . . . . . . . . . . . . 5

2.2.1. Aufbau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.2.2. Signale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.2.3. Modi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.2.4. Kon�guration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

2.3. Mikroprozessorinterface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232.4. Aufbau des Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

3. Anforderungen an die Kommunikationsschni�stelle 263.1. Funktionale Anforderungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263.2. Nichtfunktionale Anforderungen . . . . . . . . . . . . . . . . . . . . . . . . . 28

4. Entwurf der Kommunikationsschni�stelle 294.1. Digitale Schaltung des FSMC-Protokolls . . . . . . . . . . . . . . . . . . . . . . 29

4.1.1. Vergleich - NOR/PSRAM Speichercontroller / NAND/PC Card Spei-chercontroller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

4.1.2. Analyse des NOR/PSRAM Speichercontrollers . . . . . . . . . . . . . . 314.1.3. Asynchroner Entwurf - Parameter . . . . . . . . . . . . . . . . . . . . 324.1.4. Asynchroner Entwurf - Wait . . . . . . . . . . . . . . . . . . . . . . . 354.1.5. Synchroner Entwurf . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374.1.6. Wahl eines Entwurfs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

4.2. Mikroprozessorinterface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394.2.1. Status Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394.2.2. Control Register 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414.2.3. Control Register 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

5. Implementierung der Kommunikationsschni�stelle 445.1. Digitale Schaltung des FSMC-Protokolls . . . . . . . . . . . . . . . . . . . . . . 44

5.1.1. Verwaltung des Wait-Signals . . . . . . . . . . . . . . . . . . . . . . . 445.1.2. Speicherung der Adresse und der Daten . . . . . . . . . . . . . . . . . 47

v

Inhaltsverzeichnis

5.1.3. Erkennen einer Schreiboperation . . . . . . . . . . . . . . . . . . . . . 505.1.4. Erkennen einer Leseoperation . . . . . . . . . . . . . . . . . . . . . . . 52

5.2. Mikroprozessorinterface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545.2.1. Control und Daten Register . . . . . . . . . . . . . . . . . . . . . . . . 555.2.2. Status Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

5.3. Zeitliches Verhalten der Kommunikationsschnittstelle . . . . . . . . . . . . . . 695.4. Synthese der Kommunikationsschnittstelle . . . . . . . . . . . . . . . . . . . . 73

6. Performancetest der Kommunikationsschni�stelle 766.1. Aufbau des Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 766.2. Kon�guration des FSMC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 766.3. Verfahren zur Messung der Performance . . . . . . . . . . . . . . . . . . . . . 786.4. Messergebnisse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 786.5. Auswertung der Messergebnisse . . . . . . . . . . . . . . . . . . . . . . . . . . 81

7. Zusammenfassung 86

8. Ausblick 88

A. Anhang 1A.1. Analyse des FSMC auf dem FPGA . . . . . . . . . . . . . . . . . . . . . . . . . 1A.2. Anwendung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9A.3. Unstimmigkeiten im Reference Manual . . . . . . . . . . . . . . . . . . . . . . 10A.4. Anmerkungen zur Synthese . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

B. Anhang 13B.1. Verwendete Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13B.2. Inhalt der CD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

vi

1. Einleitung

In diesem Kapitel wird verdeutlicht, warum es sinnvoll ist eine Kommunikationsschnittstellefür ein FPGA zur Kommunikation mit einem Mikrocontroller zu entwickeln. Außerdem wirddas Ziel und die Vorgehensweise dieser Arbeit beschrieben.

1.1. Motivation

Mikrocontroller sind Ein-Chip-Computersysteme, welche einen Mikroprozessor und unter-schiedliche Peripheriekomponenten miteinander vereinen. Wegen der großen Auswahl anMikrocontrollern mit unterschiedlichen Peripheriekomponenten lassen sie sich in vielen An-wendungen verwenden. Mikrocontroller können dabei die unterschiedlichsten Aufgaben über-nehmen, einige davon auch mit harten Echtzeitanforderungen. Um diese harten Echtzeitanfor-derungen erfüllen zu können, können rechenaufwändige Aufgaben an FPGAs weitergegebenwerden. Durch die Weitergabe von rechenaufwändigen Aufgaben an ein FPGA wird die CPUder Mikroprozessoren von Rechenlast befreit. Um Aufgaben auslagern zu können ist jedocheine Kommunikation zwischen dem Mikrocontroller und dem FPGA erforderlich. Diese Arbeitsetzt an dieser Stelle an und soll durch die Entwicklung einer performanten Kommunikations-schnittstelle eine möglichst große Entlastung für den Mikrocontroller erzielen.Eine Kommunikation kann synchron oder asynchron erfolgen und unterscheidet sich dabeiunter anderem im Stromverbrauch, ihrer Leistungsfähigkeit und ihrer Übertragungssicherheit.Die synchrone Kommunikation verlässt sich auf ein gemeinsames Taktsignal. Die asynchroneKommunikation hingegen verlässt sich in vielen Fällen auf einen Handshake, bei dem eineAnfrage des Senders vom Empfänger bestätigt wird. Außerdem lassen sich Kommunikationenentweder mit seriellen oder parallelen Schnittstellen realisieren. Parallele Schnittstellen über-tragen parallel mehrere Daten, weshalb sie mehr als nur eine Datenleitung brauchen, aber auchpotentiell einen höheren Durchsatz aufweisen. Serielle Schnittstellen übertragen, im Gegensatzzu parallelen Schnittstellen, die Daten Bit für Bit und sind somit, in der Theorie, langsamer.Bekannte Vertreter der seriellen Schnittstellen sind Inter-Integrated Circuit (I2C) und SerialPeripheral Interface (SPI). Beide existieren mit zahlreichen Erweiterungen, weshalb sie invielen Anwendungen angewendet werden können. Eine Erweiterung von SPI ist zum Beispiel

1

1. Einleitung

Quad-SPI, welche anstatt durch zwei Datenleitungen durch vier Datenleitungen kommuniziertund somit die Performance steigert. Aus diesem Grund wird Quad-SPI häu�g für Anwendungeneingesetzt, welche hohe Performance und geringen Platzbedarf fordern. Viele Mikrocontrollerintegrieren eine SPI- und oder eine I2C-Schnittstelle.Zu den parallelen Schnittellen gehören unter anderem Peripheral Component Interconnect(PCI), einige Varianten des Small Computer System Interface (SCSI) und FSMC. Der FSMC wirdhäu�g genutzt, um mit Speichern zu kommunizieren und ist bereits in manchen Mikrocontrol-lern integriert. PCI und SCSI hingegen eignen sich zum Verbinden von Peripheriegeräten undComputern bzw. von Peripherie innerhalb eines Computers.Für die Wahl der Schnittstelle für die Kommunikation von FPGA und Mikrocontroller fallen PCIund SCSI aufgrund ihres Platzbedarfes raus. Die Wahl der Schnittstelle �el für diese Arbeit alsoauf die FSMC-Schnittstelle, da es eine optimale Kombination aus Performance und Platzbedarfdarstellt. Eine passende Alternative wäre die Verwendung von Quad-SPI.Eine weitere Alternative zum FSMC wäre der Flexible Memory Controller (FMC), welcher zu-sätzlich zu statischen auch mit dynamischen Speichern kommunizieren kann. Da das Protokolljedoch nicht für die Kommunikation von Speichern genutzt werden soll und bereits Hardwarevorlag, wurde der FSMC vorgezogen.

1.2. Zielsetzung

Das Ziel dieser Arbeit ist es die Kommunikation zwischen einem FPGA der Spartan-6 Familieund einem STM32F4 Mikrocontroller möglichst performant zu realisieren. Dafür wird einedigitale Schaltung entworfen und auf dem FPGA implementiert. Durch die Kombination dieserdigitalen Schaltung mit einer geeigneten Kon�guration des FSMC wird eine performanteKommunikation ermöglicht. Außerdem wird ein Mikroprozessorinterface entworfen undimplementiert. Das Mikroprozessorinterface wird dem Benutzer eine einfache Nutzung einerAnwendung auf der Seite des FPGA mit Hilfe der FSMC-Schnittstelle ermöglichen.

1.3. Vorgehensweise

Um eine möglichst performante Schnittstelle zur Kommunikation zwischen FPGA und Mikro-controller entwickeln zu können, muss das verwendete Protokoll, hier das FSMC-Protokoll,analysiert werden. Für diesen Schritt wird der Mikrocontroller für die Verwendung des FSMCmit unterschiedlichen Kon�gurationen programmiert und die FSMC-Signale mit dem FPGAverbunden. Das FPGA hat die Aufgabe die Signale des FSMC abzutasten und anschließend an

2

1. Einleitung

den Mikrocontroller zu senden, welcher daraufhin für eine graphische Aufbereitung sorgt.Dies wird entweder durch den ChipScope von Xilinx direkt auf dem FPGA ermöglicht oderdurch eine eigene Schaltung. Für diese Arbeit wird eine eigene Schaltung zum Abtasten derFSMC-Signale benutzt, da der ChipScope auf vorliegender Hardware nicht zur Verfügung steht.Der nächste Schritt besteht aus der Analyse der gewonnen Daten. Es wurden die Signalverläufeund Abhängigkeiten der FSMC-Signale voneinander untersucht. Außerdem wurde analysiert,wie sich die Kon�gurationsparameter einstellen lassen und wie sich diese auf die Kommunika-tion auswirken.Mit Hilfe dieser Informationen wurden drei Entwürfe für eine mögliche digitale Schaltungzur Kommunikation zwischen FPGA und Mikrocontroller entwickelt. Die Entwürfe werdenanhand ihrer potentiellen Performance verglichen und sich für einen Entwurf entschieden.Dieser Entwurf wird anschließend implementiert.Für die Entwicklung des Mikroprozessorinterfaces werden im ersten Schritt die Anforderungenan das Mikroprozessorinterface festgelegt. Der Entwurf des Mikroprozessorinterfaces wirddaraufhin aus diesen Anforderungen entwickelt und implementiert.Im letzten Schritt wird die Performance der digitalen Schaltung in Kombination mit demMikroprozessorinterface gemessen und ausgewertet.

Jeglicher Code, welcher im Rahmen dieser Arbeit entstanden ist, ist auf der beiliegendenCD zu �nden. Der Code für den Mikrocontroller wurde in C und der Code für das FPGA inVHDL geschrieben.

3

2. Grundlagen

Im nachfolgenden Kapitel gibt es eine Einführung in den FSMC, Mikroprozessorinterfaces undden Aufbau des vorliegenden Systems. Zu Beginn werden Speicher, welche mit dem FSMCkommunizieren können, vorgestellt. Dies vereinfacht die Einführung in den FSMC deutlich, dadiese großen Ein�uss auf den Aufbau, die Signale und die Modi des FSMC haben. Im Anschlusswerden Mikroprozessorinterfaces eingeführt, hierbei wird auf den Aufbau und auf möglicheMikroprozessorinterface-Register eingegangen. Zum Schluss wird der Aufbau des vorliegendenSystems vorgestellt.

2.1. Arten von Speichern

Im Rahmen dieser Arbeit wird der FSMC benutzt. Der Nutzen dieser Schnittstelle ist in ersterLinie die Kommunikation mit Speichern. Aus diesem Grund werden die unterschiedlichenArten von Speichern in diesem Abschnitt vorgestellt.

Speicher beinhalten wichtige Informationen, von Benutzerdaten bis zu dem auszuführendenProgramm und sind somit zentraler Bestandteil jedes Computersystems. Speicher lassen sichin zwei Kategorien teilen, die �üchtigen und die nicht-�üchtigen Speicher. Flüchtige Speicherspeichern die Daten nur bei anliegender Versorgungsspannung. Nicht-�üchtige Speicher hin-gegen behalten ihre Daten auch wenn keine Versorgungsspannung anliegt.Zu den �üchtigen Speichern gehören die Random Access Memory (RAM). RAM zeichnet sichdurch den schnellen Zugri� auf alle Bereiche des Speichers aus, dabei spielt die Abfolge derZugri�e keine Rolle. Für diese Arbeit spielen besonders die Static Random Access Memory(SRAM), aber auch die Pseudo Static Random Access Memory (PSRAM) eine Rolle, denn sielassen sich mit dem FSMC benutzen. Neben dem SRAM zählt auch das Dynamic RandomAccess Memory (DRAM) zu den großen Vertretern der RAM. Der wesentliche Unterschied ist,dass das SRAM nicht, wie das DRAM, periodisch aufgefrischt werden muss, damit es seinegespeicherten Daten weiterhin speichert.Zu den nicht-�üchtigen Speichern gehörten anfangs nur die Read Only Memory (ROM). ROMwird vom Hersteller programmiert und lässt nur lesende Zugri�e zu. Aus den ersten ROM

4

2. Grundlagen

entstanden die Electrically Programmable Read Only Memory (EPROM). Der Unterschied vonEPROM zu ROM ist, dass er auch schreibenden Zugri� zulässt. Außerdem lässt er sich unterultravioletem Licht löschen, sodass er wieder beschreibbar ist. Ein weiterer Vorteil von EPROMist die Größe des verfügbaren Speichers. Nach den EPROM enstanden die Electrically Erasableand Programmable Read Only Memory (EEPROM). EEPROM lassen sich gegenüber den vorhergenannten ROM elektrisch löschen. Dieser Vorteil bringt aber auch einen Nachteil mit sich,denn EEPROM brauchen mehr Transistoren als das ROM und das EPROM, um ein Datenbitzu speichern. Aus diesem Grund sind EEPROM nur mit kleiner Speicherkapazität erhältlichund vergleichsweise teuer. Eine Gemeinsamkeit von EPROM und EEPROM ist, dass sie jedesDatenbit nacheinander schreiben müssen. Dies wurde mit der Einführung der Flash ElectricallyErasable and Programmable Read Only Memory (Flash EEPROM) geändert. Flash EEPROMkönnen ein Byte bis zu einem Wort pro Zugri� schreiben. Der Namen Flash EEPROM entstanddurch die hohe Geschwindigkeit beim Löschen der Daten. EEPROM verfügen meist über großeSpeicherkapazität. Da EEPROM zusätzlich elektrisch löschbar sind, haben sie sich gegenüberdem EPROM durchgesetzt und sind laut [1] die am verbreitetsten nicht-�üchtigen Speicher.Es gibt zwei dominierende Architekturen für Flash EEPROM, die NAND Flash EEPROM und dieNOR Flash EEPROM. Die NOR Flash EEPROM zeichnen sich durch ihre schnelle Zugri�szeitauf alle möglichen Bereiche des Speichers aus. Dies wird ermöglicht durch das Parallelschaltender Speicherzellen, durch Datenleitungen. Im Gegensatz dazu, werden die Speicherzellen derNAND Flash EEPROM als Gruppen in Reihe geschaltet. Ein Vorteil ist der Platzbedarf derSchaltung, weshalb NAND Flash EEPROM auch oft hohe Speicherkapazitäten aufweisen. DieseArchitektur bringt jedoch auch einen Nachteil mit sich, denn NAND Flash EEPROM lassensich nur gruppenweise sequentiell lesen und schreiben.

Für den FSMC spielen besonders die SRAM, PSRAM und die Flash EEPROM eine großeRolle, denn diese werden von dem FSMC unterstützt.

2.2. Flexible Static Memory Controller

Der FSMC ist eine parallele Schnittstelle von ST, welche bei der ganzen STM32F40x/41x Familiezu �nden ist. Der FSMC ermöglicht in erster Linie das Arbeiten mit externen Speichern, indemes Bus-Transaktionen des STM32F4 in angemessene Transaktionen des externen Protokollsübersetzt. Um dieses Ziel umzusetzen, muss der FSMC die zeitlichen Zugri�sanforderungendes externen Geräts einhalten. Der FSMC ist ein Single-Master Multiple-Slave Bus bei dem einMaster, meist ein Mikrocontroller, sich über Slave- oder Chip-Select Signale einen Slave zur

5

2. Grundlagen

Kommunikation aussucht. Beim FSMC steuert nur der Master den Zugri� auf den Datenbus.Für diese Arbeit soll der FSMC für eine Kommunikation zwischen einem Mikrocontroller undeinem FPGA eingesetzt werden. Aus diesem Grund soll in diesem Abschnitt die Funktionsweisedes FSMC beschrieben werden, dabei wird auf den Aufbau der Komponente, die verwendetenSignale, die möglichen Betriebsmodi und dessen Kon�guration eingegangen.

2.2.1. Aufbau

Abbildung 2.1.: FSMC Block-Diagramm nach Abbildung 432 aus [5]

Der FSMC besteht grundsätzlich aus vier Hauptkomponenten, den Kon�gurationsregisternmit der Schnittstelle zum AHB-Bus, dem NOR/PSRAM Speichercontroller, dem NAND/PCCard Speichercontroller und der Schnittelle für externe Geräte. Diese Komponenten sind inder Abbildung 2.1 dargestellt. Neben den Komponenten ist in dieser Abbildung außerdem zusehen, dass der FSMC mit einem Clk-Signal (HCLK) verbunden ist, welches unter anderem fürdie synchrone Kommunikation genutzt wird.Die Kon�gurationsregister geben dem Mikrocontroller Auskunft, wie sich die externe Kompo-

6

2. Grundlagen

nente verhält und somit auch, wie die internen Bus-Transaktionen in das externe Protokoll zuübersetzen sind. Auf den Inhalt dieser Register wird im Abschnitt 2.2.4 im Detail eingegangen.Die Speichercontroller übernehmen jeweils die Kommunikation zu den zugehörigen Speichern,basierend auf den eingestellten Kon�gurationsparametern. In [5] werden alle Speicher auf-geführt, welche von dem NOR Flash/PSRAM Speichercontroller und dem NAND/PC CardSpeichercontroller unterstützt werden.Die Schnittstelle für die externen Geräte besteht aus 64 Ein- oder Ausgängen, welche imAbschnitt 2.2.2 erklärt werden. Über diese Signale wird mit den angeschlossenen Komponentenkommuniziert.

AdressbereicheUm Speicherzellen eines Speichers direkt mit einer Adresse ansprechen zu können, deckt derFSMC einen gewissen Speicherbereich ab. Dieser Adressbereich des FSMC ist in Abbildung 2.2zu sehen und ist in vier Bänke aufgeteilt. Jede Bank deckt jeweils 256 MByte ab.Die Bank 1 besteht, um NOR Flash EEPROM und PSRAM zu adressieren. Das besondere an derBank 1 ist, dass sich durch Chip Select-Signale bis zu vier Komponenten anschließen lassen.Bank 2 und Bank 3 können jeweils ein NAND Flash EEPROM adressieren. Die Bank 4 kanneine PC Card adressieren.

Abbildung 2.2.: FSMC Speicherbänke mit Adressbereichen (Quelle: [5])

7

2. Grundlagen

Abbildung 2.3.: Adressbereiche des NAND-/PC Card Controller (Quelle: [5])

In Abbildung 2.2 ist eine Zuordnung von den Adressbereichen zu den Bänken dargestellt.Die Bank 4 ist weiter in drei Adressbereiche unterteilt, den Common-, den Address- undden I/O-Bereich. Die Bänke für die Kommunikation mit NAND Flash EEPROM, also Bank2 und Bank 3, sind unterteilt in Attribut- und Common-Adressbereiche. Für NAND FlashEEPROM werden die Attribut- und Common-Adressbereiche weiter in eine Datensektion, eineAdresssektion und eine Kommandosektion eingeteilt.Die Aufteilungen der Adressbereiche des NAND-/PC Card Controller sind in Abbildung 2.3dargestellt. Diese Aufteilung des Adressbereiches wird für die Kommunikation mit NANDFlash EEPROM benötigt.

2.2.2. Signale

Der FSMC nutzt zur Kommunikation eine Reihe von Signalen, welche bereits als Ein- undAusgänge in Abbildung 2.1 dargestellt wurden und in diesem Abschnitt erklärt werden. BeimFSMC wird zwischen 64 Signalen unterschieden. Sie lassen sich in vier Gruppen unterteilen.

Die erste Gruppe besteht aus den NOR/PSRAM-Signalen, welche benötigt werden, umNOR Flash EEPROM und PSRAM anzusprechen. Zu den Signalen dieser Gruppe gehörenvier NE-Signale, ein NL-Signal, zwei NBL-Signale und ein CLK-Signal. Das CLK-Signal istein Taktsignal und wird ausschließlich für die synchrone Kommunikation eines PSRAM ge-nutzt. Es lässt sich in einem Kon�gurationsregister, wie es in Abschnitt 2.2.4 beschriebenwird, kon�gurieren. Das CLK-Signal basiert auf dem HCLK-Signal, welches aus dem Bild 2.1bekannt ist. Die vier NE-Signale sind low-aktive Enable- oder auch Chip Select-Signale. DieNE-Signale ermöglichen es der Bank 1 mit bis zu vier Komponenten zu kommunizieren, dabeisteht das NE[1] für die erste Subbank und NE[4] für die vierte Subbank. Das NL-Signal ist einlow-aktives Latch Enable-Signal und wird auch NADV-Signal genannt, was für ein low-aktives

8

2. Grundlagen

Adress Valid-Signal steht. Das NL-Signal ermöglicht dem FSMC mit Speichern im Burst-Moduszu kommunizieren. Im Burst-Modus können mehrere Daten synchron hintereinander auseinem Speicher gelesen werden, ohne erneut eine Adresse anzugeben. Die letzten Signaledieser Gruppe sind die NBL-Signale, wobei NBL[0] für ein low-aktives Lowed Byte Enable-Signal (NLB) und NBL[1] für ein low-aktives Upper Byte Enable-Signal (NUB) steht. MancheSpeicher lassen sich in bestimmten Datenbreiten kon�gurieren, so kann auf diese Speicherzum Beispiel nur in zwei, vier oder acht Byte-weise zugegri�en werden. Um bei einer vierByte Datenbreite auch nur zwei Bytes schrieben zu können, werden Byte-Enable-Signale ver-wendet. Diese aktivieren jeweils nur ein Teil der vier Bytes, die tiefen oder die hohen zwei Bytes.

Die zweite Gruppe besteht aus den NAND-Signalen. Zu den NAND-Signalen gehören zweiNCE-Signale und zwei INT-Signale. Die beiden NCE-Signale sind low-aktive Chip Select-Signale, welche zum Ansprechen von Komponenten der Bank 2 und der Bank 3 dienen. Diebeiden INT-Signale sind Ready/Busy-Signale, welche dem FSMC signalisieren, ob der zugehö-rige Speicher bereit ist Daten zu senden oder zu empfangen.

Die dritte Gruppe der FSMC-Signale sind die Signale für die Kommunikation mit einer PCCard. Zu dieser Gruppe gehören das INTR-, das NCE4_1-, das NCE4_2-, das NIORD-, dasNIOWR-, das NREG- und das CD-Signal. Das NCE4_1-Signal ist ein Chip Select-Signal undselektiert die Komponente der Bank 4. Das NCE4_2-Signal hingegen trägt Informationen, ob einZugri� mit 16-Bit oder 8-Bit realisiert wird. Das INTR-Signal ist ein Interrupt-Signal, welchesdurch eine PC Card getrieben werden kann. Das NIORD-Signal ist ein low-aktives OutputEnable-Signal und das NIOWR-Signal ist ein low-aktives Write Enable-Signal für den Input-und Ouput-Bereich. Das NREG-Signal ist ein low-aktives Register-Signal, welches anzeigt aufwelchen Bereich zugegri�en wird, den Common oder den Attribute-Bereich. Das CD-Signal istein Signal, welches angibt, ob eine PC Card mit dem FSMC verbunden ist.

Die vierte und letzte Gruppe sind die geteilten Signale, welche von jedem Speichercontrollergenutzt werden. Da diese Signale von allen Speichercontrollern genutzt werden, kann der FSMCnicht mit mehr als einer Komponente gleichzeitig kommunizieren. Diese Gruppe setzt sich aus26 Adresssignalen, 16 Datensignalen, einem NOE-, einem NWE- und einem NWAIT-Signalzusammen. Das NOE-Signal ist ein low-aktives Output Enable-Signal und ist in jedem Modides FSMC vertreten, denn es regelt die Schreibberechtigung auf den Bus. Das NWE-Signal istein low-aktives Write Enable-Signal und enthält Informationen, ob der Master Daten auf den

9

2. Grundlagen

Datenbus gelegt hat oder nicht. Das NWAIT-Signal ist ein low-aktives Wait-Signal und kannbenutzt werden, um den FSMC warten zu lassen.

2.2.3. Modi

In diesem Abschnitt werden die möglichen Betriebsmodi der Speichercontroller beschrie-ben. Dabei wird auf den NOR Flash/PSRAM Speichercontroller mit seinen asynchronen undsynchronen Modi und den NAND/PC Card Speichercontroller eingegangen.

NOR Flash/PSRAM Speichercontroller

Der NOR Flash/PSRAM Speichercontroller lässt sich so kon�gurieren, dass er mit asynchronenSRAM oder NOR Flash EEPROM kommunizieren kann. Dabei wird die asynchrone Kommuni-kation in verschiedene Modi, Mode 1 und Mode 2, geteilt. Zudem gibt es vier weitere Modi,Mode A, Mode B, Mode C und Mode D, für die jeweils die Schreib- und Leseparameter unab-hängig kon�gurierbar sind. Für Mode 1 und Mode 2 gelten bei Schreib- und Lesezugri�e diegleichen Parameter. Alle Betriebsmodi, ob synchron oder asynchron, basieren auf den Daten-und Adresssignalen, wobei die Anzahl der Signale unterschiedlich sein kann.

Eine Operation in einem asynchronen Modi lässt sich in Phasen einteilen. Die unterschiedli-chen Phasen sind die ADDSET-, die DATAST- und die ADDHLD-Phase. Alle Phasen lassensich mit Hilfe von Kon�gurationsregistern in ihrer Dauer kon�gurieren. Diese Kon�gurationwird im Abschnitt 2.2.4 näher beschrieben.In der ADDSET-Phase wird die Adresse vom Master auf die Adressleitungen gelegt. Die Adresseliegt anschließend für die gesamte Dauer einer Operation an den Adressleitungen an. In derADDHLD-Phase ist die Adresse aufgebaut, sie wird von manchen Speichern für die Einhaltungder Speichertimings gebraucht. In der DATAST-Phase werden bei einer Schreiboperation vomMaster die zu schreibenden Daten auf die Datenleitungen gelegt. Bei einer Leseoperation wirdvom Slave der Inhalt der zu lesenden Speicherzelle auf die Datenleitungen gelegt.Am Ende einer Schreiboperation wird zusätzlich ein Takt eingefügt, um die Einhaltung derSpeichertimings der Speicher zu gewährleisten.

Im Folgenden werden alle asynchronen Betriebsmodi des NOR Flash/PSRAM Speichercon-troller vorgestellt. Die Signale des FSMC können hierbei zwei Zustände einnehmen. Sie könnenauf einem hohen und einem niedrigen Pegel stehen. Der hohe Pegel steht für eine digitale Einsund der niedrige Pegel für eine digitale Null.

10

2. Grundlagen

Abbildung 2.4.: Leseoperation (links) und Schreiboperation (rechts) des Mode 1 (Quelle: [5])

Der Mode 1 ist für die Kommunikation mit asynchronen SRAM geeignet. Zusätzlich zuden Signalen, welche in jedem Modi Anwendung �nden, werden im Mode 1 deshalb die NBL-Signale verwendet. Die Abbildung 2.4 zeigt links eine Lese- und rechts eine Schreiboperationdes Mode 1. Zu sehen ist, dass eine Operation mit dem Pegelwechsel von einem hohen auf einenniedrigen Pegel vom NE-Signal beginnt. Bei einer Leseoperation kommt es zusätzlich zu einemPegelwechsel von einem hohen auf einen niedrigen Pegel beim NOE-Signal, dies signalisiertdem Slave freie Datenleitungen. Beide Pegel bleiben für die Summe der kon�gurierten Zeit derDATAST- und ADDSET-Phase bestehen und wechseln dann wieder auf einen hohen Pegel,wobei nach dem Ablauf der ADDSET-Takte die Daten vom Slave auf den Datenbus gelegtwerden müssen. Die beiden NBL-Signale werden auf einen niedrigen Pegel getrieben. DasNWE-Signal bleibt während der Leseoperation konstant auf einem hohen Pegel. Eine Leseope-ration wird durch die Pegelwechsel des NE- und des NOE-Signal von einem niedrigem auf einenhohen Pegel beendet. Bei einer Schreiboperation beginnt die ADDSET-Phase, wie bei einerLeseoperation, wobei bei einer Schreiboperation nach der ADDSET-Phase das NWE-Signal voneinem hohen auf einen niedrigen Pegel getrieben wird und damit die DATAST-Phase beginnt.Das NWE-Signal bleibt die kon�gurierte DATAST Anzahl an Takten auf einem niedrigen Pegel,bevor es anschließend wieder auf einen hohen Pegel wechselt. Während das NWE-Signal aufeinem niedrigen Pegel steht, werden die Daten vom Master auf die Datenleitungen gelegt.Die Schreiboperation endet einen Takt nach dem Pegelwechsel vom NWE-Signal von einemniedrigen zu einem hohen Pegel, mit einem Pegelwechsel des NE-Signals von einem niedrigenzu einem hohen Pegel. Bei beiden Operationen ist zu sehen, dass die Adresse während derganzen Operationsdauer ansteht. Außerdem ist zu erkennen, dass bei jeder Operation dieDaten auch kurz nach einer Operation auf den Datenleitungen liegen.

11

2. Grundlagen

Abbildung 2.5.: Leseoperation (links) und Schreiboperation (rechts) des Mode 2 (Quelle: [5])

Der Mode 2 ist für die asynchrone Kommunikation mit NOR Flash EEPROM zuständig undbenutzt zusätzlich das NADV-Signal. Eine Lese- und eine Schreiboperation des Mode 2 ist in2.5 zu sehen. Der Unterschied vom Mode 2 zum Mode 1 ist, dass das zusätzliche NADV-Signalein anderes Verhalten aufweist als das NBL-Signal des Mode 1. So wird das NADV-Signal amAnfang einer Operation auf einen niedrigen Pegel gelegt. Mit dem Ablaufen der ADDSET-Phasewird durch einen Pegelwechsel auf dem NADV-Signal zu einem hohen Pegel die DATAST-Phase eingeleitet. Dieses Verhalten ist bei Schreib- und Leseoperationen identisch.

Abbildung 2.6.: Leseoperation (links) und Schreiboperation (rechts) des Mode A (Quelle: [5])

Der Mode A ist, wie der Mode 1, für die Kommunikation mit asynchronen SRAM entworfenworden. Die Besonderheit des Mode A ist jedoch, dass sich die Schreib- und Leseparameter un-abhängig voneinander kon�gurieren lassen. Vom zeitlichen Verhalten einer Schreiboperation

12

2. Grundlagen

Abbildung 2.7.: Schreiboperation des Mode B (Quelle: [5])

ändert sich beim Mode A im Gegensatz zu Mode 1 nichts. Die Schreib- und Leseoperation desMode A ist in Abbildung 2.6 dargestellt. Bei einer Leseoperation liegt das NOE-Signal in derADDSET-Phase nicht, wie beim Mode 1, auf einem niedrigen Pegel, sondern auf einem hohenPegel. Das NOE-Signals wird erst mit dem Anfang der DATAST-Phase auf einen niedrigenPegel gelegt und dann, wie beim Mode 1, nach Ablauf der DATAST-Takte zurück auf einenhohen Pegel getrieben.

Mode B ist, wie Mode 2, für die asynchrone Kommunikation mit NOR Flash EEPROM zu-ständig und benutzt somit auch zusätzlich das NADV-Signal. Die Leseoperation vom Mode Bunterscheidet sich von der Leseoperation des Mode 2 nicht und ist somit links in Abbildung2.5 dargestellt. Die Schreiboperationen unterscheiden sich jedoch. Die Schreiboperation desMode B ist in 2.7 zu sehen. Beim Mode B liegt das NWE-Signal in der ADDSET-Phase nicht,wie im Mode 2 auf einem hohen, sondern auf einem niedrigen Pegel. Der Pegelwechsel zueinem hohen Pegel nach der DATAST-Phase �ndet aber weiterhin statt.

Der Mode C ist für die Kommunikation mit einem NOR Flash EEPROM gedacht und benutztsomit das NADV-Signal. Die Dauer der Schreib- und Leseoperationen des Mode C lassensich unabhängig voneinander kon�gurieren. Die Schreiboperation des Mode C ist rechts inAbbildung 2.8 dargestellt und entspricht der Schreiboperation des Mode 2. Es unterscheidetsich lediglich die Leseoperation, welche links in Abbildung 2.8 zu sehen ist. Die Leseoperationweist ein ähnliches Verhalten wie die Leseoperation des Mode B und Mode 2 auf, wobei derUnterschied beim Mode C darin liegt, dass das NOE-Signal in der ADDSET-Phase auf einemhohen Pegel steht und erst mit Anfang der DATAST-Phase auf einen niedrigen Pegel wechselt.

13

2. Grundlagen

Abbildung 2.8.: Leseoperation (links) und Schreiboperation (rechts) des Mode C (Quelle: [5])

Abbildung 2.9.: Leseoperation (links) und Schreiboperation (rechts) des Mode D (Quelle: [5])

Der Mode D ist der letzte asynchrone Modus und verwendet ebenfalls das NADV-Signal.Die Schreib- und Leseoperationen lassen sich von ihrem zeitlichen Verhalten unabhängig von-einander kon�gurieren. In Abbildung 2.9 ist links eine Lese- und rechts eine Schreiboperationdargestellt. Die Besonderheit des Mode D gegenüber allen anderen asynchronen Betriebsmo-di ist die zusätzliche ADDHLD-Phase, welche direkt nach der ADDSET-Phase kommt. DieOperationen im Mode D beginnen, wie bei allen anderen Modi, mit einem Pegelwechsel desNE-Signals. Mit dem Pegelwechsel des NE-Signals von einem hohen zu einem niedrigen Pegel,wird auch das NADV-Signals auf einen niedrigen Pegel gelegt. Der Pegel des NADV-Signalswechselt nach der ADDSET-Anzahl an Takten auf einen hohen Pegel zurück. Damit beginntdie ADDHLD-Phase. Nach der ADDHLD-Phase wechselt bei einer Schreiboperation das NWE-Signal und bei einer Leseoperation das NOE-Signal von einem hohen auf einen niedrigen

14

2. Grundlagen

Pegel. Die DATAST-Phase beginnt. Nach dem Ablauf der DATAST-Anzahl an Takten endetbei einer Leseoperation der Zugri� mit einem Pegelwechsel des NOE- und des NE-Signals aufeinen hohen Pegel. Eine Schreiboperation endet erst einen Takt nach der DATAST-Phase miteinem Pegelwechsel des NE-Signals auf einen hohen Pegel, wobei nach DATAST-Takten dasNWE-Signal bereits auf einen hohen Pegel wechselt.

Zusammenfassend lässt sich zu den asynchronen Modi sagen, dass die Modi sich unterein-ander nur geringfügig unterscheiden. Die unterschiedlichen Modi sind jedoch wichtig, umeine möglichst große Anzahl an Speichern unterstützen zu können.

Abbildung 2.10.: Synchrone Kommunikation zwischen FSMC und NOR/PSRAM als Leseopera-tion (Quelle: [5])

Neben diesen asynchronen Betriebsmodi lässt sich der NOR Flash/PSRAM Speichercontrollerauch synchron, für die Kommunikation mit SRAM und NOR Flash EEPROM, betreiben. Diesynchrone Kommunikation basiert auf dem CLK-Signal des FSMC. In Abbildung 2.10 ist einesynchrone Leseoperation und in Abbildung 2.11 eine synchrone Schreiboperation zu sehen. Es

15

2. Grundlagen

ist jedoch zu beachten, dass im Gegensatz zu den Abbildungen der asynchronen Modi hier zu-sätzlich zur synchronen Betriebsart auch der Daten- und Adresssignal-Multiplexmechanismusdes FSMC genutzt wurde. Das bedeutet, dass die Daten und die Adresse auf den gleichenLeitungen übertragen werden.

Abbildung 2.11.: Synchrone Kommunikation zwischen FSMC und PSRAM als Schreiboperation(Quelle: [5])

Der synchrone Modus beginnt mit dem Pegelwechsel des NE-Signals von einem hohen aufeinen niedrigen Pegel. Ab diesem Zeitpunkt wird die Adresse auf die Adressleitungen gelegt.Parallel zum Pegelwechsel des NE-Signals, wird auch das NADV- und bei einer Schreiboperationdas NWE-Signal von einem hohen auf einen niedrigen Pegel gelegt. Das NADV-Signal istfür zwei HCLK-Takte auf einem niedrigen Pegel, bevor es anschließend wieder auf einenhohen Pegel wechselt. Mit dem niedrigen Pegel auf dem NADV-Signal wird dem Speicherdie Korrektheit der Adresse auf den Adressleitungen zugesichert. Das FSMC-Taktsignal wirdaktiv, sobald eine positive Takt�anke des HCLK auftritt, während das NADV-Signal auf einemniedrigen Pegel steht. Die erste positive Takt�anke taucht dementsprechend erst bei der Hälfte

16

2. Grundlagen

des NADV-Pulses auf. Ab der anschließenden steigenden Takt�anke des FSMC Taktsignalswerden für die kon�gurierte Anzahl an Takten von DATLAT, plus zwei weitere Takte, keineDaten auf die Datenleitungen gelegt. Nach diesen Takten werden zu jeder ansteigendenTakt�anke neue Daten auf die Datenleitungen gelegt. Während des ganzen Zugri�s sinddie NBL-Signale bei einer Kommunikation mit einem NOR Flash EEPROM auf einem hohenPegel und bei einer Kommunikation mit einem SRAM auf einem niedrigen Pegel.Die Leseoperationen und die Schreiboperation unterscheiden sich hauptsächlich im Verhaltendes NOE- und des NWE-Signals. Das NWE-Signal liegt bei einer Schreiboperation dauerhaftauf einem niedrigen Pegel, während es bei einer Leseoperation konstant auf einem hohen Pegelsteht. Das NOE-Signal steht bei einer Schreiboperation auf Hi-Z. Bei einer Leseoperation stehtes zu Beginn der Operation auf einem hohen Pegel und nach der zweiten fallenden Takt�ankedes CLK-Signals wechselt es auf einen niedrigen Pegel. Mit dem Pegelwechsel des NOE-Signalsvon einem hohen auf einen niedrigen Pegel, wird auch die Adresse vom Bus genommen.

NAND/PC Card Speichercontroller

Ein Zugri� auf ein NAND Flash EEPROM oder eine PC Card besteht aus drei Schritten. Beimersten Schritt muss der Speichercontroller ein Kommandobyte in die Kommandosektion desNAND Flash EEPROM schreiben. Dieses Kommandobyte spezi�ziert den Zugri�, d.h. ob pro-grammiert, gelöscht, gelesen oder geschrieben werden soll. Im zweiten Schritt muss eineAdresse in die Adresssektion geschrieben werden.Der letzte Schritt besteht dann nur noch ausdem Lesen oder dem Schreiben der Daten aus der Datensektion.Ein Zugri� auf einen Speicherbereich erfolgt wie in Abbildung 2.12 angegeben. Die Dauerdes Zugri�s wird von den Parametern MEMxSET, MEMxWAIT, MEMxHOLD und MEMxHIZbeein�usst. Diese Parameter werden im Abschnitt 2.2.4 weiter beschrieben. Schreiboperationenunterscheiden sich von Leseoperationen beim Verhalten des NOE- und des NWE-Signals.Bei einer Leseoperation ist das NWE-Signal konstant auf einem hohen Pegel, während esdas NOE-Signal bei einer Schreiboperation ist. Das jeweils andere Signal nimmt den in derAbbildung 2.12 gezeigten Verlauf des NWE-/NOE-Signals an. Bei einer Leseoperation sind diezu lesenden Daten kurz vor und kurz nach dem Pegelwechsel des NOE-Signals von einemniedrigen auf einen hohen Pegel gültig. Die Daten bei einer Schreiboperation werden einenTakt nach dem Pegelwechsel des NWE-Signals von einem hohen auf einen niedrigen Pegelbereitgestellt. Sie verweilen auf den Datenleitungen, bis einen Takt nach dem Pegelwechseldes NWE-Signals von einem niedrien auf einen hohen Pegel.

17

2. Grundlagen

Abbildung 2.12.: NAND/PC Card Speichercontroller Zugri�stimings (Quelle: [5])

In Abbildung 2.13 ist ein kompletter Zugri� auf ein NAND Flash EEPROM zu sehen, d.h.es werden die ersten beiden Schritte ausgeführt. Zu sehen ist, dass zuerst ein Kommando, die0x00, geschrieben wird. Dies lässt sich durch das Command Latch Enable-Signal (CLE-Signal)erkennen, welches für einen Zugri� auf einem hohen Pegel liegt. Die nächsten vier geschriebenBytes sind Adressbytes, was sich an dem Address Latch Enable-Signal (ALE-Signal) erkennenlässt. Manche NAND Flash EEPROM Speicher benötigen eine gewisse Zeit, nachdem das letzteAdressbyte gesendet wurde. Diese Zeit ist in der Abbildung 2.13 als tWB gekennzeichnet undkann durch das Kon�gurieren des MEMHOLD-Parameters angepasst werden. Anschließend andiese Phase, antwortet der Speicher mit einem niedrigen Pegel gefolgt von einem hohen Pegelauf dem Ready/Not Busy-Signal (R/NB-Signal). Mit dieser Antwort signalisiert der Speicher,dass er bereit ist gelesen oder beschrieben zu werden.Das CLE- und das ALE-Signal tauchen bei dem Aufbau des FSMC nicht auf, da es durch Adress-signale übernommen wird. Die Zuordnung von ALE- und CLE-Signal zu einem Adresssignalhängt von der Art des NAND Flash EEPROM ab und wird in [5] beschrieben.

18

2. Grundlagen

Abbildung 2.13.: NAND/PC Card Speichercontroller - Kompletter Zugri� (Quelle: [5])

2.2.4. Konfiguration

Damit der FSMC mit möglichst vielen unterschiedlichen Komponenten kommunizieren kann,sind einstellbare Parameter wichtig. Diese einstellbaren Parameter werden über Registerkon�guriert und in diesem Abschnitt näher beschrieben.

NOR Flash/PSRAM Speichercontroller

Der NOR-/PSRAM Speichercontroller lässt sich mit folgenden Registern kon�gurieren: FSMC_BCRx, FSMC_ BTRx und den FSMC_ BWTRx. Jedes dieser Register umfasst 32 Bits und ist invierfacher Ausführung vorhanden, eine für jede Bank. Die Abbildung 2.14 soll diese Registerin einfacher Ausführung mit ihrem Inhalt darstellen.

Die FSMC_ BCRx Register sind die SRAM/NOR-Flash chip-select control register 1 bis 4 undbeinhaltet Kontrollinformationen für angeschlossene SRAM und NOR Flash EEPROM der vierBänke. Mit Hilfe dieser Register lassen sich unter anderem die Anzahl der Datenleitungen, dasBenutzen des NWAIT-Signals, die Polarität des NWAIT-Signals, das Benutzen der erweitertenModi, die Schreibberechtigung einer Bank , das Benutzen des Burst- oder des Wrap Modes, dieRechte von NOR Flash EEPROM, der Speichertyp und das Adressmultiplexing festlegen. Zudem lässt sich durch diese Register eine Bank aktivieren. Die Auswirkungen von gesetzten

19

2. Grundlagen

Abbildung 2.14.: Register für die Kon�guration des NOR Flash/PSRAM Speichercontrollers(nach Tabelle 249 aus Quelle: [5])

Bits werden im [5] ausführlicher erklärt. Außerdem werden für die bereits im Abschnitt 2.2.3beschriebenen Betriebsmodi Beispiele zur Kon�guration gegeben.Die FSMC_ BTRx sind die SRAM/NOR-Flash chip-select timing register 1..4, welche die zeitli-chen Parameter der Kommunikation, ob synchron oder asynchron, festlegen. Diese Registerbeinhalten zwei Bits für ACCMOD, vier Bits für die DATLAT, vier Bits für CLKDIV, vier Bitsfür BUSTURN, sieben Bits für DATAST, vier Bits für ADDHLD und vier Bits für ADDSET.ACCMOD steht für Access Mode und gibt an welcher der erweiterten Modi aktiv ist, alsoob Mode A, Mode B, Mode C oder Mode D. Der DATLAT-Parameter spielt nur eine Rollebei synchronen Burst-Schreib- und Lesezugri�en. Dieser Parameter gibt an wie viele Taktedes FSMC Takts dem angeschlossenen Speicher zur Verfügung gestellt werden, bevor dieseranfängt die Daten das erste Mal zu lesen. Dabei werden dem Speicher die kon�gurierte Anzahlvon DATLAT, plus zwei weitere Takte, zur Verfügung gestellt. Der CLKDIV-Parameter ist derFaktor durch den das angeschlossene Taktsignal, welches aus dem Abschnitt 2.2.1 bekannt ist,geteilt wird und damit das FSMC-Taktsignal ergibt. Auch dieser Parameter wird nur bei einersynchronen Kommunikation betrachtet. Der BUSTURN-Parameter gibt die Dauer der Phasezwischen zwei aufeinanderfolgenden Zugri�en an. Dieser Parameter wird in asynchronen undsynchronen Kommunikationen mit einbezogen und in Takten des angeschlossenen Taktesangegeben. Die Parameter DATAST, ADDHLD und ADDSET sind die bereits aus dem Abschnitt2.2.3 bekannten Phasen der asynchronen Kommunikation und werden in Takten des an denFSMC angeschlossenen Taktsignals angegeben.

20

2. Grundlagen

Die FSMC_ BWTRx sind die SRAM/NOR-Flash chip-select write timing register 1..4 und bietendie Option die zeitlichen Parameter einer asynchronen Schreiboperation zu kon�gurieren.Diese Register enthalten alle Bits der FSMC_ BTRx Register, bis auf die Bits für die synchroneKommunikation, also die CLKDIV-Bits und die DATLAT-Bits. Beachtet werden diese Registernur bei der Verwendung der erweiterten Modi, denn bei der Verwendung der erweiterten Modiwerden die FSMC_ BTRx für die zeitlichen Parameter der Leseoperationen verwendet und dieFSMC_ BWTRx für die zeitlichen Parameter der Schreiboperationen.

Parameter Minimum MaximumADDSET 0 15ADDHLD 1 15DATAST 1 256BUSTURN 0 15CLKDIV 2 16DATLAT 2 17

Tabelle 2.1.: Minimum- und Maximumwerte der Timingparameter des NOR/PSRAMSpeichercontrollers

Für die Timingparameter werden in [5] Minimum- und Maximumwerte beschrieben. DieseWerte werden in der Tabelle 2.1 dargestellt. Die Werte werden in HCLK-Takten angegeben, bisauf der Wert für den DATLAT Timingparameter, dieser Wert bezieht sich auf das CLK-Signalder angeschlossenen Komponente.

NAND/PC Card Speichercontroller

Der NAND/PC Card Speichercontroller lässt sich mit folgenden Registern kon�gurieren: FSMC_PCRx, FSMC_ SRx, FSMC_ PMEMx, FSMC_ PATTx, FSMC_ ECCR2, FSMC_ ECCR3 und demFSMC_ PIO4. Hierbei steht das x für die Zahlen zwei, drei und vier und stehen somit für dieentsprechende Bank. Die Abbildung 2.15 soll diese Register und ihren Inhalt darstellen.Die FSMC_ PCRx Register sind die NAND Flash/PC Card control register 2 bis 4 und beinhaltetKontrollinformationen für angeschlossene NAND Flash EEPROM und PC Card. Mit Hilfe dieserRegister lassen sich unter anderem die Anzahl der Datenleitungen, die Art der angeschlossenenKomponente und das Verhalten des ALE- und des CLE-Signals kon�gurieren. Außerdem lässtsich über diese Register die Elliptic Curve Cryptography (ECC) einschalten.Die FSMC_ SRx Register sind die FIFO status und interrupt register 2 bis 4. Diese Registergeben Informationen über den Status und Interrupts des FIFO vom FSMC. Der FSMC hat einen

21

2. Grundlagen

Abbildung 2.15.: Register für die Kon�guration des NAND/PC Card Speichercontrollers (nachTabelle 249 aus Quelle: [5])

FIFO damit schnelle aufeinanderfolgende Zugri�e gespeichert werden und dann Schritt fürSchritt abgearbeitet werden, um den AHB-Bus des Mikrocontrollers nicht zu lange zu belegen.Die Register geben unter anderem Auskunft darüber, ob der FIFO leer ist. Außerdem lassensich Interrupts kon�gurieren und ihr Status auslesen und zurücksetzen.Die FSMC_ PMEMx Register sind die Common memory space timing register 2 bis 4 und sindfür die Kon�guration der Timingparameter, MEMHIZ, MEMHOLD, MEMWAIT und MEMSET,zuständig. MEMSET ist der Timingparameter , welcher die Anzahl an HCLK Takten widerspie-gelt, die angeben wie lange eine Adresse aufgebaut wird, bevor ein Kommando gesendet wird.Gefolgt wird die MEMSET-Phase von der MEMWAIT-Phase, welche durch den MEMWAIT-Parameter bestimmt wird. Der MEMWAIT-Parameter oder auch Memory Wait, gibt die Daueran wie lange ein Kommando minimal anliegt. Die anschließende Phase ist die Memory HoldPhase und wird vom Parameter MEMHOLD in ihrer Dauer beein�usst. MEMHOLD gibt anwie lange die Adresse, und bei Schreiboperationen auch die Daten, nach dem das CLE-Signalwieder auf den Pegel 0 zurück wechselt, ansteht. Der letzte Parameter, Memory databus high-Zoder auch MEMHIZ, gibt an wie lange der Datenbus nach dem Starten einer Schreiboperationauf HI-Z liegt.Die FSMC_ PATTx Register sind die Attribute memory space timing register 2 bis 4. DieseRegister kong�gurieren die Timingparameter für den Zugri� auf den Attribut Adressbereicheines NAND Flash EEPROM oder einer PC Card.Das FSMC_ PIO4 Register ist das I/O space timing register 4 und kon�guriert die Timingpara-meter für den Zugri� auf den I/O Adressbereich von PC Card.

22

2. Grundlagen

Die letzten Register sind das FSMC_ ECCR 2 und das FSMC_ ECCR 3 und sind ECC re-sult register. Diese Register beinhalten den aktuellen ECC-Wert, welcher von dem ECC-Berechnungsmodul des FSMC errechnet wurde.

Die Tabelle 2.2 gibt die Minimum- und Maximumwerte der Timingparameter des NAND/PCCard Speichercontrollers an, welche in [5] zu �nden sind. Alle Werte sind in HCLK-Taktenangegeben.

Parameter Minimum MaximumMemory setup time 1 255Memory wait 2 256Memory hold 1 254Memory databus high-Z 0 255

Tabelle 2.2.: Minimum- und Maximumwerte der Timingparameter des NAND/PC CardSpeichercontrollers

2.3. Mikroprozessorinterface

Ein Mikroprozessorinterface wird in dieser Arbeit als eine Schnittstelle für einen Mikropro-zessor interpretiert, welche für eine einfache Ansteuerung von Komponenten dient. SolcheSchnittstellen bestehen oft aus einem oder mehreren Status und Control Registern. Außerdemgibt es verschiedene Register für die Behandlung von Interrupts und anderen komponenten-bezogenen Daten. Diese Register unterscheiden sich nicht nur durch ihre Funktion, sondernauch durch die Zugri�srechte, so ist es zum Beispiel üblich, dass Status Register nur gelesenund Control Register nur beschrieben werden können. Im diesem Abschnitt sollen möglicheRegister eines Mikroprozessorinterfaces vorgestellt und deren Nutzen erklärt werden.

Status RegisterStatus Register sind Register, welche den Status einer Komponente wiedergeben sollen. Oftwerden Fehler, Betriebsstatus und auch Kon�gurationen angezeigt. Status Register werdenmeist durch Hardware gesetzt und zurückgesetzt. Es gibt aber auch Varianten bei denen dasZurücksetzen vom Nutzer per Software übernommen wird. In manchen Fällen gibt es auchmehrere Status Register, wobei ein Teil durch Hardware und der andere Teil durch Softwaregelöscht wird. Beispiele für Status Register �nden sich in [5], wie zum Beipiel die FSMC_ SRxdes NAND/PC Card Speichercontrollers.

23

2. Grundlagen

Control RegisterControl Register sind die Register, über welche die zugehörige Komponente kon�guriert wer-den kann. In Control Registern wird das Verhalten festgelegt, Ereignisse ausgelöst, Fehlerzurückgesetzt und andere komponenten-bezogene Inhalte kon�guriert. Auf Control Registerlässt sich oft nur schreibend zugreifen. Hierbei wird aber zwischen zwei Arten unterschieden,bei einer Art von Control Registern wird durch das Schreiben einer Eins an eine Stelle daszugehörige Bit gesetzt, bis es wieder von der Software durch das Schreiben einer Null zurückge-setzt wird. Die andere Art der Control Register reagiert durch das Schreiben einer Eins an eineStelle des Registers mit einem Ereignis und setzt anschließend dieses Bit zurück. Diese Artenkönnen auch gemischt vorkommen. Die bereits aus dem Abschnitt 2.2.4 bekannten FSMC_BCRx und FSMC_ PCRx Register sind Beispiele für Control Register.

Andere RegisterNeben Status- und Control-Registern werden auch oft Register für Interrupts verwendet, wieInterrupt-Enable-Register, Interrupt-Clear-Register oder Interrupt-Status-Register. Diese spezi-ellen Interrupt-Register werden benutzt, wenn mehrere Interrupt-Quellen verwaltet werdenmüssen. Für einen einzelne Interruptquelle werden die Informationen meist mit in Control-und Status-Register aufgenommen.Zu Mikroprozessorinterface-Registern können aber auch noch andere komponenten-spezi�scheRegister gehören, wie zum Beispiel Daten- und Address-Register.

Für diese Arbeit wird ein Mikroprozessorinterface in die Kommunikationsschnittstelle aufdem FPGA integriert. Das Mikroprozessorinterface bildet somit für den Mikrocontroller eineSchnittstelle zur Anwendung des FPGAs.

2.4. Aufbau des Systems

Dieser Abschnitt unterscheidet sich von den anderen Abschitten dieses Kapitels, da es sich beidiesem Abschnitt nicht mehr um Grundlagen zum Vermitteln von Fachwissen handelt. DieserAbschnitt befasst sich lediglich mit dem Aufbau des vorliegenden Systems.

Für diese Bachelorarbeit wird ein Xynergy-Board von SILICA benutzt, welches ein STM32F417IGH6,mit einem ARM Cortex M4, und ein XC6SLX16-2CSG324C Spartan-6 FPGA miteinander ver-eint. Dieses Board ist für diese Arbeit gut geeignet, da es mit dem STM32F417IGH6 einenMikrocontroller mitbringt, welcher bereits einen FSMC integriert. Der Mikrocontroller arbeitet

24

2. Grundlagen

Abbildung 2.16.: HAW-Board mit integriertem Xynergy-Board

mit einem 168 MHz Takt, das FPGA hingegen mit einer 25 MHz Taktquelle.Das Xynergy-Board ist in Abbildung 2.16 als grünes Board zu sehen. Es ist auf einem Boardintegriert, welches die Hochschule für angewandte Wissenschaften (HAW) Hamburg für dieLehre verwendet. Dieses Board bietet unter anderem den Vorteil, dass einige Pins des STM32und des Spartan-6 FPGA nach außen geführt wurden. Somit ist eine nachträgliche Verbindungvon STM32 und Spartan-6 FPGA möglich.

Abbildung 2.17.: Reduzierter Aufbau des Xynergy-Boards

In Abbildung 2.17 ist der Aufbau des Xynergy-Boards vereinfacht dargestellt. Es ist ange-deutet, dass das FPGA und der Mikrocontroller durch die geteilten Signale und die Signale desNOR/PSRAM Speichercontrollers des FSMC miteinander verbunden sind. Durch welche Pinsdiese Signale miteinander verbunden sind, lässt sich in [4] erfahren.

25

3. Anforderungen an dieKommunikationsschni�stelle

Die für diese Arbeit zu entwickelnde Kommunikationsschnittstelle soll in erster Linie eine Ver-einfachung der Kommunikation zwischen einem STM32F4 Mikrocontroller und einem FPGAder Spartan-6 Familie darstellen. Zudem soll es helfen eine Anwendung auf der FPGA-Seite zubeobachten und zu steuern. Dafür bestehen Anforderungen an diese Kommunikationsschnitt-stelle, welche in diesem Kapitel beschrieben werden.

Die Abbildung 3.1 zeigt einen möglichen Aufbau eines Mikrocontrollers und eines FPGAs mitbereits integrierter Kommunikationsschnittstelle. Die Pfeile stehen für die unterschiedlichenKommunikationen zwischen den beteiligten Komponenten. Es ist zu erkennen, dass die Anwen-dung des Mikrocontrollers nur über den FSMC und die Kommunikationsschnittstelle mit derAnwendung des FPGA kommuniziert. Außerdem werden die Komponenten der Kommunikati-onsschnittstelle und ihre Funktion verdeutlicht. Die digitale Schaltung für die Kommunikationin der Kommunikationsschnittstelle ist für die Übersetzung des FSMC-Protokolls in wichtigeInformationen für das Mikroprozessorinterface zuständig. Ein Teil dieser Informationen wirdvom Mikroprozessorinterface an die Anwendung des FPGAs übertragen. Zudem kann dieAnwendung auf dem FPGA Informationen für das Mikroprozessorinterface bereitstellen.

3.1. Funktionale Anforderungen

Dieser Abschnitt beschäftigt sich mit den Funktionen, welche von der Kommunikationsschnitt-stelle erfüllt werden sollen. Im Folgendem werden diese Funktionen beschrieben.

Kommunikation von FPGA und MikrocontrollerEine der grundlegenden Funktionen der Kommunikationsschnittstelle soll die Kommunikationzwischen FPGA und Mikrocontroller sein. Die Kommunikationsschnittstelle muss dafür Schreib-und Leseoperationen basierend auf dem FSMC-Protokoll erkennen und angemessen daraufreagieren können. Zu dieser Reaktion zählt zum einen das Bereitstellen von korrekten Daten

26

3. Anforderungen an die Kommunikationsschnittstelle

Abbildung 3.1.: Komponentenübersicht des Mikrocontrollers und des FPGAs

bei Leseoperationen und zum anderen das möglicherweise nötige Ausbremsen einer Operation,falls eine Komponente nicht bereit ist fortzufahren.

Bereitscha�sstatus der AnwendungWie bereits im Kapitel 1.1 beschrieben, soll hinter der Kommunikationsschnittstelle eineAnwendung stehen. Der Status dieser Anwendung soll über das Mikroprozessorinterfaceder Kommunikationsschnittstelle beobachtet werden können. Zum Status der Anwendunggehört unter anderem der Bereitschaftsstatus. Der Bereitschaftsstatus soll signalisieren, ob eineAnwendung gerade beschäftigt oder bereit für eine neue Aktion ist. Dieser Status soll auchwährend die Anwendung läuft ausgelesen werden können. Darüber hinaus soll der Status derAnwendung aus einem Fehler-Signal bestehen. Dieses Fehler-Signal kann von der Anwendungerzeugt und aus dem Mikroprozessorinterface der Kommunikationsschnittstelle ausgelesenwerden.

Starten der AnwendungDas Starten einer vom FPGA implementierten Anwendung soll durch ein Startereignis, welchesdurch den Benutzer ausgelöst wird, eingeleitet werden können. Das von der Anwendung zuinterpretierende Startereignis wird im Anhang A.2 beschrieben.

27

3. Anforderungen an die Kommunikationsschnittstelle

InterruptsWenn eine Anwendung gestartet worden ist und anschließend erfolgreich ihre Aufgabe beendet,soll ein Interrupt ausgegeben werden können. Anstehende Interrupts sollen anhand einesInterrupt-Status in der Kommunikationsschnittstelle signalisiert werden. Außerdem soll dieMöglichkeit bestehen, dass ein Interrupt-Request direkt zum Mikrocontroller übertragen wird.Interrupts sollen sich durch Software aber auch durch Hardware zurücksetzen lassen.

Zugri� auf das MikroprozessorinterfaceDie Register des Mikroprozessorinterfaces erlauben nur beschränkten Zugri�. Ein StatusRegister darf nur gelesen und ein Control Register nur beschrieben werden. Die zugehörigenDatenregister befolgen anwendungsbezogenen Zugri�sbeschränkungen. Wird gegen dieseZugri�sbeschränkungen verstoßen, wird ein Schreib- oder Lesefehler signalisiert.

FehlerNeben dem Fehler der Anwendung und den Schreib- und Lesefehlern, soll auch ein Fehlersignalisiert werden, sollte sich die Kommunikationsschnittstelle in einem unerreichbarenZustand be�nden.Alle Fehler sollen sich nur durch Software zurücksetzten lassen.

3.2. Nichtfunktionale Anforderungen

Im Vordergrund der nichtfunktionalen Anforderungen soll für diese Arbeit die Performanceliegen. Die Performance der Kommunikationsschnittstelle wird am stärksten durch die Dauereiner Schreib- oder Leseoperation, also die Kommunikation von FPGA und FSMC, beein�usst,weshalb diese möglichst kurz zu halten ist.Neben der Performance sollte die entwickelte Kommunikationsschnittstelle möglichst portier-bar sein, um sie auch auf anderen Systemen einsetzen zu können. Hierfür sollte die Kommuni-kationsschnittstelle möglichst wenig von der genutzten Hardware abhängig sein.

28

4. Entwurf derKommunikationsschni�stelle

Die zu entwerfende Kommunikationsschnittstelle soll aus zwei Teilen bestehen. Zum einen auseiner digitalen Schaltung, welche für die eigentliche Kommunikation über das FSMC-Protokollverantwortlich ist und zum anderen aus einem Mikroprozessorinterface, welches die restlichenbereits im letzten Kapitel beschriebenen funktionalen Anforderungen erfüllen soll. Der Entwurffür eine solche Kommunikationsschnittstelle wird in diesem Kapitel beschrieben.

4.1. Digitale Schaltung des FSMC-Protokolls

Die digitale Schaltung für die Kommunikation über das FSMC-Protokoll ist der ausschlagge-bendste Anteil für die Performance der Kommunikationsschnittstelle, weshalb sich in diesemAbschnitt auf den Entwurf dieser Schaltung konzentriert wird. Die digitale Schaltung wirdauf dem FPGA kon�guriert und stellt somit den Kommunikationspartner des FSMC dar. Umeine performante Kommunikation zu realisieren spielt die Wahl und die Kon�guration desBetriebsmodus des FSMC also eine entscheidende Rolle. Es wurden die Speichercontrollerdes FSMC analysiert und verglichen, um die Auswahl der Betriebsmodi einzuschränken. Indiesem Abschnitt werden drei Entwürfe für eine mögliche digitale Schaltung vorgestellt undanschließend einer gewählt.

4.1.1. Vergleich - NOR/PSRAM Speichercontroller / NAND/PC CardSpeichercontroller

Der Vergleich der beiden Speichercontroller dient der Einschränkung der möglichen Betriebs-modi für die Kommunikationsschnittstelle, um anschließend die übrigen Betriebsmodi mit dereigenen Analyse analysieren zu können. Die Wahl des Speichercontrollers wird aufgrund derDaten aus dem [5] getro�en und basiert somit auf den Herstellerinformationen.

29

4. Entwurf der Kommunikationsschnittstelle

Betrachtet man einen einzelnen Zugri� des NAND/PC Card Speichercontrollers, wie erin 2.12 dargestellt ist, mit dem Wissen aus der Tabelle 2.2, wird klar, dass für einen Zugri�mindestens sieben HCLK Takte erforderlich sind. Diese Rechnung wird in 4.1 verdeutlicht undgeht von den minimalen Timingparametern aus.

NOp = (MEMSET + 1) + (MEMWAIT + 1) + (MEMHOLD + 1)

NminOp = (1 + 1) + (2 + 1) + (1 + 1) = 7(4.1)

NOp Dauer einer Operation in 168 MHz TaktenNminOp Dauer einer Operation mit minimalen Timingparametern in 168 MHz Takten

Um einen Vergleich mit dem NOR/PSRAM Speichercontroller zu scha�en, wird der asyn-chrone Modus A aus Abbildung 2.6 mit seinen minimalen Timingparametern aus Tabelle 2.1betrachtet. Dieser Zugri� benötigt minimal zwei Takte. Dies geht aus der Berechnung 4.2hervor. Zu beachten ist hier jedoch, dass diese Zugri�sdauer für eine Schreiboperation gilt.Eine Leseoperation wäre um einen Takt schneller, also in einem HCLK Takt möglich. DieseBerechnung ist für alle anderen asynchronen Modi des NOR/PSRAM Speichercontroller, bisauf Modus D, gültig. Modus D benötigt durch die zusätzliche ADDHOLD-Phase einen Taktmehr.

NOp = ADDSET + (DATAST + 1)

NminOp = 0 + (1 + 1) = 2(4.2)

NOp Dauer einer Schreiboperation in 168 MHz TaktenNminOp Dauer einer Schreiboperation mit minimalen Timingparametern in 168 MHz Takten

Der Vergleich der minimalen Operationsdauern ergibt, dass der NOR/PSRAM Speichercon-troller dem NAND/PC Card Speichercontroller in der Theorie überlegen ist. Nützlich wird derNAND/PC Card Speichercontroller erst, wenn mehrere hintereinanderliegende Speicherzellenausgelesen werden sollen. Dies ist für unsere Anwendung eines Mikroprozessorinterfacesjedoch nicht der Fall. Aus diesem Grund wurde sich für diese Arbeit für den NOR/PSRAMSpeichercontroller entschieden.

30

4. Entwurf der Kommunikationsschnittstelle

4.1.2. Analyse des NOR/PSRAM Speichercontrollers

Im vorherigen Abschnitt wurde sich bereits für einen Speichercontroller, den NOR/PSRAMSpeichercontrollers, entschieden und somit die Auswahl der Betriebsmodi eingegrenzt. Es blei-ben die asynchronen und ein synchroner Betriebsmodi des NOR/PSRAM Speichercontrollers.Diese Betriebsmodi wurden durch eine eigene Analyse analysiert. Die Analyse wird dabei wieim Anhang A.1 beschrieben durchgeführt. Durch die Analyse wurden wichtige Informationenüber die Timingparameter und ihre Auswirkungen auf die Zugri�e gesammelt. Im Folgendensollen nur die wichtigsten Erkenntnisse, welche die Performance beein�ussen, vorgestelltwerden.

CLK_DIV - TimingparameterWährend der Analyse des NOR/PSRAM Speichercontrollers wurde festgestellt, dass der CLK_DIVTimingparameter für den synchronen Betriebsmodi, nicht wie im [5] angegeben mit mindes-tens zwei kon�guriert werden kann, sondern auf der vorliegenden Hardware lediglich miteinem Wert von fünf. Durch diese Änderung arbeiten die Signale des FSMC im synchronenBetriebsmodi mit einer Frequenz von 33,6 MHz, statt mit einer Frequenz von 84 MHz. Dieshat deutliche Auswirkung auf die Performance. Die Berechnung dieser Frequenzen ist in 4.3dargestellt.

fmaxDat =168MHz

CLK_DIVminDat=

168MHz

2= 84MHz

fmaxA =168MHz

CLK_DIVminA=

168MHz

5= 33, 6MHz

(4.3)

fmaxDat maximal einstellbare Frequenz nach DatenblattfmaxA maximal einstellbare Frequenz nach AnalyseCLK_DIVminDat minimaler Wert für den CLK_DIV aus dem DatenblattCLK_DIVminA minimaler Wert für den CLK_DIV nach Analyse

Verfügbarkeit der Daten und der AdresseDurch die Analyse wurden Informationen über das Anstehen der Daten und der Adresse zuden unterschiedlichen Phasen einer Kommunikation gewonnen. Diese Informationen sind

31

4. Entwurf der Kommunikationsschnittstelle

für den Entwurf einer digitalen Schaltung für die Kommunikation besonders wichtig, da dieDaten und die Adresse die wesentlichen Bestandteile einer Kommunikation bilden. Es wurdefestgestellt, dass die Adresse sich bereits kurz vor einem Zugri� aufbaut und erst nach diesemZugri� wieder verändert wird. Somit steht die Adresse schon bei Beginn der ADDSET-Phasean. Die Daten verhielten sich wie erwartet, sie wurden also zum Anfang der DATAST-Phaseaufgebaut und verweilten bis zum Ende eines Zugri�s auf den Datenleitungen.

Ausgrenzung von SignalenDurch die Analyse ließen sich Signale erkennen, welche synchrone Pegelwechsel aufwiesenoder keine nützlichen Information für die Kommunikation mit einem FPGA enthielten. Somitließ sich die Anzahl der Signale, von denen eine Kommunikationsschnittstelle abhängig ist,minimieren. Zu solchen weggelassenen Signalen zählen unter anderem das FSMC_NL- und dieFSMC_NBL-Signale.

Diese Informationen haben geholfen die im nächsten Abschnitt vorgestellten Entwürfe füreine digitale Schaltung zu entwerfen.

4.1.3. Asynchroner Entwurf - Parameter

Dieser Entwurf basiert auf den asynchronen Betriebsmodi des NOR/PSRAM Speichercontrol-lers und soll durch Anpassen der Timingparameter dem FPGA das Abtasten der FSMC-Signaleermöglichen.

fabtast = 2 ∗ fmax

25MHz = 2 ∗ fmax

12, 5MHz = fmax

(4.4)

fabtast Abtastfrequenzfmax Maximal auftretende Frequenz eines Signals

Der Aufbau des Systems, welcher bereits in 2.4 beschrieben wurde, beinhaltet ein Spartan-6FPGA mit einer 25 MHz Taktquelle, weshalb die FSMC-Signale nach dem Nyquist-Shannon-Abtasttheorem eine Frequenz von 12,5 MHz nicht überschreiten dürfen, da das FPGA sonst

32

4. Entwurf der Kommunikationsschnittstelle

nicht mehr in der Lage wäre, die FSMC-Signale abzutasten.Das Nyquist-Shannon-Abtasttheorem besagt, um ein Signal mit einer maximal begrenztenFrequenz abtasten zu können, muss die Abtastfrequenz mindestens doppelt so groß wie diemaximale Frequenz sein. In 4.4 wird die maximale Frequenz der FSMC-Signale berechnet,welche verwendet werden darf, damit das Spartan-6 FPGA diese abtasten kann.

Modi und Konfiguration des FSMCUm eine Frequenz von 12,5 MHz der FSMC-Signale zu erzeugen, müssen die verwendetenTimingparameter auf einen Wert von 13,44 kon�guriert werden. Da die Timingparameterganzzahlig sein müssen und die Abtastfrequenz nicht unterschritten werden darf, werden dieTimingparameter auf 14 aufgerundet. Dies geht aus folgender Berechnung 4.5 hervor.

Ntiming =ffsmc

fmax

Ntiming =168MHz

12, 5MHz= 13, 44

(4.5)

Ntiming Anzahl der Takte für die Timingparameterffsmc Frequenz des FSMCfmax Maximale Frequenz der FSMC-Signale

Der verwendete asynchrone Modus für diesen Entwurf sollte nur die Phasen ADDSETund DATAST verwenden. ADDSET kann für diesen Entwurf jedoch auf einen Wert von Nullkon�guriert werden, da diese Phase keine nötigen Informationen bei einer Kommunikationmit einem FPGA enthält.

Es wurde bereits errechnet, dass das FPGA 14 FSMC Takte benötigt um den Anfang einerOperation zu erkennen. Um eine Operation also lediglich 14 FSMC Takte andauern zu lassen,muss der DATAST Timingparameter für eine Schreiboperation auf einen Wert von 13 und füreine Leseoperation auf einen Wert von 14 kon�guriert werden. Dieser Unterschied entstehtdurch den zusätzlichen Takt nach der DATAST-Phase bei Schreiboperationen.

33

4. Entwurf der Kommunikationsschnittstelle

Abbildung 4.1.: Zeitlicher Verlauf der FSMC-Signale während einer Leseboperation mit einerdigitalen Schaltung im Parameter-Entwurf

Abbildung 4.2.: Zeitlicher Verlauf der FSMC-Signale während einer Schreiboperation mit einerdigitalen Schaltung im Parameter-Entwurf

Um diese Anforderungen zu erfüllen, sollte einer der erweiterten asynchronen Betriebsmodigewählt werden. Modus D sollte jedoch nicht benutzt werden, da er die zusätzliche PhaseADDHLD einschließt.

Dauer einer OperationMit den bereits errechneten Timingparametern und einem gewählten erweiterten asynchronenBetriebsmodus, könnte eine Leseoperation, wie in Abbildung 4.1 und eine Schreiboperation,wie in Abbildung 4.2 aussehen. Es ist zu sehen, dass eine Schreib- oder Leseoperation für denSTM32 14 FSMC-Takte dauert.Das FPGA muss jedoch alle Flanken erkennen, welche für eine Kommunikation wichtig sind,also die fallende und steigende Flanke des NE-Signals und die fallende Flanke des NOE- oderdes NWE-Signals. Durch das Weglassen der ADDSET-Phase fallen die Pegel der Signale NWE,NOE und NE zum gleichen Zeitpunkt. In einer Operation entstehen so zwei unterschiedlicheFlanken, welche erkannt werden müssen. Die steigende Flanke des NE-Signals lässt sich in zweiSpartan-6 Takten, also in 13,44 FSMC Takten, erkennen. Die fallende Flanke kann währendeiner Operation erkannt werden.Der FSMC muss so kon�guriert werden, dass erst 13,44 FSMC Takte nach Ende einer Operationeine neue Operation beginnen darf, als Kon�gurationsparameter also 14 FSMC Takte. Es ergibt

34

4. Entwurf der Kommunikationsschnittstelle

sich also für eine Schreib- oder eine Leseoperation eine Gesamtdauer von maximal 28 FSMCTakten.

Bewertung des EntwurfsDer Vorteil einer digitalen Schaltung für diesen Entwurf wäre ein voll synchrones Design,da das FPGA durch das Anpassen der FSMC Pegelwechsel die interne Taktquelle für dieFlankenerkennung verwenden kann.Der Nachteil dieses Entwurfes ist jedoch, dass die Dauer einer Lese- oder Schreiboperation 28Takte beträgt und damit relativ lang ist.

4.1.4. Asynchroner Entwurf - Wait

Dieser Entwurf basiert, wie der vorherige Entwurf, auf den asynchronen Modi des NOR/PS-RAM Speichercontrollers. Das Besondere an diesem Entwurf ist, dass das FPGA durch dasFSMC_NWAIT-Signal signalisiert, ob es bereit zum Weiterarbeiten ist oder nicht. Dafür wirddas FSMC_NWAIT-Signal am Anfang eines Zugri�s auf einen Pegel gelegt, welcher den STM32warten lässt. Nachdem eine Operation vom STM32 gestartet wird, wird dies innerhalb vonzwei 25 MHz-Takten vom Spartan-6 FPGA erkannt. Das FPGA reagiert darauf mit einemPegelwechsel des FSMC_NWAIT-Signals, sodass der STM32 die Operation abschließt.

Modi und Konfiguration des FSMCDas FSMC_NWAIT-Signal kann nur die DATAST-Phase verlängern, nicht die ADDSET- oderdie ADDHLD-Phase, weshalb bei diesem Entwurf die ADDSET- und die ADDHLD-Phasedurchlaufen würden, auch wenn seit dem Anfang der Operation ein Wait-Signal ansteht.Aus diesem Grund sollen diese Phasen vermieden werden. Für diesen Entwurf sind also alleasynchronen Betriebsmodi, bis auf Modus D, gleichermaßen geeignet. Es ist der ADDSET-Parameter jedoch auf einen Wert von Null zu kon�gurieren.Außerdem wichtig für das FSMC_NWAIT-Signal ist, dass es mindestens vier FSMC-Takte vorEnde eines Zugri�s erkannt werden muss, weshalb der Timingparameter DATAST geeigneteingestellt werden muss.

Dauer einer OperationEine Schreiboperation könnte also wie in Abbildung 4.3 dargestellt aussehen. Dieses Beispielkann auf alle Betriebsmodi, bis auf Modus D, angewendet werden. Wie beschrieben ist zu sehen,dass das NWAIT-Signal anfangs auf einem niedrigen Pegel liegt, um den FSMC warten zulassen. Außerdem ist zu erkennen, dass das NWAIT-Signal zwei Spartan-6 Takte, also ungefähr

35

4. Entwurf der Kommunikationsschnittstelle

Abbildung 4.3.: Zeitlicher Verlauf des Wait-Signals während einer Schreiboperation

Abbildung 4.4.: Zeitlicher Verlauf des Wait-Signals während einer Leseoperation

14 168 MHz Takte, auf diesem Pegel verweilt. Nach dem Ablaufen dieser Takte wurde eineOperation vom Spartan-6 erkannt und mit einem Pegelwechsel des NWAIT-Signals signalisiert.Dieser neue hohe Pegel steht einen 25 MHz Takt lang an, bevor er wieder auf einen niedrigenPegel wechselt. Dieser eine 25 MHz Takt entspricht ungefähr 6,7 FSMC-Takten. Dies ist aberunkritisch, da eine Operation nach dem Einfügen von Wait-States nur noch vier FSMC-Takteandauert. Die Leseoperation ist in Abbildug 4.4 zu sehen und unterscheidet sich in der Dauerzur Schreiboperation nicht, da der zusätzliche Takt der Schreiboperation zu den 4 Takten nachdem Einfügen der Wait-States dazu zählt.

NmaxOp = 2 ∗NFPGA +NReaktion

NmaxOp = 2 ∗ 6, 72 + 4 = 13, 44 + 4 = 17, 44(4.6)

NmaxOp Maximale Dauer einer Operation in 168 MHz TaktenNFPGA Dauer eines 25 MHz Takts in 168 MHz TaktenNReaktion Reaktionszeit des FSMC auf den NWAIT-Pegel in 168 MHz Takten

Die Dauer einer Leseoperation und einer Schreiboperation setzt sich also, wie in 4.6 darge-stellt, aus zwei Spartan-6 Takten für die Reaktion des NWAIT-Signals auf die fallende Flanke des

36

4. Entwurf der Kommunikationsschnittstelle

NE-Signals und vier FSMC-Takten für die Reaktion des FSMC auf den Pegel des NWAIT-Signalszusammen und beträgt ungefähr 18 FSMC-Takte. Diese Dauer wurde anhand der vorliegendenInformationen berechnet.

Bewertung des EntwurfsDieser Entwurf lässt kein voll synchrones Design zu, da die Pegelwechsel der FSMC-Signalesynchron nicht sicher erkannt werden können. Aus diesem Grund werden für das Sichernder Daten und der Adresse pegelgesteuerte Latches, statt �ankengesteuerte Daten-Flip-Flops(D-FF), verwendet. Auch das Erzeugen des NWAIT-Signals wird mit Latches gelöst.Die Vorteile dieses Entwurfes sind die schnellen Schreib- und Leseoperationen.

4.1.5. Synchroner Entwurf

Dieser Entwurf basiert auf dem synchronen Betriebsmodus des NOR/PSRAM Speichercon-trollers und stellt dem Spartan-6 FPGA somit eine Taktquelle, das FSMC_CLK-Signal, zurVerfügung. Mit Hilfe der FSMC_CLK braucht das FPGA die Signale nicht abzutasten und kannsynchron auf die Pegelwechsel reagieren.

Dauer einer OperationEine Schreiboperation würde wie in 2.11 und eine Leseoperation wie in 2.10 aussehen. DerUnterschied vom Entwurf zur Abbildung ist jedoch, dass der CLK_DIV-Parameter in denAbbildungen auf einem Wert von zwei liegt. Unsere Hardware erlaubt, wie bereits in 4.1.2erwähnt, aber nur einen Wert von minimal fünf, weshalb die FSMC_CLK maximal 33,6 MHzbeträgt.In 4.7 wird die Dauer eines synchronen Zugri�es in STM32 Takten berechnet. Ein Zugri�dauert 30 STM32 Takte.

NOp = CLK_DIVmin ∗ (NNADV + (DATLATmin + 2) +NDaten)

NOp = 5 ∗ (1 + (2 + 2) + 1) = 30(4.7)

NOp Anzahl an 168 MHz Takten für eine OperationCLK_DIVmin Minimaler Wert des CLK_DIV TimingparametersDATLATmin Minimaler Wert des DATLAT TimingparametersNNADV Anzahl an CLK-Takten für die Erzeugung des CLK SignalsNDaten Anzahl an CLK-Takten für das Übertragen von 16-Bit Daten

37

4. Entwurf der Kommunikationsschnittstelle

Bewertung des EntwurfsDer Vorteil dieses Entwurfes ist die voll synchrone Schaltung.Das Problem an diesem Entwurf ist jedoch, dass das FSMC-Taktsignal lediglich zwischender Mitte des NADV-Signalpulses und dem Ende einer Operation gültig ist. Das Mikropro-zessinterface benötigt aber eine konstante Taktquelle, weshalb es die Taktquelle des FPGAverwendet. Die digitale Schaltung für die Kommunikation wird mit dem FSMC Taktsignalarbeiten. Es werden also zwei Taktsignale verwendet, das Spartan-6 Taktsignal und das FSMCTaktsignal. An dieser Stelle können Probleme bei einer Schreiboperation mit einer anschlie-ßenden Leseoperation entstehen, da die geschriebenen Daten mit dem langsameren Spartan-6Takt synchronisiert werden und bei einer Leseoperation eventuell noch alte Daten an dieserStelle stehen.Weitere Nachteile dieses Entwurfs sind die langen Schreib- und Leseoperationen.

4.1.6. Wahl eines Entwurfs

Die Kommunikationsschnittstelle soll möglichst performant arbeiten und dabei möglichstunabhängig von der Hardware sein.

Für die Performance ist in erster Linie die Anzahl der Takte für einen Zugri� entscheidend.Im Folgenden wird sich bei der Anzahl der Takte auf den 168 MHz-Takt des STM32 bezogen. DieAnzahl der Takte für die unterschiedlichen Entwürfe wird in 4.1 dargestellt. Zu sehen ist, dassder asynchrone Entwurf, welcher das Wait-Signal des FSMC verwendet, der performantesteEntwurf ist.

Neben der Performance soll auch die Portabilität der Entwürfe untersucht werden. Dafürwird die Funktionsweise der Entwürfe analysiert.

Entwurf Operationsdauer hardwareunabhängig synchrone SchaltungAsynchron-Parameter 28 Takte nein jaAsynchron-Wait 18 Takte ja neinSynchron 30 Takte ja ja (zwei Taktsignale)

Tabelle 4.1.: Vor- und Nachteile der Entwürfe

38

4. Entwurf der Kommunikationsschnittstelle

Der asynchrone Entwurf, welcher die Timingparameter verändert, ist nur beschränkt portabel,da er auf eine Abtastfrequenz von 25 MHz und eine FSMC-Frequenz von 168 MHz ausgelegt ist.Bei einer Änderung der FSMC- oder der FPGA-Taktfrequenz müsste eine erneute Rechnungdurchgeführt und der Entwurf angepasst werden.Der asynchrone Entwurf mit der Verwendung des Wait-Signals und der synchrone Entwurfsprechen am meisten für die Portabilität, da sie unabhängig von den verwendeten Kompo-nenten sind; sie basieren lediglich auf den Betriebsmodi des FSMC, ohne hardware-basierteKon�guration der Timingparameter.

Die Vor- und Nachteile der Entwürfe werden in 4.1 zusammengefasst dargestellt.

Die Wahl des Entwurfs �el wegen der Kombination der besten Performance und der Porta-bilität auf den asynchronen Entwurf mit der Verwendung des Wait-Signals.

4.2. Mikroprozessorinterface

Das Mikroprozessorinterface ist essenzieller Bestandteil der Kommunikationsschnittstelleund hat einige Anforderungen zu erfüllen. Diese Anforderungen wurden bereits in Kapitel 3beschrieben. In diesem Abschnitt wird ein Entwurf eines Mikroprozessorinterfaces vorgestellt,welcher diese Anforderungen erfüllt. Der Entwurf des Mikroprozessorinterfaces besteht auseinem 8-Bit Status Register und zwei 8-Bit Control Registern. Die Daten Register eines Mi-kroprozessorinterfaces werden hier weggelassen, da sie anwendungsbezogen sind. Außerdemgehören zu dem Mikroprozessorinterface zwei Signale, ein Interrupt-Request-Signal (IRQ-Signal) und ein Interrupt-Acknowledgement-Signal (IACK-Signal). Das IRQ-Signal signalisiertdem Mikrocontroller des FSMC einen anstehenden Interrupt. Der Mikrocontroller kann auf dasIRQ-Signal mit einem IACK-Signal antworten und somit den Interrupt-Request zurücksetzen.

4.2.1. Status Register

Der Aufbau des Status Registers wird in Abbildung 4.5 dargestellt. Das Status Register beinhaltetden Bereitschaftsstatus der Anwendung, Fehler der Anwendung, Fehler des Mikroprozessorin-terfaces und Informationen über Interrupts. Auf das Status Register darf nur lesend zugegri�enwerden. Im Folgenden werden die Inhalte des Status Registers weiter ausgeführt.

Bit 0Das Bit 0 ist das Interrupt-Enabled Bit (iEn). Dieses Bit liefert Informationen dazu, ob Interrupts

39

4. Entwurf der Kommunikationsschnittstelle

Abbildung 4.5.: Status Register des Mikroprozessorinterface-Entwurfs

generiert werden oder nicht. Steht dieses Bit auf Null wird kein Interrupt Request erzeugt,wenn ein Interrupt ansteht. Sollte dieses Bit auf Eins stehen, wird, sobald ein Interrupt ansteht,ein Interrupt Request auf dem IRQ-Signal signalisiert. Das iEn-Bit wird durch Hardware gesetztund zurückgesetzt.

Bit 1Das Bit 1 ist ein Interrupt-Pending Bit (iPen). Dieses Bit gibt an, ob ein Interrupt anstehtoder nicht. Gesetzt wird dieses Bit durch eine positive Flanke auf dem Bereitschaftssignal derAnwendung. Zurückgesetzt wird das Bit durch ein Software-Interrupt-Clear oder durch einInterrupt-Acknowledgement. Das Setzen dieses Bits wird durch die Hardware übernommen.Dieses Bit erfüllt in Kombination mit dem iEn-Bit die Anforderung der Interrupt-Signalisierungund -Erzeugung durch eine Anwendung.

Bit 2Das Bit 2 ist das rdy-Bit und gibt den Bereitschaftsstatus der Anwendung an. Es erfüllt somit dieAnforderung den Bereitschaftsstaus der Anwendung beobachten zu können. Dieses Bit wirddurch die Anwendung gesetzt und zurückgesetzt. Eine Null steht dafür, dass die Anwendunggerade beschäftigt ist. Eine Eins steht dafür, dass die Anwendung bereit für einen neuen Auftragist.

Bit 3Das Bit 3 ist das Error-Read Bit (errRd) und repräsentiert den Fehlerstatus bei Leseoperationen.Sollte bei einer Leseoperation ein Fehler entstehen, wird dies durch eine Eins angezeigt, sonstist dieses Bit mit einer Null belegt. Es erfüllt also die Anforderung bei Leseoperationen anRegister, welche nur beschrieben werden dürfen, einen Fehler auszulösen. Gesetzt wird diesesBit durch Hardware und zurückgesetzt durch Software.

40

4. Entwurf der Kommunikationsschnittstelle

Bit 4Das Bit 4 ist das Error-Write Bit (errWr) und steht für einen Fehler während einer Schreibope-ration. Das Setzen und Zurücksetzen dieses Bits verhält sich, wie das vom errRd-Bit. Dieses Biterfüllt die Anforderung, dass beim Schreiben in ein Register, welches nur gelesen werden darf,ein Fehler ausgelöst wird.

Bit 5Das Bit 5 ist das errCmp-Bit und steht für das Error-Computation Bit. Dieses Bit signalisierteinen Fehler bei der Berechnung, also ein Fehler der Anwendung. Gesetzt wird dieses Bit durcheine positive Flanke auf einem Fehlersignal der Anwendung. Zurückgesetzt wird dieser Fehlerdurch Software oder erneutes Starten der Anwendung. Das Zurücksetzen des Fehlers hat keineAuswirkung auf den Pegel des Fehlersignals der Anwendung. Dieses Bit signalisiert einenFehler der Anwendung und erfüllt somit diese Anforderung.

Bit 6Das Bit 6 wird nicht für das Mikroprozessorinterface verwendet.

Bit 7Das Bit 7 ist das errPnc-Bit und steht für das Error-Panic Bit. Dieses Bit wird nur gesetzt, solltedas Mikroprozessorinterface in einen unerreichbaren Zustand gelangen. Diese unerreichbarenZustände werden im Abschnitt 5.2.2 näher erklärt. Zurückgesetzt werden kann dieses Bit durchSoftware. Es erfüllt die Anforderung, beim Erreichen eines unerreichbaren Zustandes einenFehler zu signalisieren.

4.2.2. Control Register 1

Das Control Register 1 besteht aus einem Bit und ist in Abbildung 4.6 zu sehen. Auf das ControlRegister 1 darf nur schreibend zugegri�en werden.

Abbildung 4.6.: Control Register 1 des Mikroprozessorinterface-Entwurfs

41

4. Entwurf der Kommunikationsschnittstelle

Bit 0Das Bit 0 ist das iEn-Bit und steht für das Interrupt-Enable Bit. Dieses Bit gibt an, ob beieinem anstehenden Interrupt ein Interrupt Request erzeugt werden soll oder nicht. Wird durchSoftware eine Eins an die Stelle dieses Bits geschrieben, wird, sobald das iPen-Bit des StatusRegisters auf Eins wechselt, ein Interrupt Request auf dem IRQ-Signal ausgelöst. Das iEn-Bitdes Control Register 1 hängt direkt mit dem Bit 0 des Status Register zusammen. Dieses Bitwird durch Software gesetzt und zurückgesetzt.

Die Bits 1,2,3,4,5,6 und 7 werden nicht gebraucht.

4.2.3. Control Register 2

Das Control Register 2 besteht aus Lösch-Bits, welche für das Zurücksetzen der Fehler imStatus Register zuständig sind und einem start-Bit. Diese Bits sind in Abbildung 4.7 dargestellt.Auf das Control Register 2 darf nur schreibend zugegri�en werden. Das Control Register 2wird durch Software gesetzt und durch Hardware zurückgesetzt. Die Register folgen also derLogik, dass das Setzen eines Bits ein Bit zurücksetzt.

Abbildung 4.7.: Control Register 2 des Mikroprozessorinterface-Entwurfs

Bit 1Das Bit 1 ist das swIntClr-Bit und steht für ein Software-Interrupt-Clear Bit. Dieses Bit ist derSoftware-Interrupt-Clear für einen Interrupt-Pending und setzt somit das iPen-Bit des StatusRegisters und einen möglicherweise anstehenden Interrupt-Request zurück.

Bit 2Das Bit 2 ist das start-Bit. Wird dieses Bit auf Eins gesetzt, wird eine Anfrage für die Anwendungerzeugt. Dieses Bit wird durch die Hardware zurückgesetzt, sobald eine Anfrage erzeugt wurde.Dieses Bit erfüllt die Anforderung eine Anwendung durch ein Startereignis starten zu können.

42

4. Entwurf der Kommunikationsschnittstelle

Bit 3Das Bit 3 ist das errRdClr-Bit und steht für ein Error-Read-Clear Bit. Wird dieses Bit gesetzt,wird das errRd-Bit im Status Register zurückgesetzt.

Bit 4Das Bit 4 ist das errWrClr-Bit und steht für ein Error-Write-Clear Bit. Wird dieses Bit gesetzt,wird das errWr-Bit im Status Register zurückgesetzt.

Bit 5Das Bit 5 ist das errCmpClr-Bit und steht für ein Error-Computation-Clear Bit. Wird dieses Bitgesetzt, wird das errRd-Bit im Status Register zurückgesetzt.

Bit 7Das Bit 7 ist das errPncClr-Bit und steht für ein Error-Panic-Clear Bit. Wird dieses Registergesetzt, wird das errPnc-Bit im Status Register zurückgesetzt.

Die Bits an der Stelle 0 und 6 sind nicht belegt.

Das Control Register 1 und das Control Register 2 lassen sich zu einem 8-Bit Control Registerzusammenfassen. Für diese Arbeit wurde sich jedoch dagegen entschieden, da die Trennung derunterschiedlichen Arten von Control Registern hervorgehoben werden soll. Außerdem sollendie Bitpositionen der Control Register mit den Bitpositionen des Status Register ausgehendvon ihrer Funktion übereinstimmen.

43

5. Implementierung derKommunikationsschni�stelle

In diesem Kapitel wird die Implementierung der Kommunikationsschnittstelle beschrieben.Dazu gehört die Umsetzung der Entwürfe in eine digitale Schaltung für die Kommunikationund eine Schaltung für das Mikroprozessorinterface. Bei der digitalen Schaltung für die Kom-munikation wird auf die zu erzeugenden Signale und ihr zeitliches Verhalten eingegangen.Für die Schaltung des Mikroprozessorinterfaces werden die Register und der Zugri� auf diesebeschrieben.

5.1. Digitale Schaltung des FSMC-Protokolls

In diesem Abschnitt soll der im Abschnitt 4.1.4 vorgestellte Entwurf für die Kommunikations-schaltung umgesetzt werden. Dafür wird aus dem Entwurf eine digitale Schaltung entworfen,welche anschließend auf dem FPGA kon�guriert wird. Diese digitale Schaltung lässt sichin mehrere Aufgabenbereiche teilen, die Verwaltung des Wait-Signals, das Erkennen einerSchreib- und einer Leseoperation und die Verwaltung des bidirektionalen Busses. Diese Aufga-benbereiche werden in folgenden Abschnitten näher erklärt. Dabei wird auf die Funktion, aberauch auf das zeitliche Verhalten eingegangen. Die vollständige Schaltung der kombiniertenAufgabenbereiche wird in Abbildung 5.1 dargestellt und in ci.vhd als VHDL-Code implemen-tiert. Zu beachten ist, dass die Implementierung des Mikroprozessorinterfaces nicht integriertist. Es wird lediglich das Lesen und Schreiben der Mikroprozessorinterface-Register durch denDemultiplexer und den Multiplexer vereinfacht dargestellt.

5.1.1. Verwaltung des Wait-Signals

Wie bereits in Abschnitt 4.1.4 beschrieben wird für den gewählten Entwurf ein Wait-Signalbenutzt, um dem STM32 zu signalisieren, dass das Spartan-6 FPGA noch nicht bereit ist eineOperation zu beenden. Dieses Wait-Signal soll zum Anfang einer Operation auf einem Pegelstehen, welcher den STM32 warten lässt. Dieses Signal muss solange auf diesem Pegel ver-

44

5. Implementierung der Kommunikationsschnittstelle

Abbildung 5.1.: Digitale Schaltung für die Kommunikation über das FSMC-Protokoll (ci.vhd)

weilen, bis das Spartan-6 den Zugri� erkannt hat. Anschließend soll das Wait-Signal einenTakt des Spartan-6 auf einem Pegel stehen, welcher den STM32 weiterarbeiten lässt. Für diesesVerhalten wurde die Schaltung aus Abbildung 5.2 entwickelt. Das NWAIT-Signal wird dafür sokon�guriert, dass ein niedriger Pegel dem FSMC signalisiert, dass das Spartan-6 FPGA nochnicht bereit ist. Ein hoher Pegel auf dem NWAIT-Signal signalisiert dem FSMC, dass das FPGAbereit ist, die Operation zu beenden.

Das in Abbildung 5.2 dargestellte neWait_ns-Latch übernimmt, sobald eine Operation gest-artet wird, also mit dem Pegelwechsel des NE-Signals von einem hohen auf einen niedrigenPegel, die am Eingang anstehende Eins an den Ausgang. Diese Eins wird anschließend bei

45

5. Implementierung der Kommunikationsschnittstelle

Abbildung 5.2.: Schaltung für die Verwaltung des Wait-Signals (ci.vhd)

der nächsten positiven Takt�anke in das neWait_cs D-FF geladen. Hiermit wurde der Anfangder Operation am UND-Gatter erkannt. Der alte neWait_cs Wert steht jetzt in neWait2_csauf einem niedrigen Pegel. Da das asynchrone NE-Signal jedoch noch nicht über zwei D-FFgelaufen ist und somit noch nicht auf den Takt des FPGA synchronisiert ist, muss das erzeugteSignal nochmals in einem D-FF gespeichert werden, in diesem Fall das nwait_cs-D-FF.Anschließend wird mit Hilfe des UND-Gatters geprüft, ob die Operation wirklich für dieseKomponente bestimmt war. Dies geschieht durch die UND-Verknüpfung mit dem negierten,einsynchronisierten NE-Signal. Das soll ausschließen, dass ein NWAIT-Pegel erzeugt wird,obwohl die Komponente nicht selektiert ist. Der hohe Pegel im nwait_cs-D-FF sorgt außerdemdafür, dass das neWait_ns-Latch zurückgesetzt wird und somit der Pegel des NWAIT-Signalsnur einen Takt ansteht.

Die Simulation der Schaltung aus Abbildung 5.2 wird in Abbildung 5.3 dargestellt. Es ist derbereits beschriebene NWAIT-Signal Verlauf zu erkennen.

46

5. Implementierung der Kommunikationsschnittstelle

Abbildung 5.3.: Simulation der Schaltung für die Verwaltung des Wait-Signals

5.1.2. Speicherung der Adresse und der Daten

Für eine Kommunikation spielen die Adresse und die Daten eine entscheidende Rolle. Ausdiesem Grund soll in diesem Abschnitt beschrieben werden, wie die Adresse und die Datengespeichert werden.

Das Speichern der Adresse und der Daten muss in bestimmten Zeitfenstern geschehen.Aus [5] ist bekannt, dass die Adresse mit der negativen Flanke auf dem NE-Signal auf dieAdressleitungen gelegt wird und mit der positiven Flanke des NE-Signals wieder verschwindet.Die durchgeführte Analyse zeigt sogar, dass die Adresse kurz vor und kurz nach einem Zugri�auf den Adressleitungen liegt. Dies ist also der Zeitraum, indem die Adresse gesichert werdenmuss. Der Zeitraum zum Speichern der Daten bei einer Schreiboperation ist jedoch etwaseingeschränkter. Er erstreckt sich von der fallenden Flanke des NWE-Signals bis zur steigendenFlanke des NE-Signals.

Abbildung 5.4.: Schaltung für die Speicherung der Daten (ci.vhd)

47

5. Implementierung der Kommunikationsschnittstelle

Abbildung 5.5.: Schaltung für die Speicherung der Adresse (ci.vhd)

Normalerweise werden in synchronen Schaltungen zum Speichern von Zuständen oderDaten D-FFs verwendet, da aber der Taktunterschied von FSMC und FPGA so groß ist, dass dasZeitfenster zum Speichern der Daten nicht eingehalten werden kann, werden für diese Arbeitdie möglichst zu vermeidenden transparenten Daten Latches (D-Latches) verwendet. Diesesind im Gegensatz zu D-FFs nicht von einem Taktsignal abhängig und können Daten sofortpegelgesteuert speichern. In Abbildung 5.4 ist dargestellt, wie die Daten damit gespeichertwerden und in Abbildung 5.5, wie damit die Adresse gespeichert wird.

Bei der Speicherung der Daten ist ein 16-Bit D-Latch mit einem invertierten Gate undGate-Enable Eingang zu sehen. Der Gate-Eingang wird mit dem NWE-Signal verbunden. DasGate-Enable ist mit dem nwait_cs-D-FF Ausgang verbunden. Das nwait_cs D-FF ist bereitsaus dem Abschnitt 5.1.1 bekannt. Das sorgt dafür, dass bei einem niedrigen Pegel auf demNWE-Signal und im nwait_cs D-FF der D-Eingang des Latches direkt am Q-Ausgang zu sehenist. Sollte ein hoher Pegel auf dem invertierten Gate-Enable- oder Gate-Eingang anstehen,wird der Wert des Latches festgehalten. Der Eingang dieser D-Latches sind die Datensignale.Durch diese Schaltung werden die Daten bei Beginn einer Operation sofort in die Latchesgeladen, sofern das nwait_cs D-FF auf einem niedrigen Pegel steht. Sollte das nwait_cs D-FFzu Beginn einer Operation noch nicht auf einem niedrigen Pegel stehen, werden die Datenerst mit dem Pegelwechsel zu einem niedrigen Pegel übernommen. Im Abschnitt 5.3 wird aufdieses Verhalten weiter eingegangen.Die Speicherung der Adresse unterscheidet sich von der Speicherung der Daten nicht we-sentlich. Es werden lediglich drei D-Latches mit invertierten Gate- und Gate-Enable-Eingangverwendet. Außerdem wird der invertierte Gate-Eingang mit dem NE-Signal und nicht mitdem NWE-Signal verbunden.

48

5. Implementierung der Kommunikationsschnittstelle

nwait_cs (= not GE) NWE/NE(= not G) D Q1 X X Keine Veränderung0 0 D D0 1 X Keine Veränderung

Tabelle 5.1.: Verhalten der D-Latches mit invertierten Gate- und Gate-Enable Eingang für dieSpeicherung der Daten und der Adresse

In Tabelle 5.1 ist das Verhalten dieser D-Latches mit invertierten Gate- und Gate-Enable-Eingang zu sehen.

Durch die Schaltung aus Abbildung 5.5 wird die letzte Adresse, welche vor der steigendenFlanke des NWAIT-Signals auf den Adressleitungen lag, festgehalten. Die Schaltung aus Ab-bildung 5.4 hält die Daten fest, welche sich zum gleichen Zeitpunkt auf den Datenleitungenbe�nden. Das Festhalten der Adresse und der Daten nach einer Schreiboperation ist wichtig,damit die Mikroprozessorinterface-Register ihren richtigen Wert annehmen können. Das ei-gentliche Speichern der Daten in den Mikroprozessorinterface-Registern �ndet nämlich erstnach Beendigung einer Operation, mit der fallenden Flanke des NWAIT-Signal statt.

Abbildung 5.6.: Simulation der Schaltungen für die Speicherung der Daten und der Adressemit Schreiboperationen im Modus 2

Die Schaltungen aus Abbildung 5.4 und Abbildung 5.5 wurden simuliert. Die Ergebnisse derSimulation sind in Abbildung 5.6 zu sehen. Die Abbildung beschreibt zwei aufeinanderfolgendeSchreiboperationen im asynchronen Betriebsmodus 2. Es ist zu sehen, dass bei der erstenSchreiboperation die Adresse und die Daten direkt in die Latches übernommen werden, da dasnwait_cs auf einem niedrigen Pegel steht. Au�ällig ist, dass bei der zweiten Schreiboperationdie Adresse und die Daten erst verzögert in die Daten- und Adress-Latches geladen werden. Der

49

5. Implementierung der Kommunikationsschnittstelle

Grund hierfür ist das bereits angesprochene Speichern der Daten des vorherigen Zugri�s an diezugehörige Stelle im Mikroprozessorinterface. Dies wird im Abschnitt 5.3 weiter ausgeführt.

5.1.3. Erkennen einer Schreiboperation

Abbildung 5.7.: Schaltung für das Erkennen einer Schreiboperation (ci.vhd)

Ein anderer wichtiger Bestandteil der Kommunikation ist das Erkennen einer Schreib-operation, um zu wissen ob Daten vom Datenbus gelesen werden sollen oder nicht. Um eineSchreiboperation zu erkennen muss lediglich das NWE-Signal beobachtet werden. Gibt es einenniedrigen Pegel auf dem NWE-Signal, so handelt es sich um eine Schreiboperation und es mussein Signal erzeugt werden, um die gelesenen Daten in den zugehörigen Mikroprozessorinterface-Registern zu speichern. Das erzeugte Signal wird also als Enable-Signal für die Register desMikroprozessorinterfaces verwendet und wird wie in Abbildung 5.7 beschrieben erzeugt. DasEnable-Signal gilt nur für Mikroprozessorinterface-Register auf die schreibend zugegri�enwerden darf. Um dieses Enable-Signal, im Bild als en_cs dargestellt, zu erzeugen, müssenzwei Bedingungen erfüllt werden. Es muss sich um eine Schreiboperation handeln und esmuss sich um eine Operation handeln, welche für die beobachtete Komponente gilt. Um zuErkennen, ob eine Operation für die beobachtete Komponente gilt, kann das NE-Signal her-angezogen werden. Steht das NE-Signal auf einem niedrigen Pegel, dann ist die gestarteteOperation für die beobachtete Komponente. Eine Schreiboperation lässt sich durch einenniedrigen Pegel auf dem NWE-Signal erkennen. Diese beide Bedingungen lassen sich durch

50

5. Implementierung der Kommunikationsschnittstelle

eine Kombination mit einem UND-Gatter realisieren. Es ist zu beachten, dass das Enable-Signalder Mikroprozessorinterface-Register nur einen Takt lang auf einem hohen Pegel stehen muss,damit sie ihren neuen Wert annehmen können.Aus diesem Grund wird für die Erzeugungdes Enable-Signals zusätzlich das nwait_ns UND-Gatter, welches auch für die Erzeugung desNWAIT-Signals genutzt wird, hinzugezogen. Durch diese Kombination weist das Enable-Signalbei Schreiboperationen das gleiche Verhalten wie das NWAIT-Signal auf. Bei Leseoperationenhingegen bleibt das Enable-Signal auf einem niedrigen Pegel.

Abbildung 5.8.: Simulation der Schaltung für die Erkennung einer Schreiboperation währendeiner Schreiboperation

Abbildung 5.9.: Simulation der Schaltung für die Erkennung einer Schreiboperation währendeiner Leseoperation

51

5. Implementierung der Kommunikationsschnittstelle

Die Abbildung 5.8 zeigt einen Verlauf des Enable-Signals während einer simulierten Schreib-operation. Es ist zu sehen, dass es den gleichen Verlauf wie das NWAIT-Signal aufweist. DerUnterschied ist jedoch, dass dies nur bei einer Schreiboperation der Fall ist. So ist in Abbildung5.9 zu sehen, dass das Enable-Signal während einer Leseoperation keine Reaktion zeigt.

5.1.4. Erkennen einer Leseoperation

Auch Leseoperationen müssen erkannt und angemessen darauf reagiert werden, weshalbin diesem Abschnitt eine Schaltung für diesen Zweck vorgestellt und analysiert wird. DasErkennen einer Leseoperation und die Reaktion darauf bestehen aus dem Beobachten derFSMC-Signale, der Ansteuerung des Tristate Treibers und dem Belegen des Busses mit denkorrekten Daten.

Abbildung 5.10.: Schaltung für die Ansteuerung des Tristate Treibers und die Belegung desDatenbusses (ci.vhd)

Um eine Leseoperation zu erkennen, kann das NOE-Signal beobachtet werden. Ein niedrigerPegel auf dem NOE-Signal signalisiert eine Leseoperation und damit auch, dass das FPGA

52

5. Implementierung der Kommunikationsschnittstelle

Daten auf die Datenleitungen legen darf. Ein hoher Pegel auf dem NOE-Signal signalisiert demFPGA, dass es keine Daten auf die Datenleitungen legen darf.Da der FSMC die Kontrolle über das NOE-Signal und damit über den bidirektionalen Datenbushat, ist auf der Seite des Spartan-6 lediglich darauf zu achten, die Signale des FSMC zu interpre-tieren. Realisiert wird dies durch die Schaltung aus Abbildung 5.10. Steht das NOE-Signal aufeinem hohen Pegel, wird der Datenbus vom Spartan-6 in einen hochohmigen Zustand gebracht.Bei einem niedrigen Pegel des NOE-Signals werden Daten aus einem Mikroprozessorinterface-Register auf den Datenbus geschrieben.

Die Auswahl der korrekten Daten für die Belegung des Datenbusses wird auf Basis dergelesenen Adresse getro�en und, wie in Abbildung 5.10 dargestellt, durch einen Multiplexerrealisiert. Welche Adresse für welches Mikroprozessorinterface-Register steht, wird später inder Tabelle 5.2 beschrieben.

Abbildung 5.11.: Simulation der Tristate Treiber Schaltung

In Abbildung 5.11 ist eine Simulation der Tristate Treiber Schaltung zu sehen. Es ist zuerkennen, dass die Datenleitungen des FSMC in einen hochohmigen Zustand (Z) gebrachtwerden, sobald das NOE-Signal auf einem hohen Pegel liegt und keine Operation durchgeführtwird.

Das Belegen des Datenbusses durch die Schaltung aus Abbildung 5.10 wird später in Abbil-dung 5.36 simuliert.

53

5. Implementierung der Kommunikationsschnittstelle

5.2. Mikroprozessorinterface

In diesem Abschnitt wird die Implementierung des Mikroprozessorinterfaces beschrieben.Hierfür wird darauf eingegangen, wie die Mikroprozessorinterface-Register implementiertsind, wie deren Inhalt gesetzt wird und wie auf diese zugegri�en wird. Außerdem werden dieSignale zur Interrupt-Behandlung implementiert und ihre Funktion beschrieben.

Abbildung 5.12.: Schnittellen der integrierten Anwendung

Für eine sinnvolle Implementierung des Mikroprozessorinterfaces ist, wie bereits erwähnt,eine Anwendung erforderlich. Für diese Arbeit wurde sich für eine Anwendung entschie-den, welche die Schnittstellen aus Abbildung 5.12 unterstützt. Die Eingangssignale sind einTaktsignal, ein Resetsignal, zwei Operanden und ein Request-Signal. Die Ausgangssignale derAnwendung bestehen aus einem Fehler-Signal, einem Bereitschaft-Signal und einem Ergebnis-Ausgang. Die Breite der Operanden-Eingänge und des Ergebnis-Ausgangs beträgt 16-Bit. InAbbildung 3.1 wurde bereits gezeigt, wie die Kommunikationsschnittstelle und die Anwen-dung auf dem FPGA integriert werden. Im Anhang wird die Kommunikation dieser beidenKomponenten beschrieben.

Um die unterschiedlichen Mikroprozessorinterface-Register ansprechen zu können, be-nötigen sie Adressen. In Tabelle 5.2 werden die Mikroprozessorinterface-Register mit ihrenzugehörigen Adressen dargestellt. Wird bei einer Schreiboperation eine Adresse von 0x1 oder0x2 mit übergeben, werden die untersten 8-Bit der Daten in den zugewiesenen Register gespei-chert. Bei den Adressen 0x3 und 0x4 werden alle 16-Datenbits in den Registern der Adressegespeichert. Außerdem sind in der Tabelle die Zugri�srechte zu sehen.

54

5. Implementierung der Kommunikationsschnittstelle

Adresse Register Zugri�srechte0x0 Status Register Lesen0x1 Control Register 1 Schreiben0x2 Control Register 2 Schreiben0x3 Data Register (Operand 1) Lesen/Schreiben0x4 Data Register (Operand 2) Lesen/Schreiben0x5 Data Register (Ergebnis) Lesen

Tabelle 5.2.: Adressen und Zugri�srechte der Mikroprozessorinterface-Register

5.2.1. Control und Daten Register

In diesem Abschnitt wird beschrieben, wie die Control und Daten Register des Mikroprozesso-rinterfaces gesetzt und zurückgesetzt werden.

Wie bereits beschrieben, wird für diese Implementierung des Mikroprozessorinterfaces eineAnwendung vorausgesetzt. Die Anwendung fordert in diesem Fall drei 16-Bit Daten Register,zwei 16-Bit Operanden Register und ein 16-Bit Ergebnis Register, weshalb diese im Mikropro-zessorinterface aufgenommen werden.

Abbildung 5.13.: Schaltung für das Setzen des Ereignis Registers (ci.vhd)

Das Ergebnis Register enthält das Ergebnis, welches die Anwendung als letztes berechnet hat(res_a2m). Einen FPGA-Takt nachdem die Anwendung ein Ergebnis berechnet hat, wird es indas Ergebnis-Register des Mikroprozessorinterfaces übernommen. Dieses Verhalten wird durchdie Schaltung aus Abbildung 5.13 realisiert und ist in der Simulation, welche in Abbildung 5.14dargestellt ist, zu sehen. Es ist eine Schreiboperation dargestellt, welche die Anwendung startet.Die Anwendung ändert daraufhin ihren Bereitschaftsstatus. Nachdem die Anwendung mit demPegelwechsel des rdy_a2m-Signals von einem niedrigen auf einen hohen Pegel signalisiert, dasssie bereits für einen neuen Auftrag ist, erscheint am res_a2m-Ausgang das Ergebnis der letzten

55

5. Implementierung der Kommunikationsschnittstelle

Berechnung. Dieses Ergebnis wird bei der nächsten steigenden Takt�anke in das ErgebnisRegister des Mikroprozessorinterfaces übernommen.

Abbildung 5.14.: Verhalten des Ergebnis Registers während der Simulation

Abbildung 5.15.: Schaltung für das Setzen der Control Register und der Operanden Register(ci.vhd)

56

5. Implementierung der Kommunikationsschnittstelle

Die zwei 16-Bit Operanden Register, zuzüglich des Control Register 1 und des Control Regis-ter 2, werden durch Software gesetzt, weshalb deren Inhalt von den Daten und der Adresseeiner Schreiboperation abhängen. In Abbildung 5.15 wird eine Schaltung beschrieben, welchedie gesicherten Daten aufgrund ihrer Adresse auf die zugehörigen Mikroprozessorinterface-Register verteilt und speichert. Hierfür wird das Enable-Signal aus 5.1.3 benutzt.

Abbildung 5.16.: Simulation der Inhaltsübernahme der Mikroprozessorinterface-Register

Die Abbildung 5.16 zeigt eine Schreiboperation einer 42 in das erste Operanden Register(op1_cs) mit der Adresse 0x3. Zu sehen ist, dass das Daten Register den neu zugewiesenenInhalt mit der negativen Flanke des Enable-Signals annimmt.

Zurücksetzen des Control Register 2Das Control Register 2 verhält sich beim Setzen genauso wie das Control Register 1 und dieDaten Register. Beim Zurücksetzten unterscheidet es sich jedoch von diesen, denn wie bereitsim Abschnitt 4.2.3 beschrieben, wird das Control Register 2 einen FPGA-Takt nachdem esgesetzt wurde, wieder zurückgesetzt. Dies wird durch die Schaltung aus Abbildung 5.17 erreicht.

In Abbildung 5.18 wurde diese Schaltung simuliert. Es ist das erwartete Verhalten zu erken-nen. Zu Beginn ist zu sehen, dass eine 190 in das Control Register 2 geschrieben wird. Diesewird mit der fallenden Flanke des NWAIT-Signals in das Control Register 2 übernommen. An-schließend wird bei der nächsten steigenden Takt�anke das Control Register 2 zurückgesetzt,da es sich um einen synchronen Reset handelt.

57

5. Implementierung der Kommunikationsschnittstelle

Abbildung 5.17.: Schaltung zum Zurücksetzen des Control Register 2 (ci.vhd)

Abbildung 5.18.: Simulation des Verhaltens des Control Register 2

5.2.2. Status Register

Die Bits des zu implementierenden Status Register wurden bereits in 4.2.1 vorgestellt. In diesemAbschnitt wird beschrieben, wie die Inhalte der einzelnen Bits des Status Register zustandekommen. Hierfür wird das Status Register in dessen Inhalte aufgeteilt, welche aus den Fehlern,der Interrupterzeugung und dem Bereitschaftsstatus der Anwendung bestehen.

Bereitscha�sstatus der Anwendung

Der Bereitschaftsstatus der Anwendung wird, wie bereits im Abschnitt 4.2.1 beschrieben,im Status Register als rdy-Bit dargestellt. Aus diesem Grund übernimmt das rdy-Bit des Sta-tus Registers den Pegel des rdy-Signals der Anwendung. Der Pegel wird erst zur nächstenpositiven Takt�anke übernommen. Die Schaltung aus Abbildung 5.19 realisiert dieses Verhalten.

58

5. Implementierung der Kommunikationsschnittstelle

Abbildung 5.19.: Schaltung für das Setzen des rdy-Bits (ci.vhd)

Abbildung 5.20.: Verhalten des rdy-Bits im Status Register beim Starten der Anwendung

Die Abbildung 5.20 zeigt die Simulation einer Schreiboperation, welche das Starten derAnwendung zur Folge hat, und die daraus resultierenden Veränderungen im Status Register.Das rdy_a2m-Signal ist das Bereitschaftssignal der Anwendung, welches in Abbildung 5.12als rdy-Ausgang dargestellt ist. Zu sehen ist, dass einen Takt nachdem die Anwendung ihrenBereitschaftsstatus verändert, diese Änderungen im Status Register übernommen werden.Außerdem ist durch diese Simulation die geforderte Funktion, eine Anwendung starten zukönnen, simuliert worden.

Interrupts

Für die Erzeugung und das Löschen von Interrupts werden unterschiedliche Signale benötigt.Dazu gehören das iEn-Bit, das iPen-Bit, das im letzten Abschnitt implementierte rdy-Signalin Kombination mit dem rdy-Signal der Anwendung und der iAck-Eingang. Ein erzeugterInterrupt-Request wird durch den IRQ-Ausgang der Kommunikationsschnittstelle ausgegeben.In diesem Abschnitt wird die Implementierung des iEn-Bits und des iPen-Bits, sowie dieImplementierung des iAck- und des IRQ-Signals beschrieben.

59

5. Implementierung der Kommunikationsschnittstelle

Abbildung 5.21.: Schaltung für das Setzen des iEn-Bits im Status Register (ci.vhd)

Abbildung 5.22.: Verhalten des iEn-Bits im Status Register und im Control Register 1

iEnDas iEn-Bit des Status Registers ist eindeutig dem iEn-Bit des Control Register 1 zugeordnet,weshalb es diesen Wert einen Spartan-6 Takt später übernimmt. Eine Schaltung, welche diesesVerhalten realisiert, ist in Abbildung 5.21 dargestellt. Wie das Control Register 1 und damitauch das iEn-Bit des Control Register 1 seinen Wert zugewiesen bekommt, wurde bereits imAbschnitt 5.2.1 beschrieben.

Die Abbildung 5.22 zeigt eine simulierte Schreiboperation, welche das iEn-Bit des ControlRegister 1 mit einer Eins beschreibt. Einen Takt später ist die Reaktion darauf im Status Registerzu sehen. Der Pegel des iEn-Bits des Control Register 1 wurde im iEn-Bit des Status Registerübernommen.

iPenFür das iPen-Register wird der Bereitschaftsstatus der Anwendung gebraucht, denn das iPen-Register wird erst gesetzt wenn auf dem Bereitschaftsstatus-Signal eine steigende Flankeauftritt. Um dieses Verhalten zu realisieren, wurde die Schaltung aus Abbildung 5.23 entworfen.Das rdy_a2m-Signal ist das Bereitschaftssignal der Anwendung. Bei einer positiven Flankeauf diesem Signal ist davon auszugehen, dass die Anwendung vorher gestartet wurde, also

60

5. Implementierung der Kommunikationsschnittstelle

Abbildung 5.23.: Schaltung für das Setzen und Zurücksetzen des iPen-Registers (ci.vhd)

zuerst ein niedriger Pegel anliegt, und nun wieder bereit für eine neue Aufgabe ist, das Signalsteht wieder auf einem hoher Pegel. Sollte das iPen-Register bereits gesetzt sein, wird es nichtverändert. Das Zurücksetzen dieses iPen-Registers erfolgt durch einen Software-Interrupt-Clear oder durch das iAck-Signal in Verbindung mit einem augelösten Interrupt-Request aufdem IRQ-Signal.

Interrupt-RequestIn diesem Abschnitt wird beschrieben, wie aus einem Interrupt-Pending ein Interrupt-Requestfür den STM32 entsteht und wie dieser zurückgesetzt werden kann. Hierfür wurde die Schal-tung aus Abbildung 5.24 entworfen. In der Abbildung ist zu sehen, dass ein Interrupt-Request,also ein hoher Pegel auf dem IRQ-Signal, nur erzeugt wird, sollte das iPen- und das iEn-Bitdes Status Registers gesetzt sein. Damit ist sichergestellt, dass der Mikrocontroller nur einenInterrupt-Request bekommt, wenn er auch danach verlangt. Zurückgesetzt werden kann einInterrupt-Request durch das Zurücksetzen des iPen-Registers.

Durch die Simulation der Schaltung aus Abbildung 5.24 wurde ein Ergebnis, welches inAbbildung 5.25 zu sehen ist, erzeugt. Die Abbildung besteht aus einem oberen und einemunteren Teil. Der untere Teil lässt sich hinter den oberen Teil der Simulation anhängen undergibt somit die komplette Simulation.Es sind mehrere Operationen zu sehen. Die Sequenz der Operationen startet mit einer Schreib-operation auf das erste Operanden Register mit einer 42. Anschließend wird mit dem Schreibeneiner Eins in das Control Register 1 das iEn-Bit gesetzt, damit ein Interrupt-Request auf demIRQ-Signal erzeugt wird. Um die Anwendung zu starten wird daraufhin mit einer Schreibopera-tion eine vier in das Control Register 2 geschrieben. Die Reaktion auf das Setzen des start-Bitsist am rdy-Bit des Status Registers zu sehen, welches zwei Takte später auf einen niedrigenPegel wechselt. Die Anwendung wird jedoch schon ein Takt zuvor gestartet. Zu sehen ist,

61

5. Implementierung der Kommunikationsschnittstelle

Abbildung 5.24.: Schaltung für das Erzeugen und Löschen eines Interrupt-Request (ci.vhd)

dass die Anwendung bereits nach einem Takt wieder ihren Bereitschaftsstatus wechselt unddamit einen Interrupt-Pending auslöst, welcher einen Takt später im Status Register zu sehenist. Die sechste Operation ist eine Schreiboperation für das Control Register 2 mit einemSoftware-Interrupt-Clear und setzt damit das iPen-Bit des Status Registers zurück.

Fehler

Im Abschnitt 4.2.1 wurden bereits die Fehler des Status Registers vorgestellt. Die Implemen-tierung der Fehler wird in diesem Abschnitt beschrieben. Es wird jeweils eine Schaltungvorgestellt, welche im Anschluss simuliert wird.

errCmpIn Abbildung 5.26 ist eine Schaltung für das Setzen und Zurücksetzen des errCmp-Bit zu sehen.Das in der Abbildung dargestellte errCmp_a2m-Signal ist das Fehler Signal der Anwendungund in Abbildung 5.12 als errCmp-Ausgang gekennzeichnet ist. Das errCmp-Bit wird durcheine positive Flanke auf dem errCmp_a2m-Signal gesetzt. Zurückgesetzt wird das errCmp-Bit

62

5. Implementierung der Kommunikationsschnittstelle

Abbildung 5.25.: Simulation der Schaltung für das Erzeugen und Löschen eines InterruptRequests

durch den globalen Reset, das errCmpClr-Bit des Control Registers 2 oder sollte die Anwendungerneut gestartet werden.

In Abbildung 5.27 ist eine Simulation mehrerer Schreiboperationen zu sehen. Die ersteSchreiboperation schreibt einen bestimmten Wert in das Daten Register des ersten Operanden.Dieser Wert löst für die implementierte Anwendung beim Starten einen Fehler aus. Die nächsteSchreiboperation startet die Anwendung. Daraufhin signalisiert die Anwendung einen Fehler.Zu sehen ist, dass dieser Fehler durch die Schaltung erkannt wurde und einen Takt später imStatus Register gesichert wurde. Die dritte und letzte Schreiboperation schreibt eine Eins andie Stelle des errCmpClr-Bit des Control Register 2. Einen Takt nachdem das errCmpClr-Bitgesetzt wurde, wird das errCmp-Bit im Status Register zurückgesetzt.

63

5. Implementierung der Kommunikationsschnittstelle

Abbildung 5.26.: Schaltung für das Setzen und Zurücksetzen des errCmp-Bits (ci.vhd)

Abbildung 5.27.: Simulation der Schaltung für das Setzen und Zurücksetzen des errCmp-Bits

errWrDie Abbildung 5.28 beschreibt eine Schaltung für das Setzen und Zurücksetzen des errWr-Bits.Das Setzen wird durch den Enable-Eingang des errWr D-FF (sr_cs(4)) geregelt. Das D-FF erhälteinen hohen Pegel, wenn eine Adresse anliegt, welche nicht beschrieben werden darf und dasEnable-Signal aus Abschnitt 5.1.3 auf einem hohen Pegel liegt. Die korrekten Adressen werdendurch Verknüpfung von UND- und ODER-Gattern überprüft. Das Zurücksetzen des errWr-Bitsgeschieht entweder durch den globalen Reset oder durch das errWrClr-Bit des Control Register2.

In Abbildung 5.29 ist eine Simulation der Schaltung aus Abbildung 5.28 zu sehen. Es sind zweiSchreiboperationen zu erkennen. Die erste Schreiboperation löst einen Schreibfehler aus, da

64

5. Implementierung der Kommunikationsschnittstelle

Abbildung 5.28.: Schaltung für das Setzen und Zurücksetzen des errWr-Bits (ci.vhd)

Abbildung 5.29.: Simulation der Schaltung für das Setzen und Zurücksetzen des errWr-Bits

versucht wurde in das Status Register zu schreiben. Dieser Fehler wird sofort nach der Operationim Status Register angezeigt. Die nächste Schreiboperation schreibt eine Eins an Stelle deserrWrClr-Bit im Control Register 2. Einen Takt nachdem das Ergebnis der Schreiboperation imControl Register 2 gespeichert wurde, wird das errWr-Bit im Status Register zurückgesetzt.

errRdDas errRd wird durch das gleiche Prinzip gesetzt, denn es wird gesetzt, sollte eine Adresseanstehen die nicht gelesen werden darf, in Kombination mit einem hohen Pegel auf einemEnable-Signal. Dieses Enable-Signal wird wie in Abbildung 5.30 erzeugt. In Abbildung 5.31wird eine Schaltug dargestellt, welche die Adressen, welche nicht gelesen werden dürfen, mitdem Enable-Signal aus Abbildung 5.30 verknüpft und daraus ein Enable-Signal für das errRd

65

5. Implementierung der Kommunikationsschnittstelle

D-FF (sr_cs(3)) generiert. Zurückgesetzt wird das errRd D-FF durch den globalen Reset oderdas errRdClr-Bit im Control Register 2.

Abbildung 5.30.: Schaltung für das Erzeugen eines Enable-Signals für das errRd-Bit (ci.vhd)

Abbildung 5.31.: Schaltung für das Setzen und Zurücksetzen des errRd-Bits (ci.vhd)

Das Enable-Signal enRd_cs wird genauso wie das en_cs aus Abschnitt 5.1.1 gesetzt, weshalbdie Erzeugung dieses Signals nicht nochmal simuliert wird. Der einzige Unterschied zumen_cs ist, dass es nicht vom NWE- sondern vom NOE-Signal abhängt, da es sich nicht um einSchreib-Enable-Signal sondern um ein Read-Enable-Signal handelt.

66

5. Implementierung der Kommunikationsschnittstelle

Abbildung 5.32.: Simulation der Schaltung für das Setzen und Zurücksetzen des errRd-Bits

In Abbildung 5.32 ist eine Simulation der Schaltung aus Abbildung 5.31 zu sehen. Sie bestehtaus einer Leseoperation gefolgt von einer einer Schreiboperation. Die Leseoperation soll dasControl Register 1 lesen, weshalb ein Lesefehler entsteht. Dieser Lesefehler wird mit derfallenden Flanke des NWAIT-Signals im Status Register an der Stelle des errRd-Bits gesichert.Die anschließende Schreiboperation setzt das errRdClr-Bit im Control Register 2 auf eine Eins.Einen Takt nachdem diese im Control Register 2 gespeichert wurde, wird das errRd-Bit desStatus Register zurückgesetzt.

errPncDas errPnc-Bit des Status Registers wird, wie bereits in Abschnitt 4.2.1 beschrieben, gesetzt,sollte ein unerreichbarer Zustand während der Kommunikation erreicht werden. Ein uner-reichbarer Zustand stellt für diese Implementierung eine Operation dar, welche weder eineSchreib- noch eine Leseoperation ist. Sollte also eine solche Operation durchgeführt werden,würde es das errPnc-Bit mit einer Eins signalisieren. Außerdem wird das Fehlerbit gesetzt,wenn eine Schreib- oder Leseoperation erkannt wurde, obwohl keine Operation stattgefundenhat. Für das Erkennen einer Schreiboperation wird das en_cs aus Abschnitt 5.1.3 genutzt, fürdas Erkennen eine Leseoperation das enRd_cs aus Abschnitt 5.1.4. Das Signal aus Abschnitt5.1.1, welches auf den NWAIT-Ausgang gelegt wird, weist einen identischen Signalverlauf wiedie Enable-Signale auf. Bei einer Schreiboperation entspricht der Signalverlauf dem en_cs undbei einer Leseoperation dem des enRd_cs.Die Wahrheitstabelle 5.3 beschreibt eine Kombination dieser Signale, um das errPnc-Bit zu-setzen. Diese Wahrheitstabelle wurde minimiert und in der Schaltung aus Abbildung 5.33implementiert. Zurückgesetzt werden kann das Bit entweder durch den globalen Reset oderdas errPncClr-Bit des Control Register 2.

67

5. Implementierung der Kommunikationsschnittstelle

NWAIT en_cs enRd_cs errPnc0 0 0 keine Veränderung0 0 1 10 1 0 10 1 1 11 0 0 11 0 1 keine Veränderung1 1 0 keine Veränderung1 1 1 keine Veränderung

Tabelle 5.3.: Wahrheitstabelle für das Setzen des errPnc-Bits

Abbildung 5.33.: Schaltung für das Setzen und Zurücksetzen des errPnc-Bits (ci.vhd)

Das errPnc-Bit unterscheidet sich von den anderen Fehlerbits, da es nur gesetzt wird, solltedie Schaltung des Mikroprozessorinterfaces in einen nicht erreichbaren Zustand kommen.Dieser Zustand lässt sich jedoch nicht simulieren, weshalb für diesen Fehler keine Simulationdurchgeführt wurde.

68

5. Implementierung der Kommunikationsschnittstelle

5.3. Zeitliches Verhalten der Kommunikationsschni�stelle

In den letzten Abschnitten wurde bereits das zeitliche Verhalten einzelner Komponentenbeschrieben. Diese Komponenten sind jedoch zusammen in einer Schaltung integriert, weshalbin diesem Abschnitt auf das zeitliche Verhalten der gesamten digitalen Schaltung eingegangenwird. Die gesamte digitale Schaltung auf die sich in diesem Abschnitt bezogen wird, umfasstdie bereits in Abbildung 5.1 dargestellte Schaltung für die Kommunikation mit dem FSMC unddie Schaltungen für das Mikroprozessorinterface. Das zeitliche Zusammenspiel der einzelnenKomponenten wird anhand einer Schreib- und einer Leseoperation verdeutlicht. Außerdemsoll auf die Dauer der Operationen eingegangen werden und wie diese beein�usst werden.

SchreiboperationenBei einer Schreiboperation ist es wichtig, dass die geschriebenen Daten an ihrer korrektenAdresse gespeichert werden. Um eine Schreiboperation möglichst schnell beenden zu können,sollten also alle wichtigen Informationen einer Operation gespeichert werden. Zu diesen Infor-mationen gehören die Adresse, die Daten und die Art einer Operation.Bei den Daten und der Adresse ist die Speicherung kein Problem, da es Signale gibt, welchedie Korrektheit dieser Daten signalisieren.Die Art einer Operation kann aber wie in Abschnitt 5.1.3 beschrieben, erst durch zwei stei-gende Takt�anken des Spartan-6 FPGA-Takts festgestellt werden. Aus diesem Grund darf dasNWAIT-Signal auch erst frühstens nach zwei steigenden Takt�anken des Spartan-6 FPGA-Takts auf einem hohen Pegel stehen, da der FSMC die Operation sonst zu früh abschließt. DerNWAIT-Ausgang und das Enable-Signal der Mikroprozessorinterface-Register erhalten alsoimmer synchron ihren Pegel. Um die Dauer einer Operation möglicht kurz zu halten, haltendie beiden Signale ihren hohen Pegel nur einen Spartan-6 Takt.Eine Operation wird vier STM32 Takte nachdem das NWAIT-Signal seinen hohen Pegel erhältvom FSMC beendet und die Daten und die Adresse verschwinden von den Leitungen. DasSpeichern der Daten an die gewünschte Adresse kann jedoch erst mit der nächsten positivenTakt�anke des Spartan-6 gespeichert werden, welche erst nach dem Ende der Schreiboperationauftaucht. Aus diesem Grund müssen die Adresse und die Daten festgehalten werden. Sollteeine neue Schreiboperation starten während das NWAIT-Signal noch auf einem hohen Pegelsteht, entstehen zwei Probleme.Das erste Problem ist, dass bei einer neuen Schreiboperation auch neue Daten und eine neueAdresse auf den Leitungen liegen kann, welche in die Adress- und Datenlatches geladen werden.Die alte Operation ist zu diesem Zeitpunkt jedoch noch nicht abgeschlossen. Die Lösung desProblems ist im Abschnitt 5.1.2 bereits berücksichtigt und besteht aus der Verknüpfung der

69

5. Implementierung der Kommunikationsschnittstelle

Speicherung der Adresse und Daten mit dem Ausgang des nwait_cs D-FF. Diese Verknüpfungbesteht aus dem Hinzufügen eines Gate-Enable-Eingangs zu den D-Latches und lässt sich fürdie Daten in Abbildung 5.4 und für die Adresse in Abbildung 5.5 sehen. Die Verknüpfungerreicht, dass die Daten und die Adresse der neuen Schreiboperation erst gespeichert werden,wenn die alte Operation abgeschlossen ist.Das zweite Problem ist, dass der FSMC die Operation sofort Beenden würde, da das NWAIT-Signal nicht auf einem niedrigen Pegel steht. Die Lösung für das zweite Problem ist die Kon�gu-ration des Timingparameters DATAST. Die DATAST-Phase muss mindestens vier FSMC-Taktefür das Erkennen des NWAIT-Pegels zuzüglich 1,72 FSMC-Takte für die restliche Zeit des hohenPegels auf dem NWAIT-Signal lang andauern. Die 1,72 FSMC-Takte entstehen aus der Dauerdes NWAIT-Pegels, welche 6,72 FSMC-Takten beträgt, bei Abzug der bereits durchlaufendenDauer während der alten Operation, zuzüglich eines Taktes, indem das NE-Signal auf Einsstehen muss. Der DATAST-Timingparameter sollte also auf einen Wert von sechs kon�guriertwerden. Dies beein�usst die Dauer einer Operation nicht, da diese durch die zwei Spartan-6Takte bereits länger dauert. In Abbildung 5.34 ist eine Erklärung des Problems dargestellt. DieBerechnung des DATAST-Timingparameters basiert lediglich auf den Informationen aus [5]und nicht auf durchgeführten Messungen.

Abbildung 5.34.: Signalverlauf zwei aufeinanderfolgender Schreiboperationen

Die Abbildung 5.35 zeigt eine Simulation einer Schreiboperation. Es ist die Sicherung derDaten und der Adresse, sowie die Erzeugung des NWAIT- und der Enable-Signale zu sehen.

LeseoperationenBei einer Leseoperation erwartet der FSMC die Daten während der DATAST-Phase, welchebei dieser Implementierung die komplette Operation, also zwei Spartan-6 Takte plus vierSTM32 Takte, abdeckt. Aus diesem Grund ist das zeitliche Verhalten unkritisch. Die Daten,welche auf den Datenbus gelegt werden, werden durch einen Multiplexer basierend auf der

70

5. Implementierung der Kommunikationsschnittstelle

Abbildung 5.35.: Simulation einer Schreiboperation

Adresse ausgesucht. Diese Daten stehen kurz nach dem Anlegen der neuen Adresse an. Dieneue Adresse braucht maximal 1,72 FSMC-Takte, siehe Abbildung 5.34, um ihren neuen Wertanzunehmen. Die Daten, welche auf den Bus gelegt werden sollen, stehen also rechtzeitig zumPegelwechsel des NWAIT-Signals auf einen hohen Pegel bereit.

Die Abbildung 5.36 zeigt eine Simulation einer Leseoperation. Es ist zu sehen, dass bevor dieLeseoperation beginnt die Datenleitungen in einen hochohmigen Zustand gebracht werden,welcher als eine blaue Linie dargestellt ist. Bei Beginn der Operation wird das dataOut_ns-Signal, welches das Ausgangssignal des Multiplexers aus Abbildung 5.1 ist, auf den Datenbusgelegt. Ab diesem Zeitpunkt darf die Operation beendet werden. Die Erzeugung des NWAIT-Signals braucht jedoch zwei positive Takt�anken, weshalb die Operation noch nicht beendetwerden kann.

71

5. Implementierung der Kommunikationsschnittstelle

Abbildung 5.36.: Simulation einer Leseoperation

LaufzeitenWie bereits in Tabelle 4.1 zu sehen war, werden für eine Schreib- oder eine Leseoperationnach dem Entwurf 18 STM32 Takte benötigt. Die Schaltung braucht aber eigentlich zweipositive Takt�anken des Spartan-6 Takts, sowie vier STM32 Takte nach der positiven Flankedes NWAIT-Signals. Da das NE-Signal jedoch ein asynchrones Eingangsignal ist, können diezwei benötigten positiven Takt�anken in knapp über einem Takt aber auch in etwas unterzwei Spartan-6 Takten auftreten.Die Situation einer Best-Case Laufzeit wird in 5.37 dargestellt. Eine Best-Case Laufzeit kannerreicht werden, indem ein Zugri� genau vor einer positiven Takt�anke des Spartan-6 beginnt.So kann die Schaltung zur Synchronisation und zur Flankenerkennung direkt zu Beginn einerOperation ihre erste Stufe erreichen. Die Best-Case Laufzeit beträgt etwas mehr als einenSpartan-6 Takt zuzüglich vier STM32 Takte, also insgesamt etwas mehr als 10,72 STM32 Takte.Die Worst-Case Laufzeit wird in Abbildung 5.38 veranschaulicht. Erreicht wird eine Worst-CaseLaufzeit, wenn eine Operation direkt nach einer positiven Takt�anke des Spartan-6 beginntund somit ein Takt gewartet werden muss, damit die erste Stufe der Synchronisierung erreicht

72

5. Implementierung der Kommunikationsschnittstelle

wird. Die Worst-Case Laufzeit unterscheidet sich von der Best-Case Laufzeit um etwas wenigerals einen Spartan-6 Takt, weshalb sie etwas weniger als 17,4 STM32 Takten entspricht.

Abbildung 5.37.: Best-Case Laufzeit einer Schreiboperation

Abbildung 5.38.: Worst-Case Laufzeit einer Schreiboperation

Die Best-Case und die Worst-Case Laufzeit gilt für Schreib- und Leseoperationen. DieAbbildungen 5.37 und 5.38 zeigen nicht die Ergebnisse einer durchgeführten Analyse undstellen deshalb auch keine korrekten Taktangaben dar. Sie geben aber eine Übersicht über eineSituation in der eine Best-Case bzw. eine Worst-Case Laufzeit erreicht werden kann.

5.4. Synthese der Kommunikationsschni�stelle

Im Anschluss an die Beschreibung der Schaltungen aus den letzten Abschnitten, wurden diesezusammen als eine gesamte Schaltung vom Synthesewerkzeug XST von Xilinx synthetisiert.Hierfür wurde die Gesamtschaltung der Kommunikationsschnittstelle in eine Komponentezusammengefasst, die Kommunikationsschnittstellen-Komponente (CI). Zusammen mit derimplementierten Anwendung (APPL) wird diese Komponente in einer überstehenden Kompo-nente implementiert. Die überstehende Komponente ist die top-Komponente. Der Aufbau dertop-Komponente ist in Abbildung 5.39 dargestellt.

73

5. Implementierung der Kommunikationsschnittstelle

Abbildung 5.39.: Aufbau der top_fa-Komponente

Die Synthese der CI-Komponente hat eine Schaltung erzeugt, welche in Abbildung 5.40 zusehen ist. Es sind alle Teilschaltungen aus den letzten Kapiteln zu erkennen. Au�ällig ist jedoch,dass der Demultiplexer aus der Abbildung 5.15 nicht als Demultiplexer synthetisiert wurde,sondern als eine Kombination von UND- und ODER-Gattern mit den einzelnen Adressbits, wiees auch bei dem errWr- und errRd-Bit der Fall ist. Außerdem wurde statt dem high aktivenReset ein low aktiver Reset implementiert. Aus diesem Grund werden die Reset-Eingänge derSchaltungen aus dem vorherigen Kapitel zusätzlich invertiert.

74

5. Implementierung der Kommunikationsschnittstelle

Abbildung 5.40.: Schaltung für die Kommunikationsschnittstelle aus der Synthese

75

6. Performancetest derKommunikationsschni�stelle

In diesem Kapitel wird die Performance der entwickelten Kommunikationsschnittstelle gemes-sen. Hierfür wird zuerst der Aufbau des Systems und eine Kon�guration des FSMC beschrieben.Anschließend wird auf das Verfahren zur Messung der Performance eingegangen. Danachwerden die Messergebnisse vorgestellt und interpretiert.

6.1. Aufbau des Systems

Um die Performance der Kommunikationsschnittstelle messen zu können, wird die syntheti-sierte top-Komponente auf dem Spartan-6 implementiert. Außerdem wird eine Anwendung aufder Seite des STM32 implementiert. Diese Anwendung wird über den FSMC mit dem Spartan-6kommunizieren.

6.2. Konfiguration des FSMC

In diesem Abschnitt wird eine performante Kon�guration für die Register FSMC_BCRx undFSMC_BTRx vorgestellt.

Damit eine Anwendung des Mikrocontrollers überhaupt mit der Kommunikationsschnitt-stelle über den FSMC kommunizieren kann, müssen bestimmte Felder im FSMC_BCRx, wie inTabelle 6.1 gesetzt sein.

ASYNCWAIT WREN WRAPMOD WAITPOL BURSTEN MWID MUXEN MBKEN1 1 0 0 0 01 0 1

Tabelle 6.1.: Belegung der notwendigen Bits des FSMC_BCRx

76

6. Performancetest der Kommunikationsschnittstelle

ACCMOD DATLAT CLKDIV BUSTURN DATAST ADDHLD ADDSETX 0 0 0 6 1 0

Tabelle 6.2.: Belegung des Kon�gurationsregisters FSMC_BTRx

Das Setzen einer Eins an die Stelle des ASYNCWAIT-Bits erlaubt das Nutzen des NWAIT-Signals. Das WAITPOL-Bit regelt die Polarität dieses Wait-Signals. Eine Eins an dieser Stellesteht für ein low aktives Wait-Signal. Um Schreiboperationen zu erlauben wird das WREN-Bitauf Eins kon�guriert. Das Setzen der 0x01 an die Stellen der MWID-Bits kon�guriert den FSMCauf eine Datenbusbreite von 16-Bit. Außerdem sollten das Adress- und Datenmultiplexen, sowieder Burst-Modus und der Wrap-Modus ausgeschaltet sein. Dies wird durch das Schreiben einerNull an die Stellen des WRAPMOD-, des BURSTEN- und des MUXEN-Bits ermöglicht. DasBelegen des MBKEN-Bit mit einer Eins ermöglicht das Benutzen dieser Speicherbank.

Zu dieser nötigen Kon�guration gehört auch die Wahl des Betriebsmodus. In Abschnitt4.1.4 wurde bereits erklärt, dass die Wahl des Betriebsmodus einer der folgenden Modi tre�ensollte: 1, 2, A, B oder C. Sie unterscheiden sich in der Dauer und vom Verhalten der Signale,welche für die Kommunikationsschnittstelle nötig sind, nicht. Für die Messung wurde derModus 2 gewählt. Aus diesem Grund wird das FSMC_BCRx durch eine Null an der Stelle desEXTMOD-Bits und eine 0x2 an den Stellen der MTYP-Bits vervollständigt.Alle anderen Bits des FSMC_BCRx sind unwichtig für die Performance und die Funktion derKommunikationsschnittstelle.

Das FSMC_BTRx enthält die Timingparameter und ist damit der entscheidendste Faktorfür die Performance der Kommunikationsschnittstelle auf der Seite des Mikrocontrollers. InTabelle 6.2 ist die geeignetste Belegung des FSMC_BTRx dargestellt.Da die Wahl auf den Modus 2 �el, ist die Belegung der ACCMOD-Bits unwichtig. Die FelderDATLAT und CLKDIV werden für die synchrone Kommunikation verwendet, weshalb siefür diese Implementierung auf einen Wert von Null kon�guriert werden. Die ADDHLD-Bitswerden für den asynchronen Modus D gebraucht und sollen wie in Tabelle 2.1 dargestelltauf einen minimalen Wert von Eins kon�guriert werden. Dies beeinträchtigt die Dauer desModus 2 jedoch nicht. Um die ADDSET-Phase, wie in Abschnitt 4.1.4 zu überspringen, wirdder ADDSET-Parameter auf Null gesetzt. Die DATAST-Bits werden, wie in 5.3 geraten, miteiner sechs kon�guriert.

77

6. Performancetest der Kommunikationsschnittstelle

6.3. Verfahren zur Messung der Performance

Um die Performance zu messen, wird mit Hilfe des STM32 die Dauer einer großen Anzahl vonOperationen gemessen. Hierfür wird eine Schleife implementiert die jeweils eine Lese- und eineSchreiboperation ausführt. Da die Schleife zum Beispiel durch das Inkrementieren des Zählersauch Takte des STM32 aufwenden muss, kann das Messergebnis für die Dauer der Operationenbeein�usst werden. In diesem Fall kann dies sogar zu einer starken Beein�ussung führen, dadie Operationen an sich nicht viele STM32 Takte beanspruchen. Aus diesem Grund werdenunterschiedliche Schleifen implementiert. Alle Schleifen führen zwei Millionen Operationendurch, davon eine Hälfte Schreib- und die andere Hälfte Leseoperationen. Der unterschiedder Schleifen liegt in der Anzahl der Wiederholungen und der Anzahl der Operationen imSchleifenkörper. Es wird eine Schleife mit einer Million Wiederholungen und einer Schreib-und einer Leseoperation, eine Schleife mit 100.000 Wiederholungen und zehn Schreib- undzehn Leseoperationen und eine Schleife mit 20.000 Wiederholungen und 50 Schreib- und 50Leseoperationen implementiert. Durch die unterschiedlichen Wiederholungen kann die Zeit,welche für die Schleife aufgewendet wird, ausgerechnet werden.

Um die Dauer einer Schleife oder einer Operation herauszu�nden, werden die vergangenenTaktzyklen gemessen. Die Taktzyklen lassen sich im Debug-Modus in der µVision Entwick-lungsumgebung im Internal-Register als States �nden. Eine Messung beginnt also mit demAblesen der bereits vergangenen Taktzyklen. Anschließend werden die zumessenden Ope-rationen ausgeführt. Danach werden wieder die vergangenen Taktzyklen abgelesen. Um dieTaktzyklen auszurechnen, welche für die zumessenden Operationen aufgewendet wurden,wird die erste Anzahl von der zweiten Anzahl subtrahiert.

6.4. Messergebnisse

Schleife Wiederholungen Schreib- und Leseoperationspaare Dauer (in Taktzyklen)a 1.000.000 1 53.762.106b 100.000 10 47.712.013c 20.000 50 47.174.426

Tabelle 6.3.: Ergebnisse der unterschiedlichen Messungen

78

6. Performancetest der Kommunikationsschnittstelle

Die im letzten Abschnitt implementierten Schleifen ergaben die Messergebnisse aus derTabelle 6.3.

Wie die gemessene Anzahl an Taktzyklen sich für die unterschiedlichen Schleifen zusam-mensetzt, wird in 6.1 dargestellt.

Na = 1.000.000 ∗NSchleife + 2.000.000 ∗NOp = 53.762.106

Nb = 100.000 ∗NSchleife + 2.000.000 ∗NOp = 47.712.013

Nc = 20.000 ∗NSchleife + 2.000.000 ∗NOp = 47.174.426

(6.1)

Nx Anzahl der 168 MHz Takte zum Durchführen der Schleife xNOp Anzahl der 168 MHz Takte zum Durchführen einer OperationNSchleife Anzahl der 168 MHz Takte für einen Schleifendurchlauf ohne den Schleifenkörper

In 6.2 wird durch die Daten der Schleifen a und b berechnet, wie viel Zeit ein Schleifendurch-gang ohne die Durchführung der Operationen benötigt. Hierfür werden die Gesamtdauern unddie Arbeitsaufwände beider Schleifen subtrahiert. Es wird angenommen, dass bei beiden Schlei-fen die Dauer der Operationen gleich ist. Es wurde errechnet, dass ein Schleifendurchgang ohnedas Ausführen des Schleifenkörpers 6,72 STM32 Takte in Anspruch nimmt. Um auszurechnen,wie viele Takte die Operationen benötigen, muss diese Anzahl abgezogen werden.

Na −Nb = (1.000.000− 100.000) ∗NSchleife + (2.000.000− 2.000.000) ∗NOp

53.762.106− 47.712.013 = (1.000.000− 100.000) ∗NSchleife + (2.000.000− 2.000.000) ∗NOp

6.050.093 = 900.000 ∗NSchleife

6, 72 = NSchleife

(6.2)

79

6. Performancetest der Kommunikationsschnittstelle

Nx Anzahl der 168 MHz Takte zum Durchführen der Schleife xNOp Anzahl der 168 MHz Takte zum Durchführen einer OperationNSchleife Anzahl der 168 MHz Takte für einen Schleifendurchlauf ohne den Schleifenkörper

Das Abziehen der Zeit, welche die Schleife bei der Messung benötigt, wird in 6.3 verdeutlicht.Die Berechnung kommt zu dem Ergebnis, dass jede Operation 23,52 STM32 Takte benötigt. Esist zu beachten, dass in dieser Anzahl auch die Pause zwischen zwei Operationen eingeschlossenist.

Na = 1.000.000 ∗ 6, 72 + 2.000.000 ∗NOp(a) = 53.762.106

2.000.000 ∗NOp(a) = 53.762.106− 1.000.000 ∗ 6, 72 = 47.042.106

NOp(a) =47.042.106

2.000.000= 23, 52

Nb = 100.000 ∗ 6, 72 + 2.000.000 ∗NOp(b) = 47.712.013

2.000.000 ∗NOp(b) = 47.712.013− 100.000 ∗ 6, 72 = 47.040.013

NOp(b) =47.040.013

2.000.000= 23, 52

Nc = 20.000 ∗ 6, 72 + 2.000.000 ∗NOp(c) = 47.174.426

2.000.000 ∗NOp(c) = 47.174.426− 20.000 ∗ 6, 72 = 47.040.026

NOp(c) =47.040.026

2.000.000= 23, 52

(6.3)

Nx Anzahl der 168 MHz Takte zum Durchführen der Schleife xNOp(x) Anzahl der 168 MHz Takte zum Durchführen einer Operation von Schleife x

80

6. Performancetest der Kommunikationsschnittstelle

6.5. Auswertung der Messergebnisse

Eine Operation, ob Schreib- oder Leseoperation, soll wie in 5.3 beschrieben zwischen 10,72und 17,4 STM32 Takten dauern. Diese Zeit gibt aber lediglich die Dauer an, wie lange dasNE-Signal auf einem niedrigen Pegel steht. Die Dauer zwischen zwei Zugri�en wurde hierbeinoch nicht berücksichtigt. Hierfür wird ein Takt für die Dauer des hohen Pegels auf demNE-Signal zwischen zwei Operationen hinzugefügt. Erwartet werden für das Durchführen vonzwei Millionen Operationen also ungefähr 23,4 Millionen bis 36,8 Millionen STM32 Takte. DieBerechnung dieser Anzahl ist in 6.4 zu sehen.

BC2.000.000 = (10, 72 + 1) ∗ 2.000.000− 1 = 23.439.999

WC2.000.000 = (17, 4 + 1) ∗ 2.000.000− 1 = 36.799.999(6.4)

BCx Best-Case Laufzeit für das Durchführen von x aufeinanderfolgender OperationenWCx Worst-Case Laufzeit für das Durchführen von x aufeinanderfolgender Operationen

Im letzten Abschnitt wurde gemessen, dass zwei Millionen Operationen tatsächlich 47.040.000Takte benötigen. Im Vergleich zur Worst-Case-Laufzeit der zwei Millionen Operationen ist eingroßer Unterschied festzustellen.Die Ursachen ließen sich durch die Analyse mit der Analyse-Schaltung heraus�nden. Darge-stellt werden die Ursachen in den nachfolgenden Abbildungen.

In Abbildung 6.1 sind zwei mitgehörte Operationen zu sehen. Zuerst eine Schreiboperation,anschließend eine Leseoperation. Es ist zu erkennen, dass die Reaktion des FSMC auf denhohen Pegel des NWAIT-Signals bei Schreiboperationen nicht wie angenommen vier STM32Takte, sondern genau einen Spartan-6 Takt später auftritt. Hier entstehen 2,72 zusätzlicheSTM32 Takte für eine Schreiboperation. Bei einer Leseoperation wird bereits einen STM32Takt früher reagiert. Auch bei Leseoperationen entstehen so 1,72 zusätzliche STM32 Takte.

Die zweite Ursache ist in Abbildung 6.2 dargestellt. Es ist eine abgetastete Leseoperationgefolgt von einer Schreiboperation zu sehen. Au�ällig ist, dass die Dauer zwischen den beidenOperationen nicht wie angenommen und in 6.1 zu sehen, einem STM32 Takt entspricht. Dies ist

81

6. Performancetest der Kommunikationsschnittstelle

nur bei einer Schreiboperation, welche vor einer Leseoperation durchgeführt wird, der Fall. DieAnalyse hat ergeben, dass die Dauer zwischen einer Leseoperation und einer Schreiboperation,in dieser Reihenfolge, elf STM32 Takte beträgt.

Abbildung 6.1.: Analysierte Signalverläufe der FSMC-Signale einer Schreiboperation gefolgtvon einer Leseoperation

Abbildung 6.2.: Analysierte Signalverläufe der FSMC-Signale einer Leseoperation gefolgt voneiner Schreiboperation

Beachtet man bei der Berechnung der Best- und Worst-Case-Laufzeit diese beiden Faktoren,ergibt sich eine Berechnung, wie sie in 6.5 dargestellt ist. Die Berechnung kommt zum Ergebnis,dass zwei Millionen Operationen 37.880.000 bis 51.240.000 STM32 Takte in Anspruch nehmenkönnen. Die gemessenen 47.040.000 Takte sind somit angemessen.

BC2000000 = (((10, 72 + 2, 72) + 1) + ((10, 72 + 1, 72) + 11)) ∗ 1.000.000− 11 = 37.879.989

WC2000000 = (((17, 4 + 2, 72) + 1) + ((17, 4 + 1, 72) + 11)) ∗ 1.000.000− 11 = 51.239.989

(6.5)

BCx Best-Case Laufzeit für das Durchführen von x aufeinanderfolgender OperationenWCx Worst-Case Laufzeit für das Durchführen von x aufeinanderfolgender Operationen

82

6. Performancetest der Kommunikationsschnittstelle

Um die Performance der Kommunikationsschnittstelle bewerten zu können, wird der Da-tendurchsatz errechnet. Der Datendurchsatz beträgt für die oben durchgeführte Messung14,28 MByte/s. Es ist jedoch zu beachten, dass die Performance der Kommunikationsschnitt-stelle stark von den Taktsignalen der Komponenten abhängt. Aus diesem Grund gilt dieserDatendurchsatz nur für die Kombination aus der 25 MHz Taktquelle des Spartan-6 FPGA fürdie Kommunikationsschnittstelle und der 168 MHz Taktquelle des FSMC. Das Nutzen einerTaktquelle mit höherer Frequenz für die Kommunikationsschnittstelle, könnte den Durchsatzdeutlich steigern. Die Berechnung des Datendurchsatzes ist in 6.6 dargestellt.

tOp = T168MHz ∗NOp =1

168MHz∗ 23, 52 = 0, 00000014 s = 140ns

NOp/s =1

tOp= 7.142.857, 14 1/s

C = B ∗NOp/s

C = 16Bit ∗ 7.142.857 1/s = 114.285.714, 285 bit/s

C = 114, 28Mbit/s = 14, 28MByte/s

(6.6)

tOp Dauer einer OperationTx Periodendauer der Frequenz xNOp Anzahl der 168 MHz Takte für die Durchführung einer OperationNOp/s Anzahl der Operationen die in einer Sekunde durchgeführt werden könnenB DatenbusbreiteC Datendurchsatz

Überträgt man diese Berechnung des Datendurchsatzes auf die nicht gewählten Entwürfe, er-geben sich die Datendurchsätze, welche in Tabelle 6.4 dargestellt sind. Dem Parameter-Entwurfwurden hierfür, im Gegensatz zum synchronen und zum Wait-Entwurf, keine zusätzlichenTakte zwischen zwei Operationen hinzugefügt, da diese schon im Entwurf berücksichtigt

83

6. Performancetest der Kommunikationsschnittstelle

Entwurf DatendurchsatzAsynchron - Parameter 12 MByte/sAsynchron - Wait 14,28 MByte/sSynchron 11,2 MByte/s

Tabelle 6.4.: Datendurchsätze der Entwürfe

werden. Bei den Datendurchsätzen des synchronen und des Parameter-Entwurfes handelt essich nicht um gemessene Werte, sondern lediglich um errechnete Werte.Vergleicht man die Datendurchsätze der unterschiedlichen Entwürfe, wird klar, dass der imple-mentierte Wait-Entwurf der performanteste Entwurf ist.

In Abschnitt 1.1 wurden bereits alternative Schnittstellen zur Kommunikation von Mikro-controller und FPGA vorgestellt. Dazu gehörten unter anderem I2C und SPI. Diese werdenin diesem Abschnitt in ihrer Performance mit der entwickelten Kommunikationsschnittstelleverglichen.

I2CDie I2C Schnittstelle ist eine synchrone Schnittstelle und lässt sich in unterschiedlichen Modibetreiben. Mögliche Modi sind der Standard-mode, der Fast-mode, der Fast-mode Plus, derHigh-speed mode und der Ultra Fast-mode. Die Modi unterscheiden sich in ihrer Datenüber-tragungsrate. Die Übertragungsraten werden in [3] angegeben und reichen bis zu 5 Mbit/s. DerStandard-mode erreicht dabei bis zu 100 kbit/s und der Ultra Fast-mode bis zu 5 MBit/s.

SPIIn Abschnitt 1.1 wurde bereits erwähnt, dass für SPI verschiedenste Erweiterungen verfügbarsind. Quad-SPI war eine dieser Erweiterungen und wurde durch seine gesteigerte Performanceals eine Alternative zum FSMC beschrieben. Die Performance von Quad-SPI wurde anhandder AXI Quad SPI IP Komponente von Xilinx in [2] gemessen. Die Messung wurde einmal mitSchreib- und einmal mit Leseoperationen durchgeführt. Der Datendurchsatz beim Schreibenbetrug 13 MByte/s. Der Datendurchsatz beim Lesen betrug 18 MByte/s.

Vergleich der PerformanceFür den Vergleich der Performance ist darauf zu achten, dass die Performance von I2C lediglichals Übertragungsrate angegeben ist. Der Datendurchsatz ist durch Eigenschaften der Schnitt-stelle dementsprechend geringer.

84

6. Performancetest der Kommunikationsschnittstelle

Schnittstelle DatendurchsatzI2C < 5 Mbit/sQuad-SPI 13 - 18 MByte/sFSMC(Mode 2 -Wait) 14,28 MByte/s

Tabelle 6.5.: Datendurchsätze von I2C, SPI und FSMC

Der Datendurchsatz der FSMC-Schnittstelle ist im Mode 2 gemessen worden. Der Datendurch-satz der FSMC-Schnittstelle unterscheidet sich in den andere Modi, bis auf Modus D, nicht.

Vergleicht man den Datendurchsatz der implementierten Kommunikationsschnittstelle mitder Übertragungsrate des performantesten I2C Modus fällt auf, dass die Kommunikations-schnittstelle ungefähr um den Faktor 22 schneller ist. Quad-SPI hingegen weist einen ähnlichenDatendurchsatz auf und bestätigt sich somit als passende Alternative zum FSMC.Es ist beim Verleich des Datendurchsatzes von Quad-SPI und FSMC darauf zu achten, dasssie unterschiedlich gemessen wurden. Sollte die Kommunikationsschnittstelle unter gleichenUmständen gemessen werden, wird der Datendurchsatz noch etwas gesteigert.

85

7. Zusammenfassung

Ziel dieser Arbeit war es, eine möglichst performante Kommunikationsschnittstelle zwischeneinem FPGA der Spartan-6 Familie und einem STM32F4 Mikrocontroller auf Basis des FSMCvon ST zu entwickeln. Hierfür wurde das FSMC-Protokoll analysiert und aufgrund dieserAnalyse ein Entwurf entwickelt und implementiert.

In den Grundlagen wurde dafür ein Überblick über die Arten von Speichern gescha�en, umdie Funktionsweise des FSMC nachvollziehen zu können. Der FSMC wurde daraufhin beschrie-ben und es wurden die Auswirkungen der unterstützten Speicher auf die Funktionsweise desFSMC erklärt. Außerdem wurde der Aufbau der vorliegenden Hardware vorgestellt.Vor der Analyse des FSMC wurden Anforderungen an die Kommunikationsschnittstelle de�-niert.Für den Entwurf und die Implementierung wurden die Funktionen der Kommunikationsschnitt-stelle in zwei Komponenten geteilt, das Mikroprozessorinterface für das einfache Interagierenmit einer Anwendung auf dem FPGA und einer digitalen Schaltung für die Kommunikationüber den FSMC.Die Analyse des FSMC wurde durchgeführt und auf Basis der erhaltenen Informationen wur-den drei Entwürfe für eine Kommunikationsschaltung entwickelt und vorgestellt. Es wurdeein Entwurf ausgewählt und anschließend implementiert. Zudem wurde ein Entwurf für einMikroprozessorinterface entwickelt.Die Implementation des Entwurfes wurde zuerst anhand ihrer Teilkomponenten durch Schal-tungen beschrieben, welche jeweils durch eine Simulation auf ihre Funktion überprüft wurden.Im Anschluss wurden die Implementationen als eine komplette Schaltung betrachtet und aufihr zeitliches Verhalten eingegangen. Die Implementation wurde synthetisiert und das Ergebnisdieser Synthese wurde beschrieben.Zum Schluss wurde die entwickelte Schaltung auf dem Spartan-6 FPGA integriert und diePerformance gemessen. Außerdem wurde eine erwartete Performance errechnet und mit dengemessenen Ergebnissen verglichen.

86

7. Zusammenfassung

Das Ergebnis dieser Arbeit ist eine Kommunikationsschnittstelle, welche eine Kommuni-kation zwischen einem XC6SLX16-2CSG324C Spartan-6 FPGA und einem STM32F417IGH6Mikrocontroller mit bis zu 14,28 MByte/s ermöglicht. Die Kommunikationsschnittstelle wurdehierfür mit dem Wait-Signal Entwurf realisiert, welcher einen asynchronen Betriebsmodus unddas Wait-Signal des FSMC verwendet. Dieser Entwurf wurde wegen seiner Performance undHardwareunabhängigkeit gewählt. Außerdem lässt sich durch diesen Entwurf jeder asynchroneBetriebsmodus, bis auf Modus D, benutzen und lässt somit Freiheiten beim Kon�gurieren desFSMC. Die unterschiedlichen asynchronen Betriebsmodi unterscheiden sich dabei in ihrer Per-formance nicht. Zusätzlich bietet die Kommunikationsschnittstelle dem STM32F4 die Vorteileeines Mikroprozessorinterfaces.

87

8. Ausblick

Die entwickelte Kommunikationsschnittstelle stellt eine Komponente zur performanten Kom-munikation von einem FPGA und einem STM32F4 mit integrierter FSMC-Schnittstelle dar. Siekann in vielen Bereichen eingesetzt werden. Sollte etwa eine performante Kommunikation zwi-schen FPGA und einem STM32F4 oder eine möglichst einfache Benutzung einer Anwendungauf der Seite des FPGA durch den STM32F4 nötig sein. Sie lässt sich durch ihre Hardwareunab-hängigkeit auf vielen FPGAs implementieren. Außerdem lassen sich durch das Einbeziehen derChip-Select-Signale in die Kommunikationsschnittstelle mehrere FPGA mit einer integriertenKommunikationsschnittstelle durch einen STM32F4 verwalten.Die Kommunikationsschnittstelle lässt sich mit wenig Wissen und Aufwand an viele Anwen-dungen anpassen. Zum Beispiel durch das Austauschen der Daten Register. Dadurch eignet sichdie Anwendung der Kommunikationsschnittstelle außerdem besonders in der Hochschullehre.Auch die klare Trennung der unterschiedlichen Control Register und die leeren Bits der Statusund Control Register sollen dazu beitragen.

88

Tabellenverzeichnis

2.1. Minimum- und Maximumwerte der Timingparameter des NOR/PSRAM Spei-chercontrollers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

2.2. Minimum- und Maximumwerte der Timingparameter des NAND/PC CardSpeichercontrollers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

4.1. Vor- und Nachteile der Entwürfe . . . . . . . . . . . . . . . . . . . . . . . . . . 38

5.1. Verhalten der D-Latches mit invertierten Gate- und Gate-Enable Eingang fürdie Speicherung der Daten und der Adresse . . . . . . . . . . . . . . . . . . . . 49

5.2. Adressen und Zugri�srechte der Mikroprozessorinterface-Register . . . . . . . 555.3. Wahrheitstabelle für das Setzen des errPnc-Bits . . . . . . . . . . . . . . . . . 68

6.1. Belegung der notwendigen Bits des FSMC_BCRx . . . . . . . . . . . . . . . . 766.2. Belegung des Kon�gurationsregisters FSMC_BTRx . . . . . . . . . . . . . . . 776.3. Ergebnisse der unterschiedlichen Messungen . . . . . . . . . . . . . . . . . . . 786.4. Datendurchsätze der Entwürfe . . . . . . . . . . . . . . . . . . . . . . . . . . . 846.5. Datendurchsätze von I2C, SPI und FSMC . . . . . . . . . . . . . . . . . . . . . 85

A.1. Datenzusammensetzung bei der Kommunikation zwischen Mikrocontroller-Anwendung und top_fa-Komponente . . . . . . . . . . . . . . . . . . . . . . . 5

A.2. Datenzusammensetzung bei der Kommunikation zwischen Mikrocontroller-Anwendung und top_fa-Komponente nach der Implementierung der Kommu-nikationsschnittstelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

89

Abbildungsverzeichnis

2.1. FSMC Block-Diagramm nach Abbildung 432 aus [5] . . . . . . . . . . . . . . . 62.2. FSMC Speicherbänke mit Adressbereichen (Quelle: [5]) . . . . . . . . . . . . . 72.3. Adressbereiche des NAND-/PC Card Controller (Quelle: [5]) . . . . . . . . . . 82.4. Leseoperation (links) und Schreiboperation (rechts) des Mode 1 (Quelle: [5]) . 112.5. Leseoperation (links) und Schreiboperation (rechts) des Mode 2 (Quelle: [5]) . 122.6. Leseoperation (links) und Schreiboperation (rechts) des Mode A (Quelle: [5]) . 122.7. Schreiboperation des Mode B (Quelle: [5]) . . . . . . . . . . . . . . . . . . . . 132.8. Leseoperation (links) und Schreiboperation (rechts) des Mode C (Quelle: [5]) . 142.9. Leseoperation (links) und Schreiboperation (rechts) des Mode D (Quelle: [5]) . 142.10. Synchrone Kommunikation zwischen FSMC und NOR/PSRAM als Leseopera-

tion (Quelle: [5]) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.11. Synchrone Kommunikation zwischen FSMC und PSRAM als Schreiboperation

(Quelle: [5]) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162.12. NAND/PC Card Speichercontroller Zugri�stimings (Quelle: [5]) . . . . . . . . 182.13. NAND/PC Card Speichercontroller - Kompletter Zugri� (Quelle: [5]) . . . . . 192.14. Register für die Kon�guration des NOR Flash/PSRAM Speichercontrollers (nach

Tabelle 249 aus Quelle: [5]) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202.15. Register für die Kon�guration des NAND/PC Card Speichercontrollers (nach

Tabelle 249 aus Quelle: [5]) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222.16. HAW-Board mit integriertem Xynergy-Board . . . . . . . . . . . . . . . . . . . 252.17. Reduzierter Aufbau des Xynergy-Boards . . . . . . . . . . . . . . . . . . . . . 25

3.1. Komponentenübersicht des Mikrocontrollers und des FPGAs . . . . . . . . . . 27

4.1. Zeitlicher Verlauf der FSMC-Signale während einer Leseboperation mit einerdigitalen Schaltung im Parameter-Entwurf . . . . . . . . . . . . . . . . . . . . 34

4.2. Zeitlicher Verlauf der FSMC-Signale während einer Schreiboperation mit einerdigitalen Schaltung im Parameter-Entwurf . . . . . . . . . . . . . . . . . . . . 34

4.3. Zeitlicher Verlauf des Wait-Signals während einer Schreiboperation . . . . . . 36

90

Abbildungsverzeichnis

4.4. Zeitlicher Verlauf des Wait-Signals während einer Leseoperation . . . . . . . . 364.5. Status Register des Mikroprozessorinterface-Entwurfs . . . . . . . . . . . . . . 404.6. Control Register 1 des Mikroprozessorinterface-Entwurfs . . . . . . . . . . . . 414.7. Control Register 2 des Mikroprozessorinterface-Entwurfs . . . . . . . . . . . . 42

5.1. Digitale Schaltung für die Kommunikation über das FSMC-Protokoll (ci.vhd) . 455.2. Schaltung für die Verwaltung des Wait-Signals (ci.vhd) . . . . . . . . . . . . . 465.3. Simulation der Schaltung für die Verwaltung des Wait-Signals . . . . . . . . . 475.4. Schaltung für die Speicherung der Daten (ci.vhd) . . . . . . . . . . . . . . . . . 475.5. Schaltung für die Speicherung der Adresse (ci.vhd) . . . . . . . . . . . . . . . . 485.6. Simulation der Schaltungen für die Speicherung der Daten und der Adresse

mit Schreiboperationen im Modus 2 . . . . . . . . . . . . . . . . . . . . . . . . 495.7. Schaltung für das Erkennen einer Schreiboperation (ci.vhd) . . . . . . . . . . . 505.8. Simulation der Schaltung für die Erkennung einer Schreiboperation während

einer Schreiboperation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515.9. Simulation der Schaltung für die Erkennung einer Schreiboperation während

einer Leseoperation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515.10. Schaltung für die Ansteuerung des Tristate Treibers und die Belegung des

Datenbusses (ci.vhd) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525.11. Simulation der Tristate Treiber Schaltung . . . . . . . . . . . . . . . . . . . . . 535.12. Schnittellen der integrierten Anwendung . . . . . . . . . . . . . . . . . . . . . 545.13. Schaltung für das Setzen des Ereignis Registers (ci.vhd) . . . . . . . . . . . . . 555.14. Verhalten des Ergebnis Registers während der Simulation . . . . . . . . . . . . 565.15. Schaltung für das Setzen der Control Register und der Operanden Register

(ci.vhd) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565.16. Simulation der Inhaltsübernahme der Mikroprozessorinterface-Register . . . . 575.17. Schaltung zum Zurücksetzen des Control Register 2 (ci.vhd) . . . . . . . . . . 585.18. Simulation des Verhaltens des Control Register 2 . . . . . . . . . . . . . . . . . 585.19. Schaltung für das Setzen des rdy-Bits (ci.vhd) . . . . . . . . . . . . . . . . . . . 595.20. Verhalten des rdy-Bits im Status Register beim Starten der Anwendung . . . . 595.21. Schaltung für das Setzen des iEn-Bits im Status Register (ci.vhd) . . . . . . . . 605.22. Verhalten des iEn-Bits im Status Register und im Control Register 1 . . . . . . 605.23. Schaltung für das Setzen und Zurücksetzen des iPen-Registers (ci.vhd) . . . . 615.24. Schaltung für das Erzeugen und Löschen eines Interrupt-Request (ci.vhd) . . . 625.25. Simulation der Schaltung für das Erzeugen und Löschen eines Interrupt Requests 635.26. Schaltung für das Setzen und Zurücksetzen des errCmp-Bits (ci.vhd) . . . . . . 64

91

Abbildungsverzeichnis

5.27. Simulation der Schaltung für das Setzen und Zurücksetzen des errCmp-Bits . 645.28. Schaltung für das Setzen und Zurücksetzen des errWr-Bits (ci.vhd) . . . . . . . 655.29. Simulation der Schaltung für das Setzen und Zurücksetzen des errWr-Bits . . 655.30. Schaltung für das Erzeugen eines Enable-Signals für das errRd-Bit (ci.vhd) . . 665.31. Schaltung für das Setzen und Zurücksetzen des errRd-Bits (ci.vhd) . . . . . . . 665.32. Simulation der Schaltung für das Setzen und Zurücksetzen des errRd-Bits . . . 675.33. Schaltung für das Setzen und Zurücksetzen des errPnc-Bits (ci.vhd) . . . . . . 685.34. Signalverlauf zwei aufeinanderfolgender Schreiboperationen . . . . . . . . . . 705.35. Simulation einer Schreiboperation . . . . . . . . . . . . . . . . . . . . . . . . . 715.36. Simulation einer Leseoperation . . . . . . . . . . . . . . . . . . . . . . . . . . 725.37. Best-Case Laufzeit einer Schreiboperation . . . . . . . . . . . . . . . . . . . . 735.38. Worst-Case Laufzeit einer Schreiboperation . . . . . . . . . . . . . . . . . . . 735.39. Aufbau der top_fa-Komponente . . . . . . . . . . . . . . . . . . . . . . . . . . 745.40. Schaltung für die Kommunikationsschnittstelle aus der Synthese . . . . . . . . 75

6.1. Analysierte Signalverläufe der FSMC-Signale einer Schreiboperation gefolgtvon einer Leseoperation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

6.2. Analysierte Signalverläufe der FSMC-Signale einer Leseoperation gefolgt voneiner Schreiboperation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

A.1. Komponenten- und Kommunikationsübersicht der Analyse des FSMC . . . . . 2A.2. Aufbau des Vier-Phasen-Handshakes . . . . . . . . . . . . . . . . . . . . . . . 3A.3. Signalverlauf der Vier-Phasen-Handshake-Signale während einer Kommuni-

kation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4A.4. Konsolenausgabe der FSMC-Analyse . . . . . . . . . . . . . . . . . . . . . . . 7A.5. Abtastdaten als WaveDrom Signalverläufe . . . . . . . . . . . . . . . . . . . . 8

B.1. Verzeichnisbaum der beigelegten CD . . . . . . . . . . . . . . . . . . . . . . . 14

92

Literaturverzeichnis

[1] Cypress. An99111. Parallel NOR Flash Memory: An Overview URL: http://www.cypress.com/file/202491/download (Aufgerufen am 21.07.2017).

[2] Prasad Gutti. Throughput performance measurement for axi quad spi ip, Au-gust 2016. URL: https://www.xilinx.com/support/documentation/application_notes/xapp1234-kcu105-axi-quad-spi.pdf (Aufgeru-fen am 21.12.2017).

[3] NXP-Semiconductors. Um10204, April 2014. I2C-bus speci�cation and user ma-nual Rev.6 URL: https://www.nxp.com/docs/en/user-guide/UM10204.pdf (Aufgerufen am 21.12.2017).

[4] SILICA. Silica xynergy board user guide, 10 2011. URL: www.silica.com/xynergy.

[5] ST. RM0090 Reference Manual, revision 15 edition, July 2017. STM32F405/415,STM32F407/417, STM32F427/437, and STM32F429/439 advanced ARM-based32-bit MCUs URL: http://www.st.com/content/ccc/resource/technical/document/reference_manual/3d/6d/5a/66/b4/99/40/d4/DM00031020.pdf/files/DM00031020.pdf/jcr:content/translations/en.DM00031020.pdf (Aufgerufen am 5.01.2018).

93

A. Anhang

A.1. Analyse des FSMC auf dem FPGA

Die Analyse des FSMC war wesentlicher Bestandteil dieser Arbeit. Im Abschnitt 1.3 undim Abschnitt 4.1.2 wurde bereits erklärt wofür diese Analyse genutzt wurde und welcheInformationen damit gewonnen wurden. In diesem Abschnitt soll beschrieben werden, wie dieAnalyse funktioniert.

AufbauDie Analyse des FSMC ist wie in Abbildung A.1 aufgebaut. Es wurde eine Komponente zumAbtasten der FSMC-Signale entwickelt, die ilsa-Komponente, und eine Komponente um dieseDaten anschließend zu Übertragen, die top_fa-Komponente. Die top_fa-Komponente stehtfür die oberste Komponente der FSMC-Analyse. Sie beinhaltet die Abtast-Komponente ilsaund kann mit Hilfe eines Zählers auf die Abtastdaten der ilsa-Komponente zugreifen. DieAbtastdaten können von der Anwendung des Mikrocontrollers durch einen implementiertenVier-Phasen-Handshake ausgelesen werden.

AbtastenDas Ziel der Analysekomponente bzw. der ilsa-Komponente war es, die Signalverläufe derFSMC-Signale zu rekonstruieren. Hierfür wurden alle für den NOR/PSRAM Speichercontrollerwichtigen FSMC-Signale abgetastet. Zu diesen Signalen gehören das NE-, das NWE-, das NOE-,die NBL-, das NL- und das FSMC_CLK-Signal. Außerdem die Adress- und Datenleitungen. Fürdie Adress- und Datenleitungen wurde sich jeweils auf die ersten vier Leitungen beschränkt.Alle diese Signale können Pegelwechsel mit einer Frequenz von 168 MHz aufweisen, weshalblaut Nyquist-Shannon-Abtasttheorem eine Frequenz von mindestens 338 MHZ für das Abtastenzu wählen ist. Mit Hilfe der Xilinx Software wurde eine 350 MHz Taktquelle aus dem Spartan-6Takt erzeugt. Die Wahl der Frequenz für die ilsa-Komponente �el auf 350 MHz, da eine Frequenzvon 338 MHz aus dem Spartan-6 Takt nicht erzeugt werden konnte, und 350 MHz die nächsthöhere erzeugbare Frequenz war.

1

A. Anhang

Abbildung A.1.: Komponenten- und Kommunikationsübersicht der Analyse des FSMC

Das Sichern der Pegel der FSMC-Signale geschieht in der ilsa-Komponente mit Hilfe vonSchieberegistern; ein Schieberegister für jedes Signal. Die ilsa-Komponente sichert also bei jederpositiven Takt�anke des 350 MHz Taktsignals die Pegel der FSMC-Signale in ihren zugehörigenSchieberegistern. Die Größe der Schieberegister ist einstellbar. Die ältesten abgetasteten Pegelwerden aus den Schieberegistern herausgeschoben und die neuesten werden an Stelle desLeast-Signi�cant-Bit (LSB) angehängt.

Damit die FSMC-Signal Pegel nur gesichert werden, wenn auch eine FSMC-Operation durch-geführt wird, wurde ein Eingangs-Signal (Start) hinzugefügt. Wenn dieses Signal auf einemhohen Pegel steht, werden den Schieberegistern Abtastdaten hinzugefügt, andernfalls nicht.Somit wird verhindert, dass beim Auslesen die Schieberegister weiter mit nicht relevantenDaten gefüllt werden. Die Mikrocontroller-Anwendung muss also bevor sie eine oder mehrereFSMC-Operationen abtasten will, das Start-Signal auf einen hohen Pegel treiben. Nach demDurchführen der Operationen sollte das Start-Signal wieder auf einen niedrigen Pegel gelegtwerden.

Zusätzlich existiert ein Hilfsignal (valid), welches angibt ob die gesammelten Daten validesind. Auch das valid-Signal wird in ein Schieberegister gespeichert. Hierfür wird bei einemhohen Pegel auf dem Start-Signal bei jeder positiven Takt�anke eine Eins an die Stelle desLSB eingefügt. Es existiert also für jeden abgetasteten Pegel der FSMC-Signale ein valid-Signal.

2

A. Anhang

Somit lassen sich beim späteren Auslesen der Schieberegister mögliche Fehler und Initialwerteerkennen.

ProtokollIn Abbildung A.2 sind die nötigen Signale für den Vier-Phasen-Handshake zu sehen.Der Vier-Phasen-Handshake arbeitet mit einem Request- (req) und einem Acknowledge-Signal(ack). Außerdem wird eine oder mehrere Datenleitungen verwendet. In Abbildung A.3 ist eineDatenübertragung mit Hilfe des Vier-Phasen-Handshakes zu sehen. Die erste Phase bestehtaus einer Anfrage der Anwendung des Mikrocontrollers durch das Setzen des Request-Signalsauf einen hohen Pegel. Daraufhin legt die top_fa-Komponente in der zweiten Phase Datenauf den Datenbus und bestätigt mit einem hohen Pegel auf dem Acknowledge-Signal dieAnfrage des Mikrocontrollers und damit auch die Gültigkeit der Daten auf dem Datenbus. DerMikrocontroller liest in der folgenden dritten Phase die Daten vom Datenbus und quittiertdas mit einem niedrigen Pegel auf dem Request-Signal, welches die vierte Phase einleitet.In der vierten Phase nimmt die top_fa-Komponente die Daten vom Datenbus und setzt dasAcknowledge-Signal zurück auf einen niedrigen Pegel.

Abbildung A.2.: Aufbau des Vier-Phasen-Handshakes

Auslesen der AbtastdatenUm mit Hilfe des Vier-Phasen-Handshakes die Inhalte der Schieberegister mit den gespeichertenFSMC-Signalpegeln zu empfangen wurde sich eine Struktur überlegt, in der die Schieberegisterausgelesen werden.Hierfür wurde von der top_fa-Komponente ein Zähler implementiert. Der Zähler zählt vonnull bis zur kon�gurierten Tiefe der Schieberegister und startet dann wieder bei null. DerZähler wird für jede Vier-Phasen-Handshake-Kommunikation um eins inkrementiert. Der

3

A. Anhang

Abbildung A.3.: Signalverlauf der Vier-Phasen-Handshake-Signale während einerKommunikation

Zähler wird der ilsa-Komponente von der top_fa-Komponente zu Verfügung gestellt. Dieilsa-Komponente stellt aus dem Zähler und den gespeicherten Daten einen Ausgang mit einerBreite von 16-Bit zu Verfügung. Diese 16-Bit hängen vom Zähler ab. Steht der Zähler auf null,bestehen die 16-Bit aus den neuesten Abtastdaten der Signale. Steht der Zähler auf seinemMaximum, bestehen die 16-Bit Daten aus den ältesten Abtastdaten. Die 16-Bit sind wie inTabelle A.1 zusammengesetzt. Diese von der ilsa-Komponente zu Verfügung gestellten 16-Bitwerden durch den Vier-Phasen-Handshake übertragen.

Damit die Anwendung des Mikrocontrollers die Schieberegister auslesen kann, müssenzuerst Leitungen vom STM32 zum Spartan-6 gelegt werden. Es werden drei Leitungen benötigt,für das Start-Signal, das Request-Signal und das Acknowledge-Signal. Für die 16-Bit Datenwerden die Datenleitungen des FSMC genutzt. Hier müssen jedoch nach dem Benutzen desFSMC und vor dem Auslesen der Schieberegister die GPIO der Datenleitungen neu kon�gu-riert werden. Der FSMC benutzt einen alternate function mode und die Analyse den input mode.

In einem Beispielfall würde also zuerst das Start-Signal auf einen hohen Pegel gelegt. An-schließend würden die FSMC-Operationen ausgeführt. Nach Beendigung der FSMC-Operationenwird das Start-Signal wieder auf einen niedrigen Pegel gelegt. Danach werden die GPIO-Modiangepasst. Anschließend sollte der Vier-Phasen-Handshake ausgeführt werden. Die Anzahl derWiederholungen entspricht der Tiefe der Schieberegister. Abgespeichert werden die Daten in16 unterschiedlichen Arrays; ein Array für jedes Signal. Die Arrays haben nun an der Stelle mitdem Index null die neuesten Abtastdaten und an dem letzten Index die ältesten. Vorausgesetztbeim Schreiben der Arrays wird bei dem Index von null angefangen.

Nutzen der Analyse-Komponente nach Implementierung der Kommunikationsschni�-stelleDie Analyse-Komponente ließ sich nicht nur für die Analyse des FSMC nutzen, es konnten

4

A. Anhang

Bitstelle Inhalt15 FSMC_CLK14 FSMC_NWE13 FSMC_NE12 FSMC_NOE11 FSMC_NL10 FSMC_NBL09 FSMC_DATA(3)8 FSMC_DATA(2)7 FSMC_DATA(1)6 FSMC_DATA(0)5 FSMC_ADDR(3)4 FSMC_ADDR(2)3 FSMC_ADDR(1)2 FSMC_ADDR(0)1 valid0 FSMC_NBL1

Tabelle A.1.: Datenzusammensetzung bei der Kommunikation zwischen Mikrocontroller-Anwendung und top_fa-Komponente

auch nach der Implementation der Kommunikationsschnittstelle die Operationen mitgehörtwerden. Dies war besonders hilfreich beim Finden der Ursachen für die Abweichung von derberechneten und der gemessenen Laufzeit im Kapitel 6.Es wurden dafür einige Anpassungen vorgenommen. Dazu gehört das Versetzen des Tristate-Treibers der Kommunikationsschnittstelle, denn um die Kommunikationsschnittstelle analysie-ren zu können, musste sie in die top_fa-Komponente integriert werden. Der Tristate-Treiberwurde also von der Kommunikationsschnittstelle in die top_fa-Komponente verschoben, dadieser direkt an den Aus- bzw. Eingängen sitzen muss. Der bidirektionale Dateneingang derKommunikationsschnittstelle wurde durch einen Eingang und einen Ausgang ersetzt.Außerdem wurden die zu analysieren Signale ausgetauscht. In Tabelle A.2 ist die neue Belegungzu sehen. Zu beachten ist jedoch, dass die FPGA_CLK nicht unbedingt den richtigen Pegelaufzeichnet, es sollte lediglich auf die Flanken geachtet werden.

VisualisierungDa die FSMC-Pegel nun chronologisch geordnet vorliegen, können sie entweder als Nullen undEinsen auf der Konsole dargestellt oder in einer Wave-Form graphisch aufbereitet werden. InAbbildung A.4 ist ein Beispiel für die Konsolenausgabe zu sehen. Die Tiefe der Schieberegister

5

A. Anhang

Bitstelle Inhalt15 FPGA_CLK14 FSMC_NWE13 FSMC_NE12 FSMC_NOE11 FSMC_NL10 irq9 FSMC_DATA(7)8 FSMC_DATA(2)7 FSMC_DATA(1)6 FSMC_DATA(0)5 iAck4 FSMC_ADDR(2)3 FSMC_ADDR(1)2 FSMC_ADDR(0)1 valid0 FSMC_NWAIT

Tabelle A.2.: Datenzusammensetzung bei der Kommunikation zwischen Mikrocontroller-Anwendung und top_fa-Komponente nach der Implementierung derKommunikationsschnittstelle

beträgt 512 Bit. Die ältesten Abtastdaten be�nden sich in der ersten Spalte der oberen Reihe.Die neuesten Abtastdaten be�nden sich am rechten Ende der unteren Reihe.

Für die graphische Aufbereitung wurde das Programm WaveDrom genutzt. Das ProgrammWaveDrom erstellt aus einem formatierten String mit Einsen und Nullen ein Wave-Format. Umeinen geeigneten langen String zu erstellen wurden die Schieberegisterinhalte gekürzt. Dafürwurde die erste Stelle einer Eins im valid-Schieberegister gesucht. Ab hier wurde der String inein WaveDrom-Format übertragen. Kopiert man den formatierten String, welcher unten inAbbildung A.4 dargestellt ist, in das WaveDrom Programm, so erhält man einen Signalverlauf,wie er teils in A.5 dargestellt ist.

ProblemeDurch die Wahl von 350 MHz als Abtastfrequenz wird sichergestellt, dass alle Flanken derFSMC-Signale wenigstens einmal erkannt werden. Es stellt jedoch nicht sicher, dass die Flankenan der richtigen Stelle vorkommen. Aus diesem Grund kann es sein, dass eine Flanke um einen350 MHz-Takt nach hinten oder vorne verschoben wird.

6

A. Anhang

Abbildung A.4.: Konsolenausgabe der FSMC-Analyse

7

A. Anhang

Abbildung A.5.: Abtastdaten als WaveDrom Signalverläufe

8

A. Anhang

A.2. Anwendung

Im Abschnitt 5.2 wurde bereits beschrieben, dass für die Implementierung der Kommuni-kationsschnittstelle eine Anwendung implementiert wurde, damit alle Funktionen genutztwerden konnten. In Abbildung 5.12 wurden außerdem die nötigen Schnittstellen dieser An-wendung dargestellt. Eine Anwendung muss jedoch nicht alle Schnittstellen implementieren.Im folgenden Abschnitt wird beschrieben, wie sich eine Anwendung verhalten sollte.

Starten einer AnwendungDie Operanden Register werden jederzeit an die Anwendung übertragen, weshalb die Anwen-dung mehrere Möglichkeiten hat damit umzugehen. Entweder arbeitet die Anwendung injedem Durchgang mit den aktuellen Operanden-Eingängen oder sie wird von der Kommuni-kationsschnittstelle durch ein Startereignis gestartet. Das kontinuierliche Arbeiten mit denOperanden-Eingängen ist jedoch abzuraten, da eventuell mit Operanden gearbeitet wird, dienicht sinnvoll sind. Wenn es zu einem sinnvollen Auftrag kommt, wird das Ergebnis dadurcheventuell verzögert.Sollte die Anwendung durch die Kommunikationsschnittstelle gestartet werden können, somuss sie das Request-Signal implementieren. Ein Startereignis der Kommunikationsschnittstel-le besteht aus einem hohen Pegel auf diesem Signal. Der hohe Pegel liegt einen FPGA Taktlang an. Die Anwendung muss dafür sorgen, dass dieser Pegel sicher erkannt wird.

InterruptsSoll durch die Anwendung ein Interrupt in der Kommunikationsschnittstelle erzeugt werdenkönnen, so muss sie das rdy-Signal implementieren. Mit dem rdy-Signal soll der Bereitschafts-status signalisiert werden. Ein hoher Pegel steht dafür, dass die Anwendung bereit für eineneue Anfrage ist. Ein niedriger Pegel steht dafür, dass die Anwendung beschäftigt ist. BeidePegel müssen mindestens einen FPGA Takt gehalten werden. Springt das rdy-Signal von ei-nem niedrigen Pegel auf einen hohen Pegel, wird in der Kommunikationsschnittstelle für denMikrocontroller ein Interrupt-Request erzeugt, sofern das iEn-Bit mit einer Eins belegt ist. Dasrdy-Signal muss jederzeit am Ausgang anliegen.

Ergebnis einer AnwendungWenn durch den Mikrocontroller ein Ergebnis der Anwendung erwartet wird, muss die An-wendung dieses auf den Ergebnis-Ausgang res legen. Das Ergebnis der letzten Anfrage solltedabei auf dem Bus liegen bleiben, damit dieses auch jederzeit vom Mikrocontroller ausgelesenwerden kann.

9

A. Anhang

A.3. Unstimmigkeiten im Reference Manual

Während der Analyse ließen sich Unstimmigkeiten im Reference Manual des STM32 feststellen.Im Abschnitt 4.1.2 wurden diese Unstimmigkeiten bereits angesprochen und beschrieben.Zu diesen Unstimmigkeiten gehörten die Minimalwerte des CLK_DIV und des BUSTURNTimingparameters. Für den CLK_DIV Timingparameter ließ sich im Gegensatz zu den imReference Manual angegebenen Minimalwert von zwei, minimal ein Wert von fünf einstellen.Alle Werte unter fünf hatten zur Folge, dass kein FSMC_CLK-Signal während der synchronenKommunikation erzeugt wurde.Im Reference Manual wurde für den BUSTURN-Timingparameter ein Minimalwert von nullerlaubt. Die Analyse stellte heraus, dass der Minimalwert fünf beträgt. Alle Werte unter fünfhaben die gleiche Auswirkung wie der Wert fünf.

A.4. Anmerkungen zur Synthese

Im Abschnitt 5.4 wurden die Ergebnisse aus der Synthese der Kommunikationsschnittstel-le beschrieben. In diesem Abschnitt sollen die bei der Synthese entstandenen Hindernissebeschrieben werden und wie diese überwunden werden konnten.

Erzeugen eines ldc_1Als ldc_1 wird in der Spartan-6-FPGA-Familie ein transparentes Daten Latch mit asynchronenClear und invertiertem Gate verstanden. Ein solches Latch wird für die NWAIT-Erzeugung ausdem Abschnitt 5.1.1 genutzt. Dieses Latch lässt sich durch folgenden VHDL-Code erzeugen.

1 process(CLR,G,D)2 begin3 if(CLR = ’1’) then4 Q <= ’0’;5 elsif(G = ’0’) then6 Q <= D;7 end if;8 end process;

Das CLR-Signal wird in der bereits vorgestellten Implementation mit dem R-Eingang ver-bunden.

10

A. Anhang

Wird dieser VHDL-Code direkt genutzt, wird vom XST Werkzeug von Xilinx jedoch keinldc_1 erzeugt. Es wird ein Latch erzeugt, welches durch zusätzliche Logik die gleiche Funktionaufweist. Das Problem ist jedoch, dass ISE anschließend als Warnung darauf hinweist, dassdieses erzeugte Latch nicht kompatibel mit der Spartan-6 Architektur ist.Eine Lösung dieses Problems ist das Kapseln der Funktion in eine eigene Komponente. DieKomponente sieht wie folgt aus.

1 library IEEE;2 use IEEE.std_logic_1164.all;3

4 entity ldc_1 is5 Port(6 D : in std_logic;7 G : in std_logic;8 CLR : in std_logic;9 Q : out std_logic

10 );11 end ldc_1;12

13 architecture beh of ldc_1 is14 begin15 process(CLR,G,D)16 begin17 if(CLR = ’1’) then18 Q <= ’0’;19 elsif(G = ’0’) then20 Q <= D;21 end if;22 end process;23 end beh;

Diese Komponente wird richtig als ldc_1 übersetzt und kann wie folgt in der Kommunikati-onsschnittstelle eingebunden werden.

1 architecture beh of ci is2 ...3 component ldc_1 is4 Port(5 D : in std_logic;6 G : in std_logic;

11

A. Anhang

7 CLR : in std_logic;8 Q : out std_logic9 );

10 end component ldc_1;11 for all : ldc_1 use entity work.ldc_1(beh);12

13 begin14

15 ne_ldc_1_i : ldc_116 port map (17 D => ’1’,18 Q => neWait_ns,19 G => ne,20 CLR => nwait_cs21 )--]port22 ;--]ne_ldc_1_i23 ...24 end beh;

Verwendung von Latches mit Gate-EingangBei Verwendung von Latches mit Gate-Eingang in einem Design kann es sein, dass die ISE-Software die Gate-Eingänge als Taktsignal erkennt und versucht, diese optimal auf dem Boardzu integrieren. Bei manchen Latches klappt dies jedoch nicht und es wird ein Fehler erzeugt,welcher die Implementation des Designs abbricht. Da bekannt ist, dass die Gate-Eingängeder Latches keine Taktsignale sind, wird durch das Hinzufügen der Zeile "NET "[GATE-EINGANGSSIGNAL]"CLOCK_DEDICATED_ROUTE = FALSE;" im User-Constraints-File (.ucf)auf das optimale Platzieren verzichtet. Der Fehler wird daraufhin zu einer Warnung.

12

B. Anhang

B.1. Verwendete So�ware

Für diese Arbeit ist C-Code für den STM32 und VHDL-Code für das Spartan-6 FPGA entstanden.

Der C-Code wurde mit Hilfe des Keil Microcontroller Development Kit (MDK) entwickelt.Das MDK enthält die µVision Entwicklungsumgebung und Debugger, sowie den ARM C/C++compiler. Außerdem bietet das MDK Unterstützung bei der Entwicklung von ARM Cortex-Mbasierten Mikrocontrollern.Es wurde für die Entwicklung µVision in der Version 5 genutzt.

Die Entwicklung des VHDL-Codes wurde mit der Notepad++ Software durchgeführt. No-tepad++ wurde in der Version v7.3.3 verwendet. Um den VHDL-Code zu simulieren wurdedie ModelSim Software in der Version 10.3a verwendet. Die Synthese und die Integration derSchaltung auf dem FPGA wurde von der ISE Design Suite Software übernommen. Das ISEDesign Suite wurde in der Version 14.7 genutzt.

B.2. Inhalt der CD

Auf der CD sind alle für diese Bachelorarbeit entstandenen Dateien zu �nden. Außerdemdie verwendeten Quellen, sowie Bilder. Die CD ist wie in B.1 dargestellt aufgebaut. Die CDbesteht im Wurzelverzeichnis aus fünf Verzeichnissen, ein Verzeichnis für die Bachelorarbeit,die Bilder, die Quellen, den Code und die Projekte. Das Verzeichnis der Bachelorarbeit enthältzum einen die Bachelorarbeit als pdf-Datei und zum anderen ein Verzeichnis, welches dieBachelorarbeit als LaTeX-Dateien enthält. Das Verzeichnis der Bilder wird unterteilt in dieunterschiedlichen Kapitel der Bachelorarbeit. Im Quellen-Verzeichnis sind alle Quellen alspdf-Dateien zu �nden. Das Verzeichnis des Codes teilt sich in ein Verzeichnis FPGA und einVerzeichnis Mikrocontroller. Das Verzeichnis Mikrocontroller enthält alle Source- und Header-Dateien, welche zusätzlich für die Programmierung des STM32 benötigt werden. Es ist zubeachten, dass die Source- und Header-Dateien von Retarget und usart nicht im Rahmen dieser

13

B. Anhang

Arbeit entwickelt wurden. Weitere Informationen dazu werden in den Dateien geliefert. DasVerzeichnis FPGA unterteilt sich in drei weitere Verzeichnisse, Analyse, CI und CI_Analyse.CI steht für communication interface, also für die Kommunikationsschnittstelle. Jedes dieserVerzeichnisse enthält VHDL-Code und ein User-Constraints-File. Diese Kombination erlaubtdas Implementieren der Schaltung auf dem Spartan-6 FPGA. Das Verzeichnis Analyse beinhaltetDateien zur Implementierung der vorgestellten Analyse-Schaltung (top_fa.vhd, ilsa.vhd undclk_wiz_v3.vhd). Mit Hilfe des clk_wiz_v3.vhd wird die 350 MHz Taktquelle erzeugt. DasVerzeichnis CI_Analyse enthält die in A.1 vorgestellten Änderungen für die Analyse derKommunikationsschnittstelle und besteht somit aus der angepassten Analyseschaltung undder Kommunikationsschnittstelle, sowie einer Anwendung. Die ldc_1.vhd enthält Code, um eintransparentes Daten Latch mit asynchronen Clear und invertiertem Gate zu erzeugen, sieheA.4. Das Verzeichnis CI enthält Dateien zur Implementierung der Kommunikationsschnittstelle.Das Verzeichnis Projekte ist aufgebaut, wie das Verzeichnis Code, und beinhaltet Projekte zuden bereits vorgestellten Verzeichnissen.

WurzelverzeichnisBachelorarbeit

LaTeXBachelorarbeit_ThorbenSchnirpel.pdf

BilderGrundlagenAnforderungen an die KommunikationsschnittstelleEntwurf der KommunikationsschnittstelleImplementierung der KommunikationsschnittstelleTesten der KommunikationsschnittstelleAnhang

QuellenCode

FPGAAnalyseCICI_Analyse

MikrocontrollerProjekte

FPGAAnalyseCICI_Analyse

Mikrocontroller

Abbildung B.1.: Verzeichnisbaum der beigelegten CD

14

Hiermit versichere ich, dass ich die vorliegende Arbeit ohne fremde Hilfe selbständig verfasst und

nur die angegebenen Hilfsmittel benutzt habe.

Hamburg, 12. Januar 2018 Thorben Schnirpel