CPLD应用:增量式光栅旋转编码器的4倍频解码
刚学了几天的CPLD,上传我的第一个应用,不知道实际工作情况如何,希望高手指点指点,谢谢
如果CLK时钟频率为25Mhz,则至少可以对输出频率2.5Mhz以下增量式光栅旋转编码器的进行4倍频解码
概念如下:
增量式光栅旋转编码器分辨率:2500p/r (常用伺服系统的编码器)
按工作时最大的输出频率为2.5Mhz计算,编码器可以工作到60000r/m,当然这样的旋转速度实际上是很难达到的,实际上的常用的伺服电机最大工作到5000r/m
CLK:倍频用时钟频率
A:编码器A相
B:编码器B相
CP:解码后的脉冲
DIR:旋转方向
仿真图片如下:
Verilog hdl代码:
module decoder(CLK, A, B, CP, DIR);
input CLK;
input A;
input B;
output CP;
output DIR;
reg CP;
reg DIR;
wire a_xor_b;
reg a_xor_b_temp;
reg[3:0] a_xor_b_counter;
xor (a_xor_b, A, B);
always @(posedge CLK)
begin
if(a_xor_b_temp != a_xor_b)
begin
CP = 1'b1;
a_xor_b_temp = a_xor_b;
a_xor_b_counter = 4'b0000;
end
else
begin
a_xor_b_counter = a_xor_b_counter + 4'b0001;
if(a_xor_b_counter >= 4'b0010) // 根据实际应用,可以改变a_xor_b_counter上限值来改变输出脉宽
begin
CP = 1'b0;
end
end
end
always @(posedge A) begin
DIR = ~B;
end
endmodule |
|
|
|