| 
 | 
 
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册  
 
×
 
各位大佬,小弟初学FPGA,在门级的仿真的时候遇到了点问题,功能及程序如下: 
功能:实现状态机在S0 S1 S2三个状态间来回切换,其中S0 = 0, S1 = 1,S2 =2; 
 
现象:在S1切换为S2状态时也就是1切换到2的时候,state_p存在毛刺如下图 
    
    
            
             
            
            
            
 
    
    
            
             
            
            
            
 
具体代码如下: 
module SDRAM_CC1( 
    input clk, 
    input rst_n, 
    output [3:0] state_p 
); 
wire s02s1; 
wire s12s2; 
wire s22s0; 
 
reg  [3:0] state_c; 
reg  [3:0] state_n; 
 
 
 
assign state_p = state_c; 
 
parameter S0              = 4'b0000; 
parameter S1             = 4'b0001; 
parameter S2             = 4'b0010; 
 
assign s02s1             = (state_c ==S0 ); 
assign s12s2             = (state_c==S1 ); 
assign s22s0             = (state_c==S2 ); 
 
 
 
always @(posedge clk or negedge rst_n)begin 
    if (!rst_n)begin 
        state_c <=S0; 
    end 
    else begin 
        state_c <=state_n; 
    end 
end 
 
always @(*)begin 
        case (state_c)  
            S0:begin     
                if (s02s1)begin 
                    state_n=S1; 
                end  
 
            end  
            S1:begin   
                if (s12s2)begin 
                    state_n=S2; 
                end  
 
            end  
            S2:begin 
                if (s22s0)begin 
                    state_n=S0; 
                end  
 
            end  
            default:begin 
                state_n=S0; 
            end  
        endcase  
end 
 
 
endmodule 
 
请求路过的大神不吝赐教,谢谢 
 
 
 |   
 
 
 
 |