SmartFusion2
DDR-Controller und serieller Hochgeschwindigkeitscontroller
Initialisierungsmethode
Benutzerhandbuch
Einführung
Wenn Sie beim Erstellen eines Designs mit einem SmartFusion2-Gerät einen der beiden DDR-Controller (FDDR oder MDDR) oder einen der Serial High Speed Controller (SERDESIF)-Blöcke verwenden, müssen Sie die Konfigurationsregister dieser Blöcke zur Laufzeit initialisieren, bevor sie verwendet werden können. Zum BeispielampFür den DDR-Controller müssen Sie also den DDR-Modus (DDR3/DDR2/LPDDR), die PHY-Breite, den Burst-Modus und ECC einstellen.
Ebenso müssen Sie für den als PCIe-Endpunkt verwendeten SERDESIF-Block das PCIE BAR-Fenster auf AXI (oder AHB) einstellen.
Dieses Dokument beschreibt die notwendigen Schritte zum Erstellen eines Libero-Designs, das den DDR-Controller und die SERDESIF-Blöcke beim Einschalten automatisch initialisiert. Außerdem wird beschrieben, wie der Firmware-Code aus Libero SOC generiert wird, der im eingebetteten Design-Flow verwendet wird.
Zunächst erfolgt eine detaillierte Beschreibung der Operationstheorie.
Der nächste Abschnitt beschreibt, wie Sie ein solches Design mit dem Libero SoC System Builder erstellen, einem leistungsstarken Designtool, das unter anderem die „Initialisierungslösung“ für Sie erstellt, wenn Sie in Ihrem Design DDR- oder SERDESIF-Blöcke verwenden.
Im nächsten Abschnitt wird beschrieben, wie Sie eine vollständige „Initialisierungslösung“ zusammenstellen, ohne den SmartFusion2 System Builder zu verwenden. Hier erfahren Sie, was zu tun ist, wenn Sie den System Builder nicht verwenden möchten, und es wird auch beschrieben, was das System Builder-Tool tatsächlich für Sie generiert. Dieser Abschnitt behandelt:
- Die Erstellung der Konfigurationsdaten für DDR-Controller und SERDESIF-Konfigurationsregister
- Die Erstellung der FPGA-Logik, die zum Übertragen der Konfigurationsdaten in die verschiedenen ASIC-Konfigurationsregister erforderlich ist
Abschließend beschreiben wir die generierten filesteht im Zusammenhang mit:
- Die Erstellung einer Firmware-Initialisierungslösung.
- Die Simulation des Designs für die DDR-Initialisierungslösung.
Einzelheiten zu den Konfigurationsregistern des DDR-Controllers und SERDESIF finden Sie im Benutzerhandbuch für die seriellen Hochgeschwindigkeits- und DDR-Schnittstellen von Microsemi SmartFusion2.
Funktionstheorie
Die Peripherieinitialisierungslösung verwendet die folgenden Hauptkomponenten:
- Die CMSIS-Funktion SystemInit(), die auf dem Cortex-M3 ausgeführt wird und den Initialisierungsprozess orchestriert.
- Der CoreConfigP-Soft-IP-Core, der die Konfigurationsregister der Peripheriegeräte initialisiert.
- Der CoreResetP-Soft-IP-Core, der die Reset-Sequenz der MSS-, DDR-Controller und SERDESIF-Blöcke verwaltet.
Der Peripherieinitialisierungsprozess funktioniert wie folgt:
- Beim Zurücksetzen führt der Cortex-M3 die CMSIS-Funktion SystemInit() aus. Diese Funktion wird automatisch ausgeführt, bevor die main()-Funktion der Anwendung ausgeführt wird.
Das CoreResetP-Ausgangssignal MSS_HPMS_READY wird zu Beginn des Initialisierungsprozesses aktiviert und zeigt an, dass das MSS und alle Peripheriegeräte (außer MDDR) zur Kommunikation bereit sind. - Die Funktion SystemInit() schreibt Konfigurationsdaten über den MSS FIC_2 APB3-Bus in die DDR-Controller und SERDESIF-Konfigurationsregister. Diese Schnittstelle ist mit dem Soft-CoreConfigP-Kern verbunden, der im FPGA-Fabric instantiiert ist.
- Nachdem alle Register konfiguriert sind, schreibt die Funktion SystemInit() in die CoreConfigP-Steuerregister, um den Abschluss der Registerkonfigurationsphase anzuzeigen; dann werden die CoreConfigP-Ausgangssignale CONFIG1_DONE und CONIG2_DONE aktiviert.
Abhängig von den im Design verwendeten Peripheriegeräten gibt es zwei Phasen der Registerkonfiguration (CONFIG1 und CONFIG2). - Wenn einer oder beide von MDDR/FDDR verwendet werden und keiner der SERDESIF-Blöcke im Entwurf verwendet wird, gibt es nur eine Registerkonfigurationsphase. Beide CoreConfigP-Ausgangssignale CONFIG1_DONE und CONIG2_DONE werden ohne Wartezeit/Verzögerung nacheinander aktiviert.
Wenn im Entwurf ein oder mehrere SERDESIF-Blöcke im Nicht-PCIe-Modus verwendet werden, gibt es nur eine Phase der Registerkonfiguration. CONFIG1_DONE und CONIG2_DONE werden ohne Wartezeit/Verzögerung nacheinander aktiviert.
Wenn im Design ein oder mehrere SERDESIF-Blöcke im PCIe-Modus verwendet werden, gibt es zwei Phasen der Registerkonfiguration. CONFIG1_DONE wird aktiviert, nachdem die erste Phase der Registerkonfiguration abgeschlossen ist. In dieser Phase werden SERDESIF-System- und Lane-Register konfiguriert. Wenn SERDESIF in einem Nicht-PCIE-Modus konfiguriert ist, wird das Signal CONFIG2_DONE ebenfalls sofort aktiviert. - Anschließend folgt die zweite Phase der Registerkonfiguration (wenn SERDESIF im PCIE-Modus konfiguriert ist). In der zweiten Phase treten folgende verschiedene Ereignisse auf:
– CoreResetP deaktiviert die Signale PHY_RESET_N und CORE_RESET_N, die den jeweiligen verwendeten SERDESIF-Blöcken entsprechen. Außerdem wird ein Ausgangssignal SDIF_RELEASED aktiviert, nachdem alle SERDESIF-Blöcke zurückgesetzt wurden. Dieses SDIF_RELEASED-Signal wird verwendet, um CoreConfigP anzuzeigen, dass der SERDESIF-Kern zurückgesetzt wurde und für die zweite Phase der Registerkonfiguration bereit ist.
– Sobald das SDIF_RELEASED-Signal aktiviert ist, beginnt die Funktion SystemInit() mit der Abfrage der Aktivierung von PMA_READY auf der entsprechenden SERDESIF-Spur. Sobald PMA_READY aktiviert ist, wird der zweite Satz SERDESIF-Register (PCIE-Register) von der Funktion SystemInit() konfiguriert/geschrieben. - Nachdem alle PCIE-Register konfiguriert sind, schreibt die Funktion SystemInit() in die CoreConfigP-Steuerregister, um den Abschluss der zweiten Phase der Registerkonfiguration anzuzeigen; dann wird das CoreConfigP-Ausgangssignal CONIG2_DONE aktiviert.
- Abgesehen von den oben genannten Signalbehauptungen/-aufhebungen verwaltet CoreResetP auch die Initialisierung der verschiedenen Blöcke, indem es die folgenden Funktionen ausführt:
– Deaktivieren des FDDR-Core-Resets
– Deaktivierung der SERDESIF-Blöcke PHY- und CORE-Resets
– Überwachung des Sperrsignals des FDDR PLL (FPLL). Das FPLL muss gesperrt sein, um zu gewährleisten, dass die FDDR AXI/AHBLite-Datenschnittstelle und die FPGA-Struktur korrekt kommunizieren können.
– Überwachung der Sperrsignale des SERDESIF-Blocks PLL (SPLL). Die SPLL muss gesperrt sein, um zu gewährleisten, dass die AXI/AHBLite-Schnittstelle (PCIe-Modus) oder die XAUI-Schnittstelle des SERDESIF-Blocks ordnungsgemäß mit der FPGA-Struktur kommunizieren kann.
– Warten, bis die externen DDR-Speicher stabil sind und für den Zugriff durch die DDR-Controller bereit sind. - Wenn alle Peripheriegeräte ihre Initialisierung abgeschlossen haben, aktiviert CoreResetP das Signal INIT_DONE; anschließend wird das interne CoreConfigP-Register INIT_DONE aktiviert.
Wenn einer oder beide von MDDR/FDDR verwendet werden und die DDR-Initialisierungszeit erreicht ist, wird das CoreResetP-Ausgangssignal DDR_READY aktiviert. Die Aktivierung dieses Signals DDR_READY kann als Hinweis darauf überwacht werden, dass der DDR (MDDR/FDDR) zur Kommunikation bereit ist.
Wenn ein oder mehrere SERDESIF-Blöcke verwendet werden und die zweite Phase der Registerkonfiguration erfolgreich abgeschlossen ist, wird das CoreResetP-Ausgangssignal SDIF_READY aktiviert. Die Aktivierung dieses Signals SDIF_READY kann als Hinweis darauf überwacht werden, dass alle SERDESIF-Blöcke zur Kommunikation bereit sind. - Die Funktion SystemInit(), die auf die Bestätigung von INIT_DONE gewartet hat, wird abgeschlossen und die main()-Funktion der Anwendung wird ausgeführt. Zu diesem Zeitpunkt wurden alle verwendeten DDR-Controller und SERDESIF-Blöcke initialisiert und die Firmware-Anwendung und die FPGA-Fabric-Logik können zuverlässig mit ihnen kommunizieren.
Die in diesem Dokument beschriebene Methodik basiert darauf, dass Cortex-M3 den Initialisierungsprozess als Teil des Systeminitialisierungscodes ausführt, der vor der main()-Funktion der Anwendung ausgeführt wird.
Die Initialisierungsschritte von FDDR/MDDR, SEREDES (Nicht-PCIe-Modus) und SERDES (PCIe-Modus) finden Sie in den Flussdiagrammen in Abbildung 1-1, Abbildung 1-2 und Abbildung 1-3.
Abbildung 1-4 zeigt ein Zeitdiagramm zur Peripherieinitialisierung.
![]() |
![]() |
Abbildung 1-3 • Flussdiagramm zur SERDESIF-Initialisierung (PCIe)
Das in diesem Dokument beschriebene Initialisierungsverfahren erfordert, dass Sie Cortex-M3 während des Initialisierungsprozesses ausführen, auch wenn Sie nicht vorhaben, Code auf dem Cortex-M3 auszuführen. Sie müssen eine grundlegende Firmware-Anwendung erstellen, die nichts tut (z. B. eine einfache Schleife).ample) und laden Sie diese ausführbare Datei in den eingebetteten nichtflüchtigen Speicher (eNVM), sodass die DDR-Controller und SERDESIF-Blöcke beim Booten des Cortex-M3 initialisiert werden.
Verwenden des System Builders zum Erstellen eines Designs mit DDR- und SERDESIF-Blöcken
Der SmartFusion2 System Builder ist ein leistungsstarkes Designtool, mit dem Sie Ihre Systemanforderungen erfassen und ein Design erstellen können, das diese Anforderungen implementiert. Eine sehr wichtige Funktion des System Builders ist die automatische Erstellung des Peripherieinitialisierungssubsystems. „Verwenden von SmartDesign zum Erstellen eines Designs mit DDR- und SERDESIF-Blöcken“ auf Seite 17 beschreibt ausführlich, wie Sie eine solche Lösung ohne den System Builder erstellen können.
Wenn Sie System Builder verwenden, müssen Sie die folgenden Aufgaben ausführen, um ein Design zu erstellen, das Ihre DDR-Controller und SERDESIF-Blöcke beim Einschalten initialisiert:
- Geben Sie auf der Seite „Gerätefunktionen“ (Abbildung 2-1) an, welche DDR-Controller verwendet werden und wie viele SERDESIF-Blöcke in Ihrem Design verwendet werden.
- Geben Sie auf der Seite „Speicher“ den DDR-Typ (DDR2/DDR3/LPDDR) und die Konfigurationsdaten für Ihren externen DDR-Speicher an. Weitere Informationen finden Sie im Abschnitt „Speicherseite“.
- Fügen Sie auf der Seite „Peripheriegeräte“ als AHBLite/AXI konfigurierte Fabric-Master zum Fabric-DDR-Subsystem und/oder MSS-DDR-FIC-Subsystem hinzu (optional).
- Geben Sie auf der Seite „Uhreinstellungen“ die Taktfrequenzen für die DDR-Subsysteme an.
- Vervollständigen Sie Ihre Designspezifikation und klicken Sie auf Fertig stellen. Dadurch wird das vom System Builder erstellte Design generiert, einschließlich der für die Initialisierungslösung erforderlichen Logik.
- Wenn Sie SERDESIF-Blöcke verwenden, müssen Sie die SERDESIF-Blöcke in Ihrem Design instanziieren und ihre Initialisierungsports mit denen des vom System Builder generierten Kerns verbinden.
System Builder-Seite „Gerätefunktionen“
Geben Sie auf der Seite „Gerätefunktionen“ an, welche DDR-Controller (MDDR und/oder FDDR) verwendet werden und wie viele SERDESIF-Blöcke in Ihrem Design verwendet werden (Abbildung 2-1).
Abbildung 2-1 • System Builder-Seite „Gerätefunktionen“
System Builder-Speicherseite
Um MSS DDR (MDDR) oder Fabric DDR (FDDR) zu verwenden, wählen Sie den Speichertyp aus der Dropdown-Liste (Abbildung 2-2).
Abbildung 2-2 • Externer MSS-Speicher
Sie müssen:
- Wählen Sie den DDR-Typ (DDR2, DDR3 oder LPDDR).
- Definieren Sie die Einschwingzeit des DDR-Speichers. Informationen zur richtigen Speichereinschwingzeit finden Sie in den Spezifikationen Ihres externen DDR-Speichers. Wenn die Einschwingzeit des Speichers nicht richtig eingestellt ist, kann die Initialisierung des DDR-Speichers fehlschlagen.
- Importieren Sie entweder die DDR-Registerkonfigurationsdaten oder legen Sie Ihre DDR-Speicherparameter fest. Weitere Einzelheiten finden Sie im Benutzerhandbuch für Microsemi SmartFusion2 High Speed Serial- und DDR-Schnittstellen.
Diese Daten werden verwendet, um das DDR-Register BFM und die Firmware-Konfiguration zu generieren files wie in „Erstellen und Kompilieren der Firmware-Anwendung“ auf Seite 26 und „BFM Files Wird zur Simulation des Designs verwendet” auf Seite 27. Einzelheiten zu den Konfigurationsregistern des DDR-Controllers finden Sie im Benutzerhandbuch für die seriellen Hochgeschwindigkeits- und DDR-Schnittstellen von Microsemi SmartFusion2.
Ein ExampDatei der Konfiguration file Die Syntax ist in Abbildung 2-3 dargestellt. Die in dieser file sind die gleichen wie die in der Benutzerhandbuch für Microsemi SmartFusion2 High Speed Serial- und DDR-Schnittstellen
Abbildung 2-3 • Konfiguration File Syntax Bspample
System Builder-Seite „Peripheriegeräte“
Auf der Seite „Peripheriegeräte“ wird für jeden DDR-Controller ein separates Subsystem erstellt (Fabric DDR-Subsystem für FDDR und MSS DDR FIC-Subsystem für MDDR). Sie können jedem dieser Subsysteme einen Fabric AMBA Master-Kern (konfiguriert als AXI/AHBLite) hinzufügen, um dem Fabric Master Zugriff auf die DDR-Controller zu ermöglichen. Bei der Generierung instanziiert System Builder automatisch Buskerne (je nach Art des hinzugefügten AMBA Masters) und stellt den Master-BIF des Buskerns und die Takt- und Reset-Pins der entsprechenden Subsysteme (FDDR/MDDR) unter den entsprechenden Pingruppen oben bereit. Sie müssen lediglich die BIFs mit den entsprechenden Fabric Master-Kernen verbinden, die Sie im Design instanziieren würden. Im Fall von MDDR ist es optional, dem MSS DDR FIC-Subsystem einen Fabric AMBA Master-Kern hinzuzufügen; Cortex-M3 ist ein Standardmaster auf diesem Subsystem. Abbildung 2-4 zeigt die Seite „Peripheriegeräte“ von System Builder.
Abbildung 2-4 • System Builder-Seite „Peripheriegeräte“
Seite „Uhreinstellungen“ des System Builders
Auf der Seite „Takteinstellungen“ müssen Sie für jeden DDR-Controller die Taktfrequenzen für jedes DDR-Subsystem (MDDR und/oder FDDR) angeben.
Für MDDR müssen Sie Folgendes angeben:
- MDDR_CLK – Dieser Takt bestimmt die Betriebsfrequenz des DDR-Controllers und sollte mit der Taktfrequenz übereinstimmen, mit der Ihr externer DDR-Speicher laufen soll. Dieser Takt wird als Vielfaches des M3_CLK (Cortex-M3- und MSS-Haupttakt, Abbildung 2-5) definiert. Der MDDR_CLK muss kleiner als 333 MHz sein.
- DDR_FIC_CLK – Wenn Sie sich dafür entschieden haben, auch vom FPGA-Fabric aus auf das MDDR zuzugreifen, müssen Sie DDR_FIC_CLK angeben. Diese Taktfrequenz wird als Verhältnis von MDDR_CLK definiert und sollte der Frequenz entsprechen, mit der das FPGA-Fabric-Subsystem läuft, das auf das MDDR zugreift.
Abbildung 2-5 • Cortex-M3 und MSS-Hauptuhr; MDDR-Uhren
Für FDDR müssen Sie Folgendes angeben:
- FDDR_CLK – Bestimmt die Betriebsfrequenz des DDR-Controllers und sollte mit der Taktfrequenz übereinstimmen, mit der Ihr externer DDR-Speicher laufen soll. Beachten Sie, dass dieser Takt als Vielfaches des M3_CLK (MSS- und Cortex-M3-Takt, Abbildung 2-5) definiert ist. Der FDDR_CLK muss zwischen 20 MHz und 333 MHz liegen.
- FDDR_SUBSYSTEM_CLK – Diese Taktfrequenz wird als Verhältnis des FDDR_CLK definiert und sollte mit der Frequenz übereinstimmen, mit der das FPGA-Fabric-Subsystem läuft, das auf das FDDR zugreift.
Abbildung 2-6 • Fabric-DDR-Takt
SERDESIF-Konfiguration
Die SERDESIF-Blöcke werden im vom System Builder generierten Design nicht instantiiert. Für alle SERDESIF-Blöcke sind jedoch Initialisierungssignale an der Schnittstelle des System Builder-Kerns verfügbar und können mit den SERDESIF-Kernen auf der nächsten Hierarchieebene verbunden werden, wie in Abbildung 2-7 dargestellt.Abbildung 2-7 • SERDESIF-Peripherieinitialisierungskonnektivität
Ähnlich wie die DDR-Konfigurationsregister verfügt jeder SERDES-Block auch über Konfigurationsregister, die zur Laufzeit geladen werden müssen. Sie können diese Registerwerte entweder importieren oder den High Speed Serial Interface Configurator (Abbildung 2-8) verwenden, um Ihre PCIe- oder EPCS-Parameter einzugeben. Die Registerwerte werden dann automatisch für Sie berechnet. Weitere Informationen finden Sie im SERDES-Konfigurator – Benutzerhandbuch.Abbildung 2-8 • Konfigurator für serielle Hochgeschwindigkeitsschnittstellen
Sobald Sie Ihre Benutzerlogik mit dem System Builder-Block und dem SERDES-Block integriert haben, können Sie Ihr SmartDesign auf oberster Ebene generieren. Dadurch werden alle HDL- und BFM- files, die zur Implementierung und Simulation Ihres Designs erforderlich sind. Anschließend können Sie mit dem Rest des Design Flows fortfahren.
Verwenden von SmartDesign zum Erstellen eines Designs mit DDR- und SERDESIF-Blöcken
In diesem Abschnitt wird beschrieben, wie Sie eine vollständige Initialisierungslösung zusammenstellen, ohne den SmartFusion2 System Builder zu verwenden. Ziel ist es, Ihnen zu helfen, zu verstehen, was Sie tun müssen, wenn Sie den System Builder nicht verwenden möchten. In diesem Abschnitt wird auch beschrieben, was das System Builder-Tool tatsächlich für Sie generiert. In diesem Abschnitt wird Folgendes beschrieben:
- Geben Sie die Konfigurationsdaten für den DDR-Controller und die SERDESIF-Konfigurationsregister ein.
- Instanziieren und verbinden Sie die Fabric Cores, die zum Übertragen der Konfigurationsdaten an die DDR-Controller und SERDESIF-Konfigurationsregister erforderlich sind.
DDR-Controller-Konfiguration
Die MSS DDR (MDDR)- und Fabric DDR (FDDR)-Controller müssen dynamisch (zur Laufzeit) konfiguriert werden, um den Konfigurationsanforderungen des externen DDR-Speichers (DDR-Modus, PHY-Breite, Burst-Modus, ECC usw.) zu entsprechen. Im MDDR/FDDR-Konfigurator eingegebene Daten werden von der CMSIS-Funktion SystemInit() in die Konfigurationsregister des DDR-Controllers geschrieben. Der Konfigurator verfügt über drei verschiedene Registerkarten zum Eingeben unterschiedlicher Arten von Konfigurationsdaten:
- Allgemeine Daten (DDR-Modus, Datenbreite, Taktfrequenz, ECC, Fabric-Schnittstelle, Laufwerksstärke)
- Speicherinitialisierungsdaten (Burst-Länge, Burst-Reihenfolge, Timing-Modus, Latenz usw.)
- Speicher-Timing-Daten
Beachten Sie die Spezifikationen Ihres externen DDR-Speichers und konfigurieren Sie den DDR-Controller so, dass er den Anforderungen Ihres externen DDR-Speichers entspricht.
Einzelheiten zur DDR-Konfiguration finden Sie im SmartFusion2 MSS DDR-Konfigurations-Benutzerhandbuch.
SERDESIF-Konfiguration
Doppelklicken Sie auf den SERDES-Block im SmartDesign-Bildschirm, um den Konfigurator zur Konfiguration des SERDES zu öffnen (Abbildung 3-1). Sie können diese Registerwerte entweder importieren oder den SERDES-Konfigurator verwenden, um Ihre PCIe- oder EPCS-Parameter einzugeben. Die Registerwerte werden dann automatisch für Sie berechnet. Weitere Informationen finden Sie im SERDES-Konfigurator – Benutzerhandbuch.Abbildung 3-1 • Konfigurator für serielle Hochgeschwindigkeitsschnittstellen
Erstellen des FPGA-Design-Initialisierungssubsystems
Um die DDR- und SERDESIF-Blöcke zu initialisieren, müssen Sie das Initialisierungssubsystem im FPGA-Fabric erstellen. Das Initialisierungssubsystem des FPGA-Fabrics verschiebt Daten vom Cortex-M3 in die DDR- und SERDESIF-Konfigurationsregister, verwaltet die für den Betrieb dieser Blöcke erforderlichen Reset-Sequenzen und signalisiert, wenn diese Blöcke bereit sind, mit dem Rest Ihres Designs zu kommunizieren. Um das Initialisierungssubsystem zu erstellen, müssen Sie:
- Konfigurieren Sie FIC_2 innerhalb des MSS
- Instanziieren und konfigurieren Sie die CoreConfigP- und CoreResetP-Kerne
- Instanziieren Sie den On-Chip-RC-Oszillator mit 25/50 MHz
- Instanziieren des Makros „System Reset“ (SYSRESET)
- Verbinden Sie diese Komponenten mit den Konfigurationsschnittstellen, Taktgebern, Resets und PLL-Lock-Ports der einzelnen Peripheriegeräte.
MSS FIC_2 APB-Konfiguration
So konfigurieren Sie MSS FIC_2:
- Öffnen Sie das FIC_2-Konfiguratordialogfeld vom MSS-Konfigurator aus (Abbildung 3-2).
- Wählen Sie „Peripheriegeräte mit Cortex-M3 initialisieren“ aus.
- Aktivieren Sie je nach System eines oder beide der folgenden Kontrollkästchen:
– MSS DDR
– Fabric DDR- und/oder SERDES-Blöcke - Klicken Sie auf „OK“ und fahren Sie mit der Generierung des MSS fort (Sie können diese Aktion verschieben, bis Sie das MSS vollständig gemäß Ihren Designanforderungen konfiguriert haben). Die FIC_2-Ports (FIC_2_APB_MASTER, FIC_2_APB_M_PCLK und FIC_2_APB_M_RESET_N) werden jetzt an der MSS-Schnittstelle angezeigt und können mit den CoreConfigP- und CoreResetP-Kernen verbunden werden.
Abbildung 3-2 • MSS FIC_2 Konfigurator
CoreConfigP
So konfigurieren Sie CoreConfigP:
- Instanziieren Sie CoreConfigP in Ihr SmartDesign (normalerweise das, in dem das MSS instanziiert wird).
Dieser Kern ist im Libero-Katalog (unter Peripheriegeräte) zu finden. - Doppelklicken Sie auf den Kern, um den Konfigurator zu öffnen.
- Konfigurieren Sie den Kern, um anzugeben, welche Peripheriegeräte initialisiert werden müssen (Abbildung 3-3).
Abbildung 3-3 • Dialogfeld „CoreConfigP“
CoreResetP
So konfigurieren Sie CoreResetP:
- Instanziieren Sie CoreResetP in Ihrem SmartDesign (normalerweise das, in dem das MSS instanziiert ist).
Dieser Kern ist im Libero-Katalog unter Peripheriegeräte zu finden. - Doppelklicken Sie auf den Kern im SmartDesign Canvas, um den Konfigurator zu öffnen (Abbildung 3-4).
- Konfigurieren Sie den Kern wie folgt:
– Geben Sie das externe Reset-Verhalten an (EXT_RESET_OUT aktiviert). Wählen Sie eine von vier Optionen:
o EXT_RESET_OUT wird nie bestätigt
o EXT_RESET_OUT wird aktiviert, wenn ein Power-Up-Reset (POWER_ON_RESET_N) aktiviert wird
o EXT_RESET_OUT wird aktiviert, wenn FAB_RESET_N aktiviert ist
EXT_RESET_OUT wird aktiviert, wenn Power-Up-Reset (POWER_ON_RESET_N) oder FAB_RESET_N aktiviert wird
– Geben Sie die Gerätelautstärke antage. Der ausgewählte Wert sollte mit dem Volumen übereinstimmentage, die Sie im Dialogfeld „Libero-Projekteinstellungen“ ausgewählt haben.
– Aktivieren Sie die entsprechenden Kontrollkästchen, um anzugeben, welche Peripheriegeräte Sie in Ihrem Design verwenden.
– Geben Sie die Einstellzeit für den externen DDR-Speicher an. Dies ist der Maximalwert für alle in Ihrer Anwendung verwendeten DDR-Speicher (MDDR und FDDR). Informationen zur Konfiguration dieses Parameters finden Sie im Datenblatt des Anbieters des externen DDR-Speichers. 200 µs ist ein guter Standardwert für DDR2- und DDR3-Speicher mit 200 MHz. Dies ist ein sehr wichtiger Parameter, um eine funktionierende Simulation und ein funktionierendes System auf Silizium zu gewährleisten. Ein falscher Wert für die Einschwingzeit kann zu Simulationsfehlern führen. Informationen zur Konfiguration dieses Parameters finden Sie im Datenblatt des Anbieters des DDR-Speichers.
– Aktivieren Sie für jeden SERDES-Block in Ihrem Entwurf die entsprechenden Kontrollkästchen, um anzugeben, ob:
o PCIe wird verwendet
o Unterstützung für PCIe Hot Reset ist erforderlich
o Unterstützung für PCIe L2/P2 ist erforderlich
Notiz: Wenn Sie den 090-Chip (M2S090) verwenden und Ihr Design SERDESIF verwendet, müssen Sie keines der folgenden Kontrollkästchen aktivieren: „Für PCIe verwendet“, „PCIe-HotReset-Unterstützung einschließen“ und „PCIe-L2/P2-Unterstützung einschließen“. Wenn Sie ein anderes Gerät als 090 verwenden und einen oder mehrere SERDESIF-Blöcke verwenden, müssen Sie alle vier Kontrollkästchen im entsprechenden SERDESIF-Abschnitt aktivieren.
Notiz: Einzelheiten zu den in diesem Konfigurator verfügbaren Optionen finden Sie im CoreResetP-Handbuch.
Abbildung 3-4 • CoreResetPConfigurator
25/50 MHz Oszillator-Instanziierung
CoreConfigP und CoreResetP werden vom integrierten 25/50-MHz-RC-Oszillator getaktet. Sie müssen einen 25/50-MHz-Oszillator instanziieren und ihn mit diesen Kernen verbinden.
- Instanziieren Sie den Chip-Oszillator-Kern in Ihr SmartDesign (normalerweise das, in dem das MSS instanziiert ist). Dieser Kern ist im Libero-Katalog unter Clock & Management zu finden.
- Konfigurieren Sie diesen Kern so, dass der RC-Oszillator das FPGA-Fabric antreibt, wie in Abbildung 3-5 dargestellt.
Abbildung 3-5 • Chip-Oszillatoren-Konfigurator
Instanziierung des Systemresets (SYSRESET)
Das SYSRESET-Makro ergänzt Ihr Design um eine Reset-Funktionalität auf Geräteebene. Das Ausgangssignal POWER_ON_RESET_N wird aktiviert/deaktiviert, wenn der Chip eingeschaltet wird oder der externe Pin DEVRST_N aktiviert/deaktiviert wird (Abbildung 3-6).
Instanziieren Sie das SYSRESET-Makro in Ihrem SmartDesign (normalerweise dasjenige, in dem das MSS instanziiert wird). Dieses Makro finden Sie im Libero-Katalog unter Makrobibliothek. Eine Konfiguration dieses Makros ist nicht erforderlich.
Abbildung 3-6 • SYSRESET-Makro
Allgemeine Konnektivität
Nachdem Sie die MSS-, FDDR-, SERDESIF-, OSC-, SYSRESET-, CoreConfigP- und CoreResetP-Kerne in Ihrem Design instanziiert und konfiguriert haben, müssen Sie sie verbinden, um das Peripherieinitialisierungssubsystem zu bilden. Um die Konnektivitätsbeschreibung in diesem Dokument zu vereinfachen, wird sie in die APB3-kompatible Konfigurationsdatenpfadkonnektivität unterteilt, die mit den CoreConfigP- und den CoreResetP-bezogenen Verbindungen verknüpft ist.
Konfiguration Datenpfad Konnektivität
Abbildung 3-7 zeigt, wie CoreConfigP mit den MSS FIC_2-Signalen und den APB3-kompatiblen Konfigurationsschnittstellen der Peripheriegeräte verbunden wird.
Tabelle 3-1 • Konfigurationsdatenpfad-Port/BIF-Verbindungen
AUS Port/Bus-Schnittstelle (BIF)/ Komponente |
ZU Port/Busschnittstelle (BIF)/Komponente |
||
APB S VOREINSTELLUNG N/ CoreConfigP | APB S-PRESET N/ SDIF<0/1/2/3> | APB S VOREINSTELLUNG N/ FDDR |
MDDR APB S PRESE TN/MSS |
APB S PCLK/ CoreConfigP | APB S PCLK/SDIF | APB S PCLK/FDDR | MDDR APB S POLK/ MSS |
MDDR APBmslave/ CoreConfig | MDDR APB SLAVE (BIF)/MSS | ||
SDIF<0/1/2/ 3> APBmslave/Konfiguration | APB-SLAVE (BIF)/ SDIF<0/1/2/3> | ||
FDDR APBmSlave | APB-SLAVE (BIF)/ FDDR | ||
FIC 2 APBmmaster/ CoreConfigP | FIC 2 APB MASTER/ MSS |
Abbildung 3-7 • FIC_2 APB3-Subsystemkonnektivität
Taktgeber und Resets Konnektivität
Abbildung 3-8 zeigt, wie CoreResetP mit den externen Reset-Quellen und den Core-Reset-Signalen der Peripheriegeräte verbunden wird. Außerdem wird gezeigt, wie CoreResetP mit den Taktsynchronisationsstatussignalen (PLL-Sperrsignale) der Peripheriegeräte verbunden wird. Darüber hinaus wird gezeigt, wie CoreConfigP und CoreResetP verbunden werden.
Abbildung 3-8 • Konnektivität des Core SF2Reset-Subsystems
Erstellen und Kompilieren der Firmware-Anwendung
Wenn Sie die Firmware aus LiberoSoC exportieren (Design Flow Window > Export Firmware > Export Firmware), generiert Libero Folgendes files im /firmware/drivers_config/ sys_config-Ordner:
- sys_config.c – Enthält die Datenstrukturen, die die Werte für die Peripherieregister enthalten.
- sys_config.h – Enthält die #define-Anweisungen, die angeben, welche Peripheriegeräte im Design verwendet werden und initialisiert werden müssen.
- sys_config_mddr_define.h – Enthält die im Dialogfeld „Registerkonfiguration“ eingegebenen MDDR-Controller-Konfigurationsdaten.
- sys_config_fddr_define.h – Enthält die im Dialogfeld „Registerkonfiguration“ eingegebenen Konfigurationsdaten des FDDR-Controllers.
- sys_config_mss_clocks.h - Das file enthält die MSS-Taktfrequenzen, wie sie im MSS CCC-Konfigurator definiert sind. Diese Frequenzen werden vom CMSIS-Code verwendet, um vielen MSS-Treibern, die Zugriff auf ihre Peripheral Clock (PCLK)-Frequenz haben müssen, korrekte Taktinformationen bereitzustellen (z. B. sind MSS UART-Baudratenteiler eine Funktion der Baudrate und der PCLK-Frequenz).
- sys_config_SERDESIF_ .C – Enthält den SERDESIF_ Registerkonfigurationsdaten, die während des SERDESIF_-Vorgangs bereitgestellt wurden Blockkonfiguration bei der Designerstellung.
- sys_config_SERDESIF_ .H – Enthält die #define-Anweisungen, die die Anzahl der Registerkonfigurationspaare und die Lane-Nummer angeben, die für PMA_READY abgefragt werden muss (nur im PCIe-Modus).
Diese files werden für die ordnungsgemäße Kompilierung des CMSIS-Codes benötigt und enthalten Informationen zu Ihrem aktuellen Design, einschließlich Peripheriekonfigurationsdaten und Taktkonfigurationsinformationen für das MSS.
Bearbeiten Sie diese nicht files manuell; sie werden jedes Mal in den entsprechenden Komponenten-/Peripherieverzeichnissen erstellt, wenn die SmartDesign-Komponenten, die die jeweiligen Peripheriegeräte enthalten, generiert werden. Wenn Änderungen an den Konfigurationsdaten eines der Peripheriegeräte vorgenommen werden, müssen Sie die Firmware-Projekte erneut exportieren, damit die aktualisierte Firmware files (siehe Liste oben) werden exportiert in die / Firmware/drivers_config/sys_config-Ordner.
Wenn Sie die Firmware exportieren, erstellt Libero SoC die Firmware-Projekte: eine Bibliothek, in der Ihre Designkonfiguration files und Treiber werden kompiliert.
Wenn Sie das Kontrollkästchen Projekt erstellen Kontrollkästchen, wenn Sie die Firmware exportieren, wird ein Software-SoftConsole/IAR/Keil-Projekt erstellt, um das Anwendungsprojekt aufzunehmen, in dem Sie main.c und den Benutzer C/H bearbeiten können. files. Öffnen Sie das SoftConSole/IAR/Keil-Projekt, um den CMSIS-Code korrekt zu kompilieren und Ihre Firmware-Anwendung entsprechend Ihrem Hardware-Design richtig zu konfigurieren.
BFM Files Wird zur Simulation des Designs verwendet
Wenn Sie die SmartDesign-Komponenten mit den zu Ihrem Entwurf gehörenden Peripheriegeräten generieren, files werden für die jeweilige Peripherie im /simulation-Verzeichnis:
- test.bfm – BFM auf höchster Ebene file das zuerst während jeder Simulation ausgeführt wird, die den SmartFusion2 MSS Cortex-M3-Prozessor ausübt. Es führt die Dateien „peripheral_init.bfm“ und „user.bfm“ in dieser Reihenfolge aus.
- MDDR_init.bfm – Wenn Ihr Design die MDDR verwendet, generiert Libero diese file; es enthält BFM-Schreibbefehle, die das Schreiben der von Ihnen (über das Dialogfeld „Register bearbeiten“ oder in der MSS_MDDR-GUI) eingegebenen MSS DDR-Konfigurationsregisterdaten in die MSS DDR-Controller-Register simulieren.
- FDDR_init.bfm – Wenn Ihr Entwurf das FDDR verwendet, generiert Libero dieses file; es enthält BFM-Schreibbefehle, die Schreibvorgänge der von Ihnen (über das Dialogfeld „Register bearbeiten“ oder in der FDDR-GUI) eingegebenen Fabric DDR-Konfigurationsregisterdaten in die Fabric DDR-Controller-Register simulieren.
- SERDESIF_ _init.bfm – Wenn Ihr Entwurf einen oder mehrere SERDESIF-Blöcke verwendet, generiert Libero diesen file für jeden der SERDESIF_ Blöcke verwendet; es enthält BFM-Schreibbefehle, die Schreibvorgänge der von Ihnen eingegebenen SERDESIF-Konfigurationsregisterdaten simulieren (über das Dialogfeld „Register bearbeiten“ oder im SERDESIF_ GUI) in die SERDESIF_ Register. Wenn der SERDESIF-Block als PCIe konfiguriert ist, file hat auch einige #define-Anweisungen, die die Ausführung der beiden Registerkonfigurationsphasen in perfekter Reihenfolge steuern.
- user.bfm – Enthält die Benutzerbefehle. Diese Befehle werden ausgeführt, nachdem peripheral_init.bfm abgeschlossen ist. Bearbeiten Sie diese file um Ihre BFM-Befehle einzugeben.
- SERDESIF_ _Benutzer.bfm – Enthält die Benutzerbefehle. Bearbeiten Sie diese file um Ihre BFM-Befehle einzugeben. Verwenden Sie dies, wenn Sie SERDESIF_ konfiguriert haben. Block im BFM PCIe-Simulationsmodus und als AXI/AHBLite-Master. Wenn Sie SERDESIF_ konfiguriert haben Block im RTL-Simulationsmodus, werden Sie dies nicht brauchen file.
Wenn Sie die Simulation jedes Mal aufrufen, werden die folgenden zwei Simulations files werden neu erstellt, um /simulation-Verzeichnis mit aktualisiertem Inhalt:
- Subsystem.bfm – Enthält die #define-Anweisungen für jedes in Ihrem Design verwendete Peripheriegerät, die den bestimmten Abschnitt der Datei peripheral_init.bfm angeben, der entsprechend dem jeweiligen Peripheriegerät ausgeführt werden soll.
- operipheral_init.bfm – Enthält die BFM-Prozedur, die die CMSIS::SystemInit()-Funktion emuliert, die auf dem Cortex-M3 ausgeführt wird, bevor Sie die main()-Prozedur aufrufen. Sie kopiert die Konfigurationsdaten für alle im Design verwendeten Peripheriegeräte in die richtigen Peripheriekonfigurationsregister und wartet dann, bis alle Peripheriegeräte bereit sind, bevor sie bestätigt, dass Sie diese Peripheriegeräte verwenden können. Sie führt MDDR_init.bfm und FDDR_init.bfm aus.
Mit diesen generierten files werden die DDR-Controller in Ihrem Design automatisch konfiguriert und simulieren, was auf einem SmartFusion2-Gerät passieren würde. Sie können die Datei user.bfm bearbeiten file um alle Befehle hinzuzufügen, die zur Simulation Ihres Designs erforderlich sind (Cortex-M3 ist der Master). Diese Befehle werden ausgeführt, nachdem die Peripheriegeräte initialisiert wurden. Bearbeiten Sie nicht die Dateien test.bfm, subsystem.bfm, peripheral_init.bfm, MDDR_init.bfm, FDDR_init.bfm files und die SERDESIF_ _init.bfm files.
Produkt-Support
Die Microsemi SoC Products Group unterstützt ihre Produkte mit verschiedenen Support-Services, darunter Kundendienst, technisches Kunden-Support-Center, a webWebsite, E-Mail und weltweite Verkaufsbüros.
Dieser Anhang enthält Informationen zur Kontaktaufnahme mit der Microsemi SoC Products Group und zur Nutzung dieser Supportdienste.
Kundendienst
Wenden Sie sich für nicht technischen Produktsupport an den Kundendienst, z. B. Produktpreise, Produkt-Upgrades, Aktualisierungsinformationen, Bestellstatus und Autorisierung.
Rufen Sie aus Nordamerika an 800.262.1060
Rufen Sie aus dem Rest der Welt an 650.318.4460
Faxen, von überall auf der Welt, 408.643.6913
Technisches Kundendienstzentrum für Kunden
Die Microsemi SoC Products Group besetzt ihr technisches Kundendienstzentrum mit hochqualifizierten Ingenieuren, die Ihnen bei der Beantwortung Ihrer Hardware-, Software- und Designfragen zu Microsemi SoC-Produkten behilflich sein können. Das Customer Technical Support Center verbringt viel Zeit mit der Erstellung von Anwendungshinweisen, Antworten auf häufig gestellte Fragen zum Designzyklus, der Dokumentation bekannter Probleme und verschiedener FAQs. Bevor Sie uns kontaktieren, besuchen Sie bitte unsere Online-Ressourcen. Sehr wahrscheinlich haben wir Ihre Fragen bereits beantwortet.
Technische Unterstützung
Besuchen Sie den Kundensupport webSeite? ˅ (www.microsemi.com/soc/support/search/default.aspx) für weitere Informationen und Unterstützung. Viele Antworten sind in der Suchfunktion verfügbar web Ressourcen umfassen Diagramme, Illustrationen und Links zu anderen Ressourcen auf der webWebsite.
WebWebsite
Sie können eine Vielzahl von technischen und nicht technischen Informationen auf der SoC-Homepage unter durchsuchen www.microsemi.com/soc.
Kontaktaufnahme mit dem technischen Kundendienstzentrum des Kunden
Hochqualifizierte Ingenieure besetzen das Technical Support Center. Das Technical Support Center kann per E-Mail oder über die Microsemi SoC Products Group kontaktiert werden webWebsite.
E-Mail
Sie können Ihre technischen Fragen an unsere E-Mail-Adresse senden und Antworten per E-Mail, Fax oder Telefon erhalten. Wenn Sie Designprobleme haben, können Sie Ihr Design auch per E-Mail senden files um Hilfe zu erhalten.
Wir überwachen das E-Mail-Konto den ganzen Tag über. Wenn Sie Ihre Anfrage an uns senden, geben Sie bitte unbedingt Ihren vollständigen Namen, Firmennamen und Ihre Kontaktinformationen für eine effiziente Bearbeitung Ihrer Anfrage an.
Die E-Mail-Adresse des technischen Supports lautet soc_tech@microsemi.com.
Meine Fälle
Kunden der Microsemi SoC Products Group können technische Fälle online einreichen und verfolgen, indem sie auf gehen Meine Fälle.
Außerhalb der USA
Kunden, die außerhalb der US-Zeitzonen Hilfe benötigen, können sich entweder per E-Mail an den technischen Support wenden (soc_tech@microsemi.com) oder wenden Sie sich an ein lokales Verkaufsbüro. Verkaufsstellenverzeichnisse finden Sie unter www.microsemi.com/soc/company/contact/default.aspx.
ITAR Technischer Support
Wenden Sie sich für technischen Support zu RH- und RT-FPGAs, die den International Traffic in Arms Regulations (ITAR) unterliegen, an uns unter soc_tech_itar@microsemi.com. Alternativ können Sie in Meine Fälle Ja in der ITAR-Dropdown-Liste auswählen. Eine vollständige Liste der ITAR-regulierten Microsemi-FPGAs finden Sie auf der ITAR web Seite.
Microsemi Corporation (NASDAQ: MSCC) bietet ein umfassendes Portfolio an Halbleiterlösungen für: Luft- und Raumfahrt, Verteidigung und Sicherheit; Unternehmen und Kommunikation; und industrielle und alternative Energiemärkte. Zu den Produkten gehören hochleistungsfähige, hochzuverlässige analoge und HF-Bausteine, Mixed-Signal- und HF-integrierte Schaltungen, anpassbare SoCs, FPGAs und komplette Subsysteme. Microsemi hat seinen Hauptsitz in Aliso Viejo, Kalifornien. Erfahren Sie mehr unter www.microsemi.com.
© 2014 Microsemi Corporation. Alle Rechte vorbehalten. Microsemi und das Microsemi-Logo sind Warenzeichen der Microsemi Corporation. Alle anderen Warenzeichen und Dienstleistungsmarken sind Eigentum ihrer jeweiligen Inhaber.
5-02-00384-1/08.14Hauptsitz von Microsemi
Ein Unternehmen, Aliso Viejo CA 92656 USA
Innerhalb der USA: +1 949-380-6100
Umsatz: +1 949-380-6136
Fax: +1 949-215-4996
Dokumente / Ressourcen
![]() |
Microsemi SmartFusion2 DDR-Controller und serieller Hochgeschwindigkeits-Controller [pdf] Benutzerhandbuch SmartFusion2 DDR-Controller und serieller Hochgeschwindigkeitscontroller, SmartFusion2 DDR, Controller und serieller Hochgeschwindigkeitscontroller, Hochgeschwindigkeitscontroller |