...
List of figures
NXScope capture process
Figure 2: NXscope generator GUI
Figure 3: file name
Figure 4: NXBoard GUI
Figure 5: NXBoard GUI scope menu
Figure 6: example 1 functional block diagram
Figure 7: example 2 functional block diagram
Figure 8: example 3 functional block diagram
Figure 9: display caused by an erroneous sample
...
The captured samples are read by “nxbase2” or “nxboard” software, via ANGIE USB-JTAG adapter. Note that the JTAG pins are buried in the NXscope IP Core. No need for the user to directly refer to JTAG pins.
...
With nxbase2 software:
Loading the bitstream :
Code Block |
---|
>> nxbase2_cli –I –s /bitstream_path/bitstream_name.nxb |
Launching a capture :
Code Block |
---|
>> nanoxscope capture dump.txt 50E6 immediate=0 (for .txt format/ModelSim) |
or
Code Block |
---|
>> nanoxscope capture dump.vcd 50E6 immediate=0 (for .vcd format/GTKwave) |
Where 50E6 is the estimated frequency of the sample frequency for this example (50 * 10**6 = 50 MHz in this case).
...
At the prompt, launch the following command:
NXboard GUI appears:
...
A new capture can then be started if required.Important
...
|
---|
If the trigger condition is not met, the acquisition never resumes, and the software (nxbase2 or nxboard) stays waiting indefinitely. |
In order to prevent such situation, it’s possible to use the optional input pin of the 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).
...
Have a look on the following example :
use ieee.std_logic_1164.ALL; |
use ieee.std_logic_textio.all; |
architecture TB_ARCHI of TB_NXscope is |
signal SAMPLES: std_logic_vector(25+1 downto 0); |
signal DIN : std_logic_vector(10 downto 0); |
signal DIN_VALID : std_logic; |
signal DOUT : std_logic_vector(11 downto 0); |
signal DOUT_VALID : std_logic; |
signal TRIG_PLS : std_logic; |
| Libraries declarations Testbench entity Signals declaration |
variable LINE_VAR : line; |
variable DVAR : std_logic_vector(25+1 downto 0); |
file_open(RESULT, "dump.txt", read_mode); |
while not(endfile(RESULT)) loop |
wait until rising_edge(CLK); |
readline(RESULT, LINE_VAR); |
| Main process reading the “dump.txt” result file Values read are assigned to the “SAMPLES” signal |
CLK <= '0'; wait for 10 ns; |
CLK <= '1'; wait for 10 ns; |
DIN <= SAMPLES(10 downto 0); |
DIN_VALID <= SAMPLES(11); |
DOUT <= SAMPLES(23 downto 12); |
DOUT_VALID <= SAMPLES(24); |
| Clock waveform “SAMPLES” is split to several signals to restore the original ones |
...
The following figure shows an example of the display artifact caused by this erroneous sample in the captured stream.
...
NanoXplore is working to correct this problem as soon as possible.
...