多摩川绝对值编码器CPLD FPGA通信源码VHDL格式协议说明书 用于伺服行业开发者开发编码器接口对于使用FPGA开发电流环的人员具有参考价值。 适用于TS5700N8501,TS5700N8401等多摩川绝对值编码器波特率支持2.5M和5M一、顶层模块AU5982.vhd该模块为系统顶层设计定义核心参数与接口实现各子模块的实例化与信号连接。参数定义包含5个可配置参数分别为系统时钟频率SYSCLK、请求超时时间RQTOUT、复位后请求屏蔽时间RQMASKTIME、自动请求间隔AUTOINT、手动模式选通长度STBLEN均通过Generic语句声明支持根据硬件环境调整。端口定义输入信号系统时钟SYSCLK、复位RESETn、CPU控制信号CSn、ISn、STRBn、R_Wn、ADDR、编码器串行数据SD输出信号中断INTn、请求信号RQ、超时标识TIMEOUT、双向数据总线DATA。模块实例化直接例化移位时钟sftclk、I/O接口ioif、超时检测timeoutdetect三个子模块通过内部信号如SFT、TObuf、RQSTART实现模块间数据交互未对内部逻辑进行额外扩展。二、请求生成模块rqgenerate.vhd负责根据工作模式生成编码器通信请求信号支持自动与手动两种触发方式。自动模式通过AUTORQ信号实现周期性请求周期由顶层参数AUTOINT定义。当AUTOEN为高电平时计数器在SFT时钟触发下累加达到AUTOINT值时生成AUTORQ脉冲触发请求发送。手动模式接收CPU的STRBn选通和RWn读写信号当STRBn为低且RWn为高时生成IORQ信号。同时通过STBLEN参数控制选通信号的有效时长避免信号抖动。输出控制通过RQSTART信号将自动/手动请求传递至请求处理模块同时生成RQBUSY信号标识请求状态防止请求冲突。三、请求处理模块rqprocess.vhd将请求信号封装为标准帧格式并发送实现与编码器的请求交互。帧格式处理请求帧结构固定为“起始位同步位0104位ID1位校验位地址数据停止位”通过状态机IDLE→SEND→...→DONE控制帧发送流程每个状态对应特定位的发送。CRC校验集成调用crcgen模块实时生成8位CRC校验码在数据位发送完成后自动附加到帧末尾确保请求数据的完整性。状态标识通过RQBUSYn请求忙和STOUT发送使能信号对外反馈发送状态发送完成后自动复位状态机等待下一次请求触发。四、数据接收处理模块sdprocess.vhd接收编码器返回的串行数据SD完成解析与错误检测。时序同步基于sdtiming模块生成的接收时序TIMING在SFT时钟触发下对SD信号进行采样确保数据采集的时序准确性。串并转换通过byteread模块将串行SD信号转换为8位并行数据RB按帧结构解析为状态帧SF、数据帧D0F~D7F及CRC帧解析过程严格遵循帧格式定义。帧长度适配根据编码器ID字段CF(6 downto 3)自动识别帧长度x0~x7不同长度对应不同的数据帧数量适配多型号编码器输出格式。错误检测包含四类错误检测逻辑CRC错误CRCE对比接收CRC与本地生成CRC格式错误FORME/SFOME检测起始位/停止位异常校验错误CONTE检查ID字段奇偶校验位超时错误联动timeoutdetect模块接收超时时触发。五、CRC生成模块crcgen.vhd实现8位CRC校验码的实时生成用于请求帧和接收帧的校验。工作逻辑在SFT时钟驱动下当CLRN为低电平时CRC缓存CRCbuf清零当SFT为高电平时按“CRCbuf(6 downto 0) CRCbuf(7 downto 1)CRCbuf(7) CRCbuf(0) xor SD”规则更新缓存生成实时校验码。输出特性CRC码通过CRCOUT信号持续输出供请求处理和接收处理模块调用未包含额外校验算法。六、串并转换模块byteread.vhd完成“1位串行数据→8位并行数据”的格式转换为数据解析提供基础。转换逻辑在SFT时钟触发下串行数据SD按位移入READBUF缓存缓存更新规则为“READBUF(6 downto 0) READBUF(7 downto 1)READBUF(7) SD”8位数据满后通过RD信号输出并行数据。控制信号通过CLR信号控制缓存清零确保每次转换的独立性。七、移位时钟模块sftclk.vhd生成串行通信所需的移位时钟支持两种工作模式。模式选择由SELRT信号控制SELRT1时直接输出高电平SELRT0时输出系统时钟的2分频信号通过TIMING信号翻转生成作为默认移位时钟。输出信号移位时钟通过SFT信号输出为CRC生成、串并转换等模块提供时序基准。八、接收时序模块sdtiming.vhd生成数据接收的时序控制信号协调接收过程。时序生成基于SD信号和RQBUSY信号通过状态机生成9位接收时序TIMING控制数据接收的采样节奏确保每帧数据的正确接收。冲突避免当RQBUSY为高请求发送中时时序状态机保持复位避免发送与接收冲突。九、超时检测模块timeoutdetect.vhd监控数据接收过程检测通信超时异常。超时判断当SDbusy接收忙信号有效时启动计数器若计数达到顶层参数RQ_TOUT仍未完成接收则输出TIMEOUT信号标识超时。复位机制接收完成SDbusy变低或系统复位时计数器清零超时标识复位。十、I/O接口模块ioif.vhd实现系统与外部CPU的信号交互完成控制信号与数据的转换。信号转换将CPU的CSn片选、ISn中断选择、ADDR地址等信号转换为内部模块可识别的CSI、MANUAL等控制信号同时将内部状态如RQSTART反馈至CPU。数据缓冲通过OUTBUF缓存内部数据供CPU读取未对数据进行额外处理。十一、输出选择模块outsel.vhd根据控制信号选择输出数据实现数据总线的复用。选择逻辑基于工作模式MANUAL、地址ADDR、帧长度FRAMELENGTH从状态帧SF、数据帧D0F~D7F、ID、CRC中选择对应数据通过39位双向数据总线DATA输出。输出控制无数据转换逻辑仅实现信号选通功能。十二、中断控制模块intcont.vhd生成中断信号实现系统与CPU的异步通信。中断触发由SET信号触发INTn中断低电平有效支持两种清除方式手动模式CPU读写操作IOR0、CS0时清除自动模式STB_TIMER计时达到STBLEN后自动清除。计时逻辑通过计数器实现STBLEN时长控制计时基准为系统时钟。以上解读严格基于原始代码模块划分与逻辑描述未添加额外功能假设完整还原了各模块的设计意图与交互关系。多摩川绝对值编码器CPLD FPGA通信源码VHDL格式协议说明书 用于伺服行业开发者开发编码器接口对于使用FPGA开发电流环的人员具有参考价值。 适用于TS5700N8501,TS5700N8401等多摩川绝对值编码器波特率支持2.5M和5M