[libre-riscv-dev] [Bug 64] data handling / io control / data routing API needed
bugzilla-daemon at libre-riscv.org
bugzilla-daemon at libre-riscv.org
Tue Apr 30 01:05:42 BST 2019
http://bugs.libre-riscv.org/show_bug.cgi?id=64
--- Comment #36 from Luke Kenneth Casson Leighton <lkcl at lkcl.net> ---
(In reply to Jacob Lifshay from comment #9)
> > this down to the fact that the FSM must *only* permit a single clock
> > of "ready/valid" on its input, and must *only* permit a single clock
> > of "ready/valid" on its output.
> Actually, a FSM isn't limited to a data-transfer every other clock, as is
> evidenced by the fact that every digital logic circuit with only one clock
> and no combinatorial loops is a FSM, either a Mealy FSM or a Moore FSM.
... so... this is useful definitions... the FPDIV code is a...
hang on let me check the wikipedia page, damn their names both begin with M.
Mealy. the FPDIV code is a Mealy FSM. not pure combinatorial.
> The part that is limiting stb/ack (from what you told me) is that ack has to
> be de-asserted after every transfer.
ah this may be a.. ok, so read again here:
https://zipcpu.com/blog/2017/08/14/strategies-for-pipelining.html
the data is transferred on every clock where READY=TRUE and VALID=TRUE.
or, more to the point, it is *required* that data be accepted when those
conditions are true.
so if there are two clocks in which those conditions are true, we can
logically deduce that *TWO* pieces of data have been transferred.
thus, if ACK is *NOT* de-asserted, and the user happens accidentally to
leave STB asserted, *TWO* pieces of data will be transferred into the FSM...
...one of which will be DESTROYED.
if the FSM was not an FSM, it would be capable of receiving data on
each and every clock, letting data in by leaving ACK high.
now, we could indeed have two separate FSMs, one for input and one for
output, however that's just not how this *particular* example has been
designed.
that does not mean that a twin-FSM could not be designed: it's just that
this particular one has not.
i am going to see if further topological morphing can make the FPDIV
example conform to the Stage API. i believe it can.
--
You are receiving this mail because:
You are on the CC list for the bug.
More information about the libre-riscv-dev
mailing list