On 18 Mai, 13:44,
robb...@gmail.com wrote:
> NEXT_STATE_DECODE: process (state, doneData, donePuls, SET, CLK)
This is a combinatorial process, it describes the logic behavior of
pure combinatoric (the style for a statemachine is widely used in old/
bad books, use search function to learn about that issue as fsm style
has nothing to do with your problem and it is not wrong)
> when idle => if rising_edge(SET) then nextstate <= leesAdres; end if
combinatorial process don't allow rising edge.
Rising edge is only allowed in sequential process in the following
style:
process (clk, asyncreset)
if asyncreset = condition then
-- resetstatements
elsif rising_edge(Clk) then
-- sequential statements
with the asynchronous reset beeing optional
I guess you like to stay in a state, till a signal rises from 0 to 1,
this needs to be done by clocking that signal into a shiftregister and
detect rising edge by xor the last two register of the shiftreg
if rising_egde(Clk) then
my_sr <= my_sr(my_sr'high-1 downto 0) & inputsignal; -- if
inputsignal is syncronous to clk, use only 2 ff, or if you need it
fast only 1 ff and xor with inputsignal, else use additional ff
(typically 2)
edge <= my_sr(my_sr'high) xor my_sr(my_sr'high -1); -- this means
edge is stored in a ff, edge could be also generate outside clocked
process to represent xor without ff
end if