Hi all
Today I've been taking my first steps with a Cypress PSoC4 dev kit.
I have a specific end project in mind, and one of the things it needs to be able to do is generate a pulse which has programmable start and end times with respect to a nominal reference point. So, for example, if I reset a counter to t=0, I want my pulse to go high at t=20 and low again at t=25.
To achieve this, I've instantiated two TCPWM blocks in Timer Counter mode. They have common Start and Clock signals, and their 'cc' outputs are connected to the S and R inputs of an S-R bistable. The idea is that when one timer matches its set value the output of the bistable goes high, and when the other matches, it goes low again.
This may not, of course, be the simplest possible way to achieve what I want, but at this point I'm more interested in understanding how the chip works than in making the most efficient use possible of its resources.
The data sheet for the TCPWM block says that "The overflow (ov), underflow (un), and compare/capture (cc) output signals have two HFCLK cycle pulse width for PSoC 4100/PSoC 4200 devices". I'm using a PSoC4200M, which I presume is included in that description.
Fair enough, I thought; the output pulses should, therefore, be in the HFCLK domain (48 MHz), even though the counters themselves are driven from a derived 12 MHz clock. A 'trap for young players', for sure.
But: when I build the project, I get a warning that there's an asynchronous path between "CLK_12M(FFB)" and "CyHFCLK".
This seems really odd to me, because:
- the TCPWM block is clocked from CLK_12M, which is itself derived from HFCLK
- the data sheet says the outputs are two HFCLK pulses wide, which sort of implies they should be in the HFCLK domain
- nowhere can I find what the (FFB) suffix is supposed to mean. (I know it's Fixed Function Block, but what that has to do with clocks I've no idea).
It's almost as though PSoC Creator doesn't know what the propagation delays are through the TCPWM block, and simply treats the outputs as though they are genuinely not synchronous to HFCLK.
I can't just feed them through a Sync circuit, because I really need their timing relationship to be consistent and predictable. A whole clock pulse's worth of jitter on the output of the S-R bistable would break my application.
Any suggestions please? Have I found a genuine limitation already?