正交编码器数字滤波器(一)电路初画完了,正交编码器数字滤波器(二)把核心部分用HDL描述语言实现了,放在一个小芯片里。
上面的整张图上,截出下面的小图,就用古老的ABEL工具实现它。
这张图上有六个芯片,用一个P16R4可编程器件就可以了,样子是这样的。
开发环境 Win11 + vDOS + ABEL4
Win11和其它Win也都行,开源vDOS考贝到一个文件夹,不需要安装。在vDOS所在文件夹里做个子文件夹把ABEL4放进去,软件在CSDN找了下载,VETUSWARE老DOS程序收集铺也有这东西,一个最大优点就是简单。简单工具做简单事,方便实用。
在WIN上运行vDOS是这样的,它所在的文件夹就自动变成C盘,窗口在WIN11上可大小,右上角还带个小ControlBox,键入exit或点x就退出vDOS程序了。我自己用喜欢全屏大字,那种流年的感受特好。
好,我们在C:\>_处转到ABEL4然后用个FreeDOS里不花钱的文本编辑器edit编程即可。vDOS兼容许多版本的DOS,需要其它DOS程序找到考贝了用就行。看它列出的空间,大到全盘,根本不用担心空间问题。
文件名 Qfiltout.abl,程序界面下图。
完整代码
module QFiltout
title 'Quadrature filter output with JK, and 2-3input for A, B
Ref Mongnewer 24 Dec 2022'
QFiltout device 'P16R4';
CLK pin 1;
Qa43 pin 2;
Qa42 pin 3;
Qa41 pin 4;
Qb43 pin 5;
Qb42 pin 6;
Qb41 pin 7;
Qa pin 19;
Qb pin 18;
FQa pin 14 istype 'reg_D,invert';
FQb pin 15 istype 'reg_D,invert';
equations
FQa.C = CLK;
FQa.D = (Qa43 & Qa42 & Qa41)&!Qa # !(!Qa43 & !Qa42 & !Qa41)&Qa;
Qa = FQa.Q;
FQb.C = CLK;
FQb.D = (Qb43 & Qb42 & Qb41)&!Qb # !(!Qb43 & !Qb42 & !Qb41)&Qb;
Qb = FQb.Q;
test_vectors ([CLK, Qa43, Qa42, Qa41, Qb43, Qb42, Qb41] -> [Qa, Qb])
[.C., 0, 0, 0, 0, 0, 0] -> [0, 0];
[.C., 0, 0, 1, 0, 0, 1] -> [0, 0];
[.C., 0, 1, 0, 0, 1, 0] -> [0, 0];
[.C., 0, 1, 1, 0, 1, 1] -> [0, 0];
[.C., 1, 0, 0, 1, 0, 0] -> [0, 0];
[.C., 1, 0, 1, 1, 0, 1] -> [0, 0];
[.C., 1, 1, 0, 1, 1, 0] -> [0, 0];
[.C., 1, 1, 1, 1, 1, 1] -> [1, 1];
[.C., 1, 1, 0, 1, 1, 0] -> [1, 1];
[.C., 1, 0, 1, 1, 0, 1] -> [1, 1];
[.C., 1, 0, 0, 1, 0, 0] -> [1, 1];
[.C., 0, 1, 1, 0, 1, 1] -> [1, 1];
[.C., 0, 1, 0, 0, 1, 0] -> [1, 1];
[.C., 0, 0, 1, 0, 0, 1] -> [1, 1];
[.C., 0, 0, 0, 0, 0, 0] -> [0, 0];
[.C., 0, 0, 1, 0, 0, 1] -> [0, 0];
[.C., 0, 1, 0, 0, 1, 0] -> [0, 0];
[.C., 0, 1, 1, 0, 1, 1] -> [0, 0];
[.C., 1, 0, 0, 1, 0, 0] -> [0, 0];
[.C., 1, 0, 1, 1, 0, 1] -> [0, 0];
[.C., 1, 1, 0, 1, 1, 0] -> [0, 0];
[.C., 1, 1, 1, 1, 1, 1] -> [1, 1];
end QFiltout
保存退出,然后 abel4bat Qfiltout 回车,编译仿真报告一套活儿就全自动妙完。下面截图看一下它生成的一些内容。
Qfiltout.sim中的仿真结果,从0到1再到0一周结果全部是正确的。即三个连续的A或B信号,才确认输入A信号或B信号,中途预有干扰状态保持不变。
下面是DOC里的芯片样子,我用红线条加上辅助标记。
原图剩下前端两块4路D触发器,施密特前置触发器; 后端是解码,主要用到上升和下降沿,然后出计数脉冲和方向信号电平,或是一路UP脉冲一路DOWN脉冲代替方向信号电平。
不断学习,很少一点儿进步,继续努力。