CPLD编写自己需要的逻辑功能出现错误,求解决?

2019-03-25 07:50发布

该模块实现的逻辑功能是:当N3=1时,

      如果:IN25=1(第一次出现)
      那么:I9=0,I7=1;
      如果:IN25=1(第二次出现)
      那么:I9=1,I7=0;
      如果:IN25=1(第三次出现)
      那么:I9=1,I7=0;
      之后如此循环,第四次出现等同第一次,第五次出现等同第二次,第六次出现等同第三次,、、、、、
当N3=0时,
      I9=0,I7=0,并且模块中的变量temp13=0;

以下是我编写的Verilog语言:有错误,即使通过调试没有错误但是逻辑功能实现不了,求解决!
module Logic_Trans_v(IN25,N3,I9,I7);
        input IN25,N3;
        output I9,I7;
        reg[3:0] temp13,temp23;
        reg I9,I7;
        initial
                begin
                temp13=0;
                temp23=0;
                I9=0;
                I7=0;
                end
        always @(negedge N3)
                begin
                temp13=0;
                I9=0;
                I7=0;
                end
        always @(posedge IN25)
                        begin
                        if(IN25)
                                begin
                                temp13=temp13+1;
                                temp23=temp13%3;
                                end
                        case(temp23)
                                0: begin
                                        I9=1;
                                        I7=0;
                                        end
                                1: begin
                                        I9=0;
                                        I7=1;
                                        end
                                2: begin
                                        I9=1;
                                        I7=0;
                                        end
                                default:
                                        begin
                                        I9=0;
                                        I7=0;
                                        end
                        endcase
                        if(temp13>=3)
                                temp13=0;
                        end
endmodule

此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。