.. _SystemOverview: ===== Guide ===== * UltraZohm is a powerful real-time computation unit * The UltraZohm is used to control power electronics and electrical drives * The UltraZohm is work in progress * Funded by `BMBF/BMFTR project KI-Power `_ .. _UltraZohmFront: .. figure:: front_lowres.png :width: 400px :align: center Front of the UltraZohm. Requirements of the UltraZohm ***************************** Development goals ----------------- Computational power The use of more complex control algorithms based on model predictive control and/or artificial intelligence, as well as the increased use of wide-band gap power electronics, require a real-time computing unit with sufficient processing power. The necessary processing power is provided by the UltraZohm. A heterogenous SoC is used due to the diverse requirements of different applications and control algorithms. The UltraZohm project uses the `Xilinx Zynq UltraScale+ MPSoC `_ on a SoM by `Trenz Electronics `_. Hard real-time *Fast* calculations are not sufficient for the control of power electronics which require hard real-time, i.e. the system must meet the real-time at all times. Missing the real-time results in malfunction, undefined behavior or failure of the system. The UltraZohm is designed to meet these hard real-time requirements. Control algorithms for power electronics and electrical drives typically require a control time of :math:`5 \mu s` to :math:`100 \mu s`. Modularity The UltraZohm is modular in terms of software and hardware. The system can be used with different devices within the UltraScale MPSoC family. Adapter cards are used as a flexible interface for analoge and digital signals such as ADC's and gate signals for power electronics. Software modularity is achieved by using encapsulated design patterns combined with IP cores on the FPGA. Usability We aim to create a system with a high usability. The UltraZohm is **novice friendly** since there are a lot of different tutorials, existing IP cores and adapter cards that are used by the community. Therefore, a new user does not have to start from scratch. The UltraZohm is **expert friendly** since there are **no black boxes** in the system. Due to project being open source, every user can investigate every line of code, every IP core and the complete signal chain in the schematics. Furthermore, **everybody** is encouraged to :ref:`contribute ` to the UltraZohm and improve the system! Requirements ------------ The following requirements are derived from the development goals of the UltraZohm. .. csv-table:: table :file: requirements.csv :widths: 10 10 10 10 :header-rows: 1 Overview of the project *********************** The UltraZohm project is hosted on a bitbucket `repository `_. The repository is structured in the following way, with some important files highlighted. The source of this documentation is located in ``ultrazohm_sw/docs/source/``. The online version (docs.ultrazohm.com) is always the documentation of the current state of the ``main`` branch. :: ultrazohm_sw/ ├── docs/ | ├── source/ | ├── requirements.txt | └── Makefile ├── ip_core/ ├── javascope/ ├── tcl_scripts/ | ├── vivado_export_xsa.tcl │ ├── vitis_generate_UltraZohm_workspace.tcl │ └── vitis_update_platform.tcl ├── vitis/ | ├── software/ │ └── vivado_exported_xsa | └── zusys_wrapper.xsa └── vivado/ └── project/ └── ultrazohm.xpr Simple block diagram of UltraZohm --------------------------------- .. raw:: html :file: block_diagram_simple.svg Components of UltraZohm ----------------------- .. mermaid:: graph TD UltraZohm --> Cabinet UltraZohm --> Carrier-Board UltraZohm --> Adapter UltraZohm --> SoM Interfaces of Carrier-Board --------------------------- .. mermaid:: graph TD Carrier-Board --> Power("Power Supply") Power --> p_in("Power Input") Power --> p_out("Power Output") Carrier-Board --> SoM("SoM") Carrier-Board --> analog("Analog (A1..A3)") Carrier-Board --> dig("Digital (D1..D5)") Carrier-Board --> JTAG JTAG --> CPLD JTAG --> MPSoC Carrier-Board --> SD-Card Carrier-Board --> PS_GPIO("PS GPIO") Carrier-Board --> Communication Communication --> SPI Communication --> Serial Communication --> Ethernet Communication --> CAN Interfaces of Cabinet --------------------- .. mermaid:: graph TD Cabinet --> Rack Cabinet --> Power-Supply Power-Supply --> Line-Voltage-Plug Cabinet --> Front-Plane Front-Plane --> Communication Front-Plane --> Power-ON Front-Plane --> Button Front-Plane --> LED LED --> LED1 LED --> LED2 LED --> LED3 LED --> LED4 Button --> SW1 Button --> SW2 Button --> SW3 Button --> External-Stop Communication --> Ethernet Communication --> CAN Communication --> JTAG .. toctree:: :maxdepth: 1 :caption: Project useCases/useCases project_structure/project_structure infrastructure/infrastructure how_to_guides/how_to_guides .. toctree:: :maxdepth: 1 :caption: Platform platform_architecture/platform_architecture apu_software/apu_software rpu_software/rpu_software vivado_framework/vivado_framework CPLD/cpld .. toctree:: :maxdepth: 1 :caption: Code generation code_generation/embedded_coder/embedded_coder code_generation/hdl_coder/hdl_coder code_generation/vivado_hls/vivado_hls .. toctree:: :maxdepth: 1 :caption: Javascope gui/install gui/network gui/javascope gui/dataviewer/dataviewer .. toctree:: :maxdepth: 1 :caption: How to guides how_to_guides/howToDocs/howToDocs how_to_guides/cil/cil how_to_guides/vivado/vivado how_to_guides/binaryExport/binaryExport how_to_guides/how_to_create_ip_core_driver/how_to_create_ip_core_driver how_to_guides/how_to_debug_ultrazohm/how_to_debug_ultrazohm how_to_guides/vitis/vitis how_to_guides/how_to_multi_axis_foc/how_to_multi_axis_foc how_to_guides/how_to_create_framework_functions_from_embedded_coder/how_to_create_framework_functions_from_embedded_coder how_to_guides/how_to_set_encoder_offset/how_to_set_encoder_offset how_to_guides/Porting_uz_Framework_to_KR260/Porting_uz_Framework_to_KR260