Auf einen Blick

Die neuen 5G-Mobilfunksysteme müssen erheblich größere Bandbreiten verarbeiten als ihre Vorgänger der 4. Generation. Hinzu kommen die steigenden Latenzforderungen der Antennen-Arrays im MIMO (multiple input multiple output) -Format. Alles das erhöht die Komplexität der Designs. Die neue 20-Nanometer-Ultrascale-Familie von Xilinx bietet zahlreiche Verbesserungen gegenüber den 28-nm-Bausteinen der Serie 7. Mit den Design-Tools der Vivado-Suite bieten die Bausteine eine angemessene Entwicklungsumgebung für die Highperformance-Signalverarbeitung. Das gilt spezifisch für die DSP48 Slices und Block-RAMs zur Implementierung digitaler Front-end (DFE) -Applikationen mit dichterem Routing und Takt-Ressourcen für High-speed-Designs.

Xilinx trägt den Forderungen von 5G-Mobilfunksystemen Rechnung mit der neuen 20-Nanometer-Ultrascale-Familie. Bis zu 5520 DSP48 Slices umfassen die Ultrascale-Kintex-Bausteine, was einer Verdreifachung gegenüber den FPGAs der Serie 7 (mit 2020 im Zynq-7000 All Programmable SoC) entspricht. Das ermöglicht eine viel höhere Integration, etwa eines vollständigen 8Tx/8Rx-DFE-Systems mit Bandbreiten bis zu 100 MHz in einem Ultrascale-FPGA mittleren Umfangs. Der Serdes (Serializer/Deserializer) unterstützt einen Durchsatz von 12,5 GHz für den langsamsten Ultrascale-Baustein, was die maximale Geschwindigkeit nach JESD204B ermöglicht, außerdem die höchsten CRPI-Raten und 10-GE-Schnittstellen. (Dazu: Xilinx White Paper WP445 „Enabling High-Speed Radio Designs with Xilinx All Programmable FPGAs and SoCs“).

Die 20-Nanometer-Ultrascale-Familie bietet zahlreiche Verbesserungen gegenüber den 28-nm-Bausteinen der Serie 7.

Die 20-Nanometer-Ultrascale-Familie bietet zahlreiche Verbesserungen gegenüber den 28-nm-Bausteinen der Serie 7.Xilinx

Im Hinblick auf die thermischen Bedingungen passiv gekühlter mobiler Endgeräte verbraucht die Ultrascale-Familie bis zu 15 Prozent weniger an statischer Leistung als die Bausteine der Serie 7 der gleichen Größe, und bis zu 25 Prozent weniger dynamische Leistung. Mit höheren Taktraten und verbesserter Routing-Ökonomie ermöglicht die Ultrascale-Architektur höhere Packungsdichten und bessere LUT (look-up table) -Nutzung. Mit effizienter LUT/SRL-Kompression der beiden Ausgänge von LUT6 für zwei verschiedene Funktionen kann man zwei Logikfunktionen oder Speicher in nur einer LUT6 implementieren. Ganz ähnlich lassen sich zwei SRL16 in ein LUT6 packen, was in digitalen Funksystemen mit vielen Speichern und Verzögerungsleitungen zum Ausgleich unterschiedlicher Signalpfade oder zwei Multiplexern im Eingang sehr nützlich ist. Die neue Takt-Architektur und der konfigurierbare Logikblock (CLB) tragen also wesentlich zur besseren Nutzung der Bausteine bei. Mit nur einer Slice pro CLB und der Integration von acht LUT mit sechs Eingängen und 16 Flip-Flops ergibt sich eine 8 Bit lange Carry-Chain mit breiterem Ausgangs-Multiplexer

Architektur der Ultrascale DSP48 Slice

Bild 1: Die Ultrascale-DSP48E2-Architektur.

Bild 1: Die Ultrascale-DSP48E2-Architektur.Xilinx

Bild 1 zeigt die Architektur der Ultrascale DSP48E2 Slice im Vergleich zur DSP48E1 der Serie 7:

  • Die Bitbreite der Multiplikatoren wurde von 25 x 18 auf 27 x 18 erhöht, die des Pre-Adders entsprechend auf 27 Bit.
  • Als Pre-Adder-Eingang kann A oder B gewählt werden, mit zusätzlicher Multiplex-Logik im Ausgang. Das erlaubt D±A oder D±B an jedem der Multiplikator-Eingänge (27 oder 18 Bit).
  • Der Ausgang des Pre-Adders kann beide Multiplikator-Eingänge versorgen (mit passender MSB-Trunkierung am 18-Bit-Eingang). Das ermöglicht die Berechnung von (D±A)2 oder (D±B)2 für 18-Bit-Daten.
  • Ein vierter Operand wurde zur ALU über den zusätzlichen W-Mux-Multiplexer hinzugefügt, der C, P oder eine Konstante (bei der FPGA-Konfiguration definiert) als Eingang akzeptiert. Damit kann man unter Nutzung des Multiplikators eine Operation mit drei Eingängen, wie A*B+C+P oder A*B+P+PCIN, ausführen. Der W-Mux-Ausgang lässt sich nur innerhalb der ALU addieren, eine Subtraktion ist nicht erlaubt.
  • Die zusätzliche Logik kann XOR zwischen den 96 Bits an jedem der X-, Y- oder Z-Multiplexer-Ausgänge ausführen, und zwar in vier verschiedenen Modi: 1x 96, 2x 48, 4x 24 oder 8x 12 Bit.
Bild 1a: Die Ultrascale DSP48E2-Architektur und funktionale Gliederung.

Bild 1a: Die Ultrascale DSP48E2-Architektur und funktionale Gliederung.Xilinx

Die Vergrößerung des Multiplikator-Formats auf 27 x 18 verbessert die Gleitkomma-Arithmetik signifikant. DSP48E2 unterstützt Multiplikationen bis zu 28 x 18 Bit oder 27 x 19 Bit (mit Vorzeichen) über den C-Eingang für das zusätzliche Bit. Bild 2 zeigt die Multiplikation eines 28-Bit-Operanden X mit einem 18-Bit-Operanden Y.

Die 45 höchstwertigen Bits (MSB) des 46-Bit-Ausgangs werden wie folgt berechnet:

Z[45:1] = X[27:1]*Y[17:0] + X[0]*Y[17:1]

Die 27 MSBs von X und die 18 Bits von Y werden direkt an die Multiplikator-Eingänge gelegt, während X[0]*Y[17:1] aus einem externen 17-Bit-AND-Operator abgeleitet wird und über eine Pipeline zur Latenzanpassung am C-Eingang anliegt. Der AND-Operator kann weggelassen werden, wenn man Y[17:1] auf das Register gibt und den Reset-Pin per X[0] steuert. Ähnlich wird ein externer 1-Bit-AND-Operator um drei Takte verzögert zum Latenzausgleich zur Berechnung des LSB von Z, Z[0] genutzt. Somit kann man einen 28×18-Bit-Multiplikator mit nur einer DSP48E2 Slice und 18 LUT/Flip-Flop-Paaren implementieren. Dasselbe gilt für einen 27×19-Bit- Multiplikator, mit 27 zusätzlichen LUT/Flip-Flop-Paaren. Konvergentes Runden des Ergebnisses wird durch den W-Mux unterstützt.

Bild 2: 28x18-Bit-Multplikation mit Vorzeichen und konvergentem Runden im Ausgang.

Bild 2: 28×18-Bit-Multplikation mit Vorzeichen und konvergentem Runden im Ausgang.Xilinx

