在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3927|回复: 9

[解决] 请问Verilog中的这个问题怎么处理?只能仿真不能综合.

[复制链接]
发表于 2018-12-24 00:58:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 冈崎君 于 2018-12-24 08:13 编辑

请问各位:这个问题怎么处理?只能仿真不能综合。拜托了,谢谢
The logic for Y[7:0] does not match a standard flip-flop

代码:(跑马灯)
module paomadeng(CP,RST,S,I,Y);
    input CP,RST;
    input [1:0] S;
    input [7:0] I;
    output [7:0] Y;
    reg [7:0] Y;
    reg [15:0] COUNT;
    integer i;
    always @(negedge CP , posedge RST)
    if(RST)
        begin
            COUNT<=0;
        end
    else
        begin
            COUNT<=COUNT+1;
        end
    always @(negedge CP , posedge RST)
            if(S==2'b00)
                    if(RST)
                        begin
                        Y<=8'b00000000;
                        end
                    else
                    begin
                      case(COUNT[4:1])
                            0:Y<=8'b10000000;
                            1:Y<=8'b11000000;
                            2:Y<=8'b11100000;
                            3:Y<=8'b11110000;
                            4:Y<=8'b11111000;
                            5:Y<=8'b11111100;
                            6:Y<=8'b11111110;
                            7:Y<=8'b11111111;
                            8:Y<=8'b01111111;
                            9:Y<=8'b00111111;
                            10:Y<=8'b00011111;
                            11:Y<=8'b00001111;
                            12:Y<=8'b00000111;
                            13:Y<=8'b00000011;
                            14:Y<=8'b00000001;
                            15:Y<=8'b00000000;
                        endcase
                    end
            else if(S==2'b01)
                    begin
                        for(i=0;i<8;i=i+1)
                            Y<=I;
                    end
            else if(S==2'b10)
                    begin
                        for(i=0;i<8;i=i+1)
                            Y<=~Y;
                    end
            else if(S==2'b11)
                    begin
                        Y<={Y[6:0],Y[7]};
                    end   
endmodule
发表于 2018-12-24 07:28:02 | 显示全部楼层
不用for语句,采用逻辑展开的写法,就可以综合了。
 楼主| 发表于 2018-12-24 08:11:55 | 显示全部楼层
已解决,我把第二个always @(posedge CP , posedge RST)改成 always @(CP)就可以综合了。
发表于 2018-12-25 14:25:57 | 显示全部楼层
那你知道为什么吗?
发表于 2018-12-25 15:09:42 | 显示全部楼层
没看懂这个for循环八次是为了什么,不过肯定综合不出来一个触发沿赋值八次的寄存器
发表于 2018-12-27 10:59:53 | 显示全部楼层
学习了   6666
发表于 2018-12-29 14:41:25 | 显示全部楼层
应该尽量避免用For在可以综和的芯片设记中, 如果去掉了posedge RST 敏感条件, if(RST) 应该报错
发表于 2019-1-1 11:04:40 | 显示全部楼层
回复 3# 冈崎君


   写出latch的话,时序会出很多无法解释的问题,且行且珍惜
发表于 2019-1-2 19:47:24 | 显示全部楼层
时序逻辑的话,for是不可以在里面综合出来的;组合逻辑的话,for可以被综合,同样task也可以
发表于 2019-1-3 13:42:31 | 显示全部楼层
兄弟,FOR不是你这么用的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

×

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-3-29 23:34 , Processed in 0.027144 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表