当前位置: 首页 > article >正文

基于dsp+fpga+AD+ENDAC的半导体运动台高速数据采集电路仿真设计(四)

整个调试验证与仿真分析分三个步骤:第一步是进行 PCB 检查及电气特性测试,主
要用来验证硬件设计是否正常工作;第二步进行各子模块功能测试,包括高速光纤串行
通信的稳定性与可靠性测试, A/D D/A 转换特性测试, EnDat 串行通信相关时序测试
与验证等,主要用来验证 FPGA 软件内核是否正常工作以及符合预期设计要求;第三步
进行系统联合测试验证,主要包括 DSP 系统对远程伺服控制分系统控制命令数据的发,
以及对 EnDat 远程位置数据、增量式位置数据、各数字或模拟传感器的远程数据请求及
验证。
5.1 调试与验证仿真平台
为了对整个系统进行验证测试,需搭建相应的调试与仿真验证平台。调试与仿真验
证平台主要包括硬件平台、软件开发环境、仿真调试工具三大部分:
1. 硬件平台: DSP 主系统控制板卡、传感数据采集板卡、伺服控制及位置数据控制
卡、 PC 机。
2. 软件开发环境: CCS3.3 Quartus II 11.1 及其 SignalTap II 在线逻辑分析仪、 Modelsim
SE Matlab 等。
3. 测试工具:安捷伦 MSO7032A 示波器(带宽 350Mhz 、采样率 2Gps )、 DSP 仿真
器( XDS510 )、 FPGA 下载仿真器 (USB-Blaster) 、安捷伦 34401A 万用表(六位半)、信
号发生器、直流电源、 3 62.5/125um SC-SC 接口多模光纤线缆等。
5.2 系统子模块功能仿真
5.2.1 模数 D/A 数模 A/D 子模块验证
验证方法:采用由 FPGA 主动产生一系列递增的数字量,然后送给 DA 模块进行转
换,得到对应的模拟电压信号。测试点选择第三章中图 3.15 中的 TP28 点及其后端差分
后的 TP29 TP25 测试点进行。输入值为 16'H0000---16'HFFFF 之间的一些值,输出值
为对应测试点的电压值,数字与模拟值之间的对应关系为:

表格 5.1 为按照上述验证方法,采用安捷伦 34401A 万用表测得的实验数据,然后
再计算测量值与真实值之间的误差,结果如表 5.2 所示:
根据表格 5.2 测得的误差数据进行散点作图,得到图 5.1 所示的误差散点示意图。
据图显示, DA 最大误差值在 0.006 左右,达到设计要求的 13 位精度,满足了设计预期。

