FPGA Debugging - Peripheral Register View

Frozen Content

Many of the peripheral components available for use in an FPGA design possess internal registers that are accessible by you, the designer. Interaction with these registers is typically done through the embedded code, once the FPGA design is programmed into the target device and the code is running on a processor therein. Any changes to required register values means either accessing the relevant memory space for the processor, or editing at the code level and recompiling/re-downloading – both of which can be cumbersome, especially when you can't see the changes made so easily and instantly.

Altium Designer provides a view with which to interact with a peripheral component's internal registers during the development phase of your embedded design – the Peripherals panel. Accessible during debug sessions while the processor is paused, the panel gives you access "under the bonnet" as it were – an intelligent 'window' through which to view the state of the peripheral. The panel provides you the ability to not only read the current state of the registers, but also make any changes, writing new values on-the-fly with immediate effect.

Access to the Peripherals panel is made from the menu associated with the Embedded panel-access button – located at the bottom-right of the main design window, once a debug session is entered.

Streamline the debugging of your design using the Peripherals panel - an intelligent portal that allows you to engage with peripheral internal registers at a higher, more dynamic level.

Panel Content

The following columns of information can be displayed in the panel. Control which information is presented through the right-click»Columns context sub-menu.

  • Peripheral – this column displays all peripherals in the current design that possess user-accessible internal registers. In hierarchical style, the top-level is the designator for the peripheral, as defined on the schematic/OpenBus document. The second level consists of the registers themselves. A third level is used if interaction with a register is at the individual bit-level.
  • Address – this column displays the hexadecimal address for each register in the processor's address space.
  • Width – this column displays the size of each register, in bits.
  • Decimal – this column displays the current value for the register (or bit thereof) in decimal format.
  • Hexadecimal – this column displays the current value for the register (or bit thereof) in hexadecimal format.
  • Binary – this column displays the current value for the register (or bit thereof) in binary format.
  • Char – this column displays the current value for the register in character format. Note that bit-level register entries are not displayed in this format.
  • Symbolic – this column displays the current value for the register (or bit thereof) in a symbolic format.
  • Description – this column gives descriptions for the peripherals, their internal registers, and the individual bits (where applicable).

Editing Register Values

Of all the columns of information presented to you in the panel, only the Decimal, Hexadecimal, Binary and Symbolic columns are editable. Editing in one format will apply the corresponding change in the other three formats.

Simply click on a field for the register, or individual bit thereof, whose value you wish to change. The top-level register value can be changed simply by typing the new value. For an individual bit of a register – such as a control register bit – enter the new value '0' or '1' directly (when editing decimal, hexadecimal or binary format), or choose the required new value from the associated drop-down list (when editing symbolic format). The new value is loaded immediately into the register, upon pressing Enter.

The modified register value will be highlighted in red text, as will any entries for other registers affected by the change. This will revert to normal black text upon making a subsequent change, or when closing and re-accessing the panel.

Write new register values in a more streamlined, efficient manner - a valuable addition to your debugging arsenal.

Copy to Clipboard

Information in the panel can be copied to the clipboard for use in other applications. Copy commands are available from the right-click menu and allow you to copy the currently selected information, or all information. When choosing to copy specific information, you can select:

  • One or more top-level peripheral entries.
  • One or more secondary-level register entries. Multiple registers can only be selected if they belong to the same peripheral.
  • One or more third-level register bit entries. Multiple bits can only be selected if they belong to the same register.

Copy information from the Peripherals panel to the clipboard, then paste in an external application as required.

Information can only be copied from the panel. You can not modify the information externally and paste it back in to the panel.

You are reporting an issue with the following selected text and/or image within the active document: