Anwendungsbeispiel ARM-Cortex SmartFusion-FPGA vereint Prozessor, Logikelemente und Analog-Funktionen auf einem Chip

Flexibilität, Integration, Kostenvorteile, Energie- und Platzersparnis sowie hohe Sicherheit machen FPGAs zu beliebten Bausteinen. SmartFusion-Chips bieten zusätzlich Analog-Funktionen, die zusammen mit ARMs Cortex-M3-Prozessor und FPGA-Logik auf einem Chip integriert sind. Ein solcher "Superchip" könnte schon bald der einzige Chip eines Systems sein und noch mehr Platz, Kosten und Energie sparen.

SmartFusion-Bausteine enthalten drei programmierbare Elemente: Prozessor, FPGA und Analog-Funktionen. Der Prozessor lässt sich über Software programmieren, während das FPGA im Rahmen des normalen Design-Ablaufes programmiert wird. Zur Programmierung der Analog-Funktionen gibt es spezielle Konfigurations-Software.

Die Tatsache, dass SmartFusion alle drei Bereiche in sich vereint, ist nicht nur geeignet, um Platz und Kosten zu sparen, sondern macht Designs auch sicherer und flexibler. SmartFusion nutzt für seine gesamte interne Konfiguration Flash-Speicher und nicht SRAM. Beim Einschalten eines SRAM-basierten FPGAs ist dies völlig leer und muss zunächst mit dem Inhalt eines externen ROMs geladen werden. Dies bedeutet, dass

(a) ein FPGA für mehrere ms, bis es vollständig geladen ist, nicht arbeitet und
(b) der gesamte Ladevorgang offen zugänglich ist. Mit anderen Worten, ein wertvoller FPGA-Konfigurationsstrom, der über mehrere Monate oder Jahre entwickelt wurde, lässt sich mit jedem Oszilloskop sichtbar machen.

Im Gegensatz dazu wird die Konfiguration bei SmartFusion-Chips in interne Flash-Zellen abgelegt, die niemals mit der Außenwelt in Berührung kommen. Ein ROM für Reverse-Engineering-Zwecke gibt es bei SmartFusion nicht. Konfigurationsdaten können nicht ausgelesen werden. Der Chip arbeitet unmittelbar nach dem Einschalten und verhält sich damit so wie meisten Standard-ICs.

Der SmartFusion-Baustein bietet zudem eine höhere Sicherheit, weil mit dem FPGA, dem Prozessor und den Analog-Funktionen auf einem Chip Informationen niemals aus dem Baustein herausdringen. Alle Daten, die vom Prozessor zum FPGA, von den Analog-Funktionen zum Prozessor oder zwischen FPGA und Analog-Bereich übertragen werden, gelangen nie über einen externen, für Unberechtigte einsehbaren Bus. Die Verschlüsselung von Daten könnte damit der Vergangenheit angehören. In der Regel werden Daten-Transaktionen verschlüsselt, um zu verhindern, dass sie von Unberechtigten gelesen werden können. Dies entfällt hier, da alle Bus-Transaktionen auf dem Chip erfolgen und keine Informationen den Baustein verlassen. Da keine internen Abläufe oder Schnittstellen an die Außenwelt dringen, sehen Hacker im Prinzip nur eine "Black Box". Die Architektur, die Struktur oder die Partitionierung eines Designs sind nicht erkennbar.

Prozessor-Subsystem

SmartFusion-Chips basieren auf dem ARM-Cortex-M3. Dieser ist eine ideale Basis für Mid-Range-Embedded-Systeme. Da er keine "Build it yourself"-Konstruktion mit einem vom Anwender definierten Befehlssatz darstellt, sondern einen der beliebtesten Cores für Mikrocontroller weltweit, ist fehlende Software-Unterstützung kein Thema.

Der Prozessor wird mit 100 MHz getaktet und liefert etwa 125 Dhrystone MIPS. Im Gegensatz zu vielen anderen RISC-Prozessoren verfügt der Cortex-M3 über einen Hardware-Multiplizierer und -Dividierer, und man muss diese grundlegenden mathematischen Funktionen nicht in Software realisieren. Der Prozessor beinhaltet auch eine Speicherschutzeinheit (Memory Protection Unit, MPU), die sich wie eine durchgängige Speicherverwaltungseinheit (Memory Management Unit, MMU) verhält. Es reicht aus, Speicher-Maps entsprechend zu segmentieren und neue anzuordnen sowie zu verhindern, dass Programme Speicher beschädigen. Auf "Page Faults" und "Translation Look aside Buffer" (TLB) muss dabei nicht geachtet werden. Normalerweise steht der Prozessor mit eigenem Speicher und anderen Ressourcen zur Verfügung. In diesem Fall verfügt er über 16 bis 64 Kbyte SRAM (je nach SmartFusion-Modell), das man zum Ausführen von Programmen und zum Speichern lokaler Variablen verwendet. Außerdem enthält der Prozessor je nach Chip-Modell zwischen 64 und 512 Kbyte nichtflüchtigen Flash-Speicher.

