2013.7-多摩川编码器总结

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2013.7 多摩川编码器总结

一、摘要

基于CPLD 和DSP 实现CPLD 与多摩川编码器的通讯,通过对编码器发送请求,得到编码器发回的数据并进行解码,得到绝对位置值。

二、学习步骤:

1、熟悉工作环境,掌握Modelsim 以及Quartus 的使用。

2、阅读多摩川编码器的通讯协议。

3、根据协议编写testbench ,并在Modelsim 上进行仿真调试。

4、仿真通过后,通过Quartus 编译后下载到CPLD 上并与编码器通讯,实际情况下运行。

5、完成各项要求的功能。

6、对代码进行优化,尽可能减少资源占用。

7、验收。

三、总体结构

双绞线,差分式,串行

地址/数据总线接口

RO,DI,DIR逻辑信号

结构分三部分:多摩川编码器,CPLD ,DSP 。

1、编码器跟CPLD 之间通过MAX485电平转换进行连接。

2、CPLD 与DSP 则通过总线进行连接(这一部分结构编写学长已经完成并且提供了端口连接)

3、主要工作是CPLD 的解码部分。

四、通讯协议

1、TS5668的技术指标:(物理层)

精度:单圈精度: 17位(131 072) 多圈精度: 16位(65 536) 最高转速/ ( r ·min - 1 ): 6 000】 输出:差分NRZ 编码二进制 传输速度/Mbp s : 2. 5 发送、接收电路:差分形式 通信方式:主从模式

接口:3FG ,4sig+ ,5sig-,7VCC ,8DGND 。4和5为差分信号接口。 2、通信步骤如下图:(逻辑链路层)

1)CPLD 向编码器发送一个控制字CF 2)3us 后编码器返回数据包。

3)CPLD 对数据包进行解码,并将得到的数据放在总线上,等待DSP 获取。 具体流程如下图:

3、字的结构:下图分别为CF、DF、CRC字的结构。

1)CF

字的开始位为0,再是010的同步位,以及4位的控制位,1位奇偶校验位(对控制位进行奇偶校验),结束位为1,共十位。

通过不同的Data ID code可以实现不同的功能,具体功能如下表:

2)SF

该字包含错误信息,如编码错误和通讯警报。通过检测相应位置上的值,就可以确定编码器的工作状态是否正常。

3)CRC

进行CRC校验时,要对所有数据进行校验。计算时除掉每字的起始位和分隔符。

4)数据传输

正如CF介绍中提到,不同的CF控制命令会对应不同的数据结构传输。主要有三类,而我们用的是Data ID0,绝对数据传输。后面的空格表明没有数据传输。

数据传输中,低位在前,高位在后,每一字都是以0开始以1结束。由于是17位精度编码器,DF2数据位的高7位都是0。

五、需求分析

1、启动

DSP每隔60us向CPLD发送一个启动脉冲,CPLD捕捉到上升沿后开始向编码器发送CF 请求命令。如果CPLD已经处于发送或接受状态,再接收到启动脉冲,不予响应。

2、485使能

由于CPLD与编码器的通讯需要MAX485进行电平转换,而MAX485是一个半双工器件,因此,需要提供一个端口控制485的使能端,决定485的读写控制。

3、频率要求

板子上提供10M频率的时钟,而多摩川编码器的通讯协议需要2.5M频率时钟,因此需

要分频。

4、异常情况分析

考虑到传输过程中的异常情况(比如把“0”传输成“1”,或者反之),以及其他可能会出现的错误情况。

1)编码器接受到错误的CF ,给出了相应的回应。 2)编码器接受到错误的CF ,没有回应。

3)编码器自身出现错误(在SF 中会给出错误类型)。 5、与DSP 的通讯

得到绝对位置值之后,需要将读取的结果发送给DSP ,而这一过程需要提供一个端口使CPLD 与DSP 连接。

六、整体设计

1、流程图

基于多摩川编码器的通讯协议以及需求分析,可以做出以下流程图。

2、分配状态

根据流程图,可以通过“状态机”来完成各个状态之间的切换,因此,分配状态为:Idle (闲置),Request (请求),Wait (等待),Receive (接收)四个状态。状态机的编写有一段式、两段式和三段式,这里状态比较简单,可以采用结构简单的一段式。(对于复杂的状态机,不推荐使用一段式)

具体写法如下:

闲置

有启动脉冲 发送CF 有正确响应

等待响应 接收数据 无响应或无

正确响应

处理数据

reg[1:0] state

parameter

Idle = 2'b00, Request = 2'b01,

Wait = 2'b10, Receive = 2'b11;

case (state)

Idle: …

Request: …

Wait: …

Receive: …

3、闲置状态

CPLD处于闲置状态,等待DSP发送命令。当DSP发送启动脉冲后,CPLD检测到上升沿,即由闲置状态进入请求状态,同时,为请求状态做好初始化准备。而在其它状态检测到上升沿时,则不予响应。

具体代码如下:

1)检测启动脉冲

always @(posedge start or posedge start_fg1)

begin

if(start == 1) start_fg <= 1'b1;

if(start_fg1 == 1) start_fg <= 1'b0;

end

2)状态更改并为请求状态做好初始化准备

Idle:

begin

txd <= 1;

if(start_fg == 1'b1)

begin

state <= Request;

E_c <= 1; //485使能,1向编码器写数据

start_fg1 <= 1'b1;

end

end

4、请求状态

CPLD处于请求状态时,每一个时钟周期发送一个高低电平。请求命令为:0010000001。发送结束后,进入等待状态,等待编码器响应。

具体代码如下:

Request:

begin

if(i == 8'd10) //发送结束

begin

state <= Wait;

start_fg1 <= 1'b0;

E_c <= 0; //485使能,0接受编码器数据

CF_r <= 10'd0;

相关文档
最新文档