打印
[CPLD]

请教关于3段式状态机的问题

[复制链接]
4817|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
alecsoo|  楼主 | 2012-3-21 15:51 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 alecsoo 于 2012-3-21 15:59 编辑

关于3段式状态机的问题,请各位大虾指教:
代码:
reg [1:0] state_now=2'b00;  // 表示系统当前状态
reg [1:0] state_next=2'b00;  // 表示系统下一个状态

parameter  
        Wait = 2'b00,  // 等待状态
       Send = 2'b01; // 产生发送

always @(posedge clk or posedge rst) begin
      if(rst) begin
              state_now <= Wait;
      end
      else begin
            state_now <= state_next;
      end
end

always @(state_now or start or type) begin
       case(state_now)
              Wait:
                 if(start) begin
                        state_next = Send;
                        case(type)
                             2'b00: duty<=1;
                             2'b01: duty<=5;
                             2'b10: duty<=9;
                            2'b11: duty<=0;
                         endcase
               end
           Send:
                 if(!start) begin
                       state_next = Wait;
                       duty<=0;
                 end
           endcase
      end

always @(posedge clk or  posedge rst) begin
        if(rst)
             dout <= 1'b0;
        else
        case(state_next)
              Wait:;
              Send:;
              default:;
        endcase
end


为什么编译后总是有warning:
WARNING:Xst:737 - Found 2-bit latch for signal <state_next>. Latches may be generated from incomplete case or if statements. We do not recommend the use of latches in FPGA/CPLD designs, as they may lead to timing problems.
WARNING:Xst:2677 - Node <state_next_0> of sequential type is unconnected in block <;PrintHclk>.
WARNING:Xst:2677 - Node <state_next_1> of sequential type is unconnected in block <;PrintHclk>.
WARNING:Xst:2677 - Node <state_now_1> of sequential type is unconnected in block <;PrintHclk>.
WARNING:Xst:2677 - Node <state_now_0> of sequential type is unconnected in block <;PrintHclk>.

请高人指点!

相关帖子

沙发
bityoung| | 2012-3-21 16:08 | 只看该作者
1# alecsoo 如图所示,没有default。

1.jpg (16.18 KB )

1.jpg

使用特权

评论回复
板凳
alecsoo|  楼主 | 2012-3-21 16:19 | 只看该作者
2# bityoung

首先谢谢 bityoung的指导

两个语句中都将default加上了
但是还是提示:
WARNING:Xst:737 - Found 2-bit latch for signal <state_next>. Latches may be generated from incomplete case or if statements. We do not recommend the use of latches in FPGA/CPLD designs, as they may lead to timing problems.
WARNING:Xst:737 - Found 4-bit latch for signal <duty>. Latches may be generated from incomplete case or if statements. We do not recommend the use of latches in FPGA/CPLD designs, as they may lead to timing problems.

使用特权

评论回复
地板
bityoung| | 2012-3-21 16:41 | 只看该作者
只在横线处加default语句就行了!

使用特权

评论回复
5
alecsoo|  楼主 | 2012-3-21 16:46 | 只看该作者
4# bityoung

不好意思,表达错误,横线处的default加了

程序仿真结果和想的一样,就是warning消除不掉,心中总是有疙瘩

使用特权

评论回复
6
bityoung| | 2012-3-21 17:14 | 只看该作者
5# alecsoo 锁存器是由于if语句没有else分支造成的!如下图所示:

2.jpg (10.62 KB )

2.jpg

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
alecsoo + 1
7
bityoung| | 2012-3-21 17:15 | 只看该作者
5# alecsoo

2.jpg (7.67 KB )

2.jpg

使用特权

评论回复
8
jakfens| | 2012-3-21 17:18 | 只看该作者
可能某个if语句中后面没有接上相应的else 可能会锁存

11.png (5.66 KB )

11.png

使用特权

评论回复
9
jakfens| | 2012-3-21 17:21 | 只看该作者
还有 这个 试试看

12.png (2.73 KB )

12.png

使用特权

评论回复
10
jakfens| | 2012-3-21 17:22 | 只看该作者
嘿嘿 答慢了

使用特权

评论回复
11
alecsoo|  楼主 | 2012-3-21 22:34 | 只看该作者
呵呵 谢谢各位
今天晚上有点事情,刚刚才按照各位的建议修改了一下,应该确定是由于if后面没有相应的else导致的
现在没有警告了,十分感谢大家!

使用特权

评论回复
12
nongfuxu| | 2012-3-21 23:42 | 只看该作者
打酱油路过.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:我是后辈,笨鸟一只,虽不擅飞翔,却愿跟随,慢些迟些,终将展翅!

5

主题

29

帖子

1

粉丝