Zugriffe auf den Flash-Speicher dauern je nach Taktfrequenz des Prozessors fünf bis sieben Zyklen. Mit steigender Taktfrequenz verkürzen sich die Zykluszeiten. Dies bedeutet, dass selbst bei einer steigenden Zahl von Zyklen die erforderliche Zeit gleich bleibt. SRAM-Zugriffe dauern, unabhängig von der Taktfrequenz, stets nur einen Zyklus. Dieser Speicher ohne Wartezyklen ist schnell und unterteilt sich in zwei Bänke. Somit können zwei Master (z.B. Prozessor und DMA) gleichzeitig auf das SRAM zugreifen. Ein weiteres intelligentes Leistungsmerkmal ist die "Bit Banding"-Region des SRAMs, die es einem C-Compiler erlaubt, Single-Bit-"Boolesche Flags" in nur einem einzigen RAM-Bit zu speichern, ohne ein ganzes Byte (oder Wort) zu verbrauchen. Über einen externen Speicher-Controller lassen sich die Ressourcen des Chip erweitern.

Abgerundet wird der Prozessorbereich des Chips mit mehreren Peripherie-Controllern. Dazu gehören ein 10/100 Ethernet MAC, zwei I2C-Ports, zwei UARTs, zwei SPIs, ein Timer-Paar und ein 8-Kanal-DMA-Controller.

In Bild 1 ist das Prozessor-Subsystem in Blau dargestellt. Als Hard-Core nutzt der Cortex-M3 die programmierbare Logik des FPGAs nicht, ist aber als Standard-Prozessor permanent an ein FPGA angeschlossen.

Der Prozessor läuft mit voller Geschwindigkeit und die FPGA-Logik macht das, was sie am besten kann. Weder der Prozessor, noch die FPGA-Logik müssen Einschränkungen hinnehmen und arbeiten optimal zusammen.

Das Analog-Subsystem

Programmierbares Analog" klingt zunächst wie ein Oxymoron. Doch das Konzept ist einfach. Man denke an SmartFusions programmierbaren Analog-Bereich (Bild 1, gelb) als ein FPGA ohne Lookup Tables (LUT). Statt dessen werden vertraute, programmierbare Schaltmatrizen mit Analog-Komponenten und Funktionsblöcken kombiniert. Indem man verschiedene Analog-Komponenten verbindet und kombiniert, lassen sich fast alle gewünschten analogen Front-ends, Funktionen oder Leistungsmerkmale realisieren. Es gibt Vorteiler (Prescaler), Wandler, Sensoren, A/D-Wandler, Komparatoren, Strom-Monitore, Temperatur-Monitore und vieles mehr.

Jeder SmartFusion-Baustein verfügt über mindestens einen SAR-A/D-Wandler (Successive Approximation Register). Der A/D-Wandler wandelt Spannung wahlweise in eine 8-, 10- oder 12-bit-Zahl und erledigt dies je nach Auflösung mit 500 bis 600 kHz. Dies bedeutet, dass man pro Sekunde eine halbe Million Samples erhalten kann, was für die meisten Designs ausreicht. Der A/D-Wandler erhält seine Daten von einem 16:1-Multiplexer. Falls man digitale in analoge Daten wandeln möchte, kann man auf den Sigma-D/A-Wandler von SmartFusion zurückgreifen. Dieser bietet eine effektive Auflösung von 12 bit. Die Qualifizierung "effektiv" wird verwendet, weil die interne Architektur auf einem 1-bit-D/A-Wandler basiert, aber die Werte für das Rauschen und die Auflösung vergleichbar mit einem herkömmlichen 12-bit-D/A-Wandler sind. Je nach SmartFusion-Modell erhält man einen bis drei dieser D/A-Wandler.

Der Pfad zwischen Analog-Bereich und FPGA-Logik (in Bild 1 violett) ist 32 bit breit und damit sehr groß. Somit kann die programmierbare Logik in den programmierbaren Bereich integriert werden und umgekehrt. Dies ist viel besser als nur ein 8 bit großer Zugang in den Analog-Bereich und der damit verbundene Flaschenhals beim Transport von Signalen und Daten. Der Prozessor "sieht" den Analog-Block als eine Peripherie (oder mehrere Peripherien) und hat damit kein Problem, Werte in diese zu schreiben oder aus ihr zu lesen. Aus analoger Sicht wird der Prozessor als digitale Quelle oder Senke "gesehen", ähnlich wie die digitale Seite eines D/A- oder A/D-Wandlers.

Wo der analoge Bereich des Chips wirklich interessant wird, ist in seiner Analog Computing Engine (ACE). In Kürze ausgedrückt ist die ACE wie ein zweiter Prozessor, den man programmieren kann. Dies erlaubt dem Analog-Bereich, Sequenzen zu folgen und ohne große Eingriffe des Prozessors selbstständig zu arbeiten. Zum Beispiel kann die ACE automatisch oder nach einer vorher festgelegten Zeit die Auflösung der A/D-Wandler für jeden Abtastvorgang einstellen. So könnte man zum Beispiel die Auflösung über die Zeit automatisch nach oben oder nach unten einstellen oder Abtastungen zwischen A/D-Wandler-Kanälen verzögern. Die ACE kann auch eine Analog-Wandlung starten (beide Richtungen, A/D oder D/A) mit einem Signal als Basis, das aus dem FPGA-Bereich des Chips kommt. Umgekehrt kann die ACE den Cortex-M3 Prozessor unterbrechen, sobald ein Ereignis wie etwa ein bestimmter Abtast-Pegel auftritt.

Die ACE kann sogar ihre eigenen, linearen Transformationen (der Form y = mx + b einschließlich Kalibrierung) oder digitale Tiefpass-Filterungen sowie Schwellwertvergleiche oder Zustandsfilterungen (State Filtering) ausführen. All dies erfolgt ohne Eingriff des Prozessors. Die CPU kann entweder in den Sleep-Modus gehen oder andere Aufgaben erledigen, während der Analog-Bereich selbstständig arbeitet.