Microsemi logotypSmartFusion2
DDR-kontroller och seriell höghastighetskontroll
Initialiseringsmetodik
Användarhandbok

Introduktion

När du skapar en design med en SmartFusion2-enhet, om du använder en av de två DDR-kontrollerna (FDDR eller MDDR) eller något av SERDESIF-blocken (Serial High Speed ​​Controller), måste du initiera konfigurationsregistren för dessa block vid körning innan de kan användas. Till exempelample, för DDR-kontrollern måste du ställa in DDR-läge (DDR3/DDR2/LPDDR), PHY-bredd, burst-läge och ECC.
På liknande sätt, för SERDESIF-blocket som används som en PCIe-ändpunkt, måste du ställa in PCIE BAR på fönstret AXI (eller AHB).
Det här dokumentet beskriver de steg som krävs för att skapa en Libero-design som automatiskt initierar DDR-kontrollern och SERDESIF-blocken vid start. Den beskriver också hur man genererar firmwarekoden från Libero SOC som används i det inbäddade designflödet.
En detaljerad beskrivning av operationsteorin ges först.
Nästa avsnitt beskriver hur man skapar en sådan design med Libero SoC System Builder, ett kraftfullt designverktyg som bland andra funktioner skapar "initieringslösningen" för dig om du använder DDR- eller SERDESIF-block i din design.
Nästa avsnitt beskriver hur man sätter ihop en komplett "initieringslösning" utan att använda SmartFusion2 System Builder. Detta hjälper till att förklara vad som behöver göras om du inte vill använda System Builder, och beskriver också vad System Builder-verktyget faktiskt genererar åt dig. Det här avsnittet tar upp:

  • Skapandet av konfigurationsdata för DDR-kontroller och SERDESIF-konfigurationsregister
  • Skapandet av den FPGA-logik som krävs för att överföra konfigurationsdata till de olika ASIC-konfigurationsregistren

Slutligen beskriver vi det genererade fileär relaterade till:

  • Skapandet av firmware 'initiering' lösning.
  • Simuleringen av designen för DDR-lösningen "initiering".

För detaljer om DDR-kontrollern och SERDESIF-konfigurationsregister, se Microsemi SmartFusion2 High Speed ​​seriella och DDR-gränssnitt Användarhandbok.

Operationsteori

Den perifera initieringslösningen använder följande huvudkomponenter:

  • CMSIS SystemInit()-funktionen, som körs på Cortex-M3 och orkestrerar initieringsprocessen.
  • CoreConfigP mjuka IP-kärna, som initierar kringutrustningens konfigurationsregister.
  • CoreResetP mjuka IP-kärna, som hanterar återställningssekvensen för MSS, DDR-kontroller och SERDESIF-block.

