新闻中心

EEPW首页 > 模拟技术 > 设计应用 > 正交解码器(VHDL)入门

正交解码器(VHDL)入门

时间:2026-06-10 11:51 来源:digikey forum 收藏

特性

·组件的源代码

·输出信号的方向和位置计数

·可清零位置计数器以设置“原点”或索引

·可配置位置计数器大小

·可配置消抖时间以确保输入稳定性并消除毛刺

简介

本文详述了用于和的电路,采用编写。该组件读取的信号,判断方向,跟踪累计位置,并将结果输出至用户逻辑。设计基于 II 13.1.0版本。资源需求取决于具体实现方案。图1展示了集成至系统的典型示例。

image.png

图 1. 实现示例

背景

通过双通道检测运动装置(通常是旋转盘/轴——旋转编码器,或线性条带——线性编码器)的位置。如图2所示,盘片或条带上刻有两道相位差90度的编码轨道。当编码轨道相对于固定传感器移动时,传感器输出信号与其所见的轨道部分相对应。

image.png

图 2. 编码轨道与输出信号

正交解码器会解析这些输出信号。通过统计两个通道上的跳变,解码器可判断设备移动距离,并根据跳变顺序确定移动方向。若设定原点,解码器计数值将反映设备相对于该原点的位置。部分旋转正交编码器设有第三输出通道,每转产生单个脉冲(称为索引信号),常被用于此目的。

工作原理

同步与消抖

正交解码器的第一级电路负责同步和消抖来自编码器的输入信号。其基于本文所述消抖逻辑电路(经细微改动,以牺牲额外逻辑资源为代价实现更精确的消抖时间)。图3展示了该电路。当输入变化时,对应异或门输出会清零计数器。输入稳定时,计数器开始计数。若输入保持稳定直至计数达到 debounce_time,新值将存入最终寄存器,且计数器自锁直至再次检测到输入变化。a/b 输入间的既定关系使其可共享消抖计数器,两者采用相同消抖周期。set_origin_n 输入设有独立消抖电路,工作原理相同。

image.png

图 3. 同步与消抖电路

方向与位置判定

表1列出a/b 输入可能的跳变组合,及对应的方向/位置解码值。

表 1. 真值表

image.png

如真值表所示,方向由以下逻辑确定:

= a_new XOR b_prev

位置增减也遵循相同条件。这些数值仅在a/b 新值通过验证时才会被记录。当消抖时间满足且a/b 任一值发生变化时触发验证。

set_origin_n 输入会同步清除位置计数器(设置参考位置),同时禁用方向输出。

图4展示了该逻辑电路。

image.png

图 4 . 解码器电路

配置正交解码器

通过设置ENTITY中的参数来配置正交解码器。表2描述了这些参数。

表 2. 通用参数说明

image.png

设置位置计数器的大小

通用参数s 用于设置位置计数器的大小。计数器的输出 值范围从0到 s - 1。如果计数器的值超出其范围边界,无论方向如何,都会进行回绕。(如果计数器从位置0递减,新值将是positions - 1。如果从positions - 1递增,新值将是0。)

设置 a 和 b 输入的消抖时间

a 和b 输入的消抖时间由debounce_time 通用参数设置。实际的消抖时间为(debounce_time + 2) * 系统时钟周期。这个时间高度依赖于具体应用。该参数的设置应使其短于编码器信号预期保持相同代码的最短时间(由移动系统的速度和几何形状决定),同时足够长以消除代码转换过程中的毛刺或抖动。默认值为50,000,对应50 MHz时钟下的1毫秒。对于许多系统,消抖时间必须更短。

设置 set_origin_n 输入的消抖时间

set_origin_n 输入具有独立的消抖电路。由于该输入可能来自按钮或其他来源,其消抖时间可能需要比a 和b 输入长得多。其消抖时间由set_origin_debounce_time 通用参数设定。消抖时间为(set_origin_debounce_time + 2)*系统时钟周期。该通用参数默认值为500,000,对应50MHz时钟下的10毫秒。

端口描述

表3描述了正交解码器的端口。

表 3. 端口描述

image.png

 

示例波形

图5展示了说明正交解码器工作过程的示例波形。本示例中 positions 数配置为16。当 a 和 b 输入(ab_tb)沿正向变化时, 输出信号有效且 输出递增。当set_origin_n 输入无效时, position 输出清零。当 set_origin_n 重新有效后, position 输出从新参考点继续随正向输入递增。当输入转为负向时, direction 输出信号失效且 position 输出递减。当 position 输出从0递减时,将循环跳转到最大值15( positions -1)。

image.png 

图 5. 示例波形

结论

该正交解码器是可编程逻辑组件,用于跟踪正交编码器信号的方向和位置计数。位置计数器的大小可配置,输入消抖时间亦可调。该组件还包含同步清零功能,用户可通过正交编码器的索引特性设置参考位置或清零位置计数器。


评论


相关推荐

技术专区

关闭