Board logo

标题: 状态机的问题 [打印本页]

作者: fireandice    时间: 2006-3-9 18:28     标题: 状态机的问题

我用vhdl语言编了个程序,其中有一个进程是用复位和状态来触发的.进程的程序如下
process(state,reset)
begin
if reset='0' then
  sout1<=0;
  sout2<=0;
  counter<=0;
  elsif state=lose then
   counter<=counter;
   sout1<=2;
   sout2<=2;
  elsif state=win then
   counter<=counter;
   sout1<=8;
   sout2<=8;
  else
   counter<=counter+1;
  end if;
end process;
状态有8个,进程有两个,另一个进程是让state状态改变的.
这个程序的问题是我另一个进程里的状态没变.那么我贴的进程就不应该被触发,counter就不会动.但是计数器显示却一直在动(counter是计数器),而且确实有在计数(应该是,闪的太快看不清,但停下来时确实有数).我用程序仿真时,counter输出是不定态.想问一下是不是我用状态触发进程有问题啊?


作者: vincent    时间: 2006-8-17 11:30

不清楚,很想知道答案,帮你 顶一下
作者: kzw    时间: 2006-8-17 11:48

你代码怎么这样写呢?我不是太明白你的意思,也不知道你的程序处于哪一个状态。
你的进程怎么没有时钟触发,那计数器以什么东西来计数阿。
代码的格式也不要写成这样
if(reset)
xxxx
else
case()






作者: rouder21control    时间: 2006-9-7 12:08

很明显,你应该在敏感表里面加入一个时钟信号,并且靠它来触发counter计数。你的程序就是只要没有reset信号并且state的状态没变的时候就计数,显然不是你所要的。





欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0