SmartFusion2
Kontroler DDR i szeregowy kontroler dużej prędkości
Metodologia inicjalizacji
Instrukcja użytkownika
Wstęp
Podczas tworzenia projektu przy użyciu urządzenia SmartFusion2, jeśli używasz jednego z dwóch kontrolerów DDR (FDDR lub MDDR) lub któregokolwiek z bloków szeregowego kontrolera dużej prędkości (SERDESIF), musisz zainicjować rejestry konfiguracyjne tych bloków w czasie wykonywania przed można ich używać. Na przykładample, w przypadku kontrolera DDR należy ustawić tryb DDR (DDR3/DDR2/LPDDR), szerokość PHY, tryb seryjny i ECC.
Podobnie w przypadku bloku SERDESIF używanego jako punkt końcowy PCIe należy ustawić okno PCIE BAR na AXI (lub AHB).
W tym dokumencie opisano kroki niezbędne do stworzenia projektu Libero, który automatycznie inicjuje kontroler DDR i bloki SERDESIF po włączeniu zasilania. Opisuje także sposób generowania kodu oprogramowania sprzętowego z Libero SOC, który jest używany w procesie projektowania wbudowanego.
Najpierw podany jest szczegółowy opis teorii operacji.
W następnej sekcji opisano, jak stworzyć taki projekt za pomocą Libero SoC System Builder, potężnego narzędzia do projektowania, które między innymi tworzy rozwiązanie „inicjalizacji”, jeśli używasz w swoim projekcie bloków DDR lub SERDESIF.
Następna sekcja opisuje, jak złożyć kompletne rozwiązanie „inicjalizacyjne” bez użycia narzędzia SmartFusion2 System Builder. Pomaga to wyjaśnić, co należy zrobić, jeśli nie chcesz używać Konstruktora systemu, a także opisuje, co faktycznie generuje dla Ciebie narzędzie Konstruktor systemu. Ta sekcja dotyczy:
- Utworzenie danych konfiguracyjnych dla kontrolera DDR i rejestrów konfiguracyjnych SERDESIF
- Utworzenie logiki FPGA wymaganej do przesyłania danych konfiguracyjnych do różnych rejestrów konfiguracyjnych ASIC
Na koniec opisujemy wygenerowane filejest powiązany z:
- Stworzenie rozwiązania do „inicjalizacji” oprogramowania sprzętowego.
- Symulacja projektu rozwiązania „inicjalizacji” DDR.
Aby uzyskać szczegółowe informacje na temat kontrolera DDR i rejestrów konfiguracyjnych SERDESIF, zobacz Podręcznik użytkownika interfejsów szeregowych Microsemi SmartFusion2 High Speed i interfejsów DDR.
Teoria działania
Rozwiązanie inicjalizacji urządzeń peryferyjnych wykorzystuje następujące główne komponenty:
- Funkcja CMSIS SystemInit(), która działa na rdzeniu Cortex-M3 i koordynuje proces inicjalizacji.
- Miękki rdzeń IP CoreConfigP, który inicjuje rejestry konfiguracyjne urządzeń peryferyjnych.
- Miękki rdzeń IP CoreResetP, który zarządza sekwencją resetowania kontrolerów MSS, DDR i bloków SERDESIF.
Proces inicjalizacji urządzeń peryferyjnych przebiega w następujący sposób:
- Po zresetowaniu Cortex-M3 uruchamia funkcję CMSIS SystemInit(). Ta funkcja jest wykonywana automatycznie przed wykonaniem funkcji main() aplikacji.
Sygnał wyjściowy CoreResetP MSS_HPMS_READY jest potwierdzany na początku procesu inicjalizacji, wskazując, że MSS i wszystkie urządzenia peryferyjne (z wyjątkiem MDDR) są gotowe do komunikacji. - Funkcja SystemInit() zapisuje dane konfiguracyjne do kontrolerów DDR i rejestrów konfiguracyjnych SERDESIF za pośrednictwem magistrali MSS FIC_2 APB3. Interfejs ten jest podłączony do miękkiego rdzenia CoreConfigP utworzonego w strukturze FPGA.
- Po skonfigurowaniu wszystkich rejestrów funkcja SystemInit() zapisuje dane do rejestrów kontrolnych CoreConfigP, aby wskazać zakończenie fazy konfiguracji rejestrów; następnie potwierdzane są sygnały wyjściowe CoreConfigP CONFIG1_DONE i CONIG2_DONE.
Istnieją dwie fazy konfiguracji rejestru (CONFIG1 i CONFIG2) w zależności od urządzeń peryferyjnych zastosowanych w projekcie. - Jeśli używany jest jeden lub oba MDDR/FDDR, a w projekcie nie jest używany żaden z bloków SERDESIF, występuje tylko jedna faza konfiguracji rejestru. Obydwa sygnały wyjściowe CoreConfigP CONFIG1_DONE i CONIG2_DONE są potwierdzane jeden po drugim, bez żadnego oczekiwania/opóźnienia.
Jeśli w projekcie wykorzystano jeden lub więcej bloków SERDESIF w trybie innym niż PCIe, istnieje tylko jedna faza konfiguracji rejestru. CONFIG1_DONE i CONIG2_DONE są potwierdzane jeden po drugim, bez żadnego oczekiwania/opóźnienia.
Jeśli w projekcie wykorzystano jeden lub więcej bloków SERDESIF w trybie PCIe, istnieją dwie fazy konfiguracji rejestru. CONFIG1_DONE jest stwierdzany po zakończeniu pierwszej fazy konfiguracji rejestru. Na tym etapie konfigurowany jest system SERDESIF i rejestry pasów ruchu. Jeśli SERDESIF jest skonfigurowany w trybie innym niż PCIE, sygnał CONFIG2_DONE jest również natychmiast aktywowany. - Następnie następuje druga faza konfiguracji rejestru (jeśli SERDESIF jest skonfigurowany w trybie PCIE). Poniżej przedstawiono różne zdarzenia, które mają miejsce w drugiej fazie:
– CoreResetP cofa sygnały PHY_RESET_N i CORE_RESET_N odpowiadające każdemu z użytych bloków SERDESIF. Zapewnia również sygnał wyjściowy SDIF_RELEASED po tym, jak wszystkie bloki SERDESIF nie zostaną zresetowane. Ten sygnał SDIF_RELEASED jest używany do wskazania CoreConfigP, że rdzeń SERDESIF nie jest zresetowany i jest gotowy do drugiej fazy konfiguracji rejestru.
– Po potwierdzeniu sygnału SDIF_RELEASED funkcja SystemInit() rozpoczyna odpytywanie o potwierdzenie PMA_READY na odpowiedniej linii SERDESIF. Po potwierdzeniu PMA_READY drugi zestaw rejestrów SERDESIF (rejestry PCIE) jest konfigurowany/zapisywany przez funkcję SystemInit(). - Po skonfigurowaniu wszystkich rejestrów PCIE funkcja SystemInit() zapisuje dane do rejestrów kontrolnych CoreConfigP, aby wskazać zakończenie drugiej fazy konfiguracji rejestrów; następnie potwierdzany jest sygnał wyjściowy CoreConfigP CONIG2_DONE.
- Oprócz powyższych potwierdzeń/odtwierdzeń sygnałów, CoreResetP zarządza także inicjalizacją różnych bloków, wykonując następujące funkcje:
– Cofnięcie resetu rdzenia FDDR
– Cofnięcie potwierdzenia SERDESIF blokuje resetowanie PHY i CORE
– Monitorowanie sygnału blokady FDDR PLL (FPLL). FPLL musi być zablokowany, aby zagwarantować poprawną komunikację interfejsu danych FDDR AXI/AHBLite i struktury FPGA.
– Monitorowanie sygnałów blokujących blok SERDESIF PLL (SPLL). SPLL musi być zablokowany, aby zagwarantować, że bloki SERDESIF będą mogły poprawnie komunikować się z interfejsem AXI/AHBLite (tryb PCIe) lub XAUI z siecią FPGA.
– Oczekiwanie, aż zewnętrzne pamięci DDR się uspokoją i będą gotowe do uzyskania dostępu przez kontrolery DDR. - Kiedy wszystkie urządzenia peryferyjne zakończą inicjalizację, CoreResetP potwierdza sygnał INIT_DONE; następnie potwierdzany jest wewnętrzny rejestr CoreConfigP INIT_DONE.
Jeśli zostanie użyty jeden lub oba MDDR/FDDR i osiągnięty zostanie czas inicjalizacji DDR, załączony zostanie sygnał wyjściowy CoreResetP DDR_READY. Potwierdzenie tego sygnału DDR_READY można monitorować jako wskazanie, że pamięć DDR (MDDR/FDDR) jest gotowa do komunikacji.
Jeśli zostanie użyty jeden lub więcej bloków SERDESIF i druga faza konfiguracji rejestru zostanie pomyślnie zakończona, zostanie potwierdzony sygnał wyjściowy CoreResetP SDIF_READY. Potwierdzenie tego sygnału SDIF_READY można monitorować jako wskazanie, że wszystkie bloki SERDESIF są gotowe do komunikacji. - Funkcja SystemInit(), która czekała na potwierdzenie INIT_DONE, kończy się i wykonywana jest funkcja main() aplikacji. W tym czasie wszystkie używane kontrolery DDR i bloki SERDESIF zostały zainicjowane, a aplikacja oprogramowania sprzętowego i logika FPGA mogą niezawodnie się z nimi komunikować.
Metodologia opisana w tym dokumencie opiera się na Cortex-M3 wykonującym proces inicjalizacji jako część kodu inicjującego system wykonywanego przed funkcją main() aplikacji.
Zobacz schematy blokowe na Rysunek 1-1, Rysunek 1-2 i Rysunek 1-3, aby zapoznać się z etapami inicjalizacji FDDR/MDDR, SEREDES (tryb inny niż PCIe) i SERDES (tryb PCIe).
Rysunek 1-4 przedstawia diagram czasu inicjalizacji urządzeń peryferyjnych.
![]() |
![]() |
Rysunek 1-3 • Schemat inicjalizacji SERDESIF (PCIe).
Procedura inicjalizacji opisana w tym dokumencie wymaga uruchomienia Cortex-M3 podczas procesu inicjalizacji, nawet jeśli nie planujesz uruchamiania żadnego kodu na Cortex-M3. Musisz utworzyć podstawową aplikację oprogramowania sprzętowego, która nic nie robi (prosta pętla, npample) i załaduj ten plik wykonywalny do wbudowanej pamięci trwałej (eNVM), aby kontrolery DDR i bloki SERDESIF zostały zainicjowane podczas uruchamiania Cortex-M3.
Korzystanie z Konstruktora systemów do tworzenia projektu przy użyciu bloków DDR i SERDESIF
Konstruktor systemu SmartFusion2 to potężne narzędzie do projektowania, które pomaga określić wymagania na poziomie systemu i stworzyć projekt realizujący te wymagania. Bardzo ważną funkcją System Builder jest automatyczne tworzenie podsystemu Peripheral Inicjalizacja. „Używanie SmartDesign do tworzenia projektu przy użyciu bloków DDR i SERDESIF” na stronie 17 szczegółowo opisano, jak stworzyć takie rozwiązanie bez Konstruktora systemu.
Jeśli używasz Konstruktora systemu, musisz wykonać następujące zadania, aby utworzyć projekt, który inicjuje kontrolery DDR i bloki SERDESIF przy włączeniu zasilania:
- Na stronie Funkcje urządzenia (rysunek 2-1) określ, które kontrolery DDR są używane i ile bloków SERDESIF wykorzystano w projekcie.
- Na stronie Pamięć określ typ pamięci DDR (DDR2/DDR3/LPDDR) i dane konfiguracyjne zewnętrznych pamięci DDR. Aby uzyskać szczegółowe informacje, zobacz sekcję Strona pamięci.
- Na stronie Peryferia dodaj wzorce sieci szkieletowej skonfigurowane jako AHBLite/AXI do podsystemu Fabric DDR i/lub podsystemu MSS DDR FIC (opcjonalnie).
- Na stronie Ustawienia zegara określ częstotliwości zegara dla podsystemów DDR.
- Wypełnij specyfikację projektu i kliknij Zakończ. Spowoduje to wygenerowanie projektu utworzonego przez Konstruktora systemu, łącznie z logiką niezbędną do rozwiązania „inicjalizacji”.
- Jeśli używasz bloków SERDESIF, musisz utworzyć instancję bloków SERDESIF w swoim projekcie i połączyć ich porty inicjujące z portami rdzenia wygenerowanego przez Konstruktora systemu.
Strona funkcji urządzenia System Builder
Na stronie Funkcje urządzenia określ, które kontrolery DDR (MDDR i/lub FDDR) są używane i ile bloków SERDESIF wykorzystano w Twoim projekcie (Rysunek 2-1).
Rysunek 2-1 • Strona funkcji urządzenia System Builder
Strona pamięci konstruktora systemu
Aby użyć pamięci MSS DDR (MDDR) lub Fabric DDR (FDDR), wybierz typ pamięci z listy rozwijanej (Rysunek 2-2).
Rysunek 2-2 • Zewnętrzna pamięć MSS
Musisz:
- Wybierz typ DDR (DDR2, DDR3 lub LPDDR).
- Określ czas ustalania pamięci DDR. Aby ustawić prawidłowy czas ustawiania pamięci, zapoznaj się ze specyfikacjami zewnętrznej pamięci DDR. Pamięć DDR może nie zostać prawidłowo zainicjowana, jeśli czas stabilizacji pamięci nie zostanie prawidłowo ustawiony.
- Zaimportuj dane konfiguracyjne rejestru DDR lub ustaw parametry pamięci DDR. Szczegóły znajdziesz w Podręcznik użytkownika interfejsów szeregowych Microsemi SmartFusion2 High Speed i interfejsów DDR.
Dane te służą do wygenerowania rejestru DDR BFM i konfiguracji oprogramowania sprzętowego files zgodnie z opisem w „Tworzenie i kompilowanie aplikacji oprogramowania sprzętowego” na stronie 26 i „BFM Files Używane do symulacji projektu” na stronie 27. Aby uzyskać szczegółowe informacje na temat rejestrów konfiguracyjnych kontrolera DDR, zobacz Podręcznik użytkownika interfejsów szeregowych Microsemi SmartFusion2 High Speed i interfejsów DDR.
Byłyampplik konfiguracji file składnię pokazano na rysunku 2-3. Nazwy rejestrów użyte w this file są takie same jak te opisane w pkt Podręcznik użytkownika interfejsów szeregowych Microsemi SmartFusion2 High Speed i interfejsów DDR
Rysunek 2-3 • Konfiguracja File Składnia Example
Strona urządzeń peryferyjnych do tworzenia systemów
Na stronie Peryferia dla każdego kontrolera DDR tworzony jest oddzielny podsystem (podsystem Fabric DDR dla FDDR i podsystem MSS DDR FIC dla MDDR). Do każdego z tych podsystemów można dodać rdzeń Fabric AMBA Master (skonfigurowany jako AXI/AHBLite), aby umożliwić masterowi dostęp do kontrolerów DDR. Po wygenerowaniu System Builder automatycznie tworzy instancje rdzeni magistrali (w zależności od typu dodanego modułu AMBA Master) i udostępnia główny BIF rdzenia magistrali oraz zegara i resetuje piny odpowiednich podsystemów (FDDR/MDDR) w odpowiednich grupach pinów, do szczyt. Wszystko, co musisz zrobić, to podłączyć BIF do odpowiednich rdzeni Fabric Master, które utworzysz w projekcie. W przypadku MDDR opcjonalne jest dodanie głównego rdzenia Fabric AMBA do podsystemu MSS DDR FIC; Cortex-M3 jest domyślnym masterem w tym podsystemie. Rysunek 2-4 przedstawia stronę urządzeń peryferyjnych programu System Builder.
Rysunek 2-4 • Strona urządzeń peryferyjnych producenta systemu
Strona ustawień zegara Konstruktora systemu
Na stronie Ustawienia zegara dla każdego kontrolera DDR należy określić częstotliwości zegara powiązane z każdym podsystemem DDR (MDDR i/lub FDDR).
W przypadku MDDR należy określić:
- MDDR_CLK – ten zegar określa częstotliwość roboczą kontrolera DDR i powinien odpowiadać częstotliwości zegara, z jaką ma działać zewnętrzna pamięć DDR. Zegar ten jest zdefiniowany jako wielokrotność M3_CLK (zegar główny Cortex-M3 i MSS, rysunek 2-5). MDDR_CLK musi być mniejsze niż 333 MHz.
- DDR_FIC_CLK – Jeśli zdecydowałeś się na dostęp do MDDR również z poziomu FPGA, musisz określić DDR_FIC_CLK. Ta częstotliwość zegara jest zdefiniowana jako stosunek MDDR_CLK i powinna odpowiadać częstotliwości, z jaką działa podsystem FPGA Fabric uzyskujący dostęp do MDDR.
Rysunek 2-5 • Główny zegar Cortex-M3 i MSS; Zegary MDDR
W przypadku FDDR należy określić:
- FDDR_CLK – określa częstotliwość roboczą kontrolera DDR i powinna odpowiadać częstotliwości zegara, z jaką chcesz, aby działała zewnętrzna pamięć DDR. Należy zauważyć, że zegar ten jest zdefiniowany jako wielokrotność M3_CLK (zegar MSS i Cortex-M3, rysunek 2-5). Wartość FDDR_CLK musi mieścić się w zakresie od 20 MHz do 333 MHz.
- FDDR_SUBSYSTEM_CLK – Ta częstotliwość zegara jest zdefiniowana jako stosunek FDDR_CLK i powinna odpowiadać częstotliwości, z jaką działa podsystem FPGA Fabric uzyskujący dostęp do FDDR.
Rysunek 2-6 • Zegary Fabric DDR
Konfiguracja SERDESIF
Bloki SERDESIF nie są tworzone w projekcie wygenerowanym przez Konstruktora systemu. Jednakże dla wszystkich bloków SERDESIF sygnały inicjujące są dostępne na interfejsie rdzenia System Builder i można je podłączyć do rdzeni SERDESIF na kolejnym poziomie hierarchii, jak pokazano na rysunku 2-7.Rysunek 2-7 • Łączność inicjowania urządzeń peryferyjnych SERDESIF
Podobnie jak rejestry konfiguracyjne DDR, każdy blok SERDES posiada również rejestry konfiguracyjne, które muszą zostać załadowane w czasie wykonywania. Możesz zaimportować te wartości rejestrów lub skorzystać z konfiguratora szybkiego interfejsu szeregowego (rysunek 2-8), aby wprowadzić parametry PCIe lub EPCS, a wartości rejestrów zostaną automatycznie obliczone. Szczegóły znajdziesz w Podręcznik użytkownika konfiguratora SERDES.Rysunek 2-8 • Konfigurator szybkiego interfejsu szeregowego
Po zintegrowaniu logiki użytkownika z blokiem System Builder i blokiem SERDES możesz wygenerować swój SmartDesign najwyższego poziomu. Generuje to wszystkie HDL i BFM filektóre są niezbędne do wdrożenia i symulacji Twojego projektu. Następnie możesz kontynuować resztę procesu projektowania.
Używanie SmartDesign do tworzenia projektu przy użyciu bloków DDR i SERDESIF
W tej sekcji opisano, jak złożyć kompletne rozwiązanie „inicjalizacyjne” bez użycia narzędzia SmartFusion2 System Builder. Celem jest pomoc w zrozumieniu, co należy zrobić, jeśli nie chcesz używać Konstruktora systemu. W tej sekcji opisano także, co faktycznie generuje narzędzie Konstruktor systemu. W tej sekcji opisano, jak:
- Wprowadź dane konfiguracyjne dla kontrolera DDR i rejestrów konfiguracyjnych SERDESIF.
- Utwórz instancję i podłącz rdzenie szkieletowe wymagane do przesłania danych konfiguracyjnych do kontrolerów DDR i rejestrów konfiguracyjnych SERDESIF.
Konfiguracja kontrolera DDR
Kontrolery MSS DDR (MDDR) i Fabric DDR (FDDR) muszą być konfigurowane dynamicznie (w czasie wykonywania), aby odpowiadały wymaganiom konfiguracji zewnętrznej pamięci DDR (tryb DDR, szerokość PHY, tryb seryjny, ECC itp.). Dane wprowadzone w konfiguratorze MDDR/FDDR zapisywane są do rejestrów konfiguracyjnych kontrolera DDR za pomocą funkcji CMSIS SystemInit(). Konfigurator posiada trzy różne zakładki służące do wprowadzania różnych typów danych konfiguracyjnych:
- Dane ogólne (tryb DDR, szerokość danych, częstotliwość taktowania, ECC, interfejs Fabric, moc dysku)
- Dane inicjalizacji pamięci (długość serii, kolejność serii, tryb synchronizacji, opóźnienie itp.)
- Dane taktowania pamięci
Zapoznaj się ze specyfikacjami zewnętrznej pamięci DDR i skonfiguruj kontroler DDR tak, aby odpowiadał wymaganiom zewnętrznej pamięci DDR.
Aby uzyskać szczegółowe informacje na temat konfiguracji pamięci DDR, zobacz Podręcznik użytkownika konfiguracji SmartFusion2 MSS DDR.
Konfiguracja SERDESIF
Kliknij dwukrotnie blok SERDES w obszarze roboczym SmartDesign, aby otworzyć Konfigurator i skonfigurować SERDES (Rysunek 3-1). Możesz zaimportować te wartości rejestrów lub użyć konfiguratora SERDES do wprowadzenia parametrów PCIe lub EPCS, a wartości rejestrów zostaną automatycznie obliczone. Szczegóły znajdziesz w Podręcznik użytkownika konfiguratora SERDES.Rysunek 3-1 • Konfigurator szybkiego interfejsu szeregowego
Stworzenie podsystemu inicjalizacji projektu FPGA
Aby zainicjować bloki DDR i SERDESIF, należy utworzyć podsystem inicjujący w strukturze FPGA. Podsystem inicjalizacji struktury FPGA przenosi dane z Cortex-M3 do rejestrów konfiguracyjnych DDR i SERDESIF, zarządza sekwencjami resetowania wymaganymi do działania tych bloków i sygnalizuje, kiedy te bloki są gotowe do komunikacji z resztą projektu. Aby utworzyć podsystem inicjujący, należy:
- Skonfiguruj FIC_2 wewnątrz MSS
- Utwórz instancję i skonfiguruj rdzenie CoreConfigP i CoreResetP
- Utwórz instancję wbudowanego oscylatora RC 25/50 MHz
- Utwórz instancję makra resetowania systemu (SYSRESET).
- Podłącz te komponenty do interfejsów konfiguracyjnych, zegarów, resetów i portów blokady PLL każdego urządzenia peryferyjnego
Konfiguracja APB MSS FIC_2
Aby skonfigurować MSS FIC_2:
- Otwórz okno dialogowe konfiguratora FIC_2 z konfiguratora MSS (Rysunek 3-2).
- Wybierz opcję Inicjuj urządzenia peryferyjne za pomocą Cortex-M3.
- W zależności od systemu zaznacz jedno lub oba następujące pola wyboru:
– MS DDR
– Bloki Fabric DDR i/lub SERDES - Kliknij OK i kontynuuj generowanie MSS (możesz odłożyć tę czynność do czasu pełnego skonfigurowania MSS zgodnie z wymaganiami projektowymi). Porty FIC_2 (FIC_2_APB_MASTER, FIC_2_APB_M_PCLK i FIC_2_APB_M_RESET_N) są teraz dostępne w interfejsie MSS i można je podłączyć do rdzeni CoreConfigP i CoreResetP.
Rysunek 3-2 • Konfigurator MSS FIC_2
CoreConfigP
Aby skonfigurować CoreConfigP:
- Utwórz instancję CoreConfigP w swoim SmartDesign (zazwyczaj tym, w którym tworzona jest instancja MSS).
Rdzeń ten można znaleźć w katalogu Libero (w części Peryferia). - Kliknij dwukrotnie rdzeń, aby otworzyć konfigurator.
- Skonfiguruj rdzeń, aby określić, które urządzenia peryferyjne muszą zostać zainicjowane (rysunek 3-3)
Rysunek 3-3 • Okno dialogowe CoreConfigP
CoreResetP
Aby skonfigurować CoreResetP:
- Utwórz instancję CoreResetP w swoim SmartDesign (zazwyczaj tym, w którym tworzona jest instancja MSS).
Rdzeń ten można znaleźć w katalogu Libero, w sekcji Peryferia. - Kliknij dwukrotnie rdzeń wewnątrz SmartDesign Canvas, aby otworzyć Konfigurator (Rysunek 3-4).
- Skonfiguruj rdzeń tak, aby:
– Określ zachowanie resetowania zewnętrznego (stwierdzono EXT_RESET_OUT). Wybierz jedną z czterech opcji:
o EXT_RESET_OUT nigdy nie jest zapewnione
o EXT_RESET_OUT jest aktywowane, jeśli reset po włączeniu zasilania (POWER_ON_RESET_N) jest aktywny
o EXT_RESET_OUT jest zapewnione, jeśli potwierdzone jest FAB_RESET_N
o EXT_RESET_OUT jest zapewnione, jeśli zostanie ustawiony reset po włączeniu zasilania (POWER_ON_RESET_N) lub FAB_RESET_N
– Określ objętość urządzeniatagmi. Wybrana wartość powinna odpowiadać objętościtage, które wybrałeś w oknie dialogowym Ustawienia projektu Libero.
– Zaznacz odpowiednie pola wyboru, aby wskazać, jakich urządzeń peryferyjnych używasz w swoim projekcie.
– Określ czas ustawiania zewnętrznej pamięci DDR. Jest to maksymalna wartość dla wszystkich pamięci DDR używanych w aplikacji (MDDR i FDDR). Aby skonfigurować ten parametr, zapoznaj się z arkuszem danych dostawcy zewnętrznej pamięci DDR. 200us to dobra wartość domyślna dla pamięci DDR2 i DDR3 pracujących z częstotliwością 200 MHz. Jest to bardzo ważny parametr gwarantujący symulację działania i działający układ na krzemie. Nieprawidłowa wartość czasu ustalania może skutkować błędami symulacji. Aby skonfigurować ten parametr, zapoznaj się z arkuszem danych dostawcy pamięci DDR.
– Dla każdego bloku SERDES w swoim projekcie zaznacz odpowiednie pola, aby wskazać, czy:
o Używane jest PCIe
o Wymagana jest obsługa funkcji Hot Reset PCIe
o Wymagana jest obsługa PCIe L2/P2
Notatka: Jeśli używasz kości 090 (M2S090), a Twój projekt wykorzystuje SERDESIF, nie musisz zaznaczać żadnego z następujących pól wyboru: „Używane dla PCIe”, „Dołącz obsługę PCIe HotReset” i „Dołącz obsługę PCIe L2/P2”. Jeśli używasz dowolnego urządzenia innego niż 090 i używasz jednego lub więcej bloków SERDESIF, musisz zaznaczyć wszystkie cztery pola wyboru w odpowiedniej sekcji SERDESIF.
Notatka: Szczegółowe informacje na temat opcji dostępnych w tym konfiguratorze można znaleźć w podręczniku CoreResetP.
Rysunek 3-4 • CoreResetPConfigurator
Instancja oscylatora 25/50 MHz
CoreConfigP i CoreResetP są taktowane przez wbudowany oscylator RC 25/50 MHz. Należy utworzyć instancję oscylatora 25/50 MHz i podłączyć go do tych rdzeni.
- Utwórz instancję rdzenia oscylatorów chipowych w swoim SmartDesign (zazwyczaj tym, w którym tworzona jest instancja MSS). Rdzeń ten można znaleźć w katalogu Libero w zakładce Zegar i zarządzanie.
- Skonfiguruj ten rdzeń tak, aby oscylator RC sterował strukturą FPGA, jak pokazano na rysunku 3-5.
Rysunek 3-5 • Konfigurator oscylatorów chipowych
Instancja resetowania systemu (SYSRESET).
Makro SYSRESET zapewnia w projekcie funkcję resetowania na poziomie urządzenia. Sygnał wyjściowy POWER_ON_RESET_N jest potwierdzany/wycofany za każdym razem, gdy chip jest włączany lub zewnętrzny pin DEVRST_N jest potwierdzany/niepotwierdzany (rysunek 3-6).
Utwórz instancję makra SYSRESET w swoim SmartDesign (zazwyczaj tym, w którym tworzona jest instancja MSS). Makro to można znaleźć w Katalogu Libero w Bibliotece Makr. Żadna konfiguracja tego makra nie jest konieczna.
Rysunek 3-6 • Makro SYSRESET
Ogólna łączność
Po utworzeniu i skonfigurowaniu rdzeni MSS, FDDR, SERDESIF, OSC, SYSRESET, CoreConfigP i CoreResetP w swoim projekcie należy je połączyć, aby utworzyć podsystem inicjalizacji urządzeń peryferyjnych. Aby uprościć opis łączności w tym dokumencie, podzielono go na zgodną z APB3 ścieżkę danych konfiguracyjnych połączoną z połączeniami związanymi z CoreConfigP i CoreResetP.
Łączność ścieżki danych konfiguracyjnych
Rysunek 3-7 pokazuje, jak podłączyć CoreConfigP do sygnałów MSS FIC_2 i interfejsów konfiguracyjnych urządzeń peryferyjnych zgodnych z APB3.
Tabela 3-1 • Konfiguracja ścieżki danych Połączenia portu/BIF
Z Interfejs portu/magistrali (BIF)/Komponent |
DO Port/interfejs magistrali (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 SLAVE (BIF)/MSS | ||
SDIF<0/1/2/3> APBmslave/konfig | APB SLAVE (BIF)/SDIF<0/1/2/3> | ||
FDDR APBmslave | APB SLAVE (BIF)/FDDR | ||
FIC 2 APBmmaster/CoreConfigP | FIC 2 APB MASTER/MSS |
Rysunek 3-7 • Łączność podsystemu FIC_2 APB3
Zegary i resetują łączność
Rysunek 3-8 pokazuje, jak podłączyć CoreResetP do zewnętrznych źródeł resetowania i sygnałów resetowania rdzenia urządzeń peryferyjnych. Pokazuje także, jak podłączyć CoreResetP do sygnałów stanu synchronizacji zegara urządzeń peryferyjnych (sygnały blokady PLL). Ponadto pokazuje, w jaki sposób CoreConfigP i CoreResetP są połączone.
Rysunek 3-8 • Łączność podsystemu Core SF2Reset
Tworzenie i kompilowanie aplikacji oprogramowania układowego
Kiedy eksportujesz oprogramowanie sprzętowe z LiberoSoC (okno Design Flow > Eksportuj oprogramowanie sprzętowe > Eksportuj oprogramowanie układowe), Libero generuje następujące informacje filejest w Folder /firmware/drivers_config/ sys_config:
- sys_config.c – Zawiera struktury danych przechowujące wartości rejestrów peryferyjnych.
- sys_config.h – Zawiera instrukcje #define, które określają, które urządzenia peryferyjne są używane w projekcie i muszą zostać zainicjowane.
- sys_config_mddr_define.h – Zawiera dane konfiguracyjne kontrolera MDDR wprowadzone w oknie dialogowym Konfiguracja rejestrów.
- sys_config_fddr_define.h – Zawiera dane konfiguracyjne kontrolera FDDR wprowadzone w oknie dialogowym Konfiguracja rejestrów.
- sys_config_mss_clocks.h - Ten file zawiera częstotliwości zegara MSS zdefiniowane w konfiguratorze MSS CCC. Częstotliwości te są wykorzystywane przez kod CMSIS w celu zapewnienia prawidłowych informacji o zegarze wielu sterownikom MSS, które muszą mieć dostęp do częstotliwości zegara peryferyjnego (PCLK) (np. dzielniki szybkości transmisji MSS UART są funkcją szybkości transmisji i częstotliwości PCLK ).
- sys_config_SERDESIF_ .C – Zawiera SERDESIF_ zarejestruj dane konfiguracyjne podane podczas SERDESIF_ konfiguracja bloków podczas tworzenia projektu.
- sys_config_SERDESIF_ .H – Zawiera instrukcje #define, które określają liczbę par konfiguracyjnych rejestrów i numer linii, która musi być odpytywana dla PMA_READY (tylko w trybie PCIe).
Te files są wymagane do prawidłowej kompilacji kodu CMSIS i zawierają informacje dotyczące bieżącego projektu, w tym dane dotyczące konfiguracji peryferii i informacje o konfiguracji zegara dla MSS.
Nie edytuj tych fileręcznie; są one tworzone w odpowiednich katalogach komponentów/urządzeń peryferyjnych za każdym razem, gdy generowane są komponenty SmartDesign zawierające odpowiednie urządzenia peryferyjne. Jeśli zostaną wprowadzone jakiekolwiek zmiany w danych konfiguracyjnych któregokolwiek z urządzeń peryferyjnych, należy ponownie wyeksportować projekty oprogramowania sprzętowego, aby zaktualizowane oprogramowanie sprzętowe files (patrz lista powyżej) są eksportowane do pliku / firmware/drivers_config/sys_config.
Kiedy eksportujesz oprogramowanie sprzętowe, Libero SoC tworzy projekty oprogramowania sprzętowego: bibliotekę, w której znajduje się konfiguracja Twojego projektu files i sterowniki są skompilowane.
Jeśli zaznaczysz opcję Utwórz projekt pole wyboru podczas eksportowania oprogramowania sprzętowego tworzony jest projekt oprogramowania SoftConsole/IAR/Keil w celu przechowywania projektu aplikacji, w którym można edytować plik main.c i użytkownika C/H fileS. Otwórz projekt SoftConSole/IAR/Keil, aby poprawnie skompilować kod CMSIS i odpowiednio skonfigurować aplikację oprogramowania sprzętowego, aby pasowała do projektu sprzętu.
BFM Files Używany do symulacji projektu
Podczas generowania komponentów SmartDesign zawierających urządzenia peryferyjne powiązane z projektem, symulacja files odpowiadające odpowiednim urządzeniom peryferyjnym są generowane w katalog /symulacja:
- test.bfm – BFM na najwyższym poziomie file który jest wykonywany po raz pierwszy podczas dowolnej symulacji wykorzystującej procesor SmartFusion2 MSS Cortex-M3. Wykonuje pliki peryferyjne.bfm i user.bfm, w tej kolejności.
- MDDR_init.bfm – Jeśli Twój projekt wykorzystuje MDDR, Libero go generuje file; zawiera polecenia zapisu BFM, które symulują zapis danych rejestru konfiguracyjnego MSS DDR wprowadzonych (za pomocą okna dialogowego Edytuj rejestry lub w interfejsie graficznym MSS_MDDR) do rejestrów kontrolera MSS DDR.
- FDDR_init.bfm – Jeśli Twój projekt wykorzystuje FDDR, Libero go generuje file; zawiera polecenia zapisu BFM, które symulują zapis danych rejestru konfiguracyjnego Fabric DDR wprowadzonych (za pomocą okna dialogowego Edytuj rejestry lub w interfejsie GUI FDDR) do rejestrów kontrolera Fabric DDR.
- SERDESIF_ _init.bfm – Jeśli Twój projekt wykorzystuje jeden lub więcej bloków SERDESIF, Libero je generuje file dla każdego z SERDESIF_ użyte bloki; zawiera polecenia zapisu BFM, które symulują zapis wprowadzonych danych rejestru konfiguracyjnego SERDESIF (za pomocą okna dialogowego Edytuj rejestry lub w polu SERDESIF_ GUI) do SERDESIF_ rejestruje. Jeśli blok SERDESIF jest skonfigurowany jako PCIe, to file zawiera również instrukcje #define, które kontrolują wykonanie 2 faz konfiguracji rejestrów w doskonałej kolejności.
- użytkownik.bfm – Zawiera polecenia użytkownika. Polecenia te są wykonywane po zakończeniu peryferyjnego_init.bfm. Edytuj to file aby wprowadzić polecenia BFM.
- SERDESIF_ _użytkownik.bfm – Zawiera polecenia użytkownika. Edytuj to file aby wprowadzić polecenia BFM. Użyj tego, jeśli skonfigurowałeś SERDESIF_ blok w trybie symulacji BFM PCIe oraz jako master AXI/AHBLite. Jeśli skonfigurowałeś SERDESIF_ blok w trybie symulacji RTL, nie będziesz tego potrzebował file.
Kiedy za każdym razem wywołujesz symulację, poniższe dwie symulacje files są ponownie tworzone do Katalog /simulation ze zaktualizowaną zawartością:
- podsystem.bfm – Zawiera instrukcje #define dla każdego urządzenia peryferyjnego użytego w projekcie, które określają konkretną sekcję pliku peryferyjnego.bfm, która ma zostać wykonana, odpowiadającą każdemu urządzeniu peryferyjnemu.
- operipheral_init.bfm – Zawiera procedurę BFM, która emuluje funkcję CMSIS:: SystemInit() uruchamianą na Cortex-M3 przed wejściem do procedury main(). Kopiuje dane konfiguracyjne dowolnego urządzenia peryferyjnego użytego w projekcie do odpowiednich rejestrów konfiguracyjnych peryferii, a następnie czeka, aż wszystkie urządzenia peryferyjne będą gotowe, zanim potwierdzi, że można z nich korzystać. Wykonuje MDDR_init.bfm i FDDR_init.bfm.
Korzystanie z tych wygenerowanych files, kontrolery DDR w Twoim projekcie są konfigurowane automatycznie, symulując to, co stałoby się na urządzeniu SmartFusion2. Możesz edytować plik user.bfm file aby dodać dowolne polecenia wymagane do symulacji projektu (Cortex-M3 jest głównym). Polecenia te są wykonywane po zainicjowaniu urządzeń peryferyjnych. Nie edytuj plików test.bfm, subsystem.bfm, peryferia_init.bfm, MDDR_init.bfm, FDDR_init.bfm files i SERDESIF_ _init.bfm files.
Wsparcie produktu
Microsemi SoC Products Group wspiera swoje produkty różnymi usługami wsparcia, w tym obsługą klienta, centrum wsparcia technicznego klienta, a webwitryna internetowa, poczta elektroniczna i biura sprzedaży na całym świecie.
Ten dodatek zawiera informacje na temat kontaktowania się z Microsemi SoC Products Group i korzystania z tych usług pomocy technicznej.
Obsługa klienta
Skontaktuj się z działem obsługi klienta, aby uzyskać nietechniczne wsparcie dotyczące produktu, takie jak wycena produktów, aktualizacje produktów, informacje o aktualizacjach, status zamówienia i autoryzacja.
Z Ameryki Północnej zadzwoń 800.262.1060
Z reszty świata zadzwoń 650.318.4460
Faks z dowolnego miejsca na świecie, 408.643.6913
Centrum wsparcia technicznego klienta
Microsemi SoC Products Group zatrudnia w Centrum Wsparcia Technicznego Klienta wysoko wykwalifikowanych inżynierów, którzy mogą pomóc odpowiedzieć na pytania dotyczące sprzętu, oprogramowania i projektowania dotyczące produktów Microsemi SoC. Centrum pomocy technicznej dla klientów spędza dużo czasu na tworzeniu notatek aplikacyjnych, odpowiedzi na często zadawane pytania dotyczące cyklu projektowania, dokumentacji znanych problemów i różnych często zadawanych pytań. Dlatego zanim się z nami skontaktujesz, odwiedź nasze zasoby online. Jest bardzo prawdopodobne, że odpowiedzieliśmy już na Twoje pytania.
Wsparcie techniczne
Odwiedź dział obsługi klienta webStrona (www.microsemi.com/soc/support/search/default.aspx), aby uzyskać więcej informacji i wsparcia. Wiele odpowiedzi dostępnych w wyszukiwarce web zasobu obejmują diagramy, ilustracje i łącza do innych zasobów w witrynie webstrona.
Webstrona
Możesz przeglądać różne informacje techniczne i nietechniczne na stronie głównej SoC pod adresem www.microsemi.com/soc.
Kontakt z Centrum Wsparcia Technicznego Klienta
Wysoko wykwalifikowani inżynierowie pracują w Centrum Wsparcia Technicznego. Z Centrum Wsparcia Technicznego można skontaktować się za pośrednictwem poczty elektronicznej lub za pośrednictwem Microsemi SoC Products Group webstrona.
E-mail
Możesz przesyłać swoje pytania techniczne na nasz adres e-mail i otrzymywać odpowiedzi e-mailem, faksem lub telefonicznie. Ponadto, jeśli masz problemy z projektem, możesz wysłać swój projekt e-mailem files, aby otrzymać pomoc.
Stale monitorujemy konto e-mail przez cały dzień. Wysyłając do nas prośbę, pamiętaj o podaniu imienia i nazwiska, nazwy firmy oraz danych kontaktowych w celu sprawnego przetworzenia prośby.
Adres e-mail pomocy technicznej to soc_tech@microsemi.com.
Moje sprawy
Klienci Microsemi SoC Products Group mogą przesyłać i śledzić sprawy techniczne online, przechodząc do Moje sprawy.
Poza USA
Klienci potrzebujący pomocy poza strefami czasowymi USA mogą skontaktować się z pomocą techniczną za pośrednictwem poczty e-mail (soc_tech@microsemi.com) lub skontaktuj się z lokalnym biurem sprzedaży. Listę biur sprzedaży można znaleźć pod adresem www.microsemi.com/soc/company/contact/default.aspx.
Wsparcie techniczne ITAR
Aby uzyskać pomoc techniczną dotyczącą układów FPGA RH i RT, które są regulowane przez przepisy dotyczące międzynarodowego handlu bronią (ITAR), skontaktuj się z nami za pośrednictwem soc_tech_itar@microsemi.com. Ewentualnie w Moich sprawach wybierz Tak z listy rozwijanej ITAR. Pełną listę układów Microsemi FPGA podlegających przepisom ITAR można znaleźć w ITAR web strona.
Microsemi Corporation (NASDAQ: MSCC) oferuje kompleksowe portfolio rozwiązań półprzewodnikowych dla: lotnictwo, obronność i bezpieczeństwo; przedsiębiorczość i komunikacja; oraz rynki energii przemysłowej i alternatywnej. Produkty obejmują wysokowydajne i niezawodne urządzenia analogowe i RF, układy scalone z sygnałem mieszanym i RF, konfigurowalne układy SoC, układy FPGA i kompletne podsystemy. Siedziba Microsemi znajduje się w Aliso Viejo w Kalifornii. Dowiedz się więcej na stronie www.microsemi.com.
© 2014 Microsemi Corporation. Wszelkie prawa zastrzeżone. Microsemi i logo Microsemi są znakami towarowymi firmy Microsemi Corporation. Wszystkie inne znaki towarowe i znaki usługowe są własnością ich odpowiednich właścicieli.
5-02-00384-1/08.14Siedziba firmy Microsemi
One Enterprise, Aliso Viejo CA 92656 USA
W USA: +1 949-380-6100
Sprzedaż: +1 949-380-6136
Faks: +1 949-215-4996
Dokumenty / Zasoby
![]() |
Kontroler Microsemi SmartFusion2 DDR i szeregowy kontroler dużej szybkości [plik PDF] Instrukcja użytkownika Kontroler SmartFusion2 DDR i szeregowy kontroler dużej prędkości, SmartFusion2 DDR, kontroler i szeregowy kontroler dużej prędkości, szybki kontroler |