免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: jimmyixy
打印 上一主题 下一主题

求助 简单状态机 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2010-12-29 16:10 |只看该作者
本帖最后由 jimmyixy 于 2010-12-29 16:13 编辑

回复 10# cjaizss


    恩 不管怎样 灰常感谢 我先干了~~~

编码器是这样的三相输出 A B C
C是每转一圈产生一个脉冲
A、B每转一圈产生2000个脉冲,A比B提前半个周期表示顺时针转动,反之逆时针

目的就是对脉冲进行矢量计数,
因为AB频率一样相位差90°,所以正转来一个脉冲加1,反转来一个脉冲减1,只计一相的脉冲就行A或B
因为要根据脉冲数判断轴的位置
不知道我说的明白不

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
12 [报告]
发表于 2010-12-29 16:13 |只看该作者
编码器,哦,我知道,放在转轴上的,我用过一周36000个脉冲的
好的,我想想,晚上时候有空帮你写一个

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
13 [报告]
发表于 2010-12-29 16:20 |只看该作者
回复  cjaizss


    恩 不管怎样 灰常感谢 我先干了~~~

编码器是这样的三相输出 A B C
C是每转一圈 ...
jimmyixy 发表于 2010-12-29 16:10



    不过最好,你还是给我留两个波形图,形容一下正转一下反转的情形

论坛徽章:
0
14 [报告]
发表于 2010-12-29 16:21 |只看该作者
回复 12# cjaizss


   
感激涕零

论坛徽章:
0
15 [报告]
发表于 2010-12-29 16:34 |只看该作者
回复 13# cjaizss


    当时用示波器测的
就是普通的矩形波
AB相相差90° B相落后A相90° (1/4周期)是正转,
两者的波形,频率都一样

111.PNG (5.39 KB, 下载次数: 23)

111.PNG

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
16 [报告]
发表于 2010-12-29 16:36 |只看该作者
回复  cjaizss


      
感激涕零
jimmyixy 发表于 2010-12-29 16:21



    先别感激,刚上电的时候是不是马上C一定会有个脉冲?
   
1代表脉冲
时间->
A  1           1              1                 1                  1                 1                          1
B      1            1             1            1                  1                       1                            1
C 1
          正转                             反转                          正转
波形是不是像这样?

论坛徽章:
0
17 [报告]
发表于 2010-12-29 16:41 |只看该作者
回复 16# cjaizss


    c转一圈才有一个脉冲,不转的时候,都是低电平
相位跟你说的差不多,就跟我那个图上标明的 高电平时有一段是重合的,因为只领先/落后1/4周期
我那个程序编译过了 呵呵
把初始化放到CLR信号处理过程中
仿真下试试,
期待版主大大的指导

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
18 [报告]
发表于 2010-12-29 16:49 |只看该作者
哦,看明白你的波形图了,这个好办了

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
19 [报告]
发表于 2010-12-29 17:00 |只看该作者
本帖最后由 cjaizss 于 2010-12-30 08:47 编辑
哦,看明白你的波形图了,这个好办了
cjaizss 发表于 2010-12-29 16:49



  module cnt_module(clk,nrst,A,B,C,count);
  input clk,nrst,A,B,C;
  output [31:0]count;
  reg A1,A2,B1,B2,Ar,Br;
  reg [31:0]count;

  always@(negedge nrst or posedge clk)
  if(!nrst)
    {A1,A2,B1,B2}<=4'b1111;
else
    {A1,A2,B1,B2}<={A,A1,B,B1};
      always@(negedge nrst or posedge clk)
  if(!nrst)
    {Ar,Br}<=2'b00;
    else begin
      if(A1==A2)
        Ar<=A1;
      if(B1==B2)
        Br<=B1;
      end
   wire A_posedge=A1==A2&&A2!=Ar;
always@(negedge nrst or posedge clk)
   if(!nrst)
    count <=0;
    else
    begin
      if(A_posedge)
      begin
      if(Br)
          count<=count-1;
      else
           count<=count+1;
       end   
     end
      
endmodule

论坛徽章:
0
20 [报告]
发表于 2010-12-29 17:08 |只看该作者
先研究下
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP