torchchinaled 发表于 2010-9-27 14:02:07

请教关于状态机的执行过程(是一个时钟上升沿执行完所有的状态吗)

请教关于状态机的执行过程(是一个时钟上升沿执行完所有的状态吗)

sytu_xww 发表于 2010-9-27 14:43:08

oh
my God!
当然不是,根据状态和时钟或者输入做状态切换
然后根据状态产生不同的功能。

bad_fpga 发表于 2010-9-27 15:24:04

应该是一个状态执行完当前状态下的所有行为,下一个时钟执行下一个状态~,即有5个状态,就用五个时钟来完成

torchchinaled 发表于 2010-9-27 15:50:10

process(rm_clk,reset)       
           variable sta:integer range 0 to 3;
           variable c:integer range 0 to 1023;
        begin
                if(reset='1')then
                        sta:=0;
                        d3<='0';
                        c:=0;
                elsif(rm_clk'event and rm_clk='1')then
                        case sta is
                                when 0 =>        if((d2="01")or(d2="10"))then                                                                                    sta:=1;
                                        end if;
                                when 1 => if(c=350)then                       
                                          c:=0;
                                          sta:=2;
                                        else
                                          c:=c+1;
                                        end if;
                                when 2 => d3<='1';
                                       sta:=3;
                                when 3 => d3<='0';
                                        sta:=0;                                       
                        end case;
                end if;
        end process;
请问执行完上面程序需要3个rm_clk吗,多一个状态是不是多一个延时呀?

torchchinaled 发表于 2010-9-28 08:14:00

?

wzj0713 发表于 2010-9-29 06:48:32

回复【3楼】torchchinaled
-----------------------------------------------------------------------

when 0: 如果d2满足条件则下一个时钟进入sta=1,否则下一个时钟还是sta = 0,还是来这儿判断d2满不满足条件。
when 1:如果c=350则下个时钟进入sta=2,否则c+1,下一个时钟还是sta=1,判断c等于不等于350。因此在会这里阻塞350个时钟。
when 2:d3 写1,并设置下一个时钟sta=3;
when 3:d3 写0,并设置下一个时钟sta=0,回到0状态。

如果d2永远不满足01或10,这个状态机永远停留在0状态等待组合逻辑触发。触发后一共运行350+1+1个时钟周期。

torchchinaled 发表于 2010-9-29 12:08:55

感谢楼上指点,有点头绪了。
页: [1]
查看完整版本: 请教关于状态机的执行过程(是一个时钟上升沿执行完所有的状态吗)