Gleitkomma-Multiplikationen mit doppelter Präzision involvieren das ganzzahlige Produkt aus den vorzeichenlosen 53-Bit-Mantissen beider Operatoren. Obwohl dabei ein 52-Bit-Wert (m) gespeichert wird, beschreibt dieser den Nachkommateil. Eigentlich sind es normalisierte 1+m-Werte, die gemeinsam multipliziert werden müssen. Deswegen das zusätzliche für die Multiplikation erforderliche Bit. Da die MSBs beider 53-Bit-Operanden gleich 1 sind, und die Multiplikation zur optimalen Nutzung des vorzeichenlosen 26×17-Bit-Multiplikators geeignet aufgeteilt ist (48-Bit-Adder mit drei Eingängen mit W-Mux), lässt sich die 53×53-Bit-Multiplikation mit nur sechs DSP48E2 Slices und minimaler externer Logik ausführen.

Der 27×18-Multiplikator des DSP48E2 ist sehr hilfreich bei Fused-Datapath-Applikationen im IEEE-Floating-Point-Standard. Er besteht aus der Gleitkomma-Operation A*B+C (ohne Rundung, Normalisierung und Denormalisierung) zwischen Multiplikator und Adder. Mit traditioneller Gleitkomma-Arithmetik ist das recht kostenträchtig und bewirkt den größten Anteil der Latenz. Das Konzept lässt sich für Sum-of-products-Operatoren generalisieren, wie sie in der linearen Algebra (Matrixprodukt, Cholesky-Dekomposition) üblich sind.

Besonders effizient ist dieses Vorgehen in Applikationen, deren Kosten und Latenz kritisch sind, aber dennoch die Genauigkeit und den Dynamikbereich der Gleitkommadarstellung benötigen. Das gilt für DFE-Funksysteme, in denen die digitale Vorverzerrung eine gewisse Hardware-Beschleunigung verlangt, um die Aktualisierungsrate der nichtlinearen Filterkoeffizienten zu verbessern. Man kann eine oder mehrere Gleitkomma-MAC-Engines als FPGAs realisieren, um den Algorithmus der Koeffizienten-Abschätzung (auf einem der ARM-Cortex-A9-Kerne des Zynq SoC) zu unterstützen.

Eine Verbreiterung der Mantisse von 23 auf 26 Bit kann noch bessere Genauigkeit im Vergleich zu einer echten Gleitkomma-Implementierung bringen, außerdem reduzierte Latenz und geringeren Platzbedarf. Die Ultrascale-Architektur ist für diesen Zweck gut ausgestattet, da sie nur mehr zwei DSP48 Slices für einen Single-precision Fused Multiplier benötigt.

Der Pre-Adder der DSP48-Slice vor dem Multiplikator bewährt sich bei der Implementierung symmetrischer Filter, wie sie in DFE-Designs für die digitale DUC- (up-converter) und DDC- (down-converter) Funktionalität eingesetzt werden. Für ein symmetrisches N-tap-Filter werden die Ausgangs-Samples wie folgt berechnet:

Gleichung

GleichungXilinx

Darin ist x(n) das Eingangssignal und h(n) die Impulsantwort des Filters, mit h(n) =h(N−1−n).

Damit werden Paare von Eingangs-Samples an den Pre-Adder geführt, und der Ausgang wird mit dem passenden Filterkoeffizient multipliziert.

Bei der Serie 7 musste der Pre-Adder den 30-Bit-Eingang (A) des DSP48E1 verwenden, zusammen mit dem 25-Bit Eingang (D). Der Ausgang war mit dem 25-Bit-Eingang des Multiplikators verbunden, und der Eingang B wurde auf den 18-Bit-Multiplikator-Eingang geleitet. In symmetrischen Filtern konnten die Koeffizienten also mit maximal 18 Bit quantisiert werden. Das limitiert die Dämpfung im Sperrband auf 85 bis 90 dB. In 5G-Funksystemen, die mit sehr großen Interferenzen arbeiten müssen, sind Filter mit höherer Dämpfung erforderlich.

Bild 3: Implementierung eines semi-parallelen Filters mit Serie 7.

Bild 3: Implementierung eines semi-parallelen Filters mit Serie 7.Xilinx

Die Ultrascale-Architektur löst dieses Problem durch die freie Wahl des Pre-Adder-Eingangs (A oder B). Außerdem ist eine Multiplex-Logik im Ausgang integriert, die D±A oder D±B an jeden der Multiplikator-Eingänge (27 oder18 Bit) liefern kann. Damit werden symmetrische Filter mit Koeffizienten bis zu 27 Bit unterstützt.

Eine weitere neue Eigenschaft der DSP48E2 Slice ist die mögliche Verbindung des Pre-Adder-Ausgangs mit beiden Eingängen des Multiplikators (geeignete MSB-Trunkierung am 18-Bit-Eingang vorausgesetzt). Damit lassen sich Operationen wie (D±A)2 oder (D±B)2 bis zu 18 Bit effizient durchführen, wenn man die Summen der quadratischen Abweichungen evaluieren will. Bei Optimierungsaufgaben ist dies der Fall, wenn Lösungen nach dem Prinzip der kleinsten Quadrate angestrebt werden, um die Koeffizienten des Equalizers in einem Modem auszuführen oder zwei Signale zeitlich abzugleichen.

Bild 3a: Implementierung eines semi-parallelen Filters mit Ultrascale.

Bild 3a: Implementierung eines semi-parallelen Filters mit Ultrascale.Xilinx

Den größten Vorteil für Funksysteme bringt die Einführung eines vierten Eingangs-Operanden der ALU über den zusätzlichen W-Mux-Multiplexer. Dieser Operand spart bis zu 20 Prozent der DSP-48-Anforderungen im Vergleich zur Serie 7. Der W-Mux-Ausgang kann allerdings nur innerhalb der ALU hinzugefügt werden. Er wird dynamisch als Inhalt des C- oder P-Registers, oder als Konstante gesetzt. Bei der FPGA-Konfiguration (wie beim konvergenten oder symmetrischen Runden des DSP48-Ausgangs) wird er definiert oder auf null gehalten. Wird der Multiplikator eingesetzt, erlaubt dies Operationen mit drei Eingängen, wie A*B+C+P, A*B+C+PCIN und A*B+P+PCIN. Die Multiplikator-Stufe generiert die letzten beiden partiellen Produkte, die in der ALU aufaddiert werden, um die Operation abzuschließen (Bild 1). Somit kann der Multiplikator zwei ALU-Eingänge nutzen. Vorteilhaft ist dies bei semi-parallelen Filtern und komplexen Mulitply-Accumulate (MAC) -Operatoren.

Filter und MAC

Bild 4: Implementierung eines komplexen MAC mit Serie 7.

Bild 4: Implementierung eines komplexen MAC mit Serie 7.Xilinx

Lineare Filter finden sich in fast allen DFE-Applikationen. Mit Xilinx-FPGAs sollte man, wenn möglich, Mehrkanal-Filter implementieren, bei denen die Composite-Sampling-Rate (Produkt der Kanalzahl mit der Sampling-Frequenz jedes Kanals) gleich der Taktrate der vorliegenden Entwicklung ist. In parallelen Architekturen unterstützt jede DSP48 Slice einen Filterkoeffizienten pro Datenkanal. Das vereinfacht die Steuerlogik und minimiert die notwendigen Ressourcen. Semi-parallele Architekturen lassen sich für jeden Filtertyp ableiten: Single-Rate, Integer oder Fractional-Rate Interpolation und Decimation. Bild 3a zeigt ein vereinfachtes Blockdiagramm der Implementierung in der Serie 7 und der Ultrascale-Lösung. Die Vorteile der Ultrascale-Lösung liegen auf der Hand: Der Akkumulator passt dank des W-Mux in die letzte DSP48 Slice.

Bild 4b: Implementierung eines komplexen MAC  mit Ultrascale.

Bild 4b: Implementierung eines komplexen MAC mit Ultrascale.Xilinx

Jetzt zur Implementierung eines voll parallelen komplexen MAC-Operators, der in jedem Taktzyklus ein Ausgangssignal erzeugt. Entsprechend der bekannten Schreibweise eines komplexen Produkts PI + j·PQ = (AI + j·AQ)·(BI + j·BQ) als drei reale Multiplikationen

            PI = P1 + AI·(BI – BQ)

             PQ = P1 + AQ·(BI + BQ)

 mit P1 = BQ·(AI – AQ)

kann man unter Nutzung des Pre-Adders einen komplexen Multiplikator mit nur drei DSP48-Bausteinen implementieren, einen zur Berechnung von P1, die beiden anderen für die Ausgänge PI und PQ. Je nach der Latenzforderung, die auch die Arbeitsgeschwindigkeit diktiert, ist ein gewisser Logikaufwand nötig, um die Verzögerungen zwischen den Datenpfaden auszugleichen. Für maximale Geschwindigkeit sollte der DSP48-Baustein mit einer Pipeline ausgerüstet sein. Damit ergibt sich für den Operator eine gesamte Latenz von sechs Zyklen. Eine Verzögerung um zwei Zyklen wird zu jedem Eingang hinzugefügt, um die realen und imaginären Anteile der Datenpfade anzugleichen. Sie werden mit vier SRL2 pro Eingangs-Bit implementiert und in zwei LUT gepackt, unter Ausnutzung der SRL-Kompression.

Bild 5: Implementierung der Architektur eines komplexen Filters.

Bild 5: Implementierung der Architektur eines komplexen Filters.Xilinx

Der komplexe MAC wird vervollständigt durch einen Akkumulator an jedem der Ausgänge PI und PQ. Diese arbeiten mit großer Datenbreite und werden deshalb besser in einer DSP48 Slice integriert. Bild 4 vergleicht dies für die Serie 7 und die Ultrascale-Lösung. Der Vorteil des integrierten W-Mux wird dabei deutlich. Die PI– und PQ -DSP48E2-Slices enthalten die Akkumulatoren, mit erheblicher Einsparung an Ressourcen. Dabei wird auch die Latenz reduziert. Ganz ähnlich kann man ein komplexes Filter (mit komplexen Daten und Koeffizienten) aus drei realen Filtern erstellen (Bild 5). Die realen und imaginären Anteile des Eingangssignals werden auf zwei reale Filter gegeben, wobei deren Koeffizienten aus der Differenz, beziehungsweise der Summe, der imaginären und realen Anteile der Filterkoeffizienten abgeleitet werden. Das dritte Filter verarbeitet die Summe der realen und imaginären Anteile im Eingangssignal parallel und verwendet dazu die Realteile der Koeffizienten. Die Ausgänge dieser drei Filter werden anschließend kombiniert, um die realen und imaginären Komponenten des Ausgangssignals zu erzeugen. Auch hier wird vom W-Mux profitiert, will man parallele Filter erstellen. Das ist in Equalizern für DFE-Applikationen meist der Fall.

Bild 6: BRAM-Kaskade auf Ultrascale-Baustein.

Bild 6: BRAM-Kaskade auf Ultrascale-Baustein.Xilinx

Ultrascale Speicherarchitektur

Die Block-RAMs der Ultrascale-Bausteine ermöglichen jetzt eine Hardware-Kaskadierung der Daten und dynamisches Power-Gating (Bild 6). Das ergibt größere Speicher mit mehr als einem Block-RAM ohne weitere Logikressourcen. Eine optimale Lösung besteht in einer 2Kx16-Bit-Konfiguration mit nur einem BRAM.

Eine weitere Anwendung der Block-RAM-Kaskade bezieht sich auf die Implementierung der I/Q-Data-Switching-Funktionalität, die meist mit dem Baseband-CPRI-Interface von DFE-Systemen integriert wird. Bild 7 zeigt die High-level-Switching-Architektur mit einem NxM-Speicher-Array. Jede Spalte kann als BRAM-Kaskade implementiert werden.

Bild 7: High-level-Architektur für Data-Switching.

Bild 7: High-level-Architektur für Data-Switching.Xilinx