[Actel FPGA] 综合时出错

[复制链接]
2854|7
 楼主| 3B1105 发表于 2010-5-24 20:22 | 显示全部楼层 |阅读模式
module key_count(
                    clk,
                    reset,
                    key,
                    a,b,c,d                    
                );


input  clk;
input       reset;
input       key;
output      a,b,c,d;

reg          a,b,c,d;
reg  [3:0]  key_num;

always @( posedge clk or negedge key or negedge reset )
begin
       if(!key)
       begin
            key_num <= key_num + 4'b0001;
       end

       if(!reset)
       begin
            key_num <= 4'b0000;
            {a,b,c,d} <= 4'b0000;
        end

       case(key_num)
            4'b0000 :   {a,b,c,d}   <= 4'b0000;
            4'b0001 :   {a,b,c,d}   <= 4'b0001;
            4'b0010 :   {a,b,c,d}   <= 4'b0010;
            4'b0011 :   {a,b,c,d}   <= 4'b0011;
            4'b0100 :   {a,b,c,d}   <= 4'b0100;
            default :   {a,b,c,d}   <= 4'b0000;
        endcase

end

endmodule



在综合的时候出现这样的提示:The logic for d does not match a standard flip-flop

请问这是什么原因啊?
yelinggtx 发表于 2010-5-28 17:41 | 显示全部楼层
逻辑有问题,case语句放到另一个Always块里~
金鱼木鱼 发表于 2010-5-30 13:10 | 显示全部楼层
报错信息提示d触发器不是一个标准的触发器,这是因为在你的程序设计中使用了两个信号(reset和key_num)同时驱动一个D触发器。

改进:在case语句上加上else语句。不过你这种程序设计思路还需要大大改进,多学习一下FPGA编程吧~
六楼的窗户 发表于 2010-5-30 13:17 | 显示全部楼层
楼上正解
 楼主| 3B1105 发表于 2010-5-30 13:22 | 显示全部楼层
本帖最后由 3B1105 于 2010-5-30 13:26 编辑

谢谢大家的回复,正在努力学习周工的030
英明_郑 发表于 2010-5-30 13:23 | 显示全部楼层
怎么混积分呀,要50分才能开博
米其林r 发表于 2010-5-30 13:39 | 显示全部楼层
我也是在用030,以后可以交流下啊
 楼主| 3B1105 发表于 2010-5-30 13:51 | 显示全部楼层
恩 好的  我刚开始学 可能有很多不懂得地方,多多指教,我的QQ810610186
您需要登录后才可以回帖 登录 | 注册

本版积分规则

315

主题

1645

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部