Programmable Devices
CPLDs, FPGAs, SoC FPGAs, Configuration, and Transceivers
21585 ディスカッション

SingalTap stop acqusition condition

adrianf0
ビギナー
2,158件の閲覧回数

How to define a condition under which SignalTap would stop acquisition and pushed data through jTag without waiting for a storage buffer to be fully filled?

0 件の賞賛
7 返答(返信)
sstrell
名誉コントリビューター III
1,634件の閲覧回数

Just click the stop button. Whatever activity is currently occurring on the tapped signals will be displayed on the Data tab of the tool.

adrianf0
ビギナー
1,634件の閲覧回数

Thank you for your reply.

Unfortunately, it's no solution for me: I need to perform many acquisitions and SignalTap is controlled by tcl commands. As far as I know, tcl interface doesn't allow to stop the acquisition.

sstrell
名誉コントリビューター III
1,634件の閲覧回数
adrianf0
ビギナー
1,634件の閲覧回数

@sstrell: Thank you for the link. I overlooked the stop tcl command.

Anyway, it doesn't suit me well, as I would need to stop the acquisition arbitrary in the script. I basically want to open the acquisition window for a certain period (controlled by the trigger signal) and store (using storage qualifier) certain events occurring on the spied lines. The acquisition window is periodical (~1kHz) and I need to acquire events belonging only to a single acquisition window. What I miss, is a stop acquisition conditional logic in SignalTap which would start pushing data over jTag to PC.

sstrell
名誉コントリビューター III
1,634件の閲覧回数

You can certainly do this. You can either use conditional statements in Tcl (remember, it's a full scripting language that includes loops and conditionals; this is my favorite Tcl reference guide: http://tmml.sourceforge.net/doc/tcl/) or set up a state machine trigger in Signal Tap.

 

#iwork4intel

adrianf0
ビギナー
1,634件の閲覧回数

At the level of the tcl script, I don't have access to the trigger signal indicating the acquisition window. Moreover, software delays may be in this case just at the edge. However, the machine trigger in SignalTap would be a perfect solution. Unfortunately, I haven't found in the documentation how to set up a stop acquisition condition. Could you share with me some reference?

adrianf0
ビギナー
1,634件の閲覧回数

I tried the following state-based trigger:

state ST1: if (start_acq) goto ST2;   state ST2: begin if( stop_acq && store ) begin start_store; stop_store; trigger 0; end else if (stop_acq) begin trigger 0; end else if (store) begin start_store; stop_store; end end

However, it doesn't work as expected:

  • although I expected only a single acquisition window, SignalTap returns many (segments). One could still filter out only a single acquisition window, however, when waveform is dumped to a .csv files (for further analysis) the information about segments is lost
  • even with post-fill-count argument of the trigger call set to 0, SignalTap waits for at least one valid sample. It means that if the sample doesn't occur, SignalTap will wait forever

 

EDIT: If I use `trigger 1`, it actually seems to work as intended. The only inconvenience is it needs to wait for an extra sample from the next acquisition window.

 

返信