在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2172|回复: 3

有谁做过4细分和辨向程序

[复制链接]
发表于 2008-7-11 18:32:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

x
有谁做过4细分和辨向程序?
光栅传感器输出两路相位相差为90°的方波信号A和B.如图l所示,用A,B两相信号的脉冲数表示光栅走过的位移量,标志光栅分正向与反向移动.四倍频后的信号,经计数器计数后转化为相对位置.计数过程一般有两种实现方法:一是由微处理器内部定时计数器实现计数;二是由可逆计数器实现对正反向脉冲的计数.

                               
登录/注册后可看大图
 楼主| 发表于 2008-7-11 18:40:51 | 显示全部楼层
file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image002.jpg
要产生上述波形
 楼主| 发表于 2008-7-11 21:52:00 | 显示全部楼层
module test_encoder(
clk,
a,
b,
qh,
d);

input clk;
input a;
input b;
output d;
output qh;
reg qh1;
reg qh2;
reg qh3;
reg qh4 ;

reg[2:0] t1;
reg[2:0] t2;
reg[2:0] t3;
reg[2:0] t4;
reg[1:0] t5;
reg[1:0] t6;
reg[1:0] t7;
reg[1:0] t8;

reg d1;
reg d2;
reg d3;
reg d4;
[email=always@(posedge]always@(posedge[/email] clk)
  begin
   if(a)
    begin
     if(t5<=1)
      begin
       if(!b)
        begin
         qh1<=0;
        end
       else
        begin
         qh1<=1;
        end
       t5<=t5+1;
      end
    end
   else
    begin
     t5<=0;
     qh1<=1;
    end
  end
[email=always@(posedge]always@(posedge[/email] clk)
  begin
   if(b)
    begin
     if(t6<=1)
      begin
       if(a)
        begin
         qh2<=0;
        end
       else
        begin
         qh2<=1;
        end
       t6<=t6+1;
      end
    end
   else
    begin
     t6<=0;
     qh2<=1;
    end
  end
[email=always@(posedge]always@(posedge[/email] clk)
  begin
   if(!a)
    begin
     if(t7<=1)
      begin
       if(b)
        begin
         qh3<=0;
        end
       else
        begin
         qh3<=1;
        end
       t7<=t7+1;
      end
    end
   else
    begin
     t7<=0;
     qh3<=1;
    end
  end
[email=always@(posedge]always@(posedge[/email] clk)
  begin
   if(!b)
    begin
     if(t8<=1)
      begin
       if(!a)
        begin
         qh4<=0;
        end
       else
        begin
         qh4<=1;
        end
       t8<=t8+1;
      end
    end
   else
    begin
     t8<=0;
     qh4<=1;
    end
  end
[email=always@(posedge]always@(posedge[/email] clk)
  begin
   if(a)
    begin
     if(t1<=4)
      begin
       if(t1==4)
        begin
         d1<=1;
        end
       else
        begin
         d1<=0;
        end
       t1<=t1+1;
      end
     else
      begin
       d1<=0;
       t1<=t1;
      end
    end
   else
    begin
     d1<=0;
     t1<=0;
    end
  end
[email=always@(posedge]always@(posedge[/email] clk)
  begin
   if(b)
    begin
     if(t2<=4)
      begin
       if(t2==4)
        begin
         d2<=1;
        end
       else
        begin
         d2<=0;
        end
       t2<=t2+1;
      end
     else
      begin
       d2<=0;
       t2<=t2;
      end
    end
   else
    begin
     d2<=0;
     t2<=0;
    end
  end
[email=always@(posedge]always@(posedge[/email] clk)
  begin
   if(!a)
    begin
     if(t3<=4)
      begin
       if(t3==4)
        begin
         d3<=1;
        end
       else
        begin
         d3<=0;
        end
       t3<=t3+1;
      end
     else
      begin
       d3<=0;
       t3<=t3;
      end
    end
   else
    begin
     d3<=0;
     t3<=0;
    end
  end
[email=always@(posedge]always@(posedge[/email] clk)
  begin
   if(!b)
    begin
     if(t4<=4)
      begin
       if(t4==4)
        begin
         d4<=1;
        end
       else
        begin
         d4<=0;
        end
       t4<=t4+1;
      end
     else
      begin
       d4<=0;
       t4<=t4;
      end
    end
   else
    begin
     d4<=0;
     t4<=0;
    end
  end
assign d=(((d1||d2)||d3)||d4);
assign qh=(((qh1&&qh2)&&qh3)&&qh4);
endmod
发表于 2008-7-25 11:36:16 | 显示全部楼层
支持一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-16 15:21 , Processed in 0.031690 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表