UFO
发表于 2010-6-26 12:36:50
one hot状态机不是那样子写的,市面上的书基本上全讲错了,可以看下cliff的一些文档。www.sunburst-design.com。<br>
PS:这个人经常给mentor、altera这种公司的人讲课的。
UFO
发表于 2010-6-26 12:58:14
这就去看看
inter
发表于 2010-6-26 14:22:31
除了状态机的写法的问题外,就这段代码来看,好像没有看到各个状态之间转换的条件啊。<br>
从你的代码画出的状态图肯定和你初衷的状态图应该是不一样的
FFT
发表于 2010-6-26 16:02:17
你是用verilog语言写的状态机吗?verilog语言我不是太懂,不过根据我以往用VHDL语言编程的经验:<br>
我们硬件编程的目的不就是通过给定输入一系列特定值(条件、状态),再用程序实现要求的输出吗?而“状态机”不就是在不同的取值下实现不同的状态吗,为何不把状态机的输入与系统(模块)的输入相关联,输出与系统(模块)的输出相关联。<br>
不过,设计“状态机”,一般使用“one hot”(即一热态位编码,也就是说,只有一位有效);还有,把所有的条件考虑进去,一般用case-when语句实现(可能还会用到if-case-when/case-if-when语句),在case-when中,最后一定得用WHEN OTHERS结束!
ATA
发表于 2010-6-26 17:44:41
to dahuilang<br>
st0:begin<br>
temp<={temp,a};<br>
state<=st1;<br>
end<br>
这里面在转换,同意santa的看法,冗长的代码不是太好
interi
发表于 2010-6-26 19:02:52
最好把敏感信号都列上:always @(negedge clk or negative rst),不然后仿的时候经常不过。
CHANG
发表于 2010-6-26 20:36:45
原帖由 kaixin0007 于 2005-9-14 09:06 AM 发表<br>
最好把敏感信号都列上:always @(negedge clk or negative rst),不然后仿的时候经常不过。 不赞同
HANG
发表于 2010-6-26 22:35:10
看来楼主的状态机风格后(没有非常仔细的看内容),个人感觉楼主的状态机完全可以正确工作,实际上状态机有两种:莫尔型和米力型,状态转移的控制方式不同,本质的区别是一个输出是组合逻辑,一个输出是时序逻辑。<br>
楼主的状态机虽然不是标准的米力型状态机,但实际的综合结果与之没有任何区别。
CTT
发表于 2010-6-27 00:06:29
原帖由 fwang 于 2005-9-14 11:51 PM 发表<br>
看来楼主的状态机风格后(没有非常仔细的看内容),个人感觉楼主的状态机完全可以正确工作,实际上状态机有两种:莫尔型和米力型,状态转移的控制方式不同,本质的区别是一个输出是组合逻辑,一个输出是时序逻辑。 ... fwang很热心啊,呵呵,我发现了,这是夏宇文书中的状态机写法
CHAN
发表于 2010-6-27 02:04:45
新人才学 非常感谢楼主以及其他朋友的指教!!