Account for setup time (simple parallel analyzer)

I am writing an analyzer for a proprietary synchronous serial protocol, comprising a data and clock line.

I will decode the protocol in two steps:

Step 1: Capture the data bits (Using the ‘simple parallel’ extension)
Step 2: Decode the bit stream using a custom HLA

The challenge I am running into is that the clock edge and the data transition happen very close together. To ensure I always read the bit correctly I need to delay some period of time after the clock edge before reading the state of the data line.

I was hoping to find a ‘setup time’ parameter when configuring the ‘simple parallel’ extension, but there is no such option.

Is there another analyzer better suited to solving this problem?

@wylieza Unfortunately, we don’t have a pre-installed clocked analyzer that allows for configuring a “setup/hold” time after a clock edge. Is it possible to simply decode on the opposite edge of the clock?

Feel free to attach your capture file (in .sal file format) here as well and I can take a look on my end to see if we have a workaround for it.

Thanks for the suggestion Tim, unfortunately, the protocol I am analyzing uses both clock edges. Device A sends on a falling edge and device B sends on the rising edge.

I can actually get away with reading on the rising edge (although this is not ideal). But reading on the falling edge results in a bit error.

I have attached a capture file.
synchronous-serial.sal (3.7 KB)

@wylieza Ah I see what you mean now. Thanks for sending over your capture file as well. Due to the nature of needing to decode on both edges, we unfortunately don’t have a quick workaround for you via using our existing pre-installed analyzers. We typically specify our analyzers to sample directly at the clock edge (either rising, falling, or sometimes both edges) without the ability to specify a setup time. I was hoping the 2nd edge would be sitting right in between your data edges, but that’s not the case here.

Taking a look at our list of community shared analyzers below, I’m also unable to find anyone in the community who has implemented something like this either:

Your best bet might be to create a custom analyzer using our analyzer SDK below which adds the ability to specify a setup time, and you could use our simple parallel analyzer as a starting point. Please note that this will require extensive C++ experience.

Alternatively, we’re working with the folks at Binho to provide services to develop custom extensions. More information on this can be found in the link below in case you are interested in utilizing their services for this project.

1 Like