Den perifera initieringsprocessen fungerar enligt följande:

  1. Vid återställning kör Cortex-M3 funktionen CMSIS SystemInit(). Den här funktionen körs automatiskt innan programmets main()-funktion exekveras.
    CoreResetP-utgångssignalen MSS_HPMS_READY bekräftas i början av initieringsprocessen, vilket indikerar att MSS och all kringutrustning (förutom MDDR) är redo för kommunikation.
  2. Funktionen SystemInit() skriver konfigurationsdata till DDR-kontrollerna och SERDESIF-konfigurationsregister via MSS FIC_2 APB3-bussen. Detta gränssnitt är anslutet till den mjuka CoreConfigP-kärnan som instansierats i FPGA-tyget.
  3. Efter att alla register har konfigurerats, skriver SystemInit()-funktionen till CoreConfigP-kontrollregistren för att indikera slutförandet av registerkonfigurationsfasen; CoreConfigP-utgångssignalerna CONFIG1_DONE och CONIG2_DONE bekräftas sedan.
    Det finns två faser av registerkonfiguration (CONFIG1 och CONFIG2) beroende på kringutrustningen som används i konstruktionen.
  4. Om en eller båda MDDR/FDDR används, och inget av SERDESIF-blocken används i designen, finns det bara en registerkonfigurationsfas. Båda CoreConfigP-utgångssignalerna CONFIG1_DONE och CONIG2_DONE bekräftas efter varandra utan någon väntan/fördröjning.
    Om ett eller flera SERDESIF-block i icke-PCIe-läge används i designen, finns det bara en fas av registerkonfigurationen. CONFIG1_DONE och CONIG2_DONE hävdas efter varandra utan någon väntan/fördröjning.
    Om ett eller flera SERDESIF-block i PCIe-läge används i designen, finns det två faser av registerkonfiguration. CONFIG1_DONE bekräftas efter att den första fasen av registerkonfigurationen är klar. SERDESIF system och filregister konfigureras i denna fas. Om SERDESIF är konfigurerat i ett icke-PCIE-läge, bekräftas också CONFIG2_DONE-signalen omedelbart.
  5. Den andra fasen av registerkonfigurationen följer sedan (om SERDESIF är konfigurerat i PCIE-läge). Följande är de olika händelserna som inträffar i den andra fasen:
    – CoreResetP tar bort PHY_RESET_N- och CORE_RESET_N-signaler som motsvarar vart och ett av de SERDESIF-block som används. Den bekräftar också en utsignal SDIF_RELEASED efter att alla SERDESIF-block är ur återställning. Denna SDIF_RELEASED-signal används för att indikera för CoreConfigP att SERDESIF-kärnan är ur återställning och är redo för den andra fasen av registerkonfigurationen.
    – När SDIF_RELEASED-signalen har bekräftats, börjar SystemInit()-funktionen polla efter påståendet om PMA_READY på lämplig SERDESIF-fil. När PMA_READY har bekräftats, konfigureras/skrivs den andra uppsättningen SERDESIF-register (PCIE-register) av SystemInit()-funktionen.
  6. Efter att alla PCIE-register har konfigurerats, skriver funktionen SystemInit() till CoreConfigP-kontrollregistren för att indikera slutförandet av den andra fasen av registerkonfigurationen; CoreConfigP-utgångssignalen CONIG2_DONE bekräftas sedan.
  7. Bortsett från ovanstående signalpåståenden/de-assertions, hanterar CoreResetP också initieringen av de olika blocken genom att utföra följande funktioner:
    – Återställer FDDR-kärnåterställningen
    – Återställning av SERDESIF-blocken PHY och CORE återställs
    – Övervakning av FDDR PLL (FPLL) låssignal. FPLL måste ha låst för att garantera att FDDR AXI/AHBLite-datagränssnittet och FPGA-strukturen kan kommunicera korrekt.
    – Övervakning av SERDESIF block PLL (SPLL) låssignaler. SPLL måste ha låst för att garantera att SERDESIF blockerar AXI/AHBLite-gränssnittet (PCIe-läge) eller XAUI-gränssnittet kan kommunicera korrekt med FPGA-strukturen.
    – Väntar på att de externa DDR-minnena ska lägga sig och vara redo att nås av DDR-kontrollerna.
  8. När all kringutrustning har slutfört sin initialisering, bekräftar CoreResetP signalen INIT_DONE; det interna CoreConfigP-registret INIT_DONE bekräftas sedan.
    Om en eller båda av MDDR/FDDR används och DDR-initieringstiden har uppnåtts, bekräftas CoreResetP-utgångssignalen DDR_READY. Bekräftelsen av denna signal DDR_READY kan övervakas som en indikation på att DDR (MDDR/FDDR) är redo för kommunikation.
    Om ett eller flera SERDESIF-block används och den andra fasen av registerkonfigurationen har slutförts framgångsrikt, bekräftas CoreResetP-utgångssignalen SDIF_READY. Bekräftelsen av denna signal SDIF_READY kan övervakas som en indikation på att alla SERDESIF-block är redo för kommunikation.
  9. SystemInit()-funktionen, som har väntat på att INIT_DONE ska hävdas, slutförs och applikationens main()-funktion exekveras. Vid den tidpunkten har alla använda DDR-kontroller och SERDESIF-block initierats, och firmwareapplikationen och FPGA-strukturlogiken kan på ett tillförlitligt sätt kommunicera med dem.

Metoden som beskrivs i det här dokumentet bygger på att Cortex-M3 exekverar initieringsprocessen som en del av systeminitieringskoden som exekveras före applikationens main()-funktion.
Se flödesschemana i figur 1-1, figur 1-2 och figur 1-3 för initieringsstegen för FDDR/MDDR, SEREDES (icke-PCIe-läge) och SERDES (PCIe-läge).
Figur 1-4 visar ett timingdiagram för perifer initiering.

Microsemi SmartFusion2 DDR-kontroller och seriell höghastighetskontroll - tidsdiagram 1 Microsemi SmartFusion2 DDR-kontroller och seriell höghastighetskontroll - tidsdiagram 2

Microsemi SmartFusion2 DDR-kontroller och seriell höghastighetskontroll - tidsdiagram 3Microsemi SmartFusion2 DDR-kontroller och seriell höghastighetskontroll - tidsdiagram 4Figur 1-3 • SERDESIF (PCIe) initieringsflödesschema
Initieringsproceduren som beskrivs i detta dokument kräver att du kör Cortex-M3 under initieringsprocessen, även om du inte planerar att köra någon kod på Cortex-M3. Du måste skapa en grundläggande firmware-applikation som inte gör något (en enkel loop, till exempelample) och ladda den körbara filen i det inbäddade icke-flyktiga minnet (eNVM) så att DDR-kontrollerna och SERDESIF-blocken initieras när Cortex-M3 startar.

Använda System Builder för att skapa en design med DDR- och SERDESIF-block

SmartFusion2 System Builder är ett kraftfullt designverktyg som hjälper dig att fånga dina krav på systemnivå och producerar en design som implementerar dessa krav. En mycket viktig funktion hos System Builder är den automatiska skapandet av undersystemet Perifer Initialization. "Använda SmartDesign för att skapa en design med DDR- och SERDESIF-block" på sidan 17 beskriver i detalj hur man skapar en sådan lösning utan System Builder.
Om du använder System Builder måste du utföra följande uppgifter för att skapa en design som initierar dina DDR-kontroller och SERDESIF-block vid start:

  1. På sidan Enhetsfunktioner (Figur 2-1), specificera vilka DDR-kontroller som används och hur många SERDESIF-block som används i din design.
  2. På minnessidan anger du typen av DDR (DDR2/DDR3/LPDDR) och konfigurationsdata för dina externa DDR-minnen. Se avsnittet Minnessida för detaljer.
  3. På sidan kringutrustning, lägg till textilmaster konfigurerade som AHBLite/AXI till Fabric DDR Subsystem och/eller MSS DDR FIC Subsystem (valfritt).
  4. På sidan Klockinställningar anger du klockfrekvenserna för DDR-undersystemen.
  5. Fyll i din designspecifikation och klicka på Slutför. Detta genererar designen som skapats av System Builder, inklusive den logik som krävs för "initieringslösningen".
  6. Om du använder SERDESIF-block måste du instansiera SERDESIF-blocken i din design och ansluta deras initialiseringsportar till dem i den System Builder-genererade kärnan.

Sidan System Builder Device Features
På sidan Enhetsfunktioner anger du vilka DDR-kontroller (MDDR och/eller FDDR) som används och hur många SERDESIF-block som används i din design (Figur 2-1).

Microsemi SmartFusion2 DDR-kontroller och seriell höghastighetskontroll - sida med enhetsfunktionerBild 2-1 • Sidan System Builder Device Features

Minnessida för systembyggaren
För att använda MSS DDR (MDDR) eller Fabric DDR (FDDR), välj Minnestyp från rullgardinsmenyn (Figur 2-2).

Microsemi SmartFusion2 DDR-kontroller och seriell höghastighetskontroll - Externt minneBild 2-2 • MSS Externt minne

Du måste:

  1. Välj DDR-typ (DDR2, DDR3 eller LPDDR).
  2. Definiera DDR-minnets inställningstid. Konsultera dina externa DDR-minnesspecifikationer för att ställa in rätt minnesinställningstid. DDR-minnet kan misslyckas med att initieras korrekt om minnets inställningstid inte är korrekt inställd.
  3. Importera antingen DDR-registrets konfigurationsdata eller ställ in dina DDR-minnesparametrar. För detaljer, se Microsemi SmartFusion2 High Speed ​​seriella och DDR-gränssnitt Användarhandbok.

Dessa data används för att generera DDR-registret BFM och firmware-konfiguration files enligt beskrivningen i "Skapa och kompilera den fasta programvaran" på sidan 26 och "BFM Files Används för att simulera designen” på sidan 27. För information om DDR-kontrollerns konfigurationsregister, se Microsemi SmartFusion2 High Speed ​​seriella och DDR-gränssnitt Användarhandbok.
Ett example av konfigurationen file syntax visas i figur 2-3. Registernamnen som används i detta file är desamma som de som beskrivs i Microsemi SmartFusion2 High Speed ​​seriella och DDR-gränssnitt Användarhandbok

Microsemi SmartFusion2 DDR-kontroller och seriell höghastighetskontroll - File Syntax ExampleBild 2-3 • Konfiguration File Syntax Example
Sida för kringutrustning för System Builder
På sidan kring kringutrustning skapas ett separat undersystem för varje DDR-styrenhet (Fabric DDR Subsystem for FDDR och MSS DDR FIC Subsystem for MDDR). Du kan lägga till en Fabric AMBA Master (konfigurerad som AXI/AHBLite) kärna till vart och ett av dessa undersystem för att möjliggöra fabric master access till DDR-kontrollerna. Vid generering instansierar System Builder automatiskt busskärnor (beroende på vilken typ av AMBA Master som lagts till) och exponerar huvud-BIF för busskärnan och klock- och återställningsstiften för motsvarande delsystem (FDDR/MDDR) under lämpliga stiftgrupper för topp. Allt du behöver göra är att ansluta BIF:erna till lämpliga Fabric Master-kärnor som du skulle instansiera i designen. När det gäller MDDR är det valfritt att lägga till en Fabric AMBA Master core till MSS DDR FIC Subsystem; Cortex-M3 är en standardmaster på detta delsystem. Bild 2-4 visar sidan för System Builder kringutrustning.

Microsemi SmartFusion2 DDR-kontroller och seriell höghastighetskontroll - Builder kringutrustning SidaBild 2-4 • System Builder kringutrustning

