longt 发表于 2010-6-28 00:08:02

状态机问题,初始状态怎摸决定?

本帖最后由 fpgaw 于 2010-11-18 16:01 编辑

module state2 ( nrst,clk,
i1,i2,
o1,o2,
err
);
input nrst,clk;
input i1,i2;
output o1,o2,err;
reg o1,o2,err;
reg NS,CS;
parameter //one hot with zero idle
IDLE = 3'b000,    初始状态怎摸决定?
S1 = 3’b001,
S2 = 3’b010,
ERROR = 3’b100;
//sequential state transition
always @ (posedge clk or negedge nrst)
if (!nrst)
CS <= IDLE;
else
CS <=NS;   为什摸将不是将cs附给ns,不是先有cs再有ns吗?
//combinational condition judgment
always @ (CS or i1 or i2)
begin
NS = 3'bx;   x是什摸?
ERROR_out;
case (CS)
IDLE: begin
IDLE_out;
if (~i1) NS = IDLE;   为什摸不写成<=
if (i1 && i2) NS = S1;
if (i1 && ~i2) NS = ERROR;
end
S1: begin
S1_out;
if (~i2) NS = S1;
if (i2 && i1) NS = S2;
if (i2 && (~i1)) NS = ERROR;
end
S2: begin
S2_out;
if (i2) NS = S2;
if (~i2 && i1) NS = IDLE;
if (~i2 && (~i1)) NS = ERROR;
end
ERROR: begin
ERROR_out;
if (i1) NS = ERROR;
if (~i1) NS = IDLE;
end
endcase
end
//output task
task IDLE_out;
{o1,o2,err} = 3'b000;    据书上说此步为封装,没看懂有什摸用?
endtask
task S1_out;
{o1,o2,err} = 3'b100;
endtask
task S2_out;
{o1,o2,err} = 3'b010;
endtask
task ERROR_out;
{o1,o2,err} = 3'b111;
endtask

usd 发表于 2010-6-28 02:07:00

楼主,不好意思的说,代码怎么这么乱呀?

CHA 发表于 2010-6-28 03:31:28

是很乱,摸不到头绪,请多指教了.

longt 发表于 2010-6-28 05:16:14

第一个,初始状态由reset确定<br>
下一个,ns是下一个状态,cs是现态,赋值的时候你说是把次态赋给现态,还是反过来?<br>
下一个,X是不确定状态<br>
下一个,这里是组合逻辑电路,所以用=不用&lt;=<br>
下一个,{}表示拼接,可以认为是封装<br>
<br>
结论:上面那些问题都是很基础的,问题不是出在状态机复杂上,而是楼主基础知识不是很扎实<br>
建议楼主再好好熟悉一下基础知识

CTT 发表于 2010-6-28 07:07:00

谢谢楼上了,但为啥把次态赋给现态?我认为先有现态再有次态,所以NS &lt;=CS; <br>
初始状态怎摸决定?000,001,010是根据什麽决定的?你说的reset不是复位吗?<br>
说的罗哩叭嗦,不知道写清楚了没?

HANG 发表于 2010-6-28 08:33:29

举个例子,状态1s变化一次。<br>
现态是现在的状态cs,比如是0时刻;<br>
次态是将来的ns,比如说是1s时刻的<br>
现在的状态运行完了,要进入下一个状态,<br>
就是应该在1s时刻要运行的状态,所以此时要有cs=ns;<br>
而此时的下一个状态ns是啥,则由其他条件决定。<br>
<br>
000,001什么的都是参数,这个你可以随便选,一般fpga的话用独热码,具体你可以查相关资料。<br>
而reset是使电路在初始的时候进入正常的确定的状态循环<br>
<br>
说得很罗唆,不知道讲清楚没

VVIC 发表于 2010-6-28 09:44:17

很清楚了,不知道你能否给解释一下关于线性反馈移位寄存器的原理与实现?

VVIC 发表于 2010-6-28 11:41:02

写的好详细,已经明白了,刚开始自学,还要多多看书.(学校刚学完VHDL,但状态机被空过去了,从坛子上看貌似很重要)&nbsp; &nbsp;&nbsp; &nbsp;谢谢了.

usb 发表于 2010-6-28 13:05:58

原帖由 kuxi4969 于 2006-10-16 11:02 发表<br>
很清楚了,不知道你能否给解释一下关于线性反馈移位寄存器的原理与实现? 线性反馈移位寄存器<br>
你有它的原理图没有?<br>
在网上找一下吧,一看图马上就明白怎么回事了<br>
你先看看,如果有不明白再问

shifenglian 发表于 2010-7-28 12:28:47

解释的很详细!
页: [1] 2
查看完整版本: 状态机问题,初始状态怎摸决定?