1 ~ clk 2 ~ reset 3 ~ dff input 4 ~ q (dff output) 5 ~ not used 6 ~ used for process thar runs only once! >>>>>>>>>>>>>>>> //make sure this process didn't already run - [ >+< //mark it that it has already run, in 6~3 (6~next) <<<<<<<<<<< //position on reset [-]+# //reset is 1 and wait for one timetick [-]<# //reset is 0 and wait for one timetick >>>> //position on 3~3 (3~next, or dff input ~ next) [-]+++++ // set it to 5 # // wait 5 time ticks <<<<<< //position on clk [-] + # // clk is 1 [-] < # > // clk is 0 >>>>>> // position in dff input [-]+++++++ // set it to 7 <<<<<< // position on clk [-] + # // clk is 1 [-] < # > // clk is 0 >>>>>> // position on dff input [-]+++ // set it to 3 # // wait >>[-]+# // current dff output should still be 7 . // so check it [-] // make sure we don't keep looping ] ====== d flipflop: >>>>[>>>>>>>[-]<<<<<<<[-]] // reset condition - [ // not reset? <<< [ // clock current is nonzero? < // position on old clock - [ // clock old is zero? >>>>>>>>>>> // position on output (qnext) [-] // initialize output to 0 <<<< // position on d [ // copy d into qnext >>>> // position on qnext + <<<< // position back on d - ] ] ] ]