System Builder Klockinställningar sida
På sidan Klockinställningar, för varje DDR-kontroller, måste du ange klockfrekvenserna relaterade till varje DDR (MDDR och/eller FDDR) undersystem.
För MDDR måste du ange:

  • MDDR_CLK – Denna klocka bestämmer driftfrekvensen för DDR-styrenheten och bör matcha den klockfrekvens du vill att ditt externa DDR-minne ska köras på. Denna klocka definieras som en multipel av M3_CLK (Cortex-M3 och MSS Main Clock, figur 2-5). MDDR_CLK måste vara mindre än 333 MHz.
  • DDR_FIC_CLK – Om du har valt att även komma åt MDDR från FPGA-tyget, måste du ange DDR_FIC_CLK. Denna klockfrekvens definieras som förhållandet mellan MDDR_CLK och bör matcha frekvensen vid vilken FPGA-tygsubsystemet som accessar MDDR körs.

Microsemi SmartFusion2 DDR-kontroller och seriell höghastighetskontroll - MDDR-klockorFigur 2-5 • Cortex-M3 och MSS huvudklocka; MDDR klockor

För FDDR måste du ange:

  • FDDR_CLK – Bestämmer driftfrekvensen för DDR-styrenheten och bör matcha den klockfrekvens som du vill att ditt externa DDR-minne ska köras med. Observera att denna klocka definieras som en multipel av M3_CLK (MSS- och Cortex-M3-klockan, figur 2-5). FDDR_CLK måste vara inom 20 MHz och 333 MHz.
  • FDDR_SUBSYSTEM_CLK – Denna klockfrekvens definieras som ett förhållande mellan FDDR_CLK och bör matcha frekvensen med vilken FPGA-strukturundersystemet som har åtkomst till FDDR körs.

Microsemi SmartFusion2 DDR-kontroller och seriell höghastighetskontroll - DDR-klockor i tygBild 2-6 • Tyg DDR-klockor
SERDESIF-konfiguration
SERDESIF-blocken instansieras inte i den systembyggargenererade designen. Men för alla SERDESIF-block är initialiseringssignaler tillgängliga i gränssnittet för System Builder-kärnan och kan anslutas till SERDESIF-kärnorna på nästa nivå av hierarki, som visas i figur 2-7.Microsemi SmartFusion2 DDR-kontroller och seriell höghastighetskontroll - Perifer initieringsanslutningBild 2-7 • SERDESIF Perifer Initialization Connectivity
I likhet med DDR-konfigurationsregistren har varje SERDES-block också konfigurationsregister som måste laddas vid körning. Du kan antingen importera dessa registervärden eller använda High Speed ​​Serial Interface Configurator (Figur 2-8) för att ange dina PCIe- eller EPCS-parametrar och registervärdena beräknas automatiskt åt dig. För detaljer, se SERDES Configurator Användarhandbok.Microsemi SmartFusion2 DDR-kontroller och seriell höghastighetskontroll - seriell gränssnittskonfiguratorBild 2-8 • High Speed ​​Seriell Interface Configurator
När du har integrerat din användarlogik med System Builder-blocket och SERDES-blocket, kan du skapa din toppnivå SmartDesign. Detta genererar all HDL och BFM files som är nödvändiga för att implementera och simulera din design. Du kan sedan fortsätta med resten av designflödet.

Använda SmartDesign för att skapa en design med DDR- och SERDESIF-block

Det här avsnittet beskriver hur man sätter ihop en komplett "initieringslösning" utan att använda SmartFusion2 System Builder. Målet är att hjälpa dig förstå vad du måste göra om du inte vill använda Systembyggaren. Det här avsnittet beskriver också vad System Builder-verktyget faktiskt genererar åt dig. Det här avsnittet beskriver hur du:

  • Mata in konfigurationsdata för DDR-styrenhet och SERDESIF-konfigurationsregister.
  • Instantera och anslut de tygkärnor som krävs för att överföra konfigurationsdata till DDR-kontrollerna och SERDESIF-konfigurationsregistren.

Konfiguration av DDR-kontroller
Styrenheterna MSS DDR (MDDR) och Fabric DDR (FDDR) måste konfigureras dynamiskt (vid körning) för att matcha de externa DDR-minneskonfigurationskraven (DDR-läge, PHY-bredd, burst-läge, ECC, etc.). Data som matas in i MDDR/FDDR-konfiguratorn skrivs till DDR-styrenhetens konfigurationsregister av funktionen CMSIS SystemInit(). Konfiguratorn har tre olika flikar för inmatning av olika typer av konfigurationsdata:

  • Allmänna data (DDR-läge, Databredd, Klockfrekvens, ECC, Fabric Interface, Drive Strength)
  • Minnesinitieringsdata (Burst Length, Burst Order, Timing Mode, Latens, etc.)
  • Minnestidsdata

