Od modelu do FPGA - generacja IP Core na układy Intel (rodziny CE4 i inne) z użyciem HDL Codera część 2

 

Autor opisuje proces rozbudowy poprzedniego rozwiązania o przetwornik analogowo-cyfrowy oraz użycia go do sterowania urządzeniami (np. silnikiem DC) za pomocą sygnału PWM z  pełnym wykorzystaniem możliwości środowiska MATLAB i Simulink w zakresie konfigurowania i komunikacji z układami FPGA.

 

05.03.2025 r. | mgr inż. st. mech. okręt. Arkadiusz Nerć – Politechnika Morska w Szczecinie


O autorze

Autorem artykułu jest Arkadiusz Nerć, asystent na Politechnice Morskiej w Szczecinie, pracujący na Wydziale Mechatroniki i Elektrotechniki w Katedrze Automatyki Okrętowej. Wydział ten, utworzony 1 października 2019 r., bazuje na dokonaniach dawnego Instytutu Elektrotechniki i Automatyki Okrętowej. Działające w jego strukturach Katedra Elektrotechniki i Energoelektroniki, Katedra Automatyki Okrętowej oraz Katedra Robotyki i Sterowania tworzą nowoczesną jednostkę badawczo-dydaktyczną, dostosowaną do wymogów współczesnego rynku technicznego szkolnictwa wyższego. Pracownicy katedr czynnie uczestniczą w licznych projektach badawczych, które skupiają się na wykorzystaniu zaawansowanych systemów energoelektronicznych w układach energetycznych statków i innych obiektów pływających. Prace te mają charakter zarówno symulacyjny, jak i laboratoryjny, a ich wyniki są regularnie publikowane w czasopismach, takich jak IEEE.

Arkadiusz Nerć posiada bogate doświadczenie w pracy ze środowiskiem MATLAB & Simulink, także w zakresie układów FPGA i automatyki, co znacząco wzbogaca kontekst jego projektów o zaawansowaną wiedzę z tych dziedzin. Jako wykładowca, zajmuje się kształceniem przyszłych inżynierów, którzy mogą pracować zarówno na statkach morskich, jak i w lądowych firmach serwisowych w branżach elektrycznej, elektryczno-automatycznej i elektryczno-mechanicznej.


Opis problemu

Projekt został zainicjowany w celu wykorzystania płytki rozwojowej FPGA Altera Cyclone IV EP4CE6 Waveshare 6483 na potrzeby zajęć dla studentów oraz w pracach badawczych. Jego głównym celem jest wdrożenie różnorodnych algorytmów na układach FPGA, które mogą znaleźć zastosowanie w automatyce okrętowej, a dodatkowym, jak opisano we wcześniejszym artykule - dodanie zewnętrznych elementów, takich jak m.in. przetwornik analogowo-cyfrowy wraz z dostarczonym kodem pozwalającym na jego obsługę. Wyzwaniem była konfiguracja środowiska tak, aby cały proces implementacji wykonać z poziomu środowiska MATLAB i Simulink oraz narzędzia HDL Coder.

 

AD7476A- przetwornik analogowo-cyfrowy - Digilent, Inc.

Żródło: https://www.digikey.pl/

 

Rozwiązanie problemu

W celu rozwiązania problemu z generowaniem IP Core dla modelu FPGA core EP4CE6 przy użyciu HDL Codera, podjęto kilka kroków. Najpierw autor zapoznał się z dokumentacją MathWorks dotyczącą definiowania i rejestrowania własnych płyt oraz projektów referencyjnych dla układów Intel SoC oraz instrukcjami dotyczącymi przepływu pracy dla generowania IP Core bez procesora ARM, co było kluczowym elementem do zrozumienia całego procesu.

Pełna obsługa wsparcia dla urządzeń FPGA wybranego producenta została zapewniona przez darmowy pakiet wsparcia „HDL Coder Support Package for Intel FPGA and SoC Devices”.  Na podstawie dostępnego przykładu dla układu DE1SOC autor stworzył dedykowany plugin do posiadanego układu FPGA, np. EP4CE6E22C8N. Dzięki temu możliwe było dostosowanie i zoptymalizowanie narzędzi MATLAB & Simulink do pracy z wybraną płytką. 

 

Kroki niezbędne do rozwiązania problemu:

1.    Zapoznanie z dokumentacją w celu zrozumienia procesu wykorzystania własnego kodu i integracji z generowanym przez HDL Coder.

 

2.    Hardware

 

AD7476A- podłączenie do FPGA

 

Żródło: https://www.digikey.pl/

 

AD7476A- podłączenie do FPGA

3.    Generacja kodu i programowanie układu z poziomu asystenta HDL Workflow Advisor dla nowego urządzenia:

 

 

Efekt końcowy:

Sygnał napięciowy WE i sygnał PWM WY

Podsumowanie

Projekt zakończył się sukcesem - kod z modelu Simulinka został wygenerowany, skompilowany i wgrany na układ w postaci bitstream'u, który zadziałał zgodnie z założeniami. Wykonanie każdego etapu pracy od zamodelowania algorytmu, aż po zaprogramowanie układu oraz komunikację z układem w czasie rzeczywistym zostało zrealizowane w środowisku MATLAB i Simulink (wykorzystano gotowy kod VHDL przetwornika ze strony https://forum.digikey.com/t/adc-ad7476a-pmod-controller-vhdl/12894), co znacznie przyspieszyło pracę i pozwoliło uniknąć ewentualnych błędów przy przenoszeniu danych do innego środowiska.

Wyniki pokazują, że pełne wykorzystanie narzędzia Simulink do programowania FPGA z obsługą komunikacji i zewnętrznych I/O do zewnętrznych urządzeń jest możliwe i efektywne. Środowisko firmy MathWorks wspiera rozbudowę rozwiązań o niestandardowe komponenty sprzętowe i pozwala w łatwy sposób dodać je do listy wspieranych urządzeń.

Autor rozważa przetestowanie innych rodzin układów w komunikacji PC z elementami wykonawczymi i pomiarowymi z wykorzystaniem  narzędziem HDL Coder.

 

mgr inż. st. mech. okręt. Arkadiusz Nerć – Politechnika Morska w Szczecinie

Treść