liaogiven 发表于 2011-7-5 16:05:25

求高手指点关于状态机的程序

仿真的时序与我上传的图片时序不对应,肯定是程序出了问题,求大虾指点
module pulse(clk,reset,pulse1_uin,pulse1_lin,pulse2_uin,pusle2_lin);
input clk,reset;
output pulse1_uin,pulse1_lin,pulse2_uin,pusle2_lin;
reg pulse1_uin,pulse1_lin,pulse2_uin,pusle2_lin;
integerstate,nxstate,counter;
parameter st0=0,st1=1,st2=2,st3=3,st4=4,st5=5,st6=6,st7=7;
always @(posedge clk or negedge reset)
begin
        if(!reset)
        begin
          state=st0;
          counter=0;
//          nxstate=st0;
        end
        else
        begin
          counter<=counter+1;
          state=nxstate;
          
        end
end

always @(state)
begin
case(state)
st0: begin
         
         pulse1_uin=1'b0;pulse1_lin=1'b1;
         pulse2_uin=1'b0;pusle2_lin=1'b1;
         if(counter==5)
         nxstate=st1;
         #100 nxstate=st1;
       end
st1: begin
         pulse1_uin=1'b0;pulse1_lin=1'b0;
         pulse2_uin=1'b0;pusle2_lin=1'b1;
      
         if(counter==10)
      #100 nxstate=st2;
      
       end      
st2: begin
         pulse1_uin=1'b1;pulse1_lin=1'b0;
         pulse2_uin=1'b0;pusle2_lin=1'b1;
         if(counter==15)
         nxstate=st3;
       end
st3: begin
         pulse1_uin=1'b0;pulse1_lin=1'b0;
         pulse2_uin=1'b0;pusle2_lin=1'b1;
         if(counter==20)
      #100 nxstate=st4;
       end
st4: begin
         pulse1_uin=1'b0;pulse1_lin=1'b1;
         pulse2_uin=1'b0;pusle2_lin=1'b1;
         if(counter==25)
      #100 nxstate=st5;
       end
st5: begin
         pulse1_uin=1'b0;pulse1_lin=1'b1;
         pulse2_uin=1'b0;pusle2_lin=1'b0;
         if(counter==30)
       #100 nxstate=st6;
       end
st6: begin
         pulse1_uin=1'b0;pulse1_lin=1'b1;
         pulse2_uin=1'b1;pusle2_lin=1'b0;
         if(counter==35)
      #100 nxstate=st7;
       end
               
               
st7: begin
         pulse1_uin=1'b0;pulse1_lin=1'b1;
         pulse2_uin=1'b0;pusle2_lin=1'b0;
         if(counter==40)
         begin
      #100 nxstate=st0;
         counter=0;
         end
       end
      endcase
    end
endmodule

蓝余 发表于 2011-7-5 18:36:28

我用vhdl,看得有点头晕。

liujilei311 发表于 2011-7-28 09:53:30

我也是,看着很头晕的!!!!

wangxia6112 发表于 2011-8-15 17:07:31

reg state;

liujilei311 发表于 2011-8-23 07:56:46

也可能是程序有问题,也可能是测试文件有问题,你结合波形图,多找找原因吧!!!!!!!!!

hhq520189 发表于 2011-8-23 09:49:00

你仿真的图呢,放出来好分析

hhq520189 发表于 2011-8-23 09:49:05

你仿真的图呢,放出来好分析

liujilei311 发表于 2011-8-23 17:12:32

最好把测试文件和仿真图都放上面,那么更有利于问题的分析和解决!!!!!!!!
页: [1]
查看完整版本: 求高手指点关于状态机的程序