集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 6423|回复: 13

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

[复制链接]
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 [2:0] NS,CS;
parameter [2:0] //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 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2024-12-26 02:34 , Processed in 0.066607 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表