数模 A/D 子模块的验证方法与之类似,在此不再详细介绍。
5.2.2 EnDat 子模块的验证
验证方法:采用 SignalTap II 在线逻辑分析仪对不同模式指令下的传输时序进行探
测,然后与 EnDat 规范相比较,从而确定本文中第四章中 EnDat 双向串行通信协议内核
的设计是否能够正常工作。本次使用 EnDat2.2 版本的多圈旋转编码器进行验证,其中
编码器主要参数是单圈 13 位,多圈 12 位。
5.2 EnDat 双向串行通信协议内核向编码器发送模式指令:编码器传送位置值,
对应的模式指令码为 000111 。编码器计算位置值后向 EnDat 内核发送位置值,其时序与
第四章中介绍的 EnDat 传输位置值时序规范完全符合,其中单圈数值为 6735 ,多圈数
值为 1580
5.3 EnDat 内核向编码器发送读取参数模式指令,模式指令码为 100011 EnDat
内核接收到的串行数据为 1000000000011001 。根据 EnDat 规范,最高位保留读始终为高
电平,低 6 位用于指示编码器的总长度,因此 11001 表示该编码器为 25 位。
5.4 EnDat 内核向编码器发送读取参数模式指令,模式指令码为 100011 EnDat
内核接收到的串行数据为 0001000000000000 。根据 EnDat 规范, 16 位的数据代表编码
器可以区分的圈数,即多圈数目,因此( 1000 h 表示该编码器为 4096 12 位。
从测试的结果可以看出与之前已知的编码器参数完全吻合。
5.2.3 高速串行通信子模块的验证
验证方法:采用 SignalTap II 在线逻辑分析仪对高速串行通信内核的传输时序进行
探测,从而确定本文第四章中所设计的高速串行光纤通信内核的设计是否正常工作。在
4.16 和图 4.17 所示的发送控制器及接受控制器的空闲状态时,为了提供足够的信道
跳变密度,同时保证接收端的时钟相位的同步,协议内核中采用了 8B/10B 高速编码方
案中的特殊字符 K28.5 ,用来调整字对齐,保证接收时钟的相位同步,同时提供 50%
跳变密度。根据上文中 8B/10B 编码方案及表格 4.1 K28.5 对应的十位的传输字符二进
制表示分别是 0101111100 1010000011 ,即十六进制的 17C 283 ,其中 j 为最高位,
a 为最低位,测试结果如图 5.5 所示。
为了进行数据传输,首先要写发送缓存区,即双口 RAM 。为了测试方便简单,本
次只写十六进制的 11111111, 22222222, 33333333, 44444444, 55555555, 66666666 这六个
32 位的数据,测试结果如图 5.6 所示。
存储在如图 4.15 发送缓存区的数据 , 按照如图 4.14 所示的数据帧的格式传输到接收
端。其中数据长度配置为 5 ,基地址配置为 0x00 。因此十六进制的 11111111, 22222222,
33333333, 44444444, 55555555 按顺序被传输到接收端,而 66666666 则被忽略,因为数
据长度为 5 。在图 5.7 中, ENCODE_DATA 为某发送端编码前的 8 位数据,而
DECODE_DATA 是另外通信模块的接收端译码之后的 8 位数据。测试中采用的是同一
块板卡上面的两个不同的高速串行通信模块,即模块 A 的发送端与模块 B 的接收端进
行通信连接。
T delay 定义为在数据帧的传输过程中发送端与接收端的信道延迟时间。该参数只跟高
速串行通信模型有关,并不受应用层的控制,因此可以保证精确的控制。
测试结果如图 5.7 所示,从中可以明确地看到数据在状态机的控制下按照图 4.14
数据帧格式进行传输,测试结果表明,数据传输正确,且长时间测试无误码产生,传输
稳定可靠。
5.3 系统测试与验证
系统级的测试与验证,采用应用层 DSP 主系统对系统的各个子模块进行功能验证
与分析,以判断应用层能否对各功能模块进行长时间无错误的信息采集及数据下发任
务,确保整个系统的可靠运行。值得庆幸的是 CCS 提供了一个信号分析工具 Graph
形窗口,使用户能够精确的监测信号数据,是数据采集分析强有力的工具。
5.3.1 系统对 EnDat 数据采集的验证
验证方法:采用 CCS 信号分析工具 Graph 图形窗口,将 EnDat 数据值实时显示作
图,其中使用 EnDat2.2 版本的多圈旋转编码器,其单圈 13 位,多圈 12 位,采用手动
选择的方式。图 5.8 中左侧为顺时针旋转时的数据波形,右侧为逆时针旋转时的数据波
形,从中可以看出单圈位置值有规律的从 0 逐渐增大到最大值 2 13 8192 ,然后又回到
0 ,如此重复;由于采用手动旋转的方式,多圈位置值没有进行截图。单圈位置数据的
测试结果如图 5.8 所示。
5.3.2 系统高速串行光纤通信可靠性验证
验证方法:采用 SignalTap II 在线逻辑分析仪和 CCS 集成开发环境对高速串行光纤
通信进行长时间的测试,以判断通信的可靠性。
根据高速串行光纤通信协议, DSP 主系统发送一帧数据,目标板会应答一次,如果
中断使能则应答中断产生一次。因此,发送数目、 atc 应答数目、中断数目,三个数值
应当相等即 Send Data Num ATC int Num interput happened Num 三个变量数值相等,
且等于测试帧数目,同时数据接收中断 Data received int Num 数目为零;说明光纤通信
正常,否则异常。测试结果如图 5.9 所示, CCS 的打印窗口表明,一千万次的可靠性测
试中 Send Data Num ATC int Num interput happened Num 三个变量数值均为一千万次,
Data received int Num 0 ,无错误产生,系统高速串行光纤通信可靠性很高,完全满足
本课题需求。
5.3.3 系统对 DA 控制输出的验证
验证方法:采用示波器对 DSP 主系统下发的 DA 控制数据进行显示,以判断应用层
DA 控制的正确性。
测试采用 DSP 的定时器中断产生 200us 的中断周期,模拟 200us 的伺服周期内分别
DA 部分下发数据 0x0000 0x9999 两个数字量。根据前面的硬件设计, DA 输出的模
拟电压信号应为 0V 1.99999V 两个电压值,周期为 200us 的方波。图 5.10 所示为示波
器测试结果 , 从中可以看出实际输出与理论输出完全一致,由于测试中采用的是开关电
源,存在开关噪声,因此测得的模拟电压信号毛刺较大。

5.3.4 系统对 AD 信号采集的验证
验证方法:采用信号发生器为 AD 输入端提供模拟传感器信号,采用 CCS 信号分
析工具 Graph 图形窗口对采集的 AD 数字量实时作图显示,以判断应用层对 AD 信号采
集的正确性。

5.11 是测试结果,上面为信号发生器提供的模拟电压信号 , 下图为 Graph 图形窗
口对 AD 数字量的作图显示。从中可以看出,模拟电压信号与转化的数字量完全与理论
值相符合。
5.3.5 系统对 EMIF 的可靠性验证
验证方法:采用 CCS 集成开发环境,变量观察窗口及存储区查看窗口,对通过 EMIF
异步访问的发送及接收缓存区即双口 RAM 读写操作长时间测试,以判断 EMIF 读写通
信接口的可靠性。
EMIF 异步接口中,读、写都需要配置建立、选通、保持三个参数,为了缩短读写
话费的时间,尽可能设置的小,但过小的设置参数可能会影响读写操作的可靠性,因此
EMIF 读写通信接口的可靠性验证是必须的。
5.12 所示,通过 EMIF 异步接口对高速串行光纤通信内核的发送缓存区写一系列
递增的数据,然后再读取发送缓存区,将读到的数据与之前写入的数据进行一一比较,
就可以判断本次读写操作是否正确。测试结果显示,对缓存区即双口 RAM 255 个长
字即 1KB 的存储区进行了十万次的读写重复性测试,错误指示变量 ERROR 的值为零,
存储区查看窗口 memory window 显示了最后一次读写操作之后缓存区中存储的数据,
结果表明测试无误。
5.3.6 系统对增量式位置值采集的验证
验证方法:采用旋转电机自带的增量式接口提供增量式位置数据,利用 CCS 信号
分析工具 Graph 图形窗口对采集的增量式位置值实时作图显示,以判断增量式位置数据
采集的正确性。测试中电机开环,匀速旋转,定时手动复位位置数据为零,图 5.13 即为
测试结果,从图中可以看出,位置值数据从零均匀增加,手动复位时跳变为零,之后又
匀速增加,与理论预期完全吻合。

信迈提供DSP+FPGA电路仿真方案。 


http://www.kler.cn/a/15339.html

相关文章:

  • 游戏引擎学习第16天
  • Vue3中实现插槽使用
  • leetcode-44-通配符匹配
  • H.265流媒体播放器EasyPlayer.js视频流媒体播放器关于直播流播放完毕是否能监听到
  • 【汇编语言】数据处理的两个基本问题(二) —— 解密汇编语言:数据长度与寻址方式的综合应用
  • nodejs+mysql+vue3 应用实例剖析
  • Qt5.9学习笔记-事件(一)
  • 从线程安全到锁粒度,使用Redis分布式锁的注意事项
  • 【NLP实战】基于Bert和双向LSTM的情感分类【上篇】
  • C#简单向:textbox添加提示内容
  • APK文件结构
  • 成功上岸国防科大!
  • 【22-23 春学期】人工智能基础--AI作业6-误差反向传播
  • 大数据管理中心规划设计方案(ppt可编辑)
  • Centos编译安装python3.9.0
  • 【IT 常识】安装(Install)、部署(Deploy)、搭建(Setup)和配置(Configure、Set)的区别
  • Selenium:WebDriver简介及元素定位
  • 人人都能用,3s学会加密你的网址变成ooo
  • LVS+Keepalived群集
  • 第三节:支持向量机分类预测
  • 【论文精度(李沐老师)】Deep Residual Learning for Image Recognition
  • 【opencv】几何变换——仿射变换(4 计算仿射矩阵)
  • 【具体到每一步】uniapp打包app生成apk包
  • MySql数据库的初步安装与数据表结构数据管理
  • 进程与线程:同步和互斥
  • WiFi电子标签简介