Se specifikationerna för ditt externa DDR-minne och konfigurera DDR-styrenheten för att matcha kraven för ditt externa DDR-minne.
För detaljer om DDR-konfiguration, se SmartFusion2 MSS DDR Configuration User Guide.
SERDESIF-konfiguration
Dubbelklicka på SERDES-blocket i SmartDesign-duken för att öppna konfiguratorn för att konfigurera SERDES (Figur 3-1). Du kan antingen importera dessa registervärden eller använda SERDES-konfiguratorn för att ange dina PCIe- eller EPCS-parametrar och registervärdena beräknas automatiskt åt dig. För detaljer, se SERDES Configurator Användarhandbok.Microsemi SmartFusion2 DDR-kontroller och seriell höghastighetskontroll - höghastighetsseriellt gränssnittskonfiguratorBild 3-1 • High Speed ​​Seriell Interface Configurator
Skapa FPGA Design Initialization Sub-System
För att initiera DDR- och SERDESIF-blocken måste du skapa initieringsundersystemet i FPGA-strukturen. FPGA-tyginitieringsundersystemet flyttar data från Cortex-M3 till DDR- och SERDESIF-konfigurationsregistren, hanterar de återställningssekvenser som krävs för att dessa block ska fungera och signalerar när dessa block är redo att kommunicera med resten av din design. För att skapa initieringsundersystemet måste du:

  • Konfigurera FIC_2 inuti MSS
  • Instantiera och konfigurera CoreConfigP- och CoreResetP-kärnorna
  • Instantiera on-chip 25/50MHz RC-oscillatorn
  • Instantiera makrot System Reset (SYSRESET).
  • Anslut dessa komponenter till varje kringutrustnings konfigurationsgränssnitt, klockor, återställningar och PLL-låsportar

MSS FIC_2 APB-konfiguration
Så här konfigurerar du MSS FIC_2:

  1. Öppna dialogrutan FIC_2-konfigurator från MSS-konfiguratorn (Figur 3-2).
  2. Välj Initiera kringutrustning med Cortex-M3.
  3. Beroende på ditt system, markera en eller båda av följande kryssrutor:
    – MSS DDR
    – Tyg DDR- och/eller SERDES-block
  4. Klicka på OK och fortsätt för att generera MSS (du kan skjuta upp denna åtgärd tills du har konfigurerat MSS till dina designkrav). FIC_2-portarna (FIC_2_APB_MASTER, FIC_2_APB_M_PCLK och FIC_2_APB_M_RESET_N) är nu exponerade vid MSS-gränssnittet och kan anslutas till CoreConfigP- och CoreResetP-kärnorna.

Microsemi SmartFusion2 DDR-kontroller och seriell höghastighetskontroll - MSS FIC 2-konfiguratorBild 3-2 • MSS FIC_2 Configurator

CoreConfigP
Så här konfigurerar du CoreConfigP:

  1. Instantiera CoreConfigP i din SmartDesign (vanligtvis den där MSS instansieras).
    Denna kärna finns i Libero-katalogen (under Perifer).
  2. Dubbelklicka på kärnan för att öppna konfiguratorn.
  3. Konfigurera kärnan för att specificera vilken kringutrustning som behöver initieras (Figur 3-3)

Microsemi SmartFusion2 DDR-kontroller och seriell höghastighetskontroll - dialogrutaBild 3-3 • CoreConfigP Dialogrutan

CoreResetP
Så här konfigurerar du CoreResetP:

  1. Instantiera CoreResetP i din SmartDesign (vanligtvis den där MSS instansieras).
    Denna kärna finns i Libero-katalogen, under Periferiutrustning.
  2. Dubbelklicka på kärnan inuti SmartDesign Canvas för att öppna konfiguratorn (Figur 3-4).
  3. Konfigurera kärnan till:
    – Ange det externa återställningsbeteendet (EXT_RESET_OUT hävdat). Välj ett av fyra alternativ:
    o EXT_RESET_OUT hävdas aldrig
    o EXT_RESET_OUT hävdas om startåterställning (POWER_ON_RESET_N) hävdas
    o EXT_RESET_OUT hävdas om FAB_RESET_N hävdas
    o EXT_RESET_OUT hävdas om startåterställning (POWER_ON_RESET_N) eller FAB_RESET_N hävdas
    – Ange enhetsvoltage. Det valda värdet bör matcha voltage du valde i dialogrutan Libero Project Settings.
    – Markera lämpliga kryssrutor för att ange vilken kringutrustning du använder i din design.
    – Ange inställningstiden för det externa DDR-minnet. Detta är det maximala värdet för alla DDR-minnen som används i din applikation (MDDR och FDDR). Se det externa DDR-minnesleverantörens datablad för att konfigurera denna parameter. 200us är ett bra standardvärde för DDR2- och DDR3-minnen som körs på 200MHz. Detta är en mycket viktig parameter för att garantera en fungerande simulering och ett fungerande system på kisel. Ett felaktigt värde för inställningstiden kan resultera i simuleringsfel. Se DDR-minnesleverantörens datablad för att konfigurera denna parameter.
    – För varje SERDES-block i din design, markera lämpliga rutor för att ange om:
    o PCIe används
    o Stöd för PCIe Hot Reset krävs
    o Stöd för PCIe L2/P2 krävs

Notera: Om du använder 090-matrisen (M2S090) och din design använder SERDESIF, behöver du inte markera någon av följande kryssrutor: 'Används för PCIe', 'Inkludera PCIe HotReset-stöd' och 'Inkludera PCIe L2/P2-stöd'. Om du använder någon annan enhet än 090 och använder ett eller flera SERDESIF-block, måste du markera alla fyra kryssrutor under lämplig SERDESIF-sektion.
Notera: För detaljer om de alternativ som är tillgängliga för dig i den här konfiguratorn, se CoreResetP Handbook.

Microsemi SmartFusion2 DDR-kontroller och seriell höghastighetskontroll - CoreResetPConfiguratorBild 3-4 • CoreResetPConfigurator

25/50MHz Oscillator Instantiation
CoreConfigP och CoreResetP klockas av den on-chip 25/50MHz RC-oscillatorn. Du måste instansiera en 25/50MHz Oscillator och ansluta den till dessa kärnor.

  1. Instantiera Chip Oscillators kärna i din SmartDesign (vanligtvis den där MSS instansieras). Denna kärna finns i Libero-katalogen under Klocka & Management.
  2. Konfigurera denna kärna så att RC-oscillatorn driver FPGA-tyget, som visas i figur 3-5.

Microsemi SmartFusion2 DDR-kontroller och seriell höghastighetskontroll - OscillatorkonfiguratorBild 3-5 • Chip Oscillator Configurator

Systemåterställning (SYSRESET) Instantiering
SYSRESET-makrot ger funktionalitet för återställning av enhetsnivå till din design. POWER_ON_RESET_N-utgångssignalen bekräftas/avaktiveras närhelst chipet slås på eller det externa stiftet DEVRST_N bekräftas/avhävs (Figur 3-6).
Instantiera SYSRESET-makrot i din SmartDesign (vanligtvis det där MSS instansieras). Detta makro kan hittas i Libero-katalogen under Makrobibliotek. Ingen konfiguration av detta makro är nödvändig.

Microsemi SmartFusion2 DDR-kontroller och seriell höghastighetskontroll - SYSRESET-makroBild 3-6 • SYSRESET Macro

Övergripande anslutning
Efter att du har instansierat och konfigurerat MSS-, FDDR-, SERDESIF-, OSC-, SYSRESET-, CoreConfigP- och CoreResetP-kärnorna i din design, måste du ansluta dem för att bilda undersystemet Peripheral Initialization. För att förenkla anslutningsbeskrivningen i det här dokumentet är den uppdelad i den APB3-kompatibla konfigurationsdataväganslutningen som är associerad med CoreConfigP och CoreResetP-relaterade anslutningar.
Anslutning till konfigurationsdatasökväg
Figur 3-7 visar hur du ansluter CoreConfigP till MSS FIC_2-signalerna och kringutrustningens APB3-kompatibla konfigurationsgränssnitt.
Tabell 3-1 • Konfiguration Data Path Port/BIF-anslutningar

FRÅN
Port/buss-gränssnitt
(BIF)/ Komponent
TILL
Port/bussgränssnitt (BIF)/komponent
APB S PRESET N/ CoreConfigP APB S PRESET 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 SLAV (BIF)/MSS
SDIF<0/1/2/ 3> APBmslave/Config APB SLAV (BIF)/ SDIF<0/1/2/3>
FDDR APBmslav APB SLAV (BIF)/ FDDR
FIC 2 APBmmaster/ CoreConfigP FIC 2 APB MASTER/ MSS

Microsemi SmartFusion2 DDR-kontroller och seriell höghastighetskontroll - Sub-System ConnectivityBild 3-7 • FIC_2 APB3 Sub-System Connectivity

Klockor och återställer anslutning
Figur 3-8 visar hur du ansluter CoreResetP till de externa återställningskällorna och kringutrustningens kärnåterställningssignaler. Den visar också hur du ansluter CoreResetP till kringutrustningens statussignaler för klocksynkronisering (PLL-låssignaler). Dessutom visar den hur CoreConfigP och CoreResetP är anslutna.

Microsemi SmartFusion2 DDR-kontroller och seriell höghastighetskontroll - Sub-System Connectivity 2Bild 3-8 • Core SF2Reset Sub-System Connectivity

Skapa och kompilera firmware-applikationen

När du exporterar firmware från LiberoSoC (Design Flow Window > Export Firmware > Export Firmware) genererar Libero följande files i /firmware/drivers_config/ sys_config-mappen:

  • sys_config.c – Innehåller de datastrukturer som håller värdena för de perifera registren.
  • sys_config.h – Innehåller #define-satserna som anger vilken kringutrustning som används i designen och som behöver initieras.
  • sys_config_mddr_define.h – Innehåller MDDR-styrenhetens konfigurationsdata som anges i dialogrutan Register Configuration.
  • sys_config_fddr_define.h – Innehåller FDDR-styrenhetens konfigurationsdata som anges i dialogrutan Registerkonfiguration.
  • sys_config_mss_clocks.h – Det här file innehåller MSS-klockfrekvenserna som definieras i MSS CCC-konfiguratorn. Dessa frekvenser används av CMSIS-koden för att tillhandahålla korrekt klockinformation till många av MSS-drivrutinerna som måste ha tillgång till deras periferiska klocka (PCLK) frekvens (t.ex. MSS UART baud rate divisors är en funktion av baud rate och PCLK frekvens ).
  • sys_config_SERDESIF_ .c – Innehåller SERDESIF_ registrera konfigurationsdata som tillhandahålls under SERDESIF_ blockkonfiguration vid designskapande.
  • sys_config_SERDESIF_ .h – Innehåller #define-satserna som anger antalet registerkonfigurationspar och körfältsnumret som behöver pollas för PMA_READY (endast i PCIe-läge).

