UG0837
Instrukcja użytkownika
IGLOO2 i SmartFusion2 FPGA
Symulacja usług systemowych
Czerwiec 2018
Historia rewizji
Historia rewizji opisuje zmiany, które zostały wprowadzone w dokumencie. Zmiany są wymienione według rewizji, zaczynając od najnowszej publikacji.
1.1 Wersja 1.0
Wersja 1.0 została opublikowana w czerwcu 2018 r. Była to pierwsza publikacja tego dokumentu.
Symulacja usług systemowych IGLOO2 i SmartFusion2 FPGA
Blok usług systemowych rodziny SmartFusion®2 FPGA zawiera zbiór usług odpowiedzialnych za różne zadania. Obejmują one usługi komunikatów symulacyjnych, usługi wskaźników danych i usługi deskryptorów danych. Dostęp do usług systemowych można uzyskać za pośrednictwem rdzenia Cortex-M3 w SmartFusion2 oraz z sieci szkieletowej FPGA za pośrednictwem kontrolera interfejsu sieciowego (FIC) zarówno w przypadku SmartFusion2, jak i IGLOO®2. Te metody dostępu są wysyłane do kontrolera systemu przez COMM_BLK. COMM_BLK posiada zaawansowany interfejs magistrali peryferyjnej (APB) i działa jako kanał przekazujący komunikaty do wymiany danych ze sterownikiem systemu. Żądania usługi systemowej są wysyłane do kontrolera systemu, a odpowiedzi usługi systemowej są wysyłane do CoreSysSerrvice za pośrednictwem COMM BLK. Lokalizacja adresu dla COMM_BLK jest dostępna w podsystemie mikrokontrolera (MSS)/podsystemie pamięci o wysokiej wydajności (HPMS). Aby uzyskać szczegółowe informacje, patrz UG0450: kontroler systemu SmartFusion2 SoC i IGLOO2 FPGA.
Instrukcja użytkownika
Na poniższej ilustracji przedstawiono przepływ danych usług systemowych.
Rysunek 1 • Diagram przepływu danych usług systemowychZarówno w przypadku symulacji usług systemowych IGLOO2, jak i SmartFusion2, należy wysyłać zgłoszenia serwisowe systemowe i sprawdzać odpowiedzi serwisowe systemowe, aby zweryfikować, czy symulacja jest poprawna. Ten krok jest niezbędny do uzyskania dostępu do kontrolera systemu, który świadczy usługi systemowe. Sposób zapisu i odczytu ze sterownika systemu jest inny dla urządzeń IGLOO2 i SmartFusion2. W przypadku SmartFusion2 dostępny jest Coretex-M3 i można zapisywać i odczytywać ze sterownika systemu za pomocą poleceń modelu funkcjonalnego magistrali (BFM). W przypadku IGLOO2 Cortex-M3 jest niedostępny, a kontroler systemu nie jest dostępny za pomocą poleceń BFM.
2.1 Rodzaje dostępnych usług systemowych
Dostępne są trzy różne typy usług systemowych, a każdy typ usługi ma różne podtypy.
Usługi wiadomości symulacyjnych
Usługi wskaźnika danych
Usługi deskryptora danych
Rozdział Dodatek – Typy usług systemowych (patrz strona 19) tego przewodnika opisuje różne typy usług systemowych. Aby uzyskać więcej informacji na temat usług systemowych, patrz UG0450: Podręcznik użytkownika kontrolera systemu SmartFusion2 SoC i IGLOO2 FPGA .
2.2 Symulacja obsługi systemu IGLOO2
Usługi systemowe obejmują zapisywanie i odczytywanie danych z kontrolera systemu. Aby zapisywać i odczytywać dane ze sterownika systemu w celach symulacyjnych, należy wykonać następujące czynności.
- Utwórz instancję miękkiego rdzenia IP CoreSysServices, dostępnego w katalogu SmartDesign.
- Napisz kod HDL dla skończonej maszyny stanów (FSM).
HDL FSM łączy się z rdzeniem CoreSysServices, który służy jako główny szkielet magistrali AHBLite. Rdzeń CoreSysServices inicjuje żądanie usługi systemowej do COMM BLK i odbiera odpowiedzi usługi systemowej z COMM BLK przez FIC_0/1, kontroler interfejsu szkieletowego, jak pokazano na poniższej ilustracji.
Rysunek 2 • Topologia symulacji usług systemowych IGLOO22.3 Symulacja obsługi systemu SmartFusion2
Aby symulować usługi systemowe w urządzeniach SmartFusion2, należy zapisywać i odczytywać dane ze sterownika systemu. Dostępne są dwie opcje dostępu do sterownika systemu w celach symulacyjnych.
Opcja 1 — Napisz kod HDL dla FSM, aby połączyć się z miękkim rdzeniem IP CoreSysService, który służy jako nadrzędna sieć szkieletowa AHBLite i inicjuje żądanie usługi systemowej do COMM BLK i odbiera odpowiedzi usługi systemowej z COMM BLK za pośrednictwem tkaniny FIC_0/1 interfejs, jak pokazano na poniższej ilustracji.
Rysunek 3 • Topologia symulacji usług systemowych SmartFusion2
Opcja 2 — Ponieważ Cortex-M3 jest dostępny dla urządzeń SmartFusion2, możesz używać poleceń BFM do bezpośredniego zapisu i odczytu z przestrzeni pamięci kontrolera systemu.
Korzystanie z poleceń BFM (opcja 2) eliminuje potrzebę pisania kodów HDL dla FSM. W tej instrukcji obsługi opcja 2 służy do wyświetlania symulacji usług systemowych w SmartFusion2. Dzięki tej opcji przestrzeń pamięci kontrolera systemu jest dostępna w celu znalezienia mapy pamięci COMM BLK i bloku kontrolera przerwań interfejsu sieci szkieletowej (FIIC) podczas pisania poleceń BFM.
2.4 Symulacja Npamples
Podręcznik użytkownika obejmuje następujące symulacje.
- Symulacja obsługi numeru seryjnego IGLOO2 (patrz strona 5)
- Symulacja obsługi numeru seryjnego SmartFusion2 (patrz strona 8)
- Symulacja usługi zerowania IGLOO2 (patrz strona 13)
- Symulacja usługi zerowania SmartFusion2 (patrz strona 16)
Podobne metody symulacji można zastosować do innych usług systemowych. Aby uzyskać pełną listę różnych dostępnych usług systemowych, przejdź do Dodatku — Typy usług systemowych (patrz strona 19).
2.5 Symulacja obsługi numeru seryjnego IGLOO2
Aby przygotować się do symulacji obsługi numeru seryjnego IGLOO2, wykonaj następujące czynności.
- Wywołaj konstruktora systemu, aby utworzyć blok HPMS.
- Zaznacz pole wyboru Usługi systemowe HPMS na stronie Funkcje urządzenia. To poinstruuje producenta systemu, aby udostępnił interfejs magistrali HPMS_FIC_0 SYS_SERVICES_MASTER (BIF).
- Wszystkie pozostałe pola wyboru pozostaw niezaznaczone.
- Zaakceptuj ustawienie domyślne na wszystkich innych stronach i kliknij przycisk Zakończ, aby zakończyć blok konstruktora systemu. W edytorze HDL Libero® SoC wpisz kod HDL dla FSM (File > Nowy > HDL). Uwzględnij następujące trzy stany w swoim FSM.
Stan INIT (stan początkowy)
SERV_PHASE (stan zgłoszenia serwisowego)
RSP_PHASE (stan odpowiedzi usługi).
Poniższy rysunek przedstawia trzy stany FSM.
Rysunek 4 • Trójpaństwowy FSM W swoim kodzie HDL dla FSM użyj poprawnego kodu polecenia („01” Hex dla numeru seryjnego service ), aby wejść w stan zgłoszenia serwisowego ze stanu INIT.
- Zapisz swój HDL file. FSM pojawia się jako komponent w Hierarchii Projektu.
- Otwórz SmartDesign. Przeciągnij i upuść blok konstruktora systemu najwyższego poziomu oraz blok FSM na kanwę SmartDesign. Z katalogu przeciągnij i upuść miękki rdzeń IP CoreSysService na kanwę SmartDesign.
- Kliknij prawym przyciskiem myszy miękki rdzeń IP CoreSysService, aby otworzyć konfigurator. Zaznacz pole wyboru Usługa numeru seryjnego (w Usługach informacji o urządzeniu i projekcie
group), aby włączyć obsługę numeru seryjnego. - Wszystkie pozostałe pola wyboru pozostaw niezaznaczone. Kliknij OK, aby wyjść z konfiguratora.
Rysunek 5 • CoreSysServices program IP Core Configurator
- Połącz HPMS_FIC_0 SYS_SERVICES_MASTER BIF bloku konstruktora systemu z AHBL_MASTER BIF bloku CoreSysService.
- Podłącz wyjście swojego bloku HDL FSM do wejścia rdzenia CoreSysService soft IP. Wykonaj wszystkie inne połączenia w kanwie SmartDesign, jak pokazano na poniższym rysunku.
Rysunek 6 • Płótno SmartDesign z blokami HDL, CoreSysServices Soft IP i blokami HPMS - W kanwie SmartDesign kliknij prawym przyciskiem myszy >Generuj komponent, aby wygenerować projekt najwyższego poziomu.
- W hierarchii projektu view, kliknij prawym przyciskiem myszy projekt najwyższego poziomu i wybierz opcję utwórz Testbench > HDL .
- Użyj edytora tekstu, aby utworzyć tekst file o nazwie „status.txt”.
- Dołącz polecenie obsługi systemu i 128-bitowy numer seryjny. Aby uzyskać więcej informacji, zobacz Tabela 1 (wartości poleceń/odpowiedzi usług systemowych) w Podręcznik CoreSysServices v3.1 dla kodów poleceń (Hex), które mają być używane dla różnych usług systemowych. W przypadku obsługi numeru seryjnego kod polecenia to „01” szesnastkowy.
Format pliku status.txt file dla usługi numeru seryjnego wygląda następująco.
< 2 cyfry szesnastkowe CMD><32 cyfry szesnastkowe Numer seryjny>
Example: 01A1A2A3A4B1B2B3B4C1C2C3C4D1D2D3D4
Zapisz status.txt file w folderze Simulation swojego projektu. Projekt jest teraz gotowy do symulacji.
Po rozpoczęciu wykonywania usługi w oknie transkrypcji ModelSim zostanie wyświetlony komunikat wskazujący lokalizację docelową i numer seryjny, jak pokazano na poniższym rysunku.
Rysunek 7 • Okno transkrypcji symulacji ModelSimSterownik systemu przeprowadza zapis AHB na adres z numerem seryjnym. Po zakończeniu usługi RXFIFO COMM_BLK zostanie załadowany z odpowiedzią usługi.
Uwaga: Pełna lista kodów poleceń, które mają być używane dla różnych usług systemowych, znajduje się w Tabeli 1 (Wartości poleceń/odpowiedzi usług systemowych) w podręczniku CoreSysServices v3.1 lub UG0450: Podręcznik użytkownika kontrolera systemu SmartFusion2 SoC i IGLOO2 FPGA.
2.6 Symulacja obsługi numeru seryjnego SmartFusion2
W niniejszej instrukcji obsługi polecenia BFM (opcja 2) służą do uzyskiwania dostępu do kontrolera systemu w celu obsługi systemu. Polecenia BFM są używane, ponieważ procesor Cortex-M3 jest dostępny w urządzeniu do symulacji BFM. Polecenia BFM umożliwiają bezpośredni zapis i odczyt z COMM BLK, gdy znasz mapowanie pamięci COMM_BLK.
Aby przygotować projekt do symulacji obsługi numeru seryjnego SmartFusion2, wykonaj następujące kroki.
- Przeciągnij i upuść MSS z katalogu na płótno projektowe swojego projektu.
- Wyłącz wszystkie urządzenia peryferyjne MSS z wyjątkiem MSS_CCC, kontrolera resetowania, zarządzania przerwaniami oraz FIC_0, FIC_1 i FIC_2.
- Skonfiguruj zarządzanie przerwaniami, aby używało MSS do przerwań w sieci szkieletowej.
- Przygotuj numer seryjny.bfm file w edytorze tekstu lub w edytorze HDL Libero. Zapisz numer seryjny.bfm file w folderze Simulation projektu. Serialnum.bfm powinien zawierać następujące szczegóły.
• Mapowanie pamięci do COMM BLK (CMBLK)
• Mapowanie pamięci na urządzenie peryferyjne do zarządzania przerwaniami (FIIC)
• Polecenie zgłoszenia serwisowego systemu numerów seryjnych („01” Hex)
• Adres lokalizacji numeru seryjnego
Byłyampplik numeru seryjnego.bfm file przedstawia się następująco.
mapa pamięci FIIC 0x40006000; #Mapowanie pamięci do zarządzania przerwaniami
mapa pamięci CMBLK 0x40016000; #Mapowanie pamięci do COMM BLK
mapa pamięci DESCRIPTOR_ADDR 0x20000000; #Lokalizacja adresu dla numeru seryjnego
#Kod polecenia w systemie szesnastkowym
stała CMD 0x1 # Kod polecenia dla Serial NumberService
Rejestry konfiguracyjne #FIIC
stała FICC_INTERRUPT_ENABLE0 0x0
#COMM_BLK Rejestry konfiguracyjne
stała KONTROLA 0x00
stały STATUS 0x04
stała INT_ENABLE 0x08
stała DANE8 0x10
stała DANE32 0x14
stała FRAME_START8 0x18
stała FRAME_START32 0x1C
numer seryjny procedury;
int x;
napisz w FIIC FICC_INTERRUPT_ENABLE0 0x20000000 #Konfiguruj
#FICC_INTERRUPT_ENABLE0 # Zarejestruj się, aby włączyć COMBLK_INTR #
#interrupt z bloku COMM_BLK do tkaniny
#Faza prośby
napisz w CMBLK CONTROL 0x10 # Skonfiguruj COMM BLK Control #Zarejestruj się
włączyć transfery na interfejsie COMM BLK
napisz w CMBLK INT_ENABLE 0x1 # Skonfiguruj COMM BLK Przerwanie Włącz
#Zarejestruj się, aby włączyć przerwanie dla TXTOKAY (odpowiedni bit w pliku
#Rejestr stanu)
waitint 19 # czekaj na przerwanie COMM BLK , tutaj #BFM czeka
#do potwierdzenia COMBLK_INTR
readstore w CMBLK STATUS x # Odczyt rejestru stanu COMM BLK dla #TXTOKAY
# Przerywać
ustaw xx i 0x1
jeśli x
napisz w CMBLK FRAME_START8 CMD # Skonfiguruj COMM BLK FRAME_START8
#Zarejestruj się, aby poprosić o usługę numeru seryjnego
koniec
koniec
waitint 19 # czekaj na przerwanie COMM BLK , Tutaj
#BFM czeka na potwierdzenie COMBLK_INTR
readstore w CMBLK STATUS x # Odczyt COMM BLK Status Register for
#TXTOKAY Przerwij
ustaw xx i 0x1
ustaw xx i 0x1
jeśli x
napisz w CMBLK CONTROL 0x14 #Configure COMM BLK Control
#Zarejestruj się, aby umożliwić transfery na interfejsie COMM BLK
napisz w CMBLK DATA32 DESCRIPTOR_ADDR
napisz w CMBLK INT_ENABLE 0x80
napisz w CMBLK CONTROL 0x10
koniec
poczekaj 20
#Faza odpowiedzi
czekać 19
readstore w CMBLK STATUS x
ustaw xx i 0x80
jeśli x
sprawdź ponownie w CMBLK FRAME_START8 CMD
napisz w CMBLK INT_ENABLE 0x2
koniec
czekać 19
readstore w CMBLK STATUS x
ustaw xx i 0x2
jeśli x
sprawdź w CMBLK DATA8 0x0
napisz w CMBLK CONTROL 0x18
koniec
czekać 19
sprawdź w FIIC 0x8 0x20000000
readstore w CMBLK STATUS x
ustaw xx i 0x2
jeśli x
ponowne sprawdzenie w CMBLK DATA32 DESCRIPTOR_ADDR
koniec
sprawdź w DESCRIPTOR_ADDR 0x0 0xE1E2E3E4; #Readcheck, aby sprawdzić numer seryjny
sprawdź w DESCRIPTOR_ADDR 0x4 0xC1C2C3C4; #Readcheck, aby sprawdzić numer seryjny
sprawdź w DESCRIPTOR_ADDR 0x8 0xB1B2B3B4; #Readcheck, aby sprawdzić numer seryjny
sprawdź w DESCRIPTOR_ADDR 0xC 0xA1A2A3A4; #Readcheck, aby sprawdzić numer seryjny
powrót - Utwórz status. tekst file w edytorze HDL Libero lub dowolnym edytorze tekstu. Dołącz polecenie serwisowe systemu numeru seryjnego („01” w systemie szesnastkowym) i numer seryjny w statusie. tekst file. Zobacz podręcznik CoreSysServices v3.1, aby dowiedzieć się, jak używać poprawnego kodu polecenia.
- Składnia tego file dla usługi numeru seryjnego to <2 cyfry szesnastkowe CMD>< 32 cyfry szesnastkowe Numer seryjny> . Byłyample: 01A1A2A3A4B1B2B3B4C1C2C3C4E1E2E3E4.
- Zapisz status .txt file w folderze Simulation projektu.
- Edytuj plik .bfm użytkownika (znajdujący się w folderze Simulation), aby zawierał numer seryjny. bfm file i wywołaj procedurę numeru seryjnego, jak pokazano w poniższym fragmencie kodu.
include „serialnum.bfm” #include serialnum.bfm
procedura user_main;
drukuj „INFO: Rozpoczęcie symulacji”;
drukuj „INFO: Kod polecenia usługi w systemie dziesiętnym:% 0d”, CMD;
wywołaj numer seryjny; #wywołaj procedurę numeru seryjnego
drukuj „INFO:Koniec symulacji”;
powrót - W hierarchii projektu view, wygeneruj testbench (kliknij prawym przyciskiem myszy, Projekt najwyższego poziomu > Utwórz testbench > HDL ) i jesteś gotowy do uruchomienia symulacji usługi numeru seryjnego.
Po rozpoczęciu wykonywania usługi wyświetlany jest komunikat wskazujący lokalizację docelową oraz numer seryjny. Sterownik systemu przeprowadza zapis AHB na adres z numerem seryjnym. Po zakończeniu usługi RXFIFO COMM_BLK zostanie załadowany z odpowiedzią usługi. Okno transkrypcji ModelSim wyświetla otrzymany adres i numer seryjny, jak pokazano na poniższym rysunku.
Rysunek 8 • Symulacja usługi numeru seryjnego SmartFusion2 w oknie transkrypcji ModelSim
2.7 Symulacja usługi zerowania IGLOO2
Aby przygotować się do symulacji usługi zerowania IGLOO2, wykonaj następujące czynności.
- Wywołaj konstruktora systemu, aby utworzyć blok HPMS. Zaznacz pole wyboru Usługi systemowe HPMS w sekcji Funkcje urządzenia SYS_SERVICES_MASTER BIF. Wszystkie pozostałe pola wyboru pozostaw niezaznaczone. Zaakceptuj ustawienie domyślne na wszystkich innych stronach i kliknij stronę. To instruuje konstruktora systemu, aby udostępnił HPMS_FIC_0 Finish, aby zakończyć konfigurację bloku konstruktora systemu.
- W edytorze HDL Libero SoC wpisz kod HDL dla FSM. W swoim kodzie HDL dla FSM uwzględnij następujące trzy stany.
Stan INIT (stan początkowy)
SERV_PHASE (stan zgłoszenia serwisowego)
RSP_PHASE (stan odpowiedzi usługi)
Poniższy rysunek przedstawia trzy stany FSM.
Rysunek 9 • Trójpaństwowy FSM - W swoim kodzie HDL użyj kodu polecenia „F0″ (Hex), aby wejść w stan zgłoszenia serwisowego ze stanu INIT.
- Zapisz swój HDL file.
- Otwórz SmartDesign, przeciągnij i upuść blok konstruktora systemu najwyższego poziomu oraz blok HDL FSM na płótno SmartDesign. Z katalogu przeciągnij i upuść miękki rdzeń IP CoreSysService na kanwę SmartDesign.
- Kliknij prawym przyciskiem myszy rdzeń soft IP CoreSysServices, aby otworzyć konfigurator i zaznaczyć pole wyboru Usługa zerowania w grupie Usługi bezpieczeństwa danych. Wszystkie pozostałe pola wyboru pozostaw niezaznaczone. Kliknij, aby wyjść OK.
Rysunek 10 • Konfigurator CoreSysServices
- Połącz HPMS_FIC_0 SYS_SERVICES_MASTER BIF bloku konstruktora systemu z AHBL_MASTER BIF bloku CoreSysService.
- Podłącz wyjście swojego bloku HDL FSM do wejścia rdzenia CoreSysService soft IP. Wykonaj wszystkie inne połączenia w kanwie SmartDesign.
Rysunek 11 • Płótno SmartDesign z blokami HDL, CoreSysServices Soft IP i blokami HPMS
9. W kanwie SmartDesign wygeneruj projekt najwyższego poziomu (kliknij prawym przyciskiem myszy > Generuj komponent).
10. W hierarchii projektu view, kliknij prawym przyciskiem myszy projekt najwyższego poziomu i wybierz opcję utwórz Testbench > HDL. Teraz jesteś gotowy do uruchomienia symulacji.
Gdy usługa rozpocznie wykonywanie, zostanie wyświetlony komunikat wskazujący, że zerowanie zostało zakończone w czasie x, jak pokazano na poniższym rysunku.
Rysunek 12 • Okno transkrypcji usługi systemu zerowania IGLOO2
Sterownik systemu przeprowadza zapis AHB na adres z numerem seryjnym. Po zakończeniu usługi RXFIFO COMM_BLK zostanie załadowany z odpowiedzią usługi. Należy zauważyć, że model symulacyjny symuluje zerowanie poprzez zatrzymanie symulacji, a nie zerowanie samego projektu.
Uwaga: Pełną listę kodów poleceń używanych dla różnych usług systemowych zawiera Tabela 1 (wartości poleceń/odpowiedzi usług systemowych) w Podręcznik CoreSysServices v3.1:. lub UG0450: Podręcznik użytkownika kontrolera systemu SmartFusion2 SoC i IGLOO2 FPGA
2.8 Symulacja usługi zerowania SmartFusion2
W tym przewodniku polecenia BFM (opcja 2) służą do uzyskiwania dostępu do kontrolera systemu w celu obsługi systemu.
Polecenia BFM są używane, ponieważ procesor Cortex-M3 jest dostępny w urządzeniu do symulacji BFM. Polecenia BFM umożliwiają bezpośredni zapis i odczyt z COMM BLK, gdy znasz mapowanie pamięci COMM_BLK. Aby przygotować projekt do symulacji usługi zerowania SmartFusion2, wykonaj następujące kroki.
- Przeciągnij i upuść MSS z katalogu na płótno projektowe swojego projektu.
- Wyłącz wszystkie urządzenia peryferyjne MSS z wyjątkiem MSS_CCC, kontrolera resetowania, zarządzania przerwaniami oraz FIC_0, FIC_1 i FIC_2.
- Skonfiguruj zarządzanie przerwaniami, aby używało MSS do przerwań w sieci szkieletowej.
- Przygotuj plik zeroizaton.bfm file w edytorze tekstu lub w edytorze HDL Libero. Twoje zerowanie. bfm powinien zawierać:
- Mapowanie pamięci do COMM BLK (CMBLK)
- Mapowanie pamięci na urządzenie peryferyjne do zarządzania przerwaniami (FIIC)
- Komenda dla zlecenia serwisowego zerowania (“F0” Hex dla zeriozowania)
Byłyampplik numeru seryjnego.bfm file pokazano na poniższym rysunku.
Rysunek 13 • Zeroization.bfm dla symulacji usług systemu zerowania SmartFusion2
5. Zapisz plik zeroization.bfm file w folderze Simulation projektu. użytkownik.bfm
6. Zmodyfikuj plik (znajdujący się w folderze zeroization.bfm Simulation), aby uwzględnić następujący fragment kodu.
include „zeroization.bfm” #include zeroization.bfm file procedura user_main;
drukuj „INFO: Rozpoczęcie symulacji”;
drukuj „INFO: Kod polecenia usługi w systemie dziesiętnym:% 0d”, CMD;
zerowanie połączeń; #powrót do procedury zerowania wywołania
7. W Design Hierarchy wygeneruj Testbench (kliknij prawym przyciskiem myszy najwyższy poziom > Utwórz Testbench > HDL ) i jesteś gotowy do uruchomienia symulacji zerowania SmartFusion2.
Po rozpoczęciu wykonywania usługi wyświetlany jest komunikat informujący o wyzerowaniu urządzenia o godzinie x. Należy zauważyć, że model symulacyjny symuluje zerowanie poprzez zatrzymanie symulacji, a nie zerowanie samego projektu. Okno transkrypcji ModelSim na poniższym rysunku pokazuje, że urządzenie zostało wyzerowane.
Rysunek 14 • Dziennik symulacji serwisowej systemu zerowania SmartFusion2
Dodatek: Rodzaje usług systemowych
W tym rozdziale opisano różne rodzaje usług systemowych.
3.1 Usługi wiadomości symulacyjnych
W poniższych sekcjach opisano różne typy usług komunikatów symulacyjnych.
3.1.1 Błysk*Zamrożenie
Symulacja przejdzie w stan Flash*Freeze, gdy odpowiednie żądanie usługi zostanie wysłane do COMM_BLK z FIC (w przypadku urządzeń IGLOO2) lub Cortex-M3 (w urządzeniach SmartFusion2). Po wykryciu usługi przez kontroler systemu symulacja zostanie zatrzymana i wyświetlony zostanie komunikat informujący, że system wszedł w tryb Flash*Freeze (wraz z wybraną opcją). Po wznowieniu symulacji RXFIFO COMM_BLK zostanie wypełnione odpowiedzią serwisową składającą się z polecenia serwisowego i statusu. Należy zauważyć, że nie ma obsługi symulacji dla wyjścia Flash*Freeze.
3.1.2 Zerowanie
Zerowanie jest obecnie jedyną usługą o wysokim priorytecie w ramach usług systemowych przetwarzanych przez COMM_BLK. Symulacja przejdzie w stan zerowania, gdy tylko COMM_BLK wykryje prawidłowe żądanie usługi. Wykonywanie innych usług zostanie wstrzymane i odrzucone przez kontroler systemu, a zamiast tego zostanie wykonana usługa zerowania. Po wykryciu żądania usługi zerowania symulacja zatrzymuje się i wyświetlany jest komunikat informujący, że system rozpoczął proces zerowania. Ręczne ponowne uruchomienie symulacji po wyzerowaniu jest nieważne.
3.2 Usługi wskaźnika danych
W poniższych sekcjach opisano różne typy usług wskaźnika danych.
3.2.1 Numer seryjny
Usługa numeru seryjnego zapisze 128-bitowy numer seryjny pod adresem podanym w zgłoszeniu serwisowym. Ten 128-bitowy parametr można ustawić za pomocą obsługi symulacji usług systemowych file (patrz strona 22). Jeśli parametr 128-bitowego numeru seryjnego nie jest zdefiniowany w pliku file, zostanie użyty domyślny numer seryjny 0. Po rozpoczęciu wykonywania usługi wyświetlany jest komunikat wskazujący lokalizację docelową oraz numer seryjny. Sterownik systemu przeprowadza zapis AHB na adres z numerem seryjnym. Po zakończeniu usługi RXFIFO COMM_BLK zostanie załadowany z odpowiedzią usługi.
3.2.2 Kod użytkownika
Usługa kodu użytkownika zapisuje 32-bitowy parametr kodu użytkownika w lokalizacji adresu podanej jako część żądania usługi. Ten 32-bitowy parametr można ustawić za pomocą obsługi symulacji usług systemowych file (patrz strona 22). Jeśli parametr 32-bitowy nie jest zdefiniowany w pliku file, używana jest domyślna wartość 0. Po rozpoczęciu wykonywania usługi wyświetlany jest komunikat wskazujący lokalizację docelową i kod użytkownika. Kontroler systemu przeprowadza zapis AHB na adres z parametrem 32-bitowym. Po zakończeniu usługi, RXFIFO COMM_BLK jest ładowane z odpowiedzią usługi, która zawiera polecenie usługi i adres docelowy.
3.3 Usługi deskryptorów danych
W poniższych sekcjach opisano różne typy usług deskryptorów danych.
3.3.1 AES
Wsparcie symulacji dla tej usługi dotyczy tylko przenoszenia oryginalnych danych ze źródła do miejsca docelowego, bez faktycznego przeprowadzania jakiegokolwiek szyfrowania/odszyfrowywania danych. Dane, które mają zostać zaszyfrowane/odszyfrowane oraz struktura danych powinny zostać zapisane przed wysłaniem zgłoszenia serwisowego. Po rozpoczęciu wykonywania usługi wyświetlany jest komunikat informujący o wykonaniu usługi AES. Usługa AES odczytuje zarówno strukturę danych, jak i dane do zaszyfrowania/odszyfrowania. Oryginalne dane są kopiowane i zapisywane na adres podany w strukturze danych. Po zakończeniu usługi polecenie, status i adres struktury danych są przesyłane do RXFIFO.
Notatka: Ta usługa dotyczy tylko danych 128-bitowych i 256-bitowych, a dane 128-bitowe i 256-bitowe mają różne długości struktury danych.
3.3.2 SHA 256
Wsparcie symulacji dla tej usługi dotyczy tylko przenoszenia danych, bez faktycznego przeprowadzania haszowania danych. Funkcja SHA 256 służy do generowania 256-bitowego klucza mieszającego na podstawie danych wejściowych. Dane, które mają być zahaszowane, oraz struktura danych powinny zostać zapisane na ich odpowiednie adresy przed wysłaniem żądania usługi do COMM_BLK. Długość w bitach i wskaźnik zdefiniowane w strukturze danych SHA 256 muszą poprawnie odpowiadać długości i adresowi danych, które mają być haszowane. Po rozpoczęciu wykonywania usługi wyświetlany jest komunikat informujący o wykonaniu usługi SHA 256. Zamiast wykonywania rzeczywistej funkcji, do wskaźnika docelowego ze struktury danych zostanie zapisany domyślny klucz skrótu. Domyślny klucz skrótu to szesnastkowy „ABCD1234”. Aby ustawić klucz niestandardowy, przejdź do sekcji Ustawienia parametrów (patrz strona 23). Po zakończeniu usługi RXFIFO jest ładowane z odpowiedzią usługi składającą się z polecenia usługi, statusu i wskaźnika struktury danych SHA 256.
3.3.3 HMAC
Wsparcie symulacji dla tej usługi dotyczy tylko przenoszenia danych, bez faktycznego przeprowadzania haszowania danych. Dane, które mają być zahaszowane, oraz struktura danych powinny zostać zapisane na ich odpowiednie adresy przed wysłaniem żądania usługi do COMM_BLK. Usługa HMAC wymaga 32-bajtowego klucza oprócz długości w bajtach, wskaźnika źródła i wskaźnika miejsca docelowego. Po rozpoczęciu wykonywania usługi wyświetlany jest komunikat informujący o wykonaniu usługi HMAC. Klucz jest odczytywany, a 256-bitowy klucz jest kopiowany ze struktury danych do wskaźnika docelowego. Po zakończeniu usługi RXFIFO jest ładowany z odpowiedzią usługi składającą się z polecenia usługi, statusu i wskaźnika struktury danych HMAC.
3.3.4 Generowanie DRBG
Generowanie losowych bitów jest wykonywane przez tę usługę. Należy zauważyć, że model symulacyjny nie jest dokładnie zgodny z tą samą metodologią generowania liczb losowych, co krzem. Struktura danych musi być poprawnie zapisana w zamierzonej lokalizacji, zanim żądanie usługi zostanie wysłane do COMM_BLK. Struktura danych, wskaźnik docelowy, długość i inne istotne dane są odczytywane przez kontroler systemu. Usługa generowania DRBG generuje pseudolosowy zestaw danych o żądanej długości (0-128). Kontroler systemu zapisuje losowe dane do wskaźnika docelowego. W symulacji wyświetlany jest komunikat informujący o wykonaniu usługi generowania DRBG. Po zakończeniu usługi polecenie, status i adres struktury danych są przesyłane do RXFIFO. Jeśli żądana długość danych nie mieści się w zakresie 0-128, kod błędu „4” (Max Generate ) zostanie wepchnięty do RXFIFO. Jeśli długość dodatkowych danych nie mieści się w zakresie Request Too Big (0-128), kod błędu „5” (przekroczona maksymalna długość dodatkowych danych) zostanie przesłany do RXFIFO. Jeśli zarówno żądana długość danych do wygenerowania, jak i długość dodatkowych danych nie mieszczą się w zdefiniowanym zakresie (0-128), kod błędu „1” (błąd katastroficzny) jest wysyłany do RXFIFO.
3.3.5 Resetowanie DRBG
Rzeczywista funkcja resetowania jest wykonywana przez usunięcie wystąpień DRBG i zresetowanie DRBG. Po wykryciu zgłoszenia serwisowego symulacja wyświetla komunikat o wykonaniu usługi resetowania DRBG. Odpowiedź, która zawiera usługę i status, jest przekazywana do RXFIFO.
3.3.6 Autotest DRBG
Wsparcie symulacji dla autotestu DRBG w rzeczywistości nie wykonuje funkcji autotestu. Po wykryciu zgłoszenia serwisowego symulacja wyświetli komunikat o wykonaniu usługi autotestu DRBG. Odpowiedź, która zawiera usługę i status, zostanie wypchnięta do RXFIFO.
3.3.7 Instancja DRBG
Obsługa symulacji dla usługi tworzenia instancji DRBG w rzeczywistości nie wykonuje usługi tworzenia instancji. Struktura danych musi być poprawnie zapisana w zamierzonej lokalizacji, zanim żądanie usługi zostanie wysłane do COMM_BLK. Po wykryciu zgłoszenia serwisowego odczytana zostanie struktura i ciąg personalizacyjny zdefiniowany w przestrzeni adresowej MSS. Symulacja wyświetli komunikat informujący o rozpoczęciu wykonywania usługi DRBG Instantiate. Po zakończeniu usługi odpowiedź, która zawiera polecenie usługi, status i wskaźnik do struktury danych, zostanie wypchnięta do RXFIFO. Jeśli długość danych (PERSONALIZATIONLENGTH) nie mieści się w zakresie 0-128, kod błędu „1” (błąd katastroficzny) zostanie wepchnięty do RXFIFO dla statusu.
3.3.8 DRBG Bez instancji
Obsługa symulacji dla usługi bez instancji DRBG w rzeczywistości nie wykonuje usługi bez instancji polegającej na usuwaniu wcześniej utworzonej instancji DRBG, tak jak robi to krzem. Zgłoszenie serwisowe musi zawierać zarówno polecenie, jak i uchwyt DRBG. Po wykryciu zgłoszenia serwisowego uchwyt DRBG zostanie zapisany. Symulacja wyświetli komunikat wskazujący, że usługa DRBG uninstantiate została zainicjowana. Po zakończeniu usługi odpowiedź, która zawiera polecenie usługi, status i uchwyt DRBG, zostanie przekazana do RXFIFO.
3.3.9 Ponowne zaszczepienie DRBG
Ze względu na symulacyjny charakter bloku usług systemowych, usługa reseed DRBG w symulacji nie jest wykonywana automatycznie po każdym wygenerowaniu usługi 65535 DRBG. Struktura danych musi być poprawnie zapisana w zamierzonej lokalizacji, zanim żądanie usługi zostanie wysłane do COMM_BLK. Po wykryciu zgłoszenia serwisowego odczytana zostanie struktura i dodatkowy parametr wejściowy w przestrzeni adresowej MSS. Zostanie wyświetlony komunikat wskazujący, że usługa reseed DRBG została rozpoczęta. Struktura danych musi być poprawnie zapisana w zamierzonej lokalizacji, zanim żądanie usługi zostanie wysłane do COMM_BLK. Po zakończeniu usługi odpowiedź, która zawiera polecenie usługi, status i wskaźnik do struktury danych, zostanie wypchnięta do RXFIFO.
3.3.10 Drzewo kluczy
Rzeczywista funkcja nie jest wykonywana w symulacji dla usługi KeyTree. Struktura danych usługi KeyTree składa się z 32-bajtowego klucza, 7-bitowych danych optype (ignorowane MSB) i 16-bajtowej ścieżki. Dane w strukturze danych powinny być zapisane pod odpowiednimi adresami, zanim zgłoszenie serwisowe zostanie wysłane do COMM_BLK. Po rozpoczęciu wykonywania usługi zostanie wyświetlony komunikat informujący o wykonaniu usługi KeyTree. Zawartość struktury danych zostanie odczytana, klucz 32-bajtowy zostanie zapisany, a oryginalny klucz znajdujący się w strukturze danych zostanie nadpisany. Po tym zapisie AHB wartość klucza w strukturze danych nie powinna się zmienić, ale wystąpią transakcje AHB dla zapisu. Po zakończeniu usługi RXFIFO jest ładowany z odpowiedzią usługi, składającą się z polecenia usługi, statusu i wskaźnika struktury danych KeyTree.
3.3.11 Odpowiedź na wyzwanie
Rzeczywista funkcja, taka jak uwierzytelnianie urządzenia, nie jest wykonywana w symulacji usługi odpowiedzi na żądanie. Struktura danych dla tej usługi wymaga wskaźnika do bufora, aby otrzymać 32-bajtowy wynik, 7-bitowy typ operacji i 128-bitową ścieżkę. Dane w strukturze danych powinny zostać zapisane na odpowiednie adresy przed wysłaniem zgłoszenia serwisowego do COMM_BLK. Po rozpoczęciu wykonywania usługi zostanie wyświetlony komunikat informujący o wykonaniu usługi odpowiedzi na żądanie. Ogólna 256-bitowa odpowiedź zostanie zapisana we wskaźniku znajdującym się w strukturze danych. Domyślny klucz jest ustawiony jako szesnastkowy „ABCD1234”. Aby uzyskać klucz niestandardowy, sprawdź Ustawienia parametrów (patrz strona 23). Po zakończeniu usługi RXFIFO zostanie załadowany z odpowiedzią usługi, składającą się z polecenia usługi, statusu i wskaźnika struktury danych odpowiedzi na wyzwanie.
3.4 Inne usługi
W poniższych sekcjach opisano różne inne usługi systemowe.
3.4.1 Kontrola skrótu
Rzeczywista funkcja ponownego obliczania i porównywania wyciągów wybranych składników nie jest wykonywana dla usługi sprawdzania skrótów w symulacji. To zlecenie serwisowe składa się z poleceń serwisowych i opcji serwisowych (5-bitowy LSB). Po rozpoczęciu wykonywania usługi zostanie wyświetlony komunikat szczegółowo opisujący wykonanie usługi kontroli skrótu wraz z wybranymi opcjami z żądania. Po zakończeniu usługi, RXFIFO zostanie załadowane z odpowiedzią usługi, składającą się z komendy usługi oraz flag sprawdzania skrótu pass/fail.
3.4.2 Nierozpoznana odpowiedź na polecenie
Kiedy nierozpoznane żądanie usługi zostanie wysłane do COMM_BLK, COMM_BLK automatycznie odpowie komunikatem nierozpoznanego polecenia przesłanego do RXFIFO. Wiadomość składa się z polecenia przesłanego do COMM_BLK oraz statusu nierozpoznanego polecenia (252D). Zostanie również wyświetlony komunikat informujący o wykryciu nierozpoznanego zgłoszenia serwisowego. COMM_BLK powróci do stanu bezczynności, czekając na przyjęcie następnego zgłoszenia serwisowego.
3.4.3 Usługi nieobsługiwane
Nieobsługiwane usługi ustawione na COMM_BLK spowodują wyzwolenie komunikatu w symulacji wskazującego, że zgłoszenie serwisowe jest nieobsługiwane. COMM_BLK powróci do stanu bezczynności, czekając na przyjęcie następnego zgłoszenia serwisowego. Kod PINTERRUPT nie zostanie ustawiony, co oznacza, że usługa została zakończona. Aktualna lista nieobsługiwanych usług obejmuje: IAP, ISP, Certyfikat urządzenia oraz Usługę DESIGNVER.
3.5 Wsparcie symulacji usług systemowych File
Aby wesprzeć symulację usług systemowych, tekst file o nazwie „status.txt” może służyć do przekazywania instrukcji dotyczących wymaganego zachowania modelu symulacyjnego do modelu symulacyjnego. Ten file powinien znajdować się w tym samym folderze, z którego uruchamiana jest symulacja. The file może być wykorzystany między innymi do wymuszenia pewnych odpowiedzi na błędy dla obsługiwanych usług systemowych lub nawet do ustawienia niektórych parametrów potrzebnych do symulacji (np.ampplik, numer seryjny). Maksymalna liczba linii obsługiwanych w „status.txt” file wynosi 256. Instrukcje pojawiające się po linii numer 256 nie będą używane w symulacji.
3.5.1 Wymuszanie odpowiedzi na błędy
Użytkownik może wymusić określoną reakcję na błąd dla określonej usługi podczas testowania, przekazując informacje do modelu symulacyjnego za pomocą pliku „status.txt” file, który należy umieścić w folderze, z którego uruchamiana jest symulacja. Aby wymusić odpowiedzi na błędy dla określonej usługi, należy wpisać polecenie i wymaganą odpowiedź w tej samej linii w następującym formacie:ample, do polecenia> ; poinstruować model symulacyjny, aby wygenerował odpowiedź na błąd dostępu do pamięci MSS do usługi numeru seryjnego, polecenie jest następujące.
Serwis: Numer seryjny: 01
Żądany komunikat o błędzie: Błąd dostępu do pamięci MSS: 7F
Powinieneś mieć wpisany wiersz 017F w „status.txt” file.
3.5.2 Ustawienia parametrów
„status.txt” file można również użyć do ustawienia niektórych parametrów potrzebnych w symulacji. Jako byłyample, aby ustawić parametr 32-bitowy dla kodu użytkownika, format linii musi być w następującej kolejności: <32-bitowy KOD UŻYTKOWNIKA>; gdzie obie wartości są wprowadzane w systemie szesnastkowym. Aby ustawić parametr 128-bitowy dla numeru seryjnego, format linii musi być w następującej kolejności: <128-bitowy numer seryjny [127:0]> ; gdzie obie wartości są wprowadzane w systemie szesnastkowym. Aby ustawić parametr 256-bitowy dla klucza SHA 256; format linii musi być w następującej kolejności: <256-bitowy klucz [255:0]>; gdzie obie wartości są wprowadzane w systemie szesnastkowym. Aby ustawić parametr 256-bitowy dla klucza odpowiedzi na wezwanie, format linii musi być w następującej kolejności: <256-bitowy klucz [255:0]>;
gdzie obie wartości są wprowadzane w systemie szesnastkowym.
3.5.3 Priorytet urządzenia
Usługi systemowe i COMM_BLK wykorzystują system o wysokim priorytecie. Obecnie jedyną usługą o wysokim priorytecie jest zerowanie. Aby wykonać usługę o wysokim priorytecie, podczas gdy inna usługa jest wykonywana, bieżąca usługa jest zatrzymywana, aw jej miejsce zostanie wykonana usługa o wyższym priorytecie. COMM_BLK odrzuci bieżącą usługę w celu wykonania usługi o wyższym priorytecie. Jeśli wiele usług o niższym priorytecie zostanie wysłanych przed zakończeniem bieżącej usługi, usługi te zostaną umieszczone w kolejce w ramach TXFIFO. Po zakończeniu bieżącej usługi zostanie wykonana następna usługa w TXFIFO.
Microsemi nie udziela żadnych gwarancji, oświadczeń ani gwarancji dotyczących informacji zawartych w niniejszym dokumencie lub przydatności swoich produktów i usług do jakiegokolwiek konkretnego celu, a także nie ponosi żadnej odpowiedzialności wynikającej z zastosowania lub użytkowania jakiegokolwiek produktu lub obwodu. Produkty sprzedawane w ramach niniejszej Umowy oraz wszelkie inne produkty sprzedawane przez Microsemi zostały poddane ograniczonym testom i nie powinny być używane w połączeniu ze sprzętem lub aplikacjami o znaczeniu krytycznym. Wszelkie specyfikacje wydajności są uważane za wiarygodne, ale nie są weryfikowane, a Kupujący musi przeprowadzić i zakończyć wszystkie testy wydajności i inne testy produktów, samodzielnie i razem z dowolnymi produktami końcowymi lub zainstalowanymi w nich. Kupujący nie będzie polegał na żadnych danych i specyfikacjach wydajności lub parametrach dostarczonych przez Microsemi. Obowiązkiem Kupującego jest samodzielne określenie przydatności dowolnych produktów oraz ich przetestowanie i weryfikacja. Informacje dostarczone przez Microsemi są dostarczane „tak jak są, gdzie są” i ze wszystkimi wadami, a całe ryzyko związane z takimi informacjami jest w całości po stronie Kupującego. Microsemi nie przyznaje, w sposób wyraźny ani dorozumiany, żadnej stronie żadnych praw patentowych, licencji ani żadnych innych praw własności intelektualnej, czy to w odniesieniu do samych takich informacji, czy czegokolwiek opisanego w takich informacjach. Informacje zawarte w tym dokumencie są własnością firmy Microsemi i firma Microsemi zastrzega sobie prawo do wprowadzania zmian w informacjach zawartych w tym dokumencie lub w dowolnych produktach i usługach w dowolnym czasie bez powiadomienia.
Microsemi, spółka zależna w całości należąca do Microchip Technology Inc. (Nasdaq: MCHP), oferuje kompleksowe portfolio rozwiązań półprzewodnikowych i systemowych dla przemysłu lotniczego i obronnego, komunikacji, centrów danych i rynków przemysłowych. Produkty obejmują wysokowydajne i odporne na promieniowanie analogowe układy scalone z sygnałem mieszanym, FPGA, SoC i ASIC; produkty do zarządzania energią; urządzenia do pomiaru czasu i synchronizacji oraz rozwiązania precyzyjnego pomiaru czasu, wyznaczające światowy standard czasu; urządzenia do przetwarzania głosu; rozwiązania radiowe; elementy dyskretne; korporacyjne rozwiązania do przechowywania i komunikacji; technologie bezpieczeństwa i skalowalne zabezpieczenia anty-tampprodukty; Rozwiązania Ethernetowe; Układy scalone Power-over-Ethernet i urządzenia typu midspan; a także niestandardowe możliwości projektowania i usługi. Microsemi ma siedzibę główną w Aliso Viejo w Kalifornii i zatrudnia około 4,800 pracowników na całym świecie. Dowiedz się więcej na www.microsemi.com.
Siedziba Microsemi
Jedno Przedsiębiorstwo, Aliso Viejo,
CA 92656 Stany Zjednoczone
W USA: +1 800-713-4113
Poza USA: +1 949-380-6100
Sprzedaż: +1 949-380-6136
Faks: +1 949-215-4996
E-mail: sprzedaż.support@microsemi.com
www.microsemi.com
© 2018 Mikrosemi. Wszelkie prawa zastrzeżone. Microsemi i logo Microsemi
są znakami towarowymi firmy Microsemi Corporation. Wszystkie inne znaki towarowe i usługi
znaki są własnością ich odpowiednich właścicieli.
Dokumenty / Zasoby
![]() |
Symulacja usług systemowych Microsemi UG0837 IGLOO2 i SmartFusion2 FPGA [plik PDF] Instrukcja użytkownika UG0837, UG0837 Symulacja usług systemowych IGLOO2 i SmartFusion2 FPGA, Symulacja usług systemowych IGLOO2 i SmartFusion2 FPGA, Symulacja usług systemowych SmartFusion2 FPGA, Symulacja usług systemowych FPGA, Symulacja usług |