集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 2547|回复: 7

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

[复制链接]
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;
integer  state,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

本帖子中包含更多资源

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

x
蓝余 发表于 2011-7-5 18:36:28 | 显示全部楼层
我用vhdl,看得有点头晕。
liujilei311 发表于 2011-7-28 09:53:30 | 显示全部楼层
我也是,看着很头晕的!!!!
wangxia6112 发表于 2011-8-15 17:07:31 | 显示全部楼层
reg [3:0]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 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2025-6-24 04:21 , Processed in 0.104184 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表