Zuofu
Newbie level 3
- Joined
- Jan 8, 2013
- Messages
- 3
- Helped
- 0
- Reputation
- 0
- Reaction score
- 0
- Trophy points
- 1,281
- Activity points
- 1,316
I have a CMOS image sensor which has quite a large number of control signals which have specific timing constraints, most of which are hold times between certain sets of signals (I've attached 2 images which give you a sense). I'm using a Spartan 6 to generate the timing signals. My initial approach to this was to create a FSM which triggers counters to count to specific delays before the next state is reached, therefore the overall state is actually stored within both the encoded FSM state and the count value for each of the counters.
As you can imagine, with such a large number of signals, this approach creates some headaches. Furthermore, because some of the counters are running concurrently, and some of them require delays in the microsecond range and some in the nanosecond range, it is not easy to reuse counters in a way that is intuitive, so really it ends up being a FSM with way too many states for code readability in VHDL.
Is there another approach you would use to tackle this problem? I thought about storing the outputs into some ROM, and then advancing through in sequence, but it seems like there isn't a good resolution that would capture both nano and micro-second granularity. Either the ROM would be huge, or the timing would be too coarse. This seems like something that would be easy to do with a micro-controller that has a fast enough clock and IO , but oddly difficult to do on a FPGA (which is sort of surprising since this is the sort of thing I usually imagine FPGAs doing).
Finally, is there some tool that sort of generates VHDL given a timing diagram like this? In this case, all the signals are deterministic, it is only a matter of generating the state machine behind it. It seems like a common enough problem to have an industry standard way of doing it...
Thanks in advance for your advice
As you can imagine, with such a large number of signals, this approach creates some headaches. Furthermore, because some of the counters are running concurrently, and some of them require delays in the microsecond range and some in the nanosecond range, it is not easy to reuse counters in a way that is intuitive, so really it ends up being a FSM with way too many states for code readability in VHDL.
Is there another approach you would use to tackle this problem? I thought about storing the outputs into some ROM, and then advancing through in sequence, but it seems like there isn't a good resolution that would capture both nano and micro-second granularity. Either the ROM would be huge, or the timing would be too coarse. This seems like something that would be easy to do with a micro-controller that has a fast enough clock and IO , but oddly difficult to do on a FPGA (which is sort of surprising since this is the sort of thing I usually imagine FPGAs doing).
Finally, is there some tool that sort of generates VHDL given a timing diagram like this? In this case, all the signals are deterministic, it is only a matter of generating the state machine behind it. It seems like a common enough problem to have an industry standard way of doing it...
Thanks in advance for your advice