Dessa files krävs för att CMSIS-koden ska kompileras korrekt och innehålla information om din nuvarande design, inklusive perifer konfigurationsdata och klockkonfigurationsinformation för MSS.
Redigera inte dessa files manuellt; de skapas till motsvarande komponent-/periferikataloger varje gång SmartDesign-komponenterna som innehåller respektive kringutrustning genereras. Om några ändringar görs i konfigurationsdata för någon av kringutrustningen måste du återexportera firmwareprojekten så att den uppdaterade firmware files (se listan ovan) exporteras till / firmware/drivers_config/sys_config-mappen.
När du exporterar firmware skapar Libero SoC firmwareprojekten: ett bibliotek där din designkonfiguration files och drivrutiner kompileras.
Om du markerar Skapa projekt kryssrutan när du exporterar den fasta programvaran skapas ett mjukvaruprojekt SoftConsole/IAR/Keil för att hålla applikationsprojektet där du kan redigera main.c och användarens C/H files. Öppna SoftConSole/IAR/Keil-projektet för att kompilera CMSIS-koden korrekt och få din firmware-applikation korrekt konfigurerad för att matcha din hårdvarudesign.

BFM Files Används för att simulera designen

När du genererar SmartDesign-komponenterna som innehåller kringutrustningen som är associerad med din design, kommer simuleringen files som motsvarar respektive kringutrustning genereras i /simuleringskatalog:

  • test.bfm – BFM på toppnivå file som först exekveras under någon simulering som tränar SmartFusion2 MSS Cortex-M3-processorn. Den kör peripheral_init.bfm och user.bfm, i den ordningen.
  • MDDR_init.bfm – Om din design använder MDDR, genererar Libero detta file; den innehåller BFM-skrivkommandon som simulerar skrivningar av MSS DDR-konfigurationsregisterdata som du angav (med dialogrutan Redigera register eller i MSS_MDDR GUI) till MSS DDR Controller-registren.
  • FDDR_init.bfm – Om din design använder FDDR genererar Libero detta file; den innehåller BFM-skrivkommandon som simulerar skrivningar av Fabric DDR-konfigurationsregisterdata som du angav (med dialogrutan Redigera register eller i FDDR GUI) till Fabric DDR Controller-registren.
  • SERDESIF_ _init.bfm – Om din design använder ett eller flera SERDESIF-block, genererar Libero detta file för var och en av SERDESIF_ block som används; den innehåller BFM-skrivkommandon som simulerar skrivningar av SERDESIF-konfigurationsregisterdata som du angav (med hjälp av dialogrutan Redigera register eller i SERDESIF_ GUI) till SERDESIF_ register. Om SERDESIF-blocket är konfigurerat som PCIe, detta file har också några #define-satser som styr exekveringen av de 2 registerkonfigurationsfaserna i perfekt ordning.
  • user.bfm – Innehåller användarkommandon. Dessa kommandon exekveras efter att peripheral_init.bfm har slutförts. Redigera detta file för att ange dina BFM-kommandon.
  • SERDESIF_ _user.bfm – Innehåller användarkommandon. Redigera detta file för att ange dina BFM-kommandon. Använd detta om du har konfigurerat SERDESIF_ block i BFM PCIe simuleringsläge och som en AXI/AHBLite master. Om du har konfigurerat SERDESIF_ block i RTL-simuleringsläge behöver du inte detta file.

När du anropar simulering varje gång, följande två simulering files återskapas till /simuleringskatalog med uppdaterat innehåll:

  • subsystem.bfm – Innehåller #define-satserna för varje kringutrustning som används i din design, som anger den särskilda sektion av peripheral_init.bfm som ska exekveras motsvarande varje kringutrustning.
  • operipheral_init.bfm – Innehåller BFM-proceduren som emulerar funktionen CMSIS:: SystemInit() som körs på Cortex-M3 innan du går in i main()-proceduren. Den kopierar konfigurationsdata för all kringutrustning som används i konstruktionen till de korrekta konfigurationsregistren för kringutrustning och väntar sedan på att all kringutrustning är klar innan den hävdar att du kan använda dessa kringutrustningar. Den kör MDDR_init.bfm och FDDR_init.bfm.

Använder dessa genererade files, DDR-kontrollerna i din design konfigureras automatiskt och simulerar vad som skulle hända på en SmartFusion2-enhet. Du kan redigera user.bfm file för att lägga till alla kommandon som krävs för att simulera din design (Cortex-M3 är mastern). Dessa kommandon exekveras efter att kringutrustningen har initierats. Redigera inte test.bfm, subsystem.bfm, peripheral_init.bfm, MDDR_init.bfm, FDDR_init.bfm files och SERDESIF_ _init.bfm files.

Produktsupport

Microsemi SoC Products Group stödjer sina produkter med olika supporttjänster, inklusive kundtjänst, tekniskt kundsupportcenter, ett webwebbplats, e-post och försäljningskontor över hela världen.
Den här bilagan innehåller information om hur du kontaktar Microsemi SoC Products Group och använder dessa supporttjänster.
Kundservice
Kontakta kundtjänst för icke-teknisk produktsupport, såsom produktpriser, produktuppgraderingar, uppdateringsinformation, orderstatus och auktorisering.
Från Nordamerika, ring 800.262.1060
Från resten av världen, ring 650.318.4460
Faxa, från var som helst i världen, 408.643.6913
Kundsupportcenter
Microsemi SoC Products Group bemannar sitt tekniska kundsupportcenter med mycket skickliga ingenjörer som kan hjälpa dig att svara på dina frågor om hårdvara, mjukvara och design om Microsemi SoC-produkter. Customer Technical Support Center lägger ner mycket tid på att skapa programanteckningar, svar på vanliga designcykelfrågor, dokumentation av kända problem och olika vanliga frågor. Så, innan du kontaktar oss, vänligen besök våra onlineresurser. Det är mycket troligt att vi redan har svarat på dina frågor.
Teknisk support
Besök kundsupporten webwebbplats (www.microsemi.com/soc/support/search/default.aspx) för mer information och support. Många svar tillgängliga på den sökbara web resursen inkluderar diagram, illustrationer och länkar till andra resurser på webplats.
Webplats
Du kan bläddra i en mängd olika tekniska och icke-tekniska uppgifter på SoCs hemsida, på www.microsemi.com/soc.
Kontakta Customer Technical Support Center
Högutbildade ingenjörer bemannar tekniskt supportcenter. Det tekniska supportcentret kan kontaktas via e-post eller via Microsemi SoC Products Group webplats.
E-post
Du kan kommunicera dina tekniska frågor till vår e-postadress och få svar via e-post, fax eller telefon. Om du har designproblem kan du också maila din design files att få hjälp.
Vi övervakar ständigt e-postkontot under hela dagen. När du skickar din förfrågan till oss, se till att inkludera ditt fullständiga namn, företagsnamn och din kontaktinformation för effektiv behandling av din förfrågan.
Den tekniska supportens e-postadress är soc_tech@microsemi.com.
Mina fall
Microsemi SoC Products Group-kunder kan skicka in och spåra tekniska fall online genom att gå till Mina fall.
Utanför USA
Kunder som behöver hjälp utanför USA:s tidszoner kan antingen kontakta teknisk support via e-post (soc_tech@microsemi.com) eller kontakta ett lokalt försäljningskontor. Försäljningskontorslistor finns på www.microsemi.com/soc/company/contact/default.aspx.
ITAR teknisk support
För teknisk support på RH och RT FPGA som regleras av International Traffic in Arms Regulations (ITAR), kontakta oss via soc_tech_itar@microsemi.com. Alternativt, i Mina ärenden, välj Ja i rullgardinsmenyn ITAR. För en komplett lista över ITAR-reglerade Microsemi FPGA:er, besök ITAR web sida.
Microsemi Corporation (NASDAQ: MSCC) erbjuder en omfattande portfölj av halvledarlösningar för: flyg, försvar och säkerhet; företag och kommunikation; och industriella och alternativa energimarknader. Produkterna inkluderar högpresterande, högtillförlitliga analoga och RF-enheter, integrerade kretsar för blandade signaler och RF, anpassningsbara SoC:er, FPGA:er och kompletta delsystem. Microsemi har sitt huvudkontor i Aliso Viejo, Kalifornien. Läs mer på www.microsemi.com.
© 2014 Microsemi Corporation. Alla rättigheter förbehållna. Microsemi och Microsemi-logotypen är varumärken som tillhör Microsemi Corporation. Alla andra varumärken och servicemärken tillhör sina respektive ägare.

5-02-00384-1/08.14Microsemi logotypMicrosemis huvudkontor
One Enterprise, Aliso Viejo CA 92656 USA
Inom USA: +1 949-380-6100
Försäljning: +1 949-380-6136
Fax: +1 949-215-4996

Dokument/resurser

Microsemi SmartFusion2 DDR-kontroller och seriell höghastighetskontroll [pdf] Användarhandbok
SmartFusion2 DDR-kontroller och seriell höghastighetskontroll, SmartFusion2 DDR, kontroller och seriell höghastighetskontroll, höghastighetskontroll

Referenser

Lämna en kommentar

Din e-postadress kommer inte att publiceras. Obligatoriska fält är markerade *