Table of Contents |
---|
List of figures
NXScope NxScope capture process
NXBoard NxBoard GUI scope menu
example 1 functional block diagram
...
display caused by an erroneous sample
...
NxScope Overview
NXscope NxScope is an embedded logic analyser . It enables enabling you to sample a collection of internal data synchronously with a user’s clock (rising edge sensitive) record samples of your design’s internal signals at the rising clock edge and analyse the sampled results in a waveform viewer.
NXscope is NxScope implements a NanoXplore IP Core . It is generated by using the NXcore generator NxCore Generator
The capture process is controlled by JTAG via through the ANGIE USB-JTAG adapter with commands supported by NXbase2 via NxBase2 software or NXboard the NxBoard GUI
The results can be are displayed and analysed with either of the following toostools:
The ModelSim Waveform Viewer ( using a simple simplified testbench to read the .txt TXT file generated by NXcore generator and display the waveforms)GTKWave (free waveform display tool)the NxCore generator
The GTKWave Waveform Viewer (free software)
Note |
---|
Note: The |
...
NxScope logic analyser is |
...
implemented in the FPGA |
...
logic resources |
...
(as available) as tile logic and RAM blocks. Its implementation must also meet the user’s clock period as well as other potential |
...
user constraints. |
Anchor | ||||
---|---|---|---|---|
|
...
The NXscope NxScope IP Core is made of 3main comprises 3 main functional blocks:
The Trigger Engine
A configurable moduleA configurable module modu for detecting the trigger conditions to launch the capture samples captureThe Capture Unit
This A configurable module stores to store the captured samples according to trigger conditionsThe JTAG Interface
Enablesthe Activates the trigger engine to start and reads the captured samples to send them via and transfers captured samples to the workstation through the ANGIE USB-JTAG adapter to the computer using NXbase2 via NxBase2 software or the NXboard NxBoard GUI
...
NxScope Features
...
Trigger Features
1 to 32 trigger input lines
Optional trig_immediate input
Single or dual sequential trigger conditions
Level-based (basic) or level- and edges-based (basic_and_edges) triggertriggers
Capture
...
Settings
Capture width: 2 to 240 input lines
Capture depth: 2K, 4K, 6K, 8K, 12K, 24K or 48K
Programmable number of samples stored before trigger condition
Optional Windowing capture by windows mode (the capture depth is sub-divided in multiple sub- windows)
Optionally stores the TRIG_PULSEtrigger pulse
Optionally stores the Window number, if applicable
NXscope NxScope trigger and capture conditions are flexible:
Up to 32 trigger lines
Single or two-level trigger conditions
Basic trigger conditions on ‘0’, ‘1’ or ‘X’ on each one of the trigger lines
Edge detection (rising, falling or both) on up to 32 trigger lines
User’s defined pre-trigger storage (not available when two-level trigger is selected)
Trig on condition(s)
Trig immediate (no condition)
Up to 240 sampled signals
Using NXscope NxScope is typically a four 4-step process which consists of:
...
describes in the sections below.
Step 1: Generate the NxScope IP Core
The NXscope NxScope IP Core is generated by using the NXcore generator NxCore Generator tool. It can then be instantiated in the user’s design
All trigger triggers and data sampling parameters are defined by the user . This includesincluding:
Number of data lines to be sampled (up to 240)
Sampling depth
Trigger conditions
...
o Post or pre-trigger storage: The user can specify the number of samples to be stored before the trigger condition has been met.
...
Info |
---|
Note |
...
: In the current version, all settings including trigger conditions are |
...
static. Any |
...
modifications require re-generation of the |
...
NxScope IP Core |
...
and design implementation |
...
Next generation versions will provide higher flexibility and more advanced features.
...
Step 2: Instantiate the Generated NxScope IP Core in your
...
Design
After generating its customized NXscope your customised NxScope IP Core, the user you must instantiate it in its design, and launch the implementation and bitstream generationyour design.
The I/O signals to be connected are as follows:
Inputs
...
Name | Type | Description |
CLK : in | std_logic; | User’s clockUser Clock |
ENA : in | std_logic; | Enables the clock edges for all NXscope NxScope internal logic, including trigger and capture. Can be tied to ‘1’ if not required.used |
TRIG_LINES : in | std_logic_vector | User’s User defined (1 to 32 bits-bit) |
DATA_LINES : in | std_logic_vector | User’s User defined (2 to 240 bits-bit) |
TRIG_IMMEDIATE : in | std_logic; | Can be optionally used to resume a pending capture when the trigger condition can’t be met. Starts an immediate capture when going high. |
...
Outputs
The outputs of NXscope NxScope IP Core can be used optionally as status information.
Name | Type | Description |
TRIG_ARMED : out | std_logic; | Can be optionally used to monitor the NXscope NxScope internal status |
DONE : out | std_logic; | Goes high High when the capture in internal memory is donecomplete. Can be optionally used as status bit. NXscope software starts reading the memory contents on a low to high transition on DONE signal.-bit |
FIRST_LEVEL_TRIG_OK : out | std_logic;Optional status | High after the first-level trigger condition has been met. Can be used as status-bit to inform about the current state of the analyzer analyser when a two-level trigger is selected . Goes high after the first level trigger condition has been met. Can be directed and, for example, connected to a LED . |
CURRENT_CAPTURE_SET : out | std_logic_vector(3 downto 0); | Optionally used as status bits. Available exclusively in “Multiple windows” mode. Can be used to monitor the progress of the capture windows.Those These 4 bits form a counter that is incremented by one each time in single steps whenever a new window capture is started. Beyond 15 windows, the counter wraps around. |
JTAG pins:
Can be used as status bits to monitor the progress of the capture windows. |
JTAG Pins
The captured samples are read by “nxbase2” NxBase2 or “nxboard” NxBoard software , via the ANGIE USB-JTAG adapter.
Info |
---|
Note |
...
: JTAG pins are buried in the |
...
NxScope IP Core |
...
there is no need to directly refer to JTAG pins |
...
Step 3: Implement the Design and Generate the Bitstream
Synthesise, Place and Route your design and generate
...
your Bitstream using Impulse or nxpython as described in the Impulse Design Flow manual
Check the reports to ensure timing constraints are met
...
Step 4: Launch NxBase2/
...
NxBoard and
...
In order to sample the data lines, you must use the Angie USB-JTAG adapter, and the NXbase2 software or NXboard GUI.
See chapter 3 for basic instructions referring to NXbase2 and/or NXboard commands.
...
NxScope Commands
Using NxBase2 software or the NxBoard interface, follow these steps:
Load your Bitstream
Start the sample capture
Retrieve the captured data
See the NxBase2 User Manual for more detailed information about the available NxScope commands please refer to the NXbase2 user’s manual.
Once the data has been captured, an ACSII file is generated (.in TXT or . VCD ), and the format).
The results can be analyzed analysed in the ModelSim waveform viewer Waveform Viewer (.TXT result file), with a simple testbench or with the free GTKwave waveform display viewing software using the . VCD result file.
...
Create a Custom NxScope IP Core
The NXscope NxScope generator is a GUI where you can define all available parameters of the logic analyzer.
In order to launch the NXscope NxScope generator, launch first the NXcore GUI (by typing the “nxcore” command at the prompt, and then, select the “NXscope” “NxScope” icon on the GUI left top side.
The next figure is a screen capture of the NXcore / NXscope NxScope generator GUI. All customizable parameters are available in this single page.
Anchor | ||||
---|---|---|---|---|
|
...
When all NXscope NxScope parameters are set, the IP Core can be generated by pressing the « generate » command, in the bottom-right part of the window.
...
Entity Name
The NXscope NxScope generator generates a VHDL encrypted file. The entity name is entered here. The VHDL path and file name are chosen with the “Generate” (bottom-right of the window).
...
The generated VHDL file includes a header (not encrypted) where the user can see the ports names, modes, and width.
Capture
...
Configuration Input line count: integer range 2 to 240
Up to 240 internal signals can be sampled and captured.
Capture_depth: integer range 2048 to 49152
Defines the capture depth of the DATA_LINES sampled and stored on internal RAM block(s). The maximum depth is 48K.
...
A single memory block can store up to 2048 x 24-bit words.
With 10 RAM blocks up to 24K x 20-bit words can be stored.
Capture_mode: “Pre-trigger” or “Multiple windows”
This setting allows to assign one or more capture windows to the NXscope NxScope capture memory.
“Pre-trigger”: the “Capture depth” is used as a single capture windows that uses the whole depth. In this mode the user can define the number of samples to be stored before reaching the trigger condition. For example, a 2048-word allows to store N samples before, and 2048-N samples after the trigger condition. Alternately, this mode supports a two-level trigger. In this case, a first trigger condition must be met, then the second (and final) trigger condition starts the data capture.
“Multiple windows”: the “Capture depth” is divided in multiple sub-windows allowing multiple captures until filling the complete available RAM. As an example, if “Capture depth” = 2K, the user can define 4 windows of 512 samples. The setting of “Window capture length” defines the length of the sub-windows.
Window capture length: integer range 64 to 2048
This setting allows to define the length of the capture windows when “Capture mode” = “Multiple windows”.
Pre-trigger_samples”: integer range 0 to capture_depth-1
When “Capture mode” is set to “Pre-trigger” and “Multiple level trigger” is “false” it’s possible to sample data before reaching the trigger condition. “Pre-trigger samples” defines the number of samples acquired before the trigger condition is met.
If “Multiple level trigger” is set to true, the value of “Pre-trigger samples” is ignored, and the capture starts when the second trigger condition is met.
However, in any mode, the user has still the option to store up to 2 samples to be acquired before triggering, by using the “User data delay” setting.
User data delay: integer range 0 to 2
Available in all trigger modes, this setting allows to store 0 to 2 samples before meeting the trigger condition. It can be particularly useful in “Multiple windows” mode, or “Pre-trigger” if “Multiple level trigger” is set to true. It allows to capture and visualize up to 2 samples before the trigger condition is met.
Note that this option requires using additional logic resources for implementation.
Store trigger pulse: Enable or Disable
This setting allows to store the trigger pulse (when the trigger condition is met), so it can appear automatically as an additional captured data_line.
...
The user’s defined sampled bits being Input line count -1 downto 0, so the weight (index) of the trigger pulse in the captured flow is “Input line count”.
Store window number: Enable or Disable
When “Capture mode” is set to “Multiple windows”, the total capture depth is split in several capture windows. The length of each window is defined with the “Window capture length” parameter.
NXscope NxScope gives the user the ability to store the window number for each partial capture. This option can be helpful for visualization and identification of the several capture sets.
When “Store window number” is set to “Enable”, four additional bits are stored in the capture memory, giving up to 16 different windows numbers (can be helpful to clearly identify each capture window when displaying the resulting waveform. The number of signals sampled by NXscope NxScope will be:
o “Input line count” + 4 if “Store trigger pulse” = “Enable”. In this case, the windows number are stored as:
...
(“Input line count” + 4 downto “Input line count” + 1).
Trigger
...
Configuration
Trigger line count: integer range 1 to 32
The trigger lines will be analyzed to find the trigger condition(s).
Trigger mode: “Basic” or “Basic & Edges”
The trigger lines will be analyzed to find the trigger condition.
...
Note that “Basic & Edges” gives more trigger flexibility, but requires using more logic resources for trigger implementation.
Multiple level trigger: “Enable” or “Disable”
When “Capture mode” is set to “Pre-trigger” the user can define a two-level trigger condition. The analyzer will search first for the first level trigger condition, before searching for the second level and final trigger condition and start the data capture. For this, the “Multiple level trigger” must be set to true, and the “First level trigger value” must be defined by the user.
The NXscope NxScope IP Core output goes from low state to high when the first trigger condition has been met.
Trigger value:
When “Trigger mode” is set to “Basic”, each trigger line will be compared to the following possible values: ‘0’, ‘1’ or ‘Ignore’
When “Trigger mode” is set to “Basic & Edges”, each trigger line will be compared to the following possible values: ‘0’, ‘1’, ‘Rising edge’, Falling Edge’, ‘Both Edges’ or ‘Ignore’
First level trigger value:
When”Multiple level trigger” is set to “Enable”, the pre-trigger condition must be specified too.
If this option is disable, the “First level trigger value” is ignored.
...
NxScope IP Core
...
Generation:
Once the NXscope NxScope parameters are set, press the “Generate” command icon in the bottom-right part of the window.
...
A VHDL encrypted file is then generated. A header in clear VHDL (not encrypted) is available. This header appears as comments. It can be used for the component declaration when instantiating the NXscope NxScope IP Core in the design to be analyzed.
...
NxScope Capture Tools
After compiling the design, the user must send the bitstream to the FPGA and then launch the data capture.
The user can launch the capture in two different ways :
With nxbase2 software:
Loading .
You can launch the capture using the using NxBase2 or NxBoard as described in the sections below.
Launch Sample Capture with NxBase2
Use NxBase2_cli to run the following commands:
Load the bitstream:
Code Block >>
...
NxBase2_cli
...
–s /bitstream_path/bitstream_name.nxb
...
Launch a capture*:
For a (ModelSIM) TXT file
Code Block >>
...
NxScope capture dump.txt 50E6
...
For (GTKWave) VCD file
Code Block >>
...
NxScope capture dump.vcd
...
50E6
*Where 50E6 is the estimated frequency of the sample frequency clock for this example the design (50 * 10**6 = 50 MHz in this case).
The frequency value doesn’t have any does not impact on the acquisition. It’s just used for the generation of the It is used to generate the VCD file , if this format is chosen.
If “immediate” = 1, the predefined trigger condition is ignored and the acquisition starts immediately.
If required, the user can chose the path to save the captured results.
Using NXboard GUI:
Launch Sample Capture with NxBoard
At the prompt, launch the following command:
Code Block |
---|
>>nxboard>>NxBoard |
NXboard NxBoard GUI appears:
Anchor | ||||
---|---|---|---|---|
|
...
After the FPGA has been loaded with the bitstream containing the NXscopeNxScope, select the “Scope” icon (left side of the GUI) to enter the capture command.
...
A message will be issued after the captured data has been stored in the specified file.
...
NxScope results format:
NXscope NxScope can store the captured results in two possible formats:
.txt: preferred format for waveform display on ModelSim/QuestaSim
.vcd: preferred format for waveform display on GTKwave – free software
...
NxScope capture sequence:
After configuring the FPGA with the bitstream containing the NXscope NxScope IP Core and before launching the NXscope NxScope capture command, the “DONE” and ‘TRIG_ARMED” output pins of the NXscope NxScope IP Core are low. The IP Core is waiting for a command.
When launching the capture, the “TRIG_ARMED” goes high. The NXscope NxScope IP Core is waiting for the trigger condition(s).
...
After filling the assigned internal RAM the capture stops and the “DONE” output goes high. At this time, the NXboard NxBoard / NXbase2 NxBase2 software starts reading the captured data via ANGIE USB-JTAG adapter. A message appears on the console to inform that reading is complete.
...
Note |
---|
If the trigger condition is not met, the acquisition never resumes, and the software (nxbase2 NxBase2 or nxboardNxBoard) stays waiting indefinitely. |
In order to prevent such situation, it’s possible to use the optional input pin of the NXscope NxScope IP Core “TRIGGER_IMMEDIATE”. This pin must be tied to low state in normal situation. When it goes high, an immediate acquisition is started, ignoring the trigger condition(s).
...
NxScope capture and display example
Launch NxBase2/
...
NxBoard and
...
NxScope commands
In order to sample the data lines, you must use the Angie USB-JTAG adapter, and the NXbase2 NxBase2 software or NXboard NxBoard GUI.
The bitstream must first be first loaded , then before the capture can be launched as specified in the previous chaptersection.
For detailed information about the available commands please refer to the NXbase2 NxBase2 user’s manual.
Once the data has been captured, an ACSII file is generated (.TXT or .VCD). The results can be then analyzed in the ModelSim waveform viewer (.TXT result file), with a simple testbench or with the free GTKWave waveform display software using the .VCD result file.
Display and analysis of the captured results
Open ModelSim and launch the testbench simulation
As mentioned previously the ModelSim waveform viewer can be used to visualize and analyze the captured results (.TXT result file).
...
| Libraries declarations
Testbench entity
Signals declaration | |||||
|
Main process reading the “dump.txt” result file
Values read are assigned to the “SAMPLES” signal | |||||
| Clock waveform
“SAMPLES” is split to several signals to restore the original ones |
The user can then set its own waveform settings.
Open the .VCD result file with GTKWave and view/analyze the captured results
GTKWave is a free waveform display software. It allows to display the waveform of signals that are stored in .VCD format.
Please, refer to the GTKWave documentation for detailed information.
...
NxScope IP Core configuration examples
The following shows three different examples of NXscope NxScope configurations.
Example 1: 12K x (25 + 1) capture with 50 samples pre-trigger condition
Number_of_trig_lines = 4
Input line count = 25
...
Functional block diagram
Anchor | ||||
---|---|---|---|---|
|
...
Example 2: 24K x (33 + 1) capture (2 samples pre-trig cond)
Number_of_trig_lines = 6
Input line count = 33
...
Functional block diagram
Anchor | ||||
---|---|---|---|---|
|
...
5.3 Example 3: 8K x (42 + 1 + 4) capture (2 samples pre-trig cond)
Number_of_trig_lines = 8
...
Functional block diagram
Anchor | ||||
---|---|---|---|---|
|
...
6 Known issues
Erroneous single sample in the captured stream:
Depending on NXscope NxScope settings, a dummy sample can be inserted into the captured stream.
...
NanoXplore is working to correct this problem as soon as possible.
7 How to order a
...
NxScope license
NXscope NxScope license is not included in the “”nxmap” software. A separate license must be ordered.
...