3 ms·
Take, for example, Avalon streaming interfaces: http://www.altera.com/literature/manual/mnl_avalon_spec.pdf http://www.altera.com/literature/manual/mnl_avalon_s
by thesz 13y ago
Take, for example, Avalon streaming interfaces: http://www.altera.com/literature/manual/mnl_avalon_spec.pdf http://www.altera.com/literature/manual/mnl_avalon_spec.pdf
Yes, it is a bunch of flip-flops and gates, but in the end the interface with "empty" signal is different from interface without it. The same is for error signal.
To connect those sinks and sources properly you have to match types. E.g., you have to deal with the absence of "empty" on one end.
Otherwise you will surely make some obvious mistake.
And, finally, Avalon streaming interface is a tuple:
type ASI a = (SOP, EOP, a)
data SOP = NoSOP | SOP -- SOP and EOP equivalent to boolean
data EOP = NoEOP | EOP
And parameter "a" can be anything - raw value without empty or error, tuple of value and empty, tuple of value and error, triple of value, empty and error. They all are different. Even if their connection is no-op, like inventing "always good" value for error field, this no-op should be specified.
Otherwise, you make discovery of the error very distant.