Smart Fusion2
Controller DDR e controller seriale ad alta velocità
Metodologia di inizializzazione
Guida per l'utente
Introduzione
Quando si crea un progetto utilizzando un dispositivo SmartFusion2, se si utilizza uno dei due controller DDR (FDDR o MDDR) o uno qualsiasi dei blocchi controller seriale ad alta velocità (SERDESIF), è necessario inizializzare i registri di configurazione di questi blocchi in fase di esecuzione prima possono essere utilizzati. Per esample, per il controller DDR, è necessario impostare la modalità DDR (DDR3/DDR2/LPDDR), la larghezza PHY, la modalità burst e l'ECC.
Allo stesso modo, per il blocco SERDESIF utilizzato come endpoint PCIe, è necessario impostare la BARRA PCIE sulla finestra AXI (o AHB).
Questo documento descrive i passaggi necessari per creare un progetto Libero che inizializzi automaticamente il controller DDR e i blocchi SERDESIF all'accensione. Descrive inoltre come generare il codice firmware da Libero SOC utilizzato nel flusso di progettazione integrato.
Per prima cosa viene fornita una descrizione dettagliata della teoria delle operazioni.
La sezione successiva descrive come creare un progetto di questo tipo utilizzando Libero SoC System Builder, un potente strumento di progettazione che, tra le altre funzionalità, crea per te la soluzione di "inizializzazione" se utilizzi blocchi DDR o SERDESIF nel tuo progetto.
La sezione successiva descrive come mettere insieme una soluzione di "inizializzazione" completa senza utilizzare SmartFusion2 System Builder. Questo aiuta a spiegare cosa è necessario fare se non si desidera utilizzare System Builder e descrive anche cosa lo strumento System Builder effettivamente genera per te. Questa sezione affronta:
- La creazione dei dati di configurazione per il controller DDR e i registri di configurazione SERDESIF
- La creazione della logica FPGA richiesta per trasferire i dati di configurazione ai diversi registri di configurazione ASIC
Infine descriviamo il generato fileè legato a:
- La creazione di una soluzione di "inizializzazione" del firmware.
- La simulazione del progetto per la soluzione di "inizializzazione" DDR.
Per dettagli sul controller DDR e sui registri di configurazione SERDESIF, fare riferimento a Guida per l'utente delle interfacce DDR e seriali ad alta velocità Microsemi SmartFusion2.
Teoria del funzionamento
La soluzione di inizializzazione della periferica utilizza i seguenti componenti principali:
- La funzione CMSIS SystemInit(), che viene eseguita su Cortex-M3 e orchestra il processo di inizializzazione.
- Il core soft IP CoreConfigP, che inizializza i registri di configurazione delle periferiche.
- Il core soft IP CoreResetP, che gestisce la sequenza di reset di MSS, controller DDR e blocchi SERDESIF.
Il processo di inizializzazione della periferica funziona come segue:
- Al momento del ripristino, Cortex-M3 esegue la funzione CMSIS SystemInit(). Questa funzione viene eseguita automaticamente prima dell'esecuzione della funzione main() dell'applicazione.
Il segnale di uscita CoreResetP MSS_HPMS_READY viene affermato all'inizio del processo di inizializzazione, indicando che MSS e tutte le periferiche (eccetto MDDR) sono pronte per la comunicazione. - La funzione SystemInit() scrive i dati di configurazione sui controller DDR e sui registri di configurazione SERDESIF tramite il bus MSS FIC_2 APB3. Questa interfaccia è connessa al core soft CoreConfigP istanziato nella struttura FPGA.
- Dopo che tutti i registri sono stati configurati, la funzione SystemInit() scrive nei registri di controllo CoreConfigP per indicare il completamento della fase di configurazione del registro; vengono quindi asseriti i segnali di uscita CoreConfigP CONFIG1_DONE e CONIG2_DONE.
Esistono due fasi di configurazione del registro (CONFIG1 e CONFIG2) a seconda delle periferiche utilizzate nel progetto. - Se vengono utilizzati uno o entrambi gli MDDR/FDDR e nella progettazione non viene utilizzato nessuno dei blocchi SERDESIF, è presente una sola fase di configurazione del registro. Entrambi i segnali di uscita CoreConfigP CONFIG1_DONE e CONIG2_DONE vengono asseriti uno dopo l'altro senza alcuna attesa/ritardo.
Se nella progettazione vengono utilizzati uno o più blocchi SERDESIF in modalità non PCIe, è prevista una sola fase di configurazione dei registri. CONFIG1_DONE e CONIG2_DONE vengono affermati uno dopo l'altro senza alcuna attesa/ritardo.
Se nella progettazione vengono utilizzati uno o più blocchi SERDESIF in modalità PCIe, sono previste due fasi di configurazione dei registri. CONFIG1_DONE viene affermato al termine della prima fase di configurazione del registro. In questa fase vengono configurati il sistema SERDESIF ed i registri di corsia. Se SERDESIF è configurato in una modalità non PCIE, anche il segnale CONFIG2_DONE viene affermato immediatamente. - Segue poi la seconda fase di configurazione del registro (se SERDESIF è configurato in modalità PCIE). Di seguito sono riportati i diversi eventi che accadono nella seconda fase:
– CoreResetP deasserisce i segnali PHY_RESET_N e CORE_RESET_N corrispondenti a ciascuno dei blocchi SERDESIF utilizzati. Asserisce inoltre un segnale di uscita SDIF_RELEASED dopo che tutti i blocchi SERDESIF sono stati ripristinati. Questo segnale SDIF_RELEASED viene utilizzato per indicare al CoreConfigP che il core SERDESIF non è ripristinato ed è pronto per la seconda fase di configurazione del registro.
– Una volta affermato il segnale SDIF_RELEASED, la funzione SystemInit() inizia il polling per l'asserzione di PMA_READY sulla corsia SERDESIF appropriata. Una volta affermato PMA_READY, il secondo set di registri SERDESIF (registri PCIE) viene configurato/scritto dalla funzione SystemInit(). - Dopo aver configurato tutti i registri PCIE, la funzione SystemInit() scrive nei registri di controllo CoreConfigP per indicare il completamento della seconda fase di configurazione del registro; viene quindi affermato il segnale di uscita CoreConfigP CONIG2_DONE.
- Oltre alle asserzioni/de-asserzioni dei segnali di cui sopra, CoreResetP gestisce anche l'inizializzazione dei vari blocchi eseguendo le seguenti funzioni:
– De-asserzione del ripristino del nucleo FDDR
– La de-asserzione dei blocchi SERDESIF PHY e CORE si ripristina
– Monitoraggio del segnale di blocco FDDR PLL (FPLL). L'FPLL deve essere bloccato per garantire che l'interfaccia dati FDDR AXI/AHBLite e la struttura FPGA possano comunicare correttamente.
– Monitoraggio dei segnali di blocco PLL (SPLL) del blocco SERDESIF. L'SPLL deve essere bloccato per garantire che l'interfaccia AXI/AHBLite dei blocchi SERDESIF (modalità PCIe) o l'interfaccia XAUI possano comunicare correttamente con la struttura FPGA.
– In attesa che le memorie DDR esterne si stabilizzino e siano pronte per l'accesso da parte dei controller DDR. - Quando tutte le periferiche hanno completato la loro inizializzazione, CoreResetP asserisce il segnale INIT_DONE; viene quindi affermato il registro interno CoreConfigP INIT_DONE.
Se vengono utilizzati uno o entrambi MDDR/FDDR e viene raggiunto il tempo di inizializzazione DDR, viene affermato il segnale di uscita CoreResetP DDR_READY. L'affermazione di questo segnale DDR_READY può essere monitorata come indicazione che il DDR (MDDR/FDDR) è pronto per la comunicazione.
Se vengono utilizzati uno o più blocchi SERDESIF e la seconda fase di configurazione del registro viene completata con successo, viene asserito il segnale di uscita CoreResetP SDIF_READY. L'asserzione di questo segnale SDIF_READY può essere monitorata come indicazione che tutti i blocchi SERDESIF sono pronti per la comunicazione. - La funzione SystemInit(), che era in attesa dell'asserzione di INIT_DONE, viene completata e viene eseguita la funzione main() dell'applicazione. A quel punto, tutti i controller DDR e i blocchi SERDESIF utilizzati sono stati inizializzati e l'applicazione firmware e la logica della struttura FPGA possono comunicare in modo affidabile con essi.
La metodologia descritta in questo documento si basa sul Cortex-M3 che esegue il processo di inizializzazione come parte del codice di inizializzazione del sistema eseguito prima della funzione main() dell'applicazione.
Vedere i diagrammi di flusso nella Figura 1-1, Figura 1-2 e Figura 1-3 per le fasi di inizializzazione di FDDR/MDDR, SEREDES (modalità non PCIe) e SERDES (modalità PCIe).
La Figura 1-4 mostra un diagramma temporale dell'inizializzazione della periferica.
![]() |
![]() |
Figura 1-3 • Diagramma di flusso di inizializzazione SERDESIF (PCIe).
La procedura di inizializzazione descritta in questo documento richiede l'esecuzione di Cortex-M3 durante il processo di inizializzazione, anche se non si prevede di eseguire alcun codice su Cortex-M3. È necessario creare un'applicazione firmware di base che non faccia nulla (un semplice loop, ad esample) e caricare l'eseguibile nella memoria non volatile incorporata (eNVM) in modo che i controller DDR e i blocchi SERDESIF vengano inizializzati all'avvio del Cortex-M3.
Utilizzo di System Builder per creare un progetto utilizzando i blocchi DDR e SERDESIF
SmartFusion2 System Builder è un potente strumento di progettazione che ti aiuta a catturare i requisiti a livello di sistema e a produrre un progetto che implementa tali requisiti. Una funzione molto importante del System Builder è la creazione automatica del sottosistema di inizializzazione della periferica. “Utilizzo di SmartDesign per creare un progetto utilizzando blocchi DDR e SERDESIF” a pagina 17 descrive in dettaglio come creare tale soluzione senza System Builder.
Se utilizzi System Builder, devi eseguire le seguenti attività per creare un progetto che inizializzi i controller DDR e i blocchi SERDESIF all'accensione:
- Nella pagina Caratteristiche dispositivo (Figura 2-1), specificare quali controller DDR vengono utilizzati e quanti blocchi SERDESIF vengono utilizzati nel progetto.
- Nella pagina Memoria, specifica il tipo di DDR (DDR2/DDR3/LPDDR) e i dati di configurazione per le tue memorie DDR esterne. Per i dettagli vedere la sezione Pagina Memoria.
- Nella pagina Periferiche, aggiungere i master fabric configurati come AHBLite/AXI al sottosistema Fabric DDR e/o al sottosistema MSS DDR FIC (opzionale).
- Nella pagina Impostazioni orologio, specificare le frequenze di clock per i sottosistemi DDR.
- Completa le specifiche di progettazione e fai clic su Fine. Ciò genera il progetto creato dal System Builder, inclusa la logica necessaria per la soluzione di "inizializzazione".
- Se stai utilizzando i blocchi SERDESIF, devi istanziare i blocchi SERDESIF nel tuo progetto e connettere le loro porte di inizializzazione a quelle del core generato dal System Builder.
Pagina Funzionalità dispositivo System Builder
Nella pagina Caratteristiche dispositivo, specificare quali controller DDR (MDDR e/o FDDR) vengono utilizzati e quanti blocchi SERDESIF vengono utilizzati nel progetto (Figura 2-1).
Figura 2-1 • Pagina Funzionalità dispositivo System Builder
Pagina Memoria del costruttore di sistema
Per utilizzare MSS DDR (MDDR) o Fabric DDR (FDDR), selezionare il tipo di memoria dall'elenco a discesa (Figura 2-2).
Figura 2-2 • Memoria esterna MSS
Devi:
- Seleziona il tipo DDR (DDR2, DDR3 o LPDDR).
- Definire il tempo di assestamento della memoria DDR. Consultare le specifiche della memoria DDR esterna per impostare l'ora di impostazione della memoria corretta. La memoria DDR potrebbe non riuscire a inizializzarsi correttamente se il tempo di assestamento della memoria non è impostato correttamente.
- Importa i dati di configurazione del registro DDR o imposta i parametri della memoria DDR. Per i dettagli, fare riferimento a Guida per l'utente delle interfacce DDR e seriali ad alta velocità Microsemi SmartFusion2.
Questi dati vengono utilizzati per generare il registro DDR BFM e la configurazione del firmware files come descritto in “Creazione e compilazione dell'applicazione firmware” a pagina 26 e “BFM Files Utilizzato per la simulazione del progetto” a pagina 27. Per i dettagli sui registri di configurazione del controller DDR, fare riferimento a Guida per l'utente delle interfacce DDR e seriali ad alta velocità Microsemi SmartFusion2.
un exampfile della configurazione file la sintassi è mostrata nella Figura 2-3. I nomi dei registri utilizzati in this file sono gli stessi descritti nel Guida per l'utente delle interfacce DDR e seriali ad alta velocità Microsemi SmartFusion2
Figura 2-3 • Configurazione File Sintassi esample
Pagina Periferiche del costruttore di sistema
Nella pagina Periferiche, per ogni controller DDR viene creato un sottosistema separato (sottosistema Fabric DDR per FDDR e sottosistema MSS DDR FIC per MDDR). È possibile aggiungere un core Fabric AMBA Master (configurato come AXI/AHBLite) a ciascuno di questi sottosistemi per abilitare l'accesso del Fabric Master ai controller DDR. Al momento della generazione, System Builder crea automaticamente un'istanza dei core del bus (a seconda del tipo di master AMBA aggiunto) ed espone il BIF master del core del bus e i pin di clock e ripristino dei sottosistemi corrispondenti (FDDR/MDDR) sotto i gruppi di pin appropriati, al superiore. Tutto quello che devi fare è connettere i BIF ai core Fabric Master appropriati di cui vuoi creare un'istanza nel progetto. Nel caso di MDDR, è facoltativo aggiungere un core Fabric AMBA Master al sottosistema MSS DDR FIC; Cortex-M3 è un master predefinito su questo sottosistema. La Figura 2-4 mostra la pagina Periferiche del generatore di sistema.
Figura 2-4 • Pagina Periferiche del generatore di sistema
Pagina Impostazioni orologio del generatore di sistema
Nella pagina Impostazioni orologio, per ciascun controller DDR, è necessario specificare le frequenze di clock relative a ciascun sottosistema DDR (MDDR e/o FDDR).
Per MDDR, è necessario specificare:
- MDDR_CLK – Questo clock determina la frequenza operativa del controller DDR e dovrebbe corrispondere alla frequenza di clock con cui desideri che venga eseguita la memoria DDR esterna. Questo orologio è definito come un multiplo di M3_CLK (Cortex-M3 e MSS Main Clock, Figura 2-5). MDDR_CLK deve essere inferiore a 333 MHz.
- DDR_FIC_CLK – Se hai scelto di accedere all'MDDR anche dalla struttura FPGA, devi specificare DDR_FIC_CLK. Questa frequenza di clock è definita come rapporto tra MDDR_CLK e deve corrispondere alla frequenza con cui è in esecuzione il sottosistema della struttura FPGA che accede a MDDR.
Figura 2-5 • Cortex-M3 e orologio principale MSS; Orologi MDDR
Per FDDR, è necessario specificare:
- FDDR_CLK – Determina la frequenza operativa del controller DDR e deve corrispondere alla frequenza di clock alla quale desideri che venga eseguita la memoria DDR esterna. Si noti che questo orologio è definito come un multiplo di M3_CLK (orologio MSS e Cortex-M3, Figura 2-5). L'FDDR_CLK deve essere compreso tra 20 MHz e 333 MHz.
- FDDR_SUBSYSTEM_CLK – Questa frequenza di clock è definita come un rapporto di FDDR_CLK e deve corrispondere alla frequenza con cui è in esecuzione il sottosistema della struttura FPGA che accede a FDDR.
Figura 2-6 • Orologi DDR in tessuto
Configurazione SERDESIF
I blocchi SERDESIF non vengono istanziati nella progettazione generata dal System Builder. Tuttavia, per tutti i blocchi SERDESIF, i segnali di inizializzazione sono disponibili sull'interfaccia del core del System Builder e possono essere collegati ai core SERDESIF al livello successivo della gerarchia, come mostrato nella Figura 2-7.Figura 2-7 • Connettività di inizializzazione periferica SERDESIF
Similmente ai registri di configurazione DDR, ogni blocco SERDES dispone anche di registri di configurazione che devono essere caricati in fase di esecuzione. È possibile importare questi valori di registro oppure utilizzare il configuratore dell'interfaccia seriale ad alta velocità (Figura 2-8) per inserire i parametri PCIe o EPCS e i valori di registro verranno calcolati automaticamente. Per i dettagli, fare riferimento a Guida per l'utente del configuratore SERDES.Figura 2-8 • Configuratore di interfaccia seriale ad alta velocità
Dopo aver integrato la logica utente con il blocco System Builder e il blocco SERDES, puoi generare il tuo SmartDesign di livello superiore. Questo genera tutto HDL e BFM fileelementi necessari per implementare e simulare il tuo progetto. È quindi possibile procedere con il resto del flusso di progettazione.
Utilizzo di SmartDesign per creare un progetto utilizzando blocchi DDR e SERDESIF
Questa sezione descrive come mettere insieme una soluzione di "inizializzazione" completa senza utilizzare SmartFusion2 System Builder. L'obiettivo è aiutarti a capire cosa devi fare se non desideri utilizzare System Builder. Questa sezione descrive inoltre cosa genera effettivamente lo strumento System Builder. Questa sezione descrive come:
- Immettere i dati di configurazione per il controller DDR e i registri di configurazione SERDESIF.
- Crea un'istanza e collega i Fabric Core necessari per trasferire i dati di configurazione ai controller DDR e ai registri di configurazione SERDESIF.
Configurazione del controller DDR
I controller MSS DDR (MDDR) e Fabric DDR (FDDR) devono essere configurati dinamicamente (in fase di esecuzione) per soddisfare i requisiti di configurazione della memoria DDR esterna (modalità DDR, larghezza PHY, modalità burst, ECC, ecc.). I dati immessi nel configuratore MDDR/FDDR vengono scritti nei registri di configurazione del controller DDR dalla funzione CMSIS SystemInit(). Il Configuratore ha tre diverse schede per inserire diversi tipi di dati di configurazione:
- Dati generali (modalità DDR, larghezza dati, frequenza di clock, ECC, interfaccia Fabric, potenza dell'unità)
- Dati di inizializzazione della memoria (durata del burst, ordine del burst, modalità di temporizzazione, latenza, ecc.)
- Dati di temporizzazione della memoria
Fare riferimento alle specifiche della memoria DDR esterna e configurare il controller DDR in modo che corrisponda ai requisiti della memoria DDR esterna.
Per dettagli sulla configurazione DDR, fare riferimento a Guida per l'utente alla configurazione di SmartFusion2 MSS DDR.
Configurazione SERDESIF
Fare doppio clic sul blocco SERDES nell'area di disegno SmartDesign per aprire il Configuratore per configurare SERDES (Figura 3-1). Puoi importare questi valori di registro o utilizzare il configuratore SERDES per inserire i parametri PCIe o EPCS e i valori di registro verranno calcolati automaticamente. Per i dettagli, fare riferimento a Guida per l'utente del configuratore SERDES.Figura 3-1 • Configuratore di interfaccia seriale ad alta velocità
Creazione del sottosistema di inizializzazione della progettazione FPGA
Per inizializzare i blocchi DDR e SERDESIF, è necessario creare il sottosistema di inizializzazione nella struttura FPGA. Il sottosistema di inizializzazione della struttura FPGA sposta i dati dal Cortex-M3 ai registri di configurazione DDR e SERDESIF, gestisce le sequenze di ripristino necessarie affinché questi blocchi siano operativi e segnala quando questi blocchi sono pronti per comunicare con il resto del progetto. Per creare il sottosistema di inizializzazione è necessario:
- Configura FIC_2 all'interno dell'MSS
- Creare un'istanza e configurare i core CoreConfigP e CoreResetP
- Crea un'istanza dell'oscillatore RC da 25/50 MHz su chip
- Crea un'istanza della macro Ripristino del sistema (SYSRESET).
- Collega questi componenti alle interfacce di configurazione, agli orologi, ai reset e alle porte di blocco PLL di ciascuna periferica
Configurazione APB MSS FIC_2
Per configurare MSS FIC_2:
- Aprire la finestra di dialogo del configuratore FIC_2 dal configuratore MSS (Figura 3-2).
- Selezionare Inizializza periferiche utilizzando Cortex-M3.
- A seconda del sistema, seleziona una o entrambe le seguenti caselle di controllo:
– MS DDR
– Blocchi Fabric DDR e/o SERDES - Fare clic su OK e procedere con la generazione dell'MSS (è possibile rinviare questa azione fino a quando non sarà stato completamente configurato l'MSS in base ai requisiti di progettazione). Le porte FIC_2 (FIC_2_APB_MASTER, FIC_2_APB_M_PCLK e FIC_2_APB_M_RESET_N) sono ora esposte all'interfaccia MSS e possono essere collegate ai core CoreConfigP e CoreResetP.
Figura 3-2 • Configuratore MSS FIC_2
CoreConfigP
Per configurare CoreConfigP:
- Crea un'istanza di CoreConfigP nel tuo SmartDesign (tipicamente quello in cui viene istanziata l'MSS).
Questo core si trova nel Catalogo Libero (sotto Periferiche). - Fare doppio clic sul nucleo per aprire il configuratore.
- Configurare il core per specificare quali periferiche devono essere inizializzate (Figura 3-3)
Figura 3-3 • Finestra di dialogo CoreConfigP
CoreResetP
Per configurare CoreResetP:
- Crea un'istanza di CoreResetP nel tuo SmartDesign (in genere quello in cui viene istanziata l'MSS).
Questo core lo trovate nel Catalogo Libero, alla voce Periferiche. - Fare doppio clic sul nucleo all'interno della tela SmartDesign per aprire il Configuratore (Figura 3-4).
- Configura il core per:
– Specificare il comportamento di ripristino esterno (EXT_RESET_OUT asserito). Scegli una delle quattro opzioni:
o EXT_RESET_OUT non viene mai affermato
o EXT_RESET_OUT viene affermato se viene affermato il ripristino all'accensione (POWER_ON_RESET_N)
o EXT_RESET_OUT viene affermato se viene affermato FAB_RESET_N
o EXT_RESET_OUT viene affermato se viene ripristinato l'accensione (POWER_ON_RESET_N) o FAB_RESET_N
– Specificare il volume del dispositivotage. Il valore selezionato dovrebbe corrispondere al voltage selezionato nella finestra di dialogo Impostazioni progetto Libero.
– Seleziona le caselle di controllo appropriate per indicare quali periferiche stai utilizzando nel tuo progetto.
– Specificare l'ora di impostazione della memoria DDR esterna. Questo è il valore massimo per tutte le memorie DDR utilizzate nella tua applicazione (MDDR e FDDR). Fare riferimento alla scheda tecnica del fornitore della memoria DDR esterna per configurare questo parametro. 200us è un buon valore predefinito per le memorie DDR2 e DDR3 che funzionano a 200 MHz. Questo è un parametro molto importante per garantire una simulazione di funzionamento ed un sistema funzionante su silicio. Un valore errato del tempo di assestamento può causare errori di simulazione. Fare riferimento alla scheda tecnica del fornitore della memoria DDR per configurare questo parametro.
– Per ciascun blocco SERDES nel tuo progetto, seleziona le caselle appropriate per indicare se:
o Viene utilizzato PCIe
o È richiesto il supporto per PCIe Hot Reset
o È richiesto il supporto per PCIe L2/P2
Nota: Se stai utilizzando il die 090 (M2S090) e il tuo progetto utilizza SERDESIF, non è necessario selezionare nessuna delle seguenti caselle di controllo: "Utilizzato per PCIe", "Includi supporto PCIe HotReset" e "Includi supporto PCIe L2/P2". Se stai utilizzando un dispositivo non 090 e usi uno o più blocchi SERDESIF, devi selezionare tutte e quattro le caselle di controllo nella sezione SERDESIF appropriata.
Nota: Per i dettagli sulle opzioni disponibili in questo configuratore, fare riferimento al Manuale CoreResetP.
Figura 3-4 • CoreResetPConfigurator
Istanziazione dell'oscillatore 25/50 MHz
CoreConfigP e CoreResetP sono sincronizzati dall'oscillatore RC da 25/50 MHz integrato nel chip. È necessario creare un'istanza di un oscillatore da 25/50 MHz e collegarlo a questi core.
- Crea un'istanza del core degli oscillatori del chip nel tuo SmartDesign (tipicamente quello in cui viene istanziato l'MSS). Questo nucleo si trova nel Catalogo Libero alla voce Orologio & Gestione.
- Configurare questo core in modo che l'oscillatore RC guidi la struttura FPGA, come mostrato nella Figura 3-5.
Figura 3-5 • Configuratore degli oscillatori del chip
Istanziazione del ripristino del sistema (SYSRESET).
La macro SYSRESET fornisce funzionalità di ripristino a livello di dispositivo al progetto. Il segnale di uscita POWER_ON_RESET_N viene affermato/deasserito ogni volta che il chip viene acceso o il pin esterno DEVRST_N viene affermato/deasserito (Figura 3-6).
Istanzia la macro SYSRESET nel tuo SmartDesign (tipicamente quello in cui viene istanziato l'MSS). Questa macro si trova nel Catalogo Libero alla voce Libreria macro. Non è necessaria alcuna configurazione di questa macro.
Figura 3-6 • Macro SYSRESET
Connettività complessiva
Dopo aver istanziato e configurato i core MSS, FDDR, SERDESIF, OSC, SYSRESET, CoreConfigP e CoreResetP nel progetto, è necessario collegarli per formare il sottosistema di inizializzazione della periferica. Per semplificare la descrizione della connettività in questo documento, questa è suddivisa nella connettività del percorso dati di configurazione conforme ad APB3 associata a CoreConfigP e alle connessioni correlate CoreResetP.
Connettività del percorso dati di configurazione
La Figura 3-7 mostra come collegare CoreConfigP ai segnali MSS FIC_2 e alle interfacce di configurazione conformi APB3 delle periferiche.
Tabella 3-1 • Connessioni Porta/BIF del percorso dati di configurazione
DA Interfaccia porto/autobus (BIF)/ Componente |
A Porta/Interfaccia bus (BIF)/Componente |
||
PRESET APB S N/ CoreConfigP | PRESET APB S N/SDIF<0/1/2/3> | PRESET APB S 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 | SLAVE APB MDDR (BIF)/MSS | ||
SDIF<0/1/2/3> APBmslave/Config | APB SLAVE (BIF)/SDIF<0/1/2/3> | ||
FDDR APBmslave | APB SLAVE (BIF)/ FDDR | ||
FIC 2 APBmmaster/ CoreConfigP | FIC 2 APB MASTER/MSS |
Figura 3-7 • Connettività del sottosistema FIC_2 APB3
Connettività orologi e reset
La Figura 3-8 mostra come collegare CoreResetP alle fonti di ripristino esterne e ai segnali di ripristino del nucleo delle periferiche. Mostra anche come collegare CoreResetP ai segnali di stato di sincronizzazione dell'orologio delle periferiche (segnali di blocco PLL). Inoltre, mostra come sono collegati CoreConfigP e CoreResetP.
Figura 3-8 • Connettività del sottosistema Core SF2Reset
Creazione e compilazione dell'applicazione firmware
Quando esporti il firmware da LiberoSoC (finestra Flusso di progettazione > Esporta firmware > Esporta firmware), Libero genera quanto segue files nel Cartella /firmware/drivers_config/sys_config:
- sys_config.c – Contiene le strutture dati che contengono i valori per i registri periferici.
- sys_config.h – Contiene le istruzioni #define che specificano quali periferiche vengono utilizzate nella progettazione e devono essere inizializzate.
- sys_config_mddr_define.h – Contiene i dati di configurazione del controller MDDR immessi nella finestra di dialogo Configurazione registri.
- sys_config_fddr_define.h – Contiene i dati di configurazione del controller FDDR immessi nella finestra di dialogo Registers Configuration.
- sys_config_mss_clocks.h - Questo file contiene le frequenze di clock MSS come definite nel configuratore MSS CCC. Queste frequenze vengono utilizzate dal codice CMSIS per fornire informazioni sull'orologio corrette a molti dei driver MSS che devono avere accesso alla frequenza dell'orologio periferico (PCLK) (ad esempio, i divisori della velocità di trasmissione UART MSS sono una funzione della velocità di trasmissione e della frequenza PCLK ).
- sys_config_SERDESIF_ .C – Contiene SERDESIF_ registrare i dati di configurazione forniti durante il SERDESIF_ configurazione dei blocchi nella creazione del progetto.
- sys_config_SERDESIF_ .H – Contiene le istruzioni #define che specificano il numero di coppie di configurazione del registro e il numero di corsia che deve essere interrogato per PMA_READY (solo in modalità PCIe).
Questi fileI messaggi sono necessari affinché il codice CMSIS venga compilato correttamente e contengano informazioni relative al progetto attuale, inclusi i dati di configurazione delle periferiche e le informazioni sulla configurazione dell'orologio per MSS.
Non modificarli files manualmente; vengono creati nelle directory dei componenti/periferiche corrispondenti ogni volta che vengono generati i componenti SmartDesign contenenti le rispettive periferiche. Se vengono apportate modifiche ai dati di configurazione di una qualsiasi delle periferiche, è necessario riesportare i progetti firmware in modo che il firmware aggiornato files (vedi l'elenco sopra) vengono esportati nel file /cartella firmware/drivers_config/sys_config.
Quando esporti il firmware, Libero SoC crea i progetti firmware: una libreria in cui la configurazione del tuo progetto filese i driver vengono compilati.
Se controlli il Crea progetto casella di controllo quando si esporta il firmware, viene creato un progetto software SoftConsole/IAR/Keil per contenere il progetto dell'applicazione in cui è possibile modificare main.c e C/H utente fileS. Apri il progetto SoftConSole/IAR/Keil per compilare correttamente il codice CMSIS e configurare correttamente l'applicazione firmware per adattarla alla progettazione hardware.
BFM Files Utilizzato per simulare il progetto
Quando generi i componenti SmartDesign contenenti le periferiche associate al tuo progetto, la simulazione files corrispondenti alle rispettive periferiche vengono generati nel file directory /simulazione:
- prova.bfm – BFM di altissimo livello file che viene eseguito per la prima volta durante qualsiasi simulazione che utilizza il processore SmartFusion2 MSS Cortex-M3. Esegue periferiche_init.bfm e user.bfm, in quest'ordine.
- MDDR_init.bfm – Se il tuo progetto utilizza l’MDDR, Libero lo genera file; contiene comandi di scrittura BFM che simulano le scritture dei dati del registro di configurazione MSS DDR immessi (utilizzando la finestra di dialogo Modifica registri o nella GUI MSS_MDDR) nei registri del controller MSS DDR.
- FDDR_init.bfm – Se il tuo progetto utilizza l'FDDR, Libero lo genera file; contiene comandi di scrittura BFM che simulano le scritture dei dati del registro di configurazione Fabric DDR immessi (utilizzando la finestra di dialogo Modifica registri o nella GUI FDDR) nei registri del controller Fabric DDR.
- SERDESIF_ _init.bfm – Se il tuo progetto utilizza uno o più blocchi SERDESIF, Libero lo genera file per ciascuno dei SERDESIF_ blocchi utilizzati; contiene comandi di scrittura BFM che simulano le scritture dei dati del registro di configurazione SERDESIF immessi (utilizzando la finestra di dialogo Modifica registri o nella finestra di dialogo SERDESIF_ GUI) nel SERDESIF_ registri. Se il blocco SERDESIF è configurato come PCIe, this file dispone inoltre di alcune istruzioni #define che controllano l'esecuzione delle 2 fasi di configurazione del registro in perfetto ordine.
- utente.bfm – Contiene i comandi utente. Questi comandi vengono eseguiti dopo il completamento di periferiche_init.bfm. Modifica questo file per inserire i comandi BFM.
- SERDESIF_ _utente.bfm – Contiene i comandi utente. Modifica questo file per inserire i comandi BFM. Utilizzalo se hai configurato SERDESIF_ blocco in modalità simulazione BFM PCIe e come master AXI/AHBLite. Se hai configurato SERDESIF_ blocco in modalità simulazione RTL, non ne avrai bisogno file.
Quando si invoca la simulazione ogni volta, le seguenti due simulazioni filevengono ricreati nel file /simulation directory con contenuti aggiornati:
- sottosistema.bfm – Contiene le istruzioni #define per ciascuna periferica utilizzata nel progetto, che specificano la sezione particolare di periferiche_init.bfm da eseguire corrispondente a ciascuna periferica.
- operipheral_init.bfm – Contiene la procedura BFM che emula la funzione CMSIS:: SystemInit() eseguita su Cortex-M3 prima di immettere la procedura main(). Copia i dati di configurazione per qualsiasi periferica utilizzata nel progetto nei registri di configurazione delle periferiche corretti e quindi attende che tutte le periferiche siano pronte prima di affermare che è possibile utilizzare queste periferiche. Esegue MDDR_init.bfm e FDDR_init.bfm.
Utilizzando questi generati fileCosì, i controller DDR nel tuo progetto vengono configurati automaticamente, simulando ciò che accadrebbe su un dispositivo SmartFusion2. È possibile modificare user.bfm file per aggiungere eventuali comandi necessari per simulare il tuo progetto (Cortex-M3 è il master). Questi comandi vengono eseguiti dopo che le periferiche sono state inizializzate. Non modificare test.bfm, subsystem.bfm, periferiche_init.bfm, MDDR_init.bfm, FDDR_init.bfm files e SERDESIF_ _init.bfm files.
Supporto prodotto
Microsemi SoC Products Group supporta i suoi prodotti con vari servizi di supporto, tra cui il servizio clienti, il centro di assistenza tecnica clienti, a websito, posta elettronica e uffici vendite in tutto il mondo.
Questa appendice contiene informazioni su come contattare Microsemi SoC Products Group e utilizzare questi servizi di supporto.
Assistenza clienti
Contatta il servizio clienti per assistenza non tecnica sui prodotti, ad esempio prezzi dei prodotti, aggiornamenti dei prodotti, informazioni sull'aggiornamento, stato dell'ordine e autorizzazione.
Dal Nord America, chiamare 800.262.1060
Dal resto del mondo, chiama 650.318.4460
Fax, da qualsiasi parte del mondo, 408.643.6913
Centro assistenza tecnica clienti
Microsemi SoC Products Group dispone del suo Centro di assistenza tecnica clienti con ingegneri altamente qualificati che possono aiutarti a rispondere alle tue domande su hardware, software e progettazione relative ai prodotti Microsemi SoC. Il Customer Technical Support Center dedica molto tempo alla creazione di note applicative, risposte a domande comuni sul ciclo di progettazione, documentazione di problemi noti e varie domande frequenti. Quindi, prima di contattarci, visita le nostre risorse online. È molto probabile che abbiamo già risposto alle tue domande.
Supporto tecnico
Visita l'assistenza clienti webposto (www.microsemi.com/soc/support/search/default.aspx) per ulteriori informazioni e assistenza. Molte risposte disponibili sul ricercabile web risorsa includono diagrammi, illustrazioni e collegamenti ad altre risorse sul websito.
Websito
Puoi sfogliare una varietà di informazioni tecniche e non tecniche sulla home page del SoC, all'indirizzo www.microsemi.com/soc.
Contattare il centro di assistenza tecnica clienti
Ingegneri altamente qualificati gestiscono il Centro di assistenza tecnica. Il centro di assistenza tecnica può essere contattato tramite e-mail o tramite il gruppo di prodotti Microsemi SoC websito.
E-mail
Puoi comunicare le tue domande tecniche al nostro indirizzo e-mail e ricevere risposte via e-mail, fax o telefono. Inoltre, se hai problemi di progettazione, puoi inviare il tuo progetto tramite e-mail files per ricevere assistenza.
Monitoriamo costantemente l'account e-mail per tutto il giorno. Quando ci invii la tua richiesta, assicurati di includere il tuo nome completo, il nome dell'azienda e le tue informazioni di contatto per un'elaborazione efficiente della tua richiesta.
L'indirizzo e-mail del supporto tecnico è soc_tech@microsemi.com.
I miei casi
I clienti di Microsemi SoC Products Group possono inviare e tenere traccia dei casi tecnici online accedendo a I miei casi.
Fuori dagli Stati Uniti
I clienti che necessitano di assistenza al di fuori dei fusi orari degli Stati Uniti possono contattare il supporto tecnico via e-mail (soc_tech@microsemi.com) o contattare un ufficio vendite locale. Gli elenchi degli uffici vendite sono disponibili all'indirizzo www.microsemi.com/soc/company/contact/default.aspx.
Supporto tecnico ITAR
Per il supporto tecnico sugli FPGA RH e RT regolati dalle normative sul traffico internazionale di armi (ITAR), contattaci tramite soc_tech_itar@microsemi.com. In alternativa, in I miei casi, seleziona Sì nell'elenco a discesa ITAR. Per un elenco completo degli FPGA Microsemi regolamentati da ITAR, visitare l'ITAR web pagina.
Microsemi Corporation (NASDAQ: MSCC) offre un portafoglio completo di soluzioni a semiconduttori per: aerospaziale, difesa e sicurezza; impresa e comunicazioni; e mercati dell'energia industriale e alternativa. I prodotti includono dispositivi analogici e RF ad alte prestazioni e alta affidabilità, circuiti integrati a segnali misti e RF, SoC personalizzabili, FPGA e sottosistemi completi. Microsemi ha sede ad Aliso Viejo, in California. Scopri di più su www.microsemi.com.
© 2014 Microsemi Corporation. Tutti i diritti riservati. Microsemi e il logo Microsemi sono marchi di Microsemi Corporation. Tutti gli altri marchi e marchi di servizio sono di proprietà dei rispettivi proprietari.
5-02-00384-1/08.14Sede aziendale Microsemi
One Enterprise, Aliso Viejo CA 92656 USA
Negli USA: +1 Numero di telefono: 949-380-6100
Vendite: +1 Numero di telefono: 949-380-6136
Fax: +1 Numero di telefono: 949-215-4996
Documenti / Risorse
![]() |
Controller Microsemi SmartFusion2 DDR e controller seriale ad alta velocità [pdf] Guida utente Controller SmartFusion2 DDR e controller seriale ad alta velocità, SmartFusion2 DDR, controller e controller seriale ad alta velocità, Controller ad alta velocità |