关于旋转编码器需要2分频的实现疑惑

2019-12-11 18:21发布

有一个旋转编码器,输出的是A,A-,B,B-信号,其中A,A-为反向信号,B,B-也为一对反向信号,A,B信号的高低电平变化的时序组成正反转和计数用。现在想对这组信号进行2分频使用。
我开始以为就一个简单的2分频电路就行。但仔细考虑下来不是那么简单的,分频后的信号方向不能改变,只是计数改变就不好弄了。用编程逻辑很容易实现2分频,但要把各信号之间的关联性考虑进来就不知道如何弄了。
请大家指导下。
不知道发在什么区,我就发这里了。如不合适,请版主帮忙移动下。谢谢各位。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
16条回答
zhoupy
2019-12-13 06:09
我做过类似项目。
按4倍频计数和判相,/4为不倍频输出,/8为二分频输出

能指导下吗,我这个思路是否正确,是否有遗漏的地方。现贴上描述语言,编译通过
module data_shilt(data_in_a,data_in_b,data_a,data_b);
input data_in_a;
input data_in_b;
output data_a;
output data_b;
reg data_a;
reg data_b;
reg [2:0]con1;//a的下降沿
reg [2:0]con2;//a的上升沿
//下降沿negedge
//上升沿posedge
always @(data_in_a)
begin
    if(data_in_a==1'b0)
    begin
            if(con1>=1)//32 or 16
                          begin
                          con1=0;
                          data_a<=1'b1;
                          end
                else
                 begin
                  data_a<=1'b0;
                  data_b<=data_in_b;
                  con1=1;
                  con2=0;
                 end
    end         
//
        else
        begin
            if(con2>=1)//
                          begin
                          con2=0;
                          data_b<=~data_b;
                          end
                else
                 begin
                  data_b<=~data_b;
                  con2=1;
                 end           
        end
end
endmodule
//

//
module data_s_16(a1_in,b1_in,a2_in,b2_in,a1_out,b1_out,a2_out,b2_out);
input a1_in;
input b1_in;
input a2_in;
input b2_in;
//
output a1_out;
output b1_out;
output a2_out;
output b2_out;
//
wire a1_out;
wire b1_out;
wire a2_out;
wire b2_out;
//
data_shilt data_r0(a1_in,b1_in,a1_out,b1_out);
data_shilt data_r1(a2_in,b2_in,a2_out,b2_out);

endmodule

           



一周热门 更多>