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