JavaScope#

This page documents the UltraZohm GUI in ultrazohm_sw/javascope.

Note

The GUI layout changed, but the Vitis-side integration is unchanged. Customize javascope.h and javascope.c as described in JavaScope Customization. For the legacy GUI, see JavaScope Legacy GUI (deprecated). For updating legacy GUI files in older branches, see the legacy JavaScope upgrade note.

Folder contents#

The javascope folder contains:

  • javascope_run.bat starts the GUI on Windows.

  • UZ_GUI.jar is the GUI binary.

  • properties.ini contains the startup configuration that is loaded when the GUI starts.

  • JS_plot_data.m is a MATLAB script that reads and plots recorded data.

  • dataviewer.py and the related Python helper scripts support offline analysis of recorded data.

  • lib contains the required Java libraries.

  • Log_yyyy-mm-dd_hh-mm-ss.csv is created when the logger is enabled.

../../_images/gui0.png

Fig. 84 JavaScope folder structure#

GUI source and build changes are maintained in the JavaScope source repository. To run the binary in uz_sw, install JDK 21 or higher.

Basics#

At startup, JavaScope uses a Full HD window and falls back to fullscreen if required. It then attempts to connect to the IP address in properties.ini. After connection, it applies the preconfigured channel selection from properties.ini.

../../_images/overview_numbered.png

Fig. 85 JavaScope overview#

  1. The header contains scope, trigger, and logging controls.

  2. The plot displays up to 20 fast channels.

  3. The right side contains the Setup Scope, Control, and MoreSendAndReceive tabs.

  4. The footer shows runtime status, connection state, sampling rate, and throughput.

Header controls#

../../_images/header.png

Fig. 86 JavaScope header controls#

Scope#

  • Run/Stop starts or pauses acquisition display updates.

  • Time base changes the displayed time window by plotting every Nth sample.

  • fixAxis disables automatic axis rescaling during acquisition.

  • Save Settings writes trigger, channel, scaling, offset, and sampling-rate settings to properties.ini.

Trigger#

  • Trigger channel selects the trigger source.

  • Rising or Falling selects the signal edge.

  • Trigger enable enables or disables triggered acquisition.

  • Level sets the trigger threshold.

  • PreTrig. sets the fraction of pre-trigger data in the capture window.

  • SingleShot arms one triggered capture and freezes the display after the next valid event.

Logging#

  • Logging OFF/ON starts or stops writing log files.

  • Log FastData includes fast scope samples in the log file.

  • Log SlowData includes SlowData values in the log file. All received SlowData is logged.

  • ext. log trigger allows the UltraZohm software to control logging via its status bit.

  • Log every N reduces the logging rate of FastData by saving only every Nth sample group. If enabled, SlowData is logged at full rate.

  • Log state shows whether logging is active.

  • Each logging start creates a new Log_yyyy-mm-dd_hh-mm-ss.csv file.

Description of tabs and controls#

Setup Scope tab#

The Setup Scope tab selects displayed signals and adjusts per-channel vertical scaling.

../../_images/setup_scope.png

Fig. 88 JavaScope Setup Scope tab#

Each of the 20 scope channels provides the following options:

  1. Enable toggles by clicking on CHx. Colored when active, gray when disabled.

  2. Signal selection. Use num-pad for quick access in the drop-down menu.

  3. Scaling with direct entry and +/- buttons. The displayed value is scaled by 1/scaling.

  4. Offset entry to shift the signal on the y-axis.

  5. Enable All and Disable All for global channel visibility control.

Available signal names are parsed from JS_ObservableData in javascope.h. On connection, the GUI sends the preselected channel configuration automatically. Channel selection changes are applied immediately while connected. Scaling and offset are applied when you press Enter or move focus away from the input field.

Control tab#

The Control tab is the main interface for state-machine control, user inputs, and selected SlowData.

../../_images/control_panel.png

Fig. 89 JavaScope Control tab#

  1. Enable System, Enable Control, and STOP map to the front-panel state-machine buttons. For details on the R5 states and transitions, see R5 state machine.

    Note for ≥Rev05-based UltraZohm systems

    With ≥Rev05 carrier boards, the STOP and Enable buttons on the front panel affect functions beyond the UZ software and must be considered when using JavaScope. See the “Warning” info-box in the “Powerbutton Functionality” documentation of the Rev05 carrier board for details.

  2. Ready, Running, Error, and User map to the front-panel status LEDs. If an assert occurs in the UltraZohm, JavaScope disconnects, and the Error LED may only be visible on the hardware front panel.

  3. The receive_fields

    1. Selected user-defined SlowData values can be shown more prominently here than in the SlowData table.

    2. For configuring which values are shown here, see JavaScope Customization.

    3. If not all of the up to 20 channels are required, they can be set to JSSD_FLOAT_ZEROVALUE.

  4. The send_fields

    1. 20 values are available as references or setpoints for the user application.

    2. After entering a value, press enter or the set button to send it to the R5. In ipc_ARM.c, you can define how the value is used in the application.

    ../../_images/ipcSend.png

    Fig. 90 Part of ipc_ARM.c code path where send_field_x values are received#

  5. The mybuttons

    1. In addition to the send_field values, eight user buttons are available. In ipc_ARM.c, you can define what happens when the buttons are pressed.

    2. Each button has a status indicator below it. This indicator can also be set in ipc_ARM.c to provide feedback for button actions. See /* Bit 4 - My_Button_1 */ in the right picture below for an example.

    ../../_images/buttons1.png

    Fig. 91 left: further use of the buttons; right: control of the button status indicators#

  6. The SlowData table lists all parsed SlowData entries from javascope.h (see JavaScope Customization). Rows in the SlowData table can be copied via Ctrl+C or the context menu. The more values are displayed, the longer it takes until they are updated.

  7. Error Reset and the error code field provide fault handling.

    1. The behavior of Error Reset must also be programmed in ipc_ARM.c.

    2. To send error codes to the GUI for display in the error code field, use the SlowData variable JSSD_FLOAT_Error_Code.

    Warning

    Error detection and handling have to be implemented by the user. The GUI just provides an interface.

Vitis-side user C-code integration is unchanged: send_field_x values, receive_field_x mappings, error-code handling, button labels, and the eight my buttons are configured in javascope.h and javascope.c.

More Send and Receive tab#

The MoreSendAndReceive tab extends Control with the remaining receive and send fields.

../../_images/more_send_receive.png

Fig. 92 JavaScope More Send and Receive tab#

  1. receive_field_7 to receive_field_20.

  2. send_field_7 to send_field_20.

  3. A duplicated control/status block for common state-machine actions.

This tab is intended for operation with more than six receive or send fields.

Note

If ScopeDevTab = 1 is set in properties.ini, an additional ScopeDev tab is shown. It contains developer tools such as the pause-ack toggle, throughput readout in MBit/s, and the lifecheck monitor for packet-gap detection.

Configuration and customization#

Customization is documented in JavaScope Customization.