打印

if(1)有效不行,if(!0)则可以,望解答

[复制链接]
1208|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tiantianlianxi|  楼主 | 2013-11-20 13:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
TE, ni, edge, POS, se
always @(posedge clk)
begin
   if(en)
        begin
            if(tempa)              //为什么这里要改成if(!temp)
                        begin
                        tempa<=0;
                        case(astate)
                        red:      begin astate<=green;rest_atime<=ini_agreen;alamp<=4'b0100;end
                        green:    begin astate<=yellow_ag;rest_atime<=ini_ayellow;alamp<=4'b0010;end
                        yellow_ag:begin astate<=left;rest_atime<=ini_aleft;alamp<=4'b1000;end
                        left:          begin astate<=yellow_al;rest_atime<=ini_ayellow;alamp<=4'b0001;end
                        yellow_al:begin astate<=red;rest_atime<=ini_ared;alamp<=1;end
                        default:  begin astate<=red;alamp<=4'b0001;end
                        endcase
                        end
                else
                begin
                if(rest_atime>1)
                        begin
                                if(rest_atime[3:0]==0)
                                begin
                                rest_atime[3:0]<=4'b1001;
                                rest_atime[7:4]<=rest_atime[7:4]-1;
                                end
                        else rest_atime[3:0]<=rest_atime[3:0]-1;
                        end
                if(rest_atime==2)
                        tempa<=1;            这里改成temp<=0,为什么我取1就不可以
                end
        end
        else
        begin alamp<=1;astate<=red;tempa<=0;end
end

temp当为0有效时,状态改变,结果对。
但是我反过来,temp=1有效,改变状态,仿真输出0.   程序编译通过,谢谢大家






相关帖子

沙发
zhaojingzb| | 2013-11-20 15:21 | 只看该作者
if语句并行了,缩进对齐就看出来了。修改了应该就ok了

使用特权

评论回复
板凳
tiantianlianxi|  楼主 | 2013-11-20 20:33 | 只看该作者
zhaojingzb 发表于 2013-11-20 15:21
if语句并行了,缩进对齐就看出来了。修改了应该就ok了

还是没明白,并行的话,我置一应该也要执行下面的语句啊

使用特权

评论回复
地板
tiantianlianxi|  楼主 | 2013-11-20 21:34 | 只看该作者
有没有人呢

使用特权

评论回复
5
haitaox| | 2013-11-21 12:42 | 只看该作者
你好,看了你的代码,觉得缩进不是太好,我帮你整理了一下

        always @(posedge clk) begin
                if(en) begin
                        if(tempa) begin                                //为什么这里要改成if(!temp)
                                tempa        <= 0;
                                case(astate)
                                        red : begin
                                                astate                <= green;
                                                rest_atime        <= ini_agreen;
                                                alamp                <= 4'b0100;
                                        end
                                        green : begin
                                                astate                <= yellow_ag;
                                                rest_atime        <= ini_ayellow;
                                                alamp                <= 4'b0010;
                                        end
                                        yellow_ag : begin
                                                astate                <= left;
                                                rest_atime        <= ini_aleft;
                                                alamp                <= 4'b1000;
                                        end
                                        left : begin
                                                astate                <= yellow_al;
                                                rest_atime        <= ini_ayellow;
                                                alamp                <= 4'b0001;
                                        end
                                        yellow_al : begin
                                                astate                <= red;
                                                rest_atime        <= ini_ared;
                                                alamp                <= 1;
                                        end
                                        default : begin
                                                astate        <= red;
                                                alamp        <= 4'b0001;
                                        end
                                endcase
                        end else begin
                                if(rest_atime>1) begin
                                        if(rest_atime[3:0] == 0) begin
                                                rest_atime[3:0]        <= 4'b1001;
                                                rest_atime[7:4]        <= rest_atime[7:4]-1;
                                        end else begin
                                                rest_atime[3:0]        <= rest_atime[3:0]-1;
                                        end
                                end
                                if(rest_atime==2) begin
                                        tempa<=1;            //这里改成temp<=0,为什么我取1就不可以
                                end
                        end
                end else begin
                        alamp                <= 1;
                        astate                <= red;
                        tempa                <= 0;
                end
        end


你最好还是把整个module的代码发上来吧,只看这一段还是不够的

使用特权

评论回复
6
tiantianlianxi|  楼主 | 2013-11-21 19:49 | 只看该作者
haitaox 发表于 2013-11-21 12:42
你好,看了你的代码,觉得缩进不是太好,我帮你整理了一下

        always @(posedge clk) begin

请问你现在在不》》》》??

使用特权

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

本版积分规则

18

主题

98

帖子

0

粉丝