SmartFusion2
DDR-controller en seriële hogesnelheidscontroller
Initialisatiemethodologie
Gebruikershandleiding
Invoering
Als u bij het maken van een ontwerp met een SmartFusion2-apparaat een van de twee DDR-controllers (FDDR of MDDR) of een van de Serial High Speed Controller-blokken (SERDESIF) gebruikt, moet u de configuratieregisters van deze blokken tijdens runtime initialiseren voordat ze kunnen worden gebruikt. Bijvoorbeeldample, voor de DDR-controller moet u de DDR-modus (DDR3/DDR2/LPDDR), PHY-breedte, burst-modus en ECC instellen.
Op dezelfde manier moet u voor het SERDESIF-blok dat als PCIe-eindpunt wordt gebruikt, de PCIE BAR instellen op AXI (of AHB)-venster.
Dit document beschrijft de stappen die nodig zijn om een Libero-ontwerp te maken dat automatisch de DDR-controller en SERDESIF-blokken initialiseert bij het opstarten. Het beschrijft ook hoe u de firmwarecode van Libero SOC kunt genereren die wordt gebruikt in de ingebedde ontwerpstroom.
Eerst wordt een gedetailleerde beschrijving van de theorie van operaties gegeven.
In de volgende sectie wordt beschreven hoe u een dergelijk ontwerp kunt maken met behulp van de Libero SoC System Builder, een krachtige ontwerptool die, naast andere functies, de 'initialisatie'-oplossing voor u creëert als u DDR- of SERDESIF-blokken in uw ontwerp gebruikt.
In het volgende gedeelte wordt beschreven hoe u een volledige 'initialisatie'-oplossing kunt samenstellen zonder de SmartFusion2 System Builder te gebruiken. Hierin wordt uitgelegd wat u moet doen als u de System Builder niet wilt gebruiken, en wordt ook beschreven wat de System Builder-tool daadwerkelijk voor u genereert. In deze sectie wordt aandacht besteed aan:
- Het aanmaken van de configuratiegegevens voor DDR-controller en SERDESIF-configuratieregisters
- De creatie van de FPGA-logica die nodig is om de configuratiegegevens naar de verschillende ASIC-configuratieregisters over te dragen
Tenslotte beschrijven we de gegenereerde filegerelateerd aan:
- Het creëren van een 'initialisatie'-oplossing voor firmware.
- De simulatie van het ontwerp voor de DDR 'initialisatie'-oplossing.
Voor details over de DDR-controller en SERDESIF-configuratieregisters raadpleegt u de Microsemi SmartFusion2 Hoge snelheid seriële en DDR-interfaces Gebruikershandleiding.
Theorie van de werking
De oplossing voor randapparatuurinitialisatie gebruikt de volgende hoofdcomponenten:
- De CMSIS SystemInit()-functie, die op de Cortex-M3 draait en het initialisatieproces orkestreert.
- De CoreConfigP zachte IP-kern, die de configuratieregisters van de randapparatuur initialiseert.
- De CoreResetP zachte IP-kern, die de resetsequentie van de MSS-, DDR-controllers en SERDESIF-blokken beheert.
Het perifere initialisatieproces werkt als volgt:
- Bij het resetten voert de Cortex-M3 de CMSIS SystemInit()-functie uit. Deze functie wordt automatisch uitgevoerd voordat de functie main() van de toepassing wordt uitgevoerd.
Het CoreResetP-uitvoersignaal MSS_HPMS_READY wordt afgegeven aan het begin van het initialisatieproces, wat aangeeft dat de MSS en alle randapparatuur (behalve MDDR) gereed zijn voor communicatie. - De SystemInit()-functie schrijft configuratiegegevens naar de DDR-controllers en SERDESIF-configuratieregisters via de MSS FIC_2 APB3-bus. Deze interface is verbonden met de zachte CoreConfigP-kern die in de FPGA-fabric is geïnstantieerd.
- Nadat alle registers zijn geconfigureerd, schrijft de functie SystemInit() naar de CoreConfigP-controleregisters om de voltooiing van de registerconfiguratiefase aan te geven; de CoreConfigP-uitgangssignalen CONFIG1_DONE en CONIG2_DONE worden vervolgens bevestigd.
Er zijn twee fasen van registerconfiguratie (CONFIG1 en CONFIG2), afhankelijk van de randapparatuur die in het ontwerp wordt gebruikt. - Als een of beide MDDR/FDDR worden gebruikt en geen van de SERDESIF-blokken wordt gebruikt in het ontwerp, is er slechts één registerconfiguratiefase. De beide CoreConfigP-uitgangssignalen CONFIG1_DONE en CONIG2_DONE worden na elkaar zonder enige wachttijd/vertraging afgegeven.
Als bij het ontwerp een of meer SERDESIF-blokken in niet-PCIe-modus worden gebruikt, is er slechts één fase van registerconfiguratie. CONFIG1_DONE en CONIG2_DONE worden na elkaar bevestigd, zonder enige wachttijd/vertraging.
Als bij het ontwerp een of meer SERDESIF-blokken in PCIe-modus worden gebruikt, zijn er twee fasen van de registerconfiguratie. CONFIG1_DONE wordt bevestigd nadat de eerste fase van de registerconfiguratie is voltooid. In deze fase worden het SERDESIF-systeem en de rijstrookregisters geconfigureerd. Als SERDESIF is geconfigureerd in een niet-PCIE-modus, wordt het CONFIG2_DONE-signaal ook onmiddellijk bevestigd. - De tweede fase van de registerconfiguratie volgt dan (als SERDESIF is geconfigureerd in PCIE-modus). Hieronder volgen de verschillende gebeurtenissen die plaatsvinden in de tweede fase:
– CoreResetP verwijdert de signalen PHY_RESET_N en CORE_RESET_N die overeenkomen met elk van de gebruikte SERDESIF-blokken. Het geeft ook een uitgangssignaal SDIF_RELEASED af nadat alle SERDESIF-blokken niet meer zijn gereset. Dit SDIF_RELEASED-signaal wordt gebruikt om aan de CoreConfigP aan te geven dat de SERDESIF-kern niet meer is gereset en gereed is voor de tweede fase van de registerconfiguratie.
– Zodra het SDIF_RELEASED-signaal is bevestigd, begint de functie SystemInit() te pollen naar de bewering van PMA_READY op de juiste SERDESIF-baan. Zodra de PMA_READY is bevestigd, wordt de tweede set SERDESIF-registers (PCIE-registers) geconfigureerd/geschreven door de SystemInit()-functie. - Nadat alle PCIE-registers zijn geconfigureerd, schrijft de functie SystemInit() naar de CoreConfigP-controleregisters om de voltooiing van de tweede fase van de registerconfiguratie aan te geven; het CoreConfigP-uitgangssignaal CONIG2_DONE wordt vervolgens bevestigd.
- Naast de bovenstaande signaalbeweringen/de-beweringen beheert CoreResetP ook de initialisatie van de verschillende blokken door de volgende functies uit te voeren:
– Het ongedaan maken van de FDDR-kernreset
– Het opheffen van de SERDESIF blokkeert PHY- en CORE-resets
– Bewaking van het FDDR PLL (FPLL)-slotsignaal. De FPLL moet vergrendeld zijn om te garanderen dat de FDDR AXI/AHBLite-data-interface en de FPGA-fabric correct kunnen communiceren.
– Bewaking van de SERDESIF-blok PLL (SPLL) slotsignalen. De SPLL moet vergrendeld zijn om te garanderen dat de SERDESIF de AXI/AHBLite-interface (PCIe-modus) blokkeert of de XAUI-interface correct kan communiceren met de FPGA-fabric.
– Wachten tot de externe DDR-geheugens tot rust zijn gekomen en gereed zijn voor toegang door de DDR-controllers. - Wanneer alle randapparatuur hun initialisatie heeft voltooid, geeft CoreResetP het INIT_DONE-signaal door; het interne register INIT_DONE van CoreConfigP wordt vervolgens bevestigd.
Als een of beide MDDR/FDDR worden gebruikt en de DDR-initialisatietijd wordt bereikt, wordt het CoreResetP-uitvoersignaal DDR_READY bevestigd. Bewering van dit signaal DDR_READY kan worden gecontroleerd als een indicatie dat de DDR (MDDR/FDDR) gereed is voor communicatie.
Als één of meer SERDESIF-blokken worden gebruikt en de tweede fase van de registerconfiguratie met succes is voltooid, wordt het CoreResetP-uitgangssignaal SDIF_READY afgegeven. Bewering van dit signaal SDIF_READY kan worden gecontroleerd als een indicatie dat alle SERDESIF-blokken klaar zijn voor communicatie. - De functie SystemInit(), die heeft gewacht tot INIT_DONE is bevestigd, wordt voltooid en de functie main() van de toepassing wordt uitgevoerd. Op dat moment zijn alle gebruikte DDR-controllers en SERDESIF-blokken geïnitialiseerd en kunnen de firmwareapplicatie en de FPGA-fabriclogica er betrouwbaar mee communiceren.
De methodologie die in dit document wordt beschreven, is gebaseerd op het feit dat de Cortex-M3 het initialisatieproces uitvoert als onderdeel van de systeeminitialisatiecode die wordt uitgevoerd vóór de main()functie van de applicatie.
Zie de stroomdiagrammen in Figuur 1-1, Figuur 1-2 en Figuur 1-3 voor de initialisatiestappen van FDDR/MDDR, SEREDES (niet-PCIe-modus) en SERDES (PCIe-modus).
Figuur 1-4 toont een timingdiagram voor randinitialisatie.
![]() |
![]() |
Figuur 1-3 • SERDESIF (PCIe) initialisatiestroomschema
De initialisatieprocedure die in dit document wordt beschreven, vereist dat u Cortex-M3 uitvoert tijdens het initialisatieproces, zelfs als u niet van plan bent code op de Cortex-M3 uit te voeren. U moet een basisfirmwaretoepassing maken die niets doet (een eenvoudige lus, bijvoorbeeldample) en laad dat uitvoerbare bestand in het ingebouwde niet-vluchtige geheugen (eNVM), zodat de DDR-controllers en SERDESIF-blokken worden geïnitialiseerd wanneer de Cortex-M3 opstart.
System Builder gebruiken om een ontwerp te maken met behulp van DDR- en SERDESIF-blokken
De SmartFusion2 System Builder is een krachtige ontwerptool waarmee u uw vereisten op systeemniveau kunt vastleggen en een ontwerp kunt maken waarin deze vereisten worden geïmplementeerd. Een zeer belangrijke functie van de System Builder is het automatisch aanmaken van het subsysteem Randapparatuurinitialisatie. “SmartDesign gebruiken om een ontwerp te maken met behulp van DDR- en SERDESIF-blokken” op pagina 17 beschrijft in detail hoe u een dergelijke oplossing kunt maken zonder de System Builder.
Als u System Builder gebruikt, moet u de volgende taken uitvoeren om een ontwerp te maken dat uw DDR-controllers en SERDESIF-blokken initialiseert bij het opstarten:
- Geef op de pagina Apparaatfuncties (Afbeelding 2-1) op welke DDR-controllers worden gebruikt en hoeveel SERDESIF-blokken er in uw ontwerp worden gebruikt.
- Geef op de pagina Geheugen het type DDR (DDR2/DDR3/LPDDR) en de configuratiegegevens voor uw externe DDR-geheugens op. Zie het gedeelte Geheugenpagina voor meer informatie.
- Voeg op de pagina Randapparatuur fabric-masters toe die zijn geconfigureerd als AHBLite/AXI aan het Fabric DDR-subsysteem en/of MSS DDR FIC-subsysteem (optioneel).
- Geef op de pagina Klokinstellingen de klokfrequenties op voor de DDR-subsystemen.
- Vul uw ontwerpspecificatie in en klik op Voltooien. Dit genereert het door de System Builder gemaakte ontwerp, inclusief de logica die nodig is voor de 'initialisatie'-oplossing.
- Als u SERDESIF-blokken gebruikt, moet u de SERDESIF-blokken in uw ontwerp instantiëren en hun initialisatiepoorten verbinden met die van de door System Builder gegenereerde kern.
Pagina Systeembouwer Apparaatfuncties
Geef op de pagina Apparaatfuncties op welke DDR-controllers (MDDR en/of FDDR) worden gebruikt en hoeveel SERDESIF-blokken er in uw ontwerp worden gebruikt (Afbeelding 2-1).
Afbeelding 2-1 • Pagina met apparaatfuncties van System Builder
Systeembouwer Geheugenpagina
Om MSS DDR (MDDR) of Fabric DDR (FDDR) te gebruiken, selecteert u het Geheugentype in de vervolgkeuzelijst (Afbeelding 2-2).
Figuur 2-2 • MSS extern geheugen
Je moet:
- Selecteer het DDR-type (DDR2, DDR3 of LPDDR).
- Definieer de afwikkelingstijd van het DDR-geheugen. Raadpleeg uw externe DDR-geheugenspecificaties om de juiste geheugeninsteltijd in te stellen. Het DDR-geheugen kan mogelijk niet correct worden geïnitialiseerd als de geheugenhersteltijd niet correct is ingesteld.
- Importeer de configuratiegegevens van het DDR-register of stel uw DDR-geheugenparameters in. Raadpleeg voor meer informatie de Microsemi SmartFusion2 Hoge snelheid seriële en DDR-interfaces Gebruikershandleiding.
Deze gegevens worden gebruikt om het DDR-register BFM en de firmwareconfiguratie te genereren files zoals beschreven in “De firmwaretoepassing maken en compileren” op pagina 26 en “BFM Files Gebruikt voor het simuleren van het ontwerp” op pagina 27. Voor details over de configuratieregisters van de DDR-controller raadpleegt u de Microsemi SmartFusion2 Hoge snelheid seriële en DDR-interfaces Gebruikershandleiding.
een exampbestand van de configuratie file syntaxis wordt getoond in Figuur 2-3. De registernamen die hierbij worden gebruikt file zijn dezelfde als die beschreven in de Microsemi SmartFusion2 Hoge snelheid seriële en DDR-interfaces Gebruikershandleiding
Figuur 2-3 • Configuratie File Syntaxis Bijvample
Pagina Systeembouwer Randapparatuur
Op de pagina Randapparatuur wordt voor elke DDR-controller een afzonderlijk subsysteem aangemaakt (Fabric DDR Subsystem voor FDDR en MSS DDR FIC Subsystem voor MDDR). U kunt aan elk van deze subsystemen een Fabric AMBA Master-kern (geconfigureerd als AXI/AHBLite) toevoegen om fabric-mastertoegang tot de DDR-controllers mogelijk te maken. Bij het genereren instantiëert System Builder automatisch buskernen (afhankelijk van het type toegevoegde AMBA Master) en stelt de master BIF van de buskern en de klok- en resetpinnen van de overeenkomstige subsystemen (FDDR/MDDR) onder de juiste pingroepen bloot aan de bovenkant. Het enige dat u hoeft te doen, is de BIF's verbinden met de juiste Fabric Master-kernen die u in het ontwerp zou instantiëren. In het geval van MDDR is het optioneel om een Fabric AMBA Master-kern toe te voegen aan het MSS DDR FIC-subsysteem; Cortex-M3 is een standaardmaster op dit subsysteem. Figuur 2-4 toont de pagina Systeembouwer Randapparatuur.
Afbeelding 2-4 • Pagina Randapparatuur van systeembouwer
Pagina Systeembouwer Klokinstellingen
Op de pagina Klokinstellingen moet u voor elke DDR-controller de klokfrequenties opgeven die betrekking hebben op elk DDR-subsysteem (MDDR en/of FDDR).
Voor MDDR moet u het volgende opgeven:
- MDDR_CLK – Deze klok bepaalt de werkfrequentie van de DDR-controller en moet overeenkomen met de klokfrequentie waarop u uw externe DDR-geheugen wilt laten werken. Deze klok wordt gedefinieerd als een veelvoud van de M3_CLK (Cortex-M3 en MSS hoofdklok, figuur 2-5). De MDDR_CLK moet kleiner zijn dan 333 MHz.
- DDR_FIC_CLK – Als u ervoor heeft gekozen om ook toegang te krijgen tot de MDDR vanuit de FPGA-infrastructuur, moet u de DDR_FIC_CLK opgeven. Deze klokfrequentie wordt gedefinieerd als de verhouding van de MDDR_CLK en moet overeenkomen met de frequentie waarop het FPGA-fabricsubsysteem dat toegang heeft tot de MDDR draait.
Figuur 2-5 • Cortex-M3 en MSS hoofdklok; MDDR-klokken
Voor FDDR moet u het volgende opgeven:
- FDDR_CLK – Bepaalt de werkfrequentie van de DDR-controller en moet overeenkomen met de klokfrequentie waarop u wilt dat uw externe DDR-geheugen draait. Merk op dat deze klok is gedefinieerd als een veelvoud van de M3_CLK (MSS- en Cortex-M3-klok, figuur 2-5). De FDDR_CLK moet binnen 20 MHz en 333 MHz liggen.
- FDDR_SUBSYSTEM_CLK – Deze klokfrequentie wordt gedefinieerd als een verhouding van de FDDR_CLK en moet overeenkomen met de frequentie waarop het FPGA-fabric-subsysteem dat toegang heeft tot de FDDR draait.
Figuur 2-6 • Fabric DDR-klokken
SERDESIF-configuratie
De SERDESIF-blokken worden niet geïnstantieerd in het door System Builder gegenereerde ontwerp. Voor alle SERDESIF-blokken zijn echter initialisatiesignalen beschikbaar op de interface van de System Builder-kern en kunnen worden verbonden met de SERDESIF-kernen op het volgende hiërarchieniveau, zoals weergegeven in Figuur 2-7.Afbeelding 2-7 • SERDESIF-connectiviteit voor initialisatie van randapparatuur
Net als de DDR-configuratieregisters heeft elk SERDES-blok ook configuratieregisters die tijdens runtime moeten worden geladen. U kunt deze registerwaarden importeren of de High Speed Serial Interface Configurator (Afbeelding 2-8) gebruiken om uw PCIe- of EPCS-parameters in te voeren, waarna de registerwaarden automatisch voor u worden berekend. Raadpleeg voor meer informatie de Gebruikershandleiding voor SERDES-configurator.Figuur 2-8 • Hoge snelheid seriële interfaceconfigurator
Zodra u uw gebruikerslogica hebt geïntegreerd met het System Builder-blok en SERDES-blok, kunt u uw SmartDesign op het hoogste niveau genereren. Dit genereert alle HDL en BFM files die nodig zijn om uw ontwerp te implementeren en te simuleren. Vervolgens kunt u doorgaan met de rest van de ontwerpstroom.
SmartDesign gebruiken om een ontwerp te maken met behulp van DDR- en SERDESIF-blokken
In deze sectie wordt beschreven hoe u een volledige 'initialisatie'-oplossing kunt samenstellen zonder de SmartFusion2 System Builder te gebruiken. Het doel is om u te helpen begrijpen wat u moet doen als u de Systeembouwer niet wilt gebruiken. In dit gedeelte wordt ook beschreven wat de System Builder-tool feitelijk voor u genereert. In dit gedeelte wordt beschreven hoe u:
- Voer de configuratiegegevens in voor de DDR-controller en SERDESIF-configuratieregisters.
- Instantieer en verbind de Fabric Cores die nodig zijn om de configuratiegegevens over te dragen naar de DDR-controllers en SERDESIF-configuratieregisters.
DDR-controllerconfiguratie
De MSS DDR (MDDR) en Fabric DDR (FDDR) controllers moeten dynamisch (tijdens runtime) worden geconfigureerd om te voldoen aan de externe DDR-geheugenconfiguratievereisten (DDR-modus, PHY-breedte, burst-modus, ECC, enz.). Gegevens die in de MDDR/FDDR-configurator worden ingevoerd, worden door de CMSIS SystemInit()-functie naar de configuratieregisters van de DDR-controller geschreven. De configurator heeft drie verschillende tabbladen voor het invoeren van verschillende soorten configuratiegegevens:
- Algemene gegevens (DDR-modus, gegevensbreedte, klokfrequentie, ECC, fabric-interface, schijfsterkte)
- Geheugeninitialisatiegegevens (burstlengte, burstvolgorde, timingmodus, latentie, enz.)
- Geheugentiminggegevens
Raadpleeg de specificaties van uw externe DDR-geheugen en configureer de DDR-controller zodat deze voldoet aan de vereisten van uw externe DDR-geheugen.
Voor details over de DDR-configuratie raadpleegt u de SmartFusion2 MSS DDR-configuratie Gebruikershandleiding.
SERDESIF-configuratie
Dubbelklik op het SERDES-blok in het SmartDesign-canvas om de Configurator te openen en de SERDES te configureren (Afbeelding 3-1). U kunt deze registerwaarden importeren of de SERDES-configurator gebruiken om uw PCIe- of EPCS-parameters in te voeren, waarna de registerwaarden automatisch voor u worden berekend. Raadpleeg voor meer informatie de Gebruikershandleiding voor SERDES-configurator.Figuur 3-1 • Hoge snelheid seriële interfaceconfigurator
Het creëren van het FPGA-ontwerpinitialisatie-subsysteem
Om de DDR- en SERDESIF-blokken te initialiseren, moet u het initialisatiesubsysteem in de FPGA-infrastructuur creëren. Het FPGA-fabricinitialisatiesubsysteem verplaatst gegevens van de Cortex-M3 naar de DDR- en SERDESIF-configuratieregisters, beheert de resetsequenties die nodig zijn om deze blokken operationeel te maken en geeft aan wanneer deze blokken klaar zijn om te communiceren met de rest van uw ontwerp. Om het initialisatiesubsysteem te maken, moet u:
- Configureer FIC_2 in het MSS
- Instantieer en configureer de CoreConfigP- en CoreResetP-kernen
- Instantieer de on-chip 25/50MHz RC-oscillator
- Instantieer de macro Systeemreset (SYSRESET).
- Sluit deze componenten aan op de configuratie-interfaces, klokken, resets en PLL-vergrendelingspoorten van elk randapparaat
MSS FIC_2 APB-configuratie
Om het MSS FIC_2 te configureren:
- Open het dialoogvenster FIC_2-configurator vanuit de MSS-configurator (Afbeelding 3-2).
- Selecteer Randapparatuur initialiseren met Cortex-M3.
- Afhankelijk van uw systeem schakelt u één of beide van de volgende selectievakjes in:
– MSS DDR
– Fabric DDR- en/of SERDES-blokken - Klik op OK en ga verder met het genereren van de MSS (u kunt deze actie uitstellen totdat u de MSS volledig hebt geconfigureerd volgens uw ontwerpvereisten). De FIC_2-poorten (FIC_2_APB_MASTER, FIC_2_APB_M_PCLK en FIC_2_APB_M_RESET_N) zijn nu zichtbaar op de MSS-interface en kunnen worden aangesloten op de CoreConfigP- en CoreResetP-kernen.
Figuur 3-2 • MSS FIC_2-configurator
CoreConfigP
CoreConfigP configureren:
- Instantieer CoreConfigP in uw SmartDesign (meestal degene waar de MSS wordt geïnstantieerd).
Deze kern vindt u in de Libero Catalogus (onder Randapparatuur). - Dubbelklik op de kern om de configurator te openen.
- Configureer de kern om aan te geven welke randapparatuur moet worden geïnitialiseerd (Afbeelding 3-3)
Figuur 3-3 • Dialoogvenster CoreConfigP
KernResetP
CoreResetP configureren:
- Instantieer CoreResetP in uw SmartDesign (meestal degene waar de MSS wordt geïnstantieerd).
Deze kern vindt u in de Libero Catalogus, onder Randapparatuur. - Dubbelklik op de kern in het SmartDesign Canvas om de Configurator te openen (Afbeelding 3-4).
- Configureer de kern om:
– Specificeer het externe resetgedrag (EXT_RESET_OUT bevestigd). Kies een van de vier opties:
o EXT_RESET_OUT wordt nooit beweerd
o EXT_RESET_OUT wordt bevestigd als reset bij opstarten (POWER_ON_RESET_N) wordt uitgevoerd
o EXT_RESET_OUT wordt beweerd als FAB_RESET_N wordt beweerd
o EXT_RESET_OUT wordt beweerd als reset bij opstarten (POWER_ON_RESET_N) of FAB_RESET_N wordt beweerd
– Geef het apparaatvoltage. De geselecteerde waarde moet overeenkomen met de voltage die u hebt geselecteerd in het dialoogvenster Libero Project-instellingen.
– Vink de juiste selectievakjes aan om aan te geven welke randapparatuur u in uw ontwerp gebruikt.
– Geef de instellingstijd voor het externe DDR-geheugen op. Dit is de maximale waarde voor alle DDR-geheugens die in uw toepassing worden gebruikt (MDDR en FDDR). Raadpleeg het gegevensblad van de externe DDR-geheugenleverancier om deze parameter te configureren. 200us is een goede standaardwaarde voor DDR2- en DDR3-geheugens die op 200 MHz draaien. Dit is een zeer belangrijke parameter om een werkende simulatie en een werkend systeem op silicium te garanderen. Een onjuiste waarde voor de bezinkingstijd kan tot simulatiefouten leiden. Raadpleeg het gegevensblad van de DDR-geheugenleverancier om deze parameter te configureren.
– Vink voor elk SERDES-blok in uw ontwerp de juiste vakjes aan om aan te geven of:
o PCIe wordt gebruikt
o Ondersteuning voor PCIe Hot Reset is vereist
o Ondersteuning voor PCIe L2/P2 is vereist
Opmerking: Als u de 090-chip (M2S090) gebruikt en uw ontwerp gebruikt SERDESIF, hoeft u geen van de volgende selectievakjes aan te vinken: 'Gebruikt voor PCIe', 'Include PCIe HotReset support' en 'Include PCIe L2/P2 support'. Als u een niet-090-apparaat gebruikt en een of meer SERDESIF-blokken gebruikt, moet u alle vier de selectievakjes onder de betreffende SERDESIF-sectie aanvinken.
Opmerking: Voor details over de mogelijkheden die u in deze configurator ter beschikking staan, verwijzen wij u naar het CoreResetP Handboek.
Figuur 3-4 • CoreResetPConfigurator
25/50MHz Oscillator Instantiatie
CoreConfigP en CoreResetP worden geklokt door de on-chip 25/50MHz RC-oscillator. U moet een 25/50MHz-oscillator instantiëren en deze op deze kernen aansluiten.
- Instantieer de chiposcillatorkern in uw SmartDesign (meestal degene waar de MSS wordt geïnstantieerd). Deze kern vindt u in de Libero Catalogus onder Klok & Beheer.
- Configureer deze kern zo dat de RC-oscillator de FPGA-structuur aanstuurt, zoals weergegeven in figuur 3-5.
Afbeelding 3-5 • Chiposcillatorconfigurator
Systeemreset (SYSRESET) Instantiatie
De SYSRESET-macro biedt resetfunctionaliteit op apparaatniveau voor uw ontwerp. Het POWER_ON_RESET_N uitgangssignaal wordt geactiveerd/gedeactiveerd wanneer de chip wordt ingeschakeld of de externe pin DEVRST_N wordt geactiveerd/gedeactiveerd (Figuur 3-6).
Instantieer de SYSRESET-macro in uw SmartDesign (meestal degene waar de MSS wordt geïnstantieerd). Deze macro vindt u in de Libero Catalogus onder Macrobibliotheek. Er is geen configuratie van deze macro nodig.
Figuur 3-6 • SYSRESET-macro
Algemene connectiviteit
Nadat u de MSS-, FDDR-, SERDESIF-, OSC-, SYSRESET-, CoreConfigP- en CoreResetP-kernen in uw ontwerp hebt geïnstantieerd en geconfigureerd, moet u ze verbinden om het Peripheral Initialization-subsysteem te vormen. Om de connectiviteitsbeschrijving in dit document te vereenvoudigen, is deze opgesplitst in de APB3-compatibele configuratiegegevenspadconnectiviteit die is gekoppeld aan de CoreConfigP en de CoreResetP-gerelateerde verbindingen.
Configuratie Gegevenspad Connectiviteit
Figuur 3-7 laat zien hoe u de CoreConfigP aansluit op de MSS FIC_2-signalen en de APB3-compatibele configuratie-interfaces van de randapparatuur.
Tabel 3-1 • Configuratie Gegevenspad Poort/BIF-verbindingen
VAN Poort/bus-interface (BIF)/ Component |
NAAR Poort/businterface (BIF)/component |
||
APB S PRESET N/ CoreConfigP | APB S VOORINSTELLING N/SDIF<0/1/2/3> | APB S PRESET 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/Config | APB-SLAVE (BIF)/SDIF<0/1/2/3> | ||
FDDR APBmslave | APB-SLAAF (BIF)/FDDR | ||
FIC 2 APBmmaster/ CoreConfigP | FIC 2 APB-MASTER/MSS |
Afbeelding 3-7 • FIC_2 APB3-subsysteemconnectiviteit
Klokken en resets Connectiviteit
Figuur 3-8 laat zien hoe u de CoreResetP aansluit op de externe resetbronnen en de kernresetsignalen van de randapparatuur. Het laat ook zien hoe u de CoreResetP kunt aansluiten op de kloksynchronisatiestatussignalen van de randapparatuur (PLL-vergrendelingssignalen). Daarnaast laat het zien hoe de CoreConfigP en CoreResetP met elkaar verbonden zijn.
Afbeelding 3-8 • Kernconnectiviteit SF2Reset-subsysteem
De firmwaretoepassing maken en compileren
Wanneer u de firmware exporteert vanuit LiberoSoC (Design Flow Window > Firmware exporteren > Firmware exporteren), genereert Libero het volgende files in de /firmware/drivers_config/sys_config map:
- sys_config.c – Bevat de datastructuren die de waarden voor de perifere registers bevatten.
- sys_config.h – Bevat de #define-instructies die specificeren welke randapparatuur in het ontwerp wordt gebruikt en moet worden geïnitialiseerd.
- sys_config_mddr_define.h – Bevat de configuratiegegevens van de MDDR-controller die zijn ingevoerd in het dialoogvenster Registerconfiguratie.
- sys_config_fddr_define.h – Bevat de configuratiegegevens van de FDDR-controller die zijn ingevoerd in het dialoogvenster Registerconfiguratie.
- sys_config_mss_clocks.h - Dit file bevat de MSS-klokfrequenties zoals gedefinieerd in de MSS CCC-configurator. Deze frequenties worden door de CMSIS-code gebruikt om correcte klokinformatie te leveren aan veel van de MSS-stuurprogramma's die toegang moeten hebben tot hun Peripheral Clock (PCLK)-frequentie (MSS UART baudrate-delers zijn bijvoorbeeld een functie van de baudrate en de PCLK-frequentie ).
- sys_config_SERDESIF_ .C – Bevat de SERDESIF_ configuratiegegevens registreren die zijn verstrekt tijdens de SERDESIF_ blokconfiguratie bij het maken van ontwerpen.
- sys_config_SERDESIF_ .H – Bevat de #define-instructies die het aantal registerconfiguratieparen specificeren en het baannummer dat moet worden opgevraagd voor PMA_READY (alleen in PCIe-modus).
Deze fileEr zijn s nodig om de CMSIS-code correct te laten compileren en informatie te bevatten over uw huidige ontwerp, inclusief configuratiegegevens van randapparatuur en klokconfiguratie-informatie voor de MSS.
Bewerk deze niet filehandmatig; ze worden elke keer dat de SmartDesign-componenten die de respectieve randapparatuur bevatten, aangemaakt in de overeenkomstige componenten-/randapparatuurmappen. Als er wijzigingen worden aangebracht in de configuratiegegevens van een van de randapparaten, moet u de firmwareprojecten opnieuw exporteren, zodat de bijgewerkte firmware files (zie de lijst hierboven) worden geëxporteerd naar de map /firmware/drivers_config/sys_config.
Wanneer u de firmware exporteert, maakt Libero SoC de firmwareprojecten aan: een bibliotheek waarin uw ontwerpconfiguratie staat files en stuurprogramma's zijn gecompileerd.
Als u het Create project aanvinkvakje wanneer u de firmware exporteert, wordt er een software SoftConsole/IAR/Keil-project gemaakt om het applicatieproject te bewaren, waar u de main.c en gebruikers-C/H kunt bewerken fileS. Open het SoftConSole/IAR/Keil-project om de CMSIS-code correct te compileren en uw firmwaretoepassing correct te configureren zodat deze past bij uw hardwareontwerp.
BFM Files Wordt gebruikt voor het simuleren van het ontwerp
Wanneer u de SmartDesign-componenten genereert die de randapparatuur bevatten die bij uw ontwerp hoort, wordt de simulatie files die overeenkomen met de respectieve randapparatuur worden gegenereerd in de /simulatie map:
- test.bfm – BFM van het hoogste niveau file die voor het eerst wordt uitgevoerd tijdens elke simulatie waarbij de SmartFusion2 MSS Cortex-M3-processor wordt gebruikt. Het voert perifer_init.bfm en user.bfm uit, in die volgorde.
- MDDR_init.bfm – Als uw ontwerp gebruik maakt van de MDDR, genereert Libero deze file; het bevat BFM-schrijfopdrachten die het schrijven simuleren van de MSS DDR-configuratieregistergegevens die u hebt ingevoerd (met behulp van het dialoogvenster Edit Registers of in de MSS_MDDR GUI) in de MSS DDR Controller-registers.
- FDDR_init.bfm – Als uw ontwerp gebruik maakt van de FDDR, genereert Libero deze file; het bevat BFM-schrijfopdrachten die het schrijven simuleren van de Fabric DDR-configuratieregistergegevens die u hebt ingevoerd (met behulp van het dialoogvenster Edit Registers of in de FDDR GUI) in de Fabric DDR Controller-registers.
- SERDESIF_ _init.bfm – Als uw ontwerp één of meerdere SERDESIF-blokken gebruikt, genereert Libero deze file voor elk van de SERDESIF_ gebruikte blokken; het bevat BFM-schrijfopdrachten die het schrijven simuleren van de SERDESIF-configuratieregistergegevens die u hebt ingevoerd (met behulp van het dialoogvenster Registers bewerken of in de SERDESIF_ GUI) in de SERDESIF_ registreert. Als het SERDESIF-blok is geconfigureerd als PCIe, is dit file heeft ook enkele #define-instructies die de uitvoering van de twee registerconfiguratiefasen in perfecte volgorde regelen.
- gebruiker.bfm – Bevat de gebruikersopdrachten. Deze opdrachten worden uitgevoerd nadat periferie_init.bfm is voltooid. Bewerk dit file om uw BFM-opdrachten in te voeren.
- SERDESIF_ _user.bfm – Bevat de gebruikersopdrachten. Bewerk dit file om uw BFM-opdrachten in te voeren. Gebruik dit als u SERDESIF_ heeft geconfigureerd blok in BFM PCIe-simulatiemodus en als AXI/AHBLite-master. Als u SERDESIF_ heeft geconfigureerd blok in RTL-simulatiemodus heeft u dit niet nodig file.
Wanneer u elke keer een simulatie aanroept, worden de volgende twee simulaties uitgevoerd files worden opnieuw gemaakt naar de /simulatie map met bijgewerkte inhoud:
- subsysteem.bfm – Bevat de #define-instructies voor elk randapparaat dat in uw ontwerp wordt gebruikt, die specificeren welke specifieke sectie van het randapparaat_init.bfm moet worden uitgevoerd en die overeenkomt met elk randapparaat.
- operapheral_init.bfm – Bevat de BFM-procedure die de CMSIS:: SystemInit()-functie emuleert die wordt uitgevoerd op de Cortex-M3 voordat u de main()-procedure opent. Het kopieert de configuratiegegevens voor elk randapparaat dat in het ontwerp wordt gebruikt naar de juiste randapparatuurconfiguratieregisters en wacht vervolgens tot alle randapparatuur gereed is voordat wordt beweerd dat u deze randapparatuur kunt gebruiken. Het voert MDDR_init.bfm en FDDR_init.bfm uit.
Met behulp van deze gegenereerd files worden de DDR-controllers in uw ontwerp automatisch geconfigureerd, waardoor wordt gesimuleerd wat er op een SmartFusion2-apparaat zou gebeuren. U kunt de user.bfm bewerken file om alle opdrachten toe te voegen die nodig zijn om uw ontwerp te simuleren (Cortex-M3 is de master). Deze opdrachten worden uitgevoerd nadat de randapparatuur is geïnitialiseerd. Bewerk test.bfm, subsystem.bfm, edge_init.bfm, MDDR_init.bfm, FDDR_init.bfm niet files en de SERDESIF_ _init.bfm files.
Productondersteuning
Microsemi SoC Products Group ondersteunt haar producten met verschillende ondersteunende diensten, waaronder Customer Service, Customer Technical Support Center, een website, e-mail en wereldwijde verkoopkantoren.
Deze bijlage bevat informatie over contact opnemen met Microsemi SoC Products Group en het gebruik van deze ondersteuningsdiensten.
Klantenservice
Neem contact op met de klantenservice voor niet-technische productondersteuning, zoals productprijzen, productupgrades, update-informatie, bestelstatus en autorisatie.
Bel vanuit Noord-Amerika: 800.262.1060
Bel vanuit de rest van de wereld 650.318.4460
Faxen, overal ter wereld, 408.643.6913
Klantencentrum voor technische ondersteuning
Microsemi SoC Products Group heeft zijn Customer Technical Support Center bemand met hoogopgeleide technici die u kunnen helpen bij het beantwoorden van uw hardware-, software- en ontwerpvragen over Microsemi SoC Products. Het Customer Technical Support Center besteedt veel tijd aan het maken van toepassingsnotities, antwoorden op algemene ontwerpcyclusvragen, documentatie van bekende problemen en diverse veelgestelde vragen. Bezoek daarom onze online bronnen voordat u contact met ons opneemt. Het is zeer waarschijnlijk dat we uw vragen al hebben beantwoord.
Technische ondersteuning
Bezoek de klantenservice website (www.microsemi.com/soc/support/search/default.aspx) voor meer informatie en ondersteuning. Veel antwoorden beschikbaar op de doorzoekbare web bron omvatten diagrammen, illustraties en koppelingen naar andere bronnen op de webplaats.
Webplaats
U kunt door een verscheidenheid aan technische en niet-technische informatie bladeren op de SoC-startpagina op www.microsemi.com/soc.
Contact opnemen met het Customer Technical Support Center
Hoogopgeleide ingenieurs bemannen het Technical Support Center. U kunt contact opnemen met het Technical Support Center via e-mail of via de Microsemi SoC Products Group webplaats.
E-mail
U kunt uw technische vragen naar ons e-mailadres sturen en antwoorden per e-mail, fax of telefoon ontvangen. Ook als u ontwerpproblemen heeft, kunt u uw ontwerp e-mailen files om hulp te krijgen.
We houden het e-mailaccount de hele dag constant in de gaten. Zorg ervoor dat u bij het verzenden van uw verzoek uw volledige naam, bedrijfsnaam en uw contactgegevens vermeldt voor een efficiënte verwerking van uw verzoek.
Het e-mailadres voor technische ondersteuning is soc_tech@microsemi.com.
Mijn zaken
Klanten van de Microsemi SoC Products Group kunnen online technische cases indienen en volgen door naar te gaan Mijn zaken.
Buiten de VS
Klanten die hulp nodig hebben buiten de Amerikaanse tijdzones kunnen contact opnemen met de technische ondersteuning via e-mail (soc_tech@microsemi.com) of neem contact op met een plaatselijk verkoopkantoor. Advertenties van verkoopkantoren zijn te vinden op www.microsemi.com/soc/company/contact/default.aspx.
ITAR technische ondersteuning
Neem voor technische ondersteuning voor RH- en RT-FPGA's die worden gereguleerd door International Traffic in Arms Regulations (ITAR) contact met ons op via soc_tech_itar@microsemi.com. U kunt ook binnen Mijn cases Ja selecteren in de vervolgkeuzelijst ITAR. Bezoek de ITAR voor een volledige lijst van door ITAR gereguleerde Microsemi FPGA's web pagina.
Microsemi Corporation (NASDAQ: MSCC) biedt een uitgebreid portfolio halfgeleideroplossingen voor: ruimtevaart, defensie en veiligheid; onderneming en communicatie; en industriële en alternatieve energiemarkten. Producten omvatten hoogwaardige, zeer betrouwbare analoge en RF-apparaten, gemengde signaal- en RF-geïntegreerde schakelingen, aanpasbare SoC's, FPGA's en complete subsystemen. Microsemi heeft zijn hoofdkantoor in Aliso Viejo, Californië. Ga voor meer informatie naar www.microsemi.com.
© 2014 Microsemi Corporation. Alle rechten voorbehouden. Microsemi en het Microsemi-logo zijn handelsmerken van Microsemi Corporation. Alle andere handelsmerken en dienstmerken zijn het eigendom van hun respectieve eigenaars.
5-02-00384-1/08.14Microsemi-hoofdkantoor
Eén onderneming, Aliso Viejo CA 92656 VS
Binnen de VS: +1 949-380-6100
Verkoop: +1 949-380-6136
Faxen: +1 949-215-4996
Documenten / Bronnen
![]() |
Microsemi SmartFusion2 DDR-controller en seriële hogesnelheidscontroller [pdf] Gebruikershandleiding SmartFusion2 DDR-controller en seriële hogesnelheidscontroller, SmartFusion2 DDR, controller en seriële hogesnelheidscontroller, hogesnelheidscontroller |