0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

通过Avalon总线与NiosII实现光栅电子细分系统的集成和模块化设计

电子设计 来源:郭婷 作者:电子设计 2019-07-29 08:05 次阅读

1 概述

目前,光栅的电子细分技术是提高光栅位移传感器分辨率的主要途径,可分为软件细分法和硬件细分法。软件细分法虽然可以达到较高的细分数,但由于受到A/D器件转换精度和转换时间的限制,一定程度上影响了测量的实时性。硬件细分法一般用在细分数不太高的场合,而且随着细分数的提高,电路会变得更加复杂。本文使用专用插值芯片IC-NV)对前端输出的正交信号进行插值细分,利用FPGA对插值细分后的信号进行二次细分;同时利用QuartusII中的Component Editor工具设计了二次细分辨向组件、测速组件及LCD控制组件,并通过Avalon总线与NiosII软核处理器进行连接,实现了系统的集成和模块化。

2 莫尔条纹及四倍频直接细分的原理

莫尔条纹的电子细分是提高光栅位移传感器分辨率的主要途径之一。莫尔条纹是光栅位移传感器工作的基础。莫尔条纹间距近似为光栅栅距的1/θ倍(θ为主副光栅之间的夹角),并且方向近似与栅线方向垂直。当其中任一光栅沿垂直于刻线方向移动一个栅距时,莫尔条纹就在栅线方向上移动条纹间距,因此可以通过检测莫尔条纹的移动来计算指示光栅移动的距离。

对于横向莫尔条纹,为了判定指示光栅的位移方向进行可逆计数以及削弱直流电平漂移对测量精度的影响,可在一个莫尔条纹内等距放置4个光电收发元件。当条纹依次扫过这4个光电收发元件时,便会产生4路相位分别为0°、90°、180°、270°的信号,通过运放差动放大电路即可实现四细分。但是,实际应用中要实现4个光电收发元件的等距排列是非常困难的。目前,大多数的光栅位移传感器都采用光闸莫尔条纹来实现四细分,如图1所示。

通过Avalon总线与NiosII实现光栅电子细分系统的集成和模块化设计

光闸式光栅副的指示光栅上刻有4个裂相窗口,各个窗口内栅线与主光栅一致,且相邻两个窗口之间依次间隔(n+1/4)d。其中,d为栅距(这里为20μm),n为整数。这样,当0°窗口的栅线与主光栅完全重叠时,窗口最亮,形成亮带;180°窗口的栅线与主光栅栅线互相遮挡,形成暗带;90°和270°窗口的栅线缝隙被遮挡一半,处于半明半暗状态。因此,当移动指示光栅时,4个窗口内的光强依次呈现周期性的变化。在窗口区域安放光电收发元件对光强进行检测,便可得到依次相差π/2的4路正弦波信号。

3 光栅信号的产生及差值的实现

3.1 系统总体方案计

系统原理框图如图2所示。光电转换后输出的4路相差90°的正余弦电流信号经过2个前置差分放大器处理后,转换为电压信号并且消除了直流电平,得到相位相差90°的正交信号sinθ/cosθ。为了消除正交信号中掺杂的噪声信号,设计了有源二阶巴特沃斯低通滤波器。滤波后的信号经过插值专用芯片IC-NV后,便可送人FPGA进行二次细分辨向、测速和数字显示工作。

通过Avalon总线与NiosII实现光栅电子细分系统的集成和模块化设计

3.2 光电转换及前置放大电路

光电二极管的光电流一般为μA级别,而放大电路中反馈电阻一般采用MΩ量级的电阻。因此,运放的输入偏置电流的影响不能忽略,要选用输入偏置电流小的FET输入型运算放大器。本文选用TI公司的4路LinCMOS运放TLC279CN。它具有输入失调电压低、输入电阻高、噪声低的特点,25°时的典型输人偏置电流为60 pA,远小于光电二极管的光电流。光电二极管可以工作在零偏置或反向偏置方式。在反向偏置方式下,光电二极管可以实现较高的切换速度;但要以牺牲线性为代价,并且在无光条件下仍有很小的电流,称为“暗电流”。零偏置电路受暗电流的影响较小,对于微小照度,可以保持照度与输出成线性比例关系。

图3采用反向并接光电二级管的方式。该方式可以有效地削弱直流电平和偶次谐波。由于后端插值芯片单端输入时对输入信号直流电平和峰峰值有限制,因此在正相输入端设置可变电阻调节输出的直流电平至2.5 V,同时通过调节反馈电阻使输出电压的峰峰值为1 V。

通过Avalon总线与NiosII实现光栅电子细分系统的集成和模块化设计

3.3 低通滤波器的设计

由于目前光栅的移动速度多在120 m/min,最大不超过600 m/min,且光栅栅距为20 μm时输出的正交信号的频率不超过500 kHz。因此,选定低通滤波器的截止频率为fc=500 kHz,通带增益K=1。具体设计电路如图4所示。

通过Avalon总线与NiosII实现光栅电子细分系统的集成和模块化设计

3.4 差值电路的实现

IC-NV是IC-HAUS公司的单片A/D转换芯片,能够对输入的sinθ/cosθ信号进行插值,从而输出增量的正交编码信号。IC-NV芯片的内部结构及外围电路如图5所示。其内部集成了高速的比较器和毛刺滤波器,以保证信号的高速转换和完整性;输入/输出引脚具有ESD防护,且与TTL、CMOS电平兼容,接口简单可靠。

通过Avalon总线与NiosII实现光栅电子细分系统的集成和模块化设计

sinθ/cosθ信号首先进入芯片内部的前置仪表放大器。其增益取决于输入信号的电平及SG0、SG1引脚的状态。通过将SG0、SG1置为高、低电平或开路来选择不同的增益值,以适应峰峰值为20 mV~1.3 V的差分信号输入(单端信号峰峰值可达2.6 V)。本系统中,sinθ和cosθ信号使用单端输入方式,峰峰值为2 V,直流偏置为2.5V。因此在使用时需将NS和NC引脚与VREF(2.5 V)相连,以消除直流偏置。

前置仪表放大器输出的信号经过高速转换核心和转换间距控制单元后进入后端信号处理单元。该单元根据不同的插值因子(Interpolation Factor,IPF)输出相应的方波信号。9种不同的插值因子可以通过SF0和SF1引脚来配置,最高可以实现每个输入信号周期的64倍细分。

4 光栅信号处理电路的FPGA实现

4.1 NiosII处理器及其硬件平台

NioslI处理器是Altera公司在2004年推出的第二代软核CPU。NiosII软核处理器基于哈佛总线结构,采用32位RISC单周期指令集、32位数据总线及流水线技术,支持32个外部中断和可配置的MMU/MPU。NiosII有3个型号:e型、s型、f型。它们分别是针对不同应用要求优化的:e型的面积最小,只需550个LE(逻辑单元);f型的性能最高,最大性能可达200DMIPs以上;s型又叫标准型,其面积与性能介于e型与f型之间。

NiosII处理器通过Avalon总线与外设进行连接。Avalon接口规范定义了主端口和从端口所需的信号和时序。它能以最少的逻辑资源来实现数据总线复用、地址译码、等待周期产生、地址对齐、中断优先级产生及仲裁等操作。用户可以根据主从端口的规范在SOPC Builder中创建各种自定义组件,并挂到Avalon总线上。NiosII处理器支持多达256条用户定制指令,极大地提高了软件的执行效率。这些优势使得NiosII系统成为可裁剪、可调整、可扩展的系统,更使其成为软硬件紧密融合的系统。

系统中选用CycloneII系列的FPGA EP2C5Q208,并且扩展了64 Mb SDRAM HY57V641620和16 Mb FlashAMD29LV160来构建NiosII系统。EP2C5系列FPGA内部拥有4 608个Le和119 808位的RAM,并提供2个PLL和158个用户引脚,完全能够满足本系统设计的需求。系统选用主动串行配置芯片EPCSl,该非易失性芯片具有1 Mb的内部容量,远大于EP2C5Q208所支持的最大配置文件的大小。当系统上电时,EPCS就可将配置数据重载到FPGA的配置RAM中。

4.2 二次细分辨向组件设计

二次细分辨向组件的设计包括组件逻辑的硬件描述文件和软件文件的设计。其中,硬件描述文件由任务逻辑模块、寄存器描述模块和Avalon接口模块组成。软件文件由HAL驱动文件的源文件(my_avalon_quadrature.c)、头文件(my_avalon_quadrature.h)和寄存器访问的头文件(my_avalon_quadrature_regs.h)组成。这些文件的组织结构如图6所示。

通过Avalon总线与NiosII实现光栅电子细分系统的集成和模块化设计

使用SOPC Builder中的Component Editor工具添加相应的硬件描述文件、信号接口和软件文件,便可以方便地将用户自定义组件集成到系统元件库中去。为了实现NiosII处理器与自定义组件之间交换数据,首先需要定义一组寄存器,并对寄存器进行地址分配,同时根据Avalon总线的时序对寄存器进行存取操作。本组件中定义的脉冲计数寄存器Countnum_reg[31:0]和方向寄存器Dir_reg均为只读寄存器,且相对地址分别为0和1。

任务逻辑设计是自定义组件设计过程中最重要的部分,主要实现插值芯片输出正交信号的四细分,同时更新Countnum_reg和Dir_reg的值。如图7所示,正交信号A2/B2的相位关系随着光栅位移传感器运动方向的不同而改变。当光栅读数头正向移动时,A2相信号超前于B2相信号90°,A2/B2两信号的电平变化规律为00→10→11→01→00。当光栅读数头反向移动时,A2相信号滞后于B2相信号90°,A2/B2两信号的电平变化规律为00→01→11→10→00。这样,就可以通过判断电平之间的状态变化来决定是否对计数器进行操作。当状态变化为00→10→11→01→00时,对Countnum_reg进行加1操作,并将Dir_reg置1;而当变化为00→01→11→10→00时,则对Countnum_reg进行减1操作并将Dir_reg置0。若状态保持不变,则计数器和方向值保持不变。其余状态之间的变化,规定为无效。

通过Avalon总线与NiosII实现光栅电子细分系统的集成和模块化设计

上述的4个状态之间的转移可以通过设计有限状态机来实现。系统主时钟clk选用50 MHz,能够保证正确采样状态之间的变化。该有限状态机由5个状态组成,它们分别是idle、00、01、11、10。采用one-hot的编码方式,可以有效地避免竞争冒险现象,提高抗干扰能力。其综合生成的电路无论是在效率还是稳定性方面都能够满足设计要求。任务逻辑模块的仿真结果如图8所示。

通过Avalon总线与NiosII实现光栅电子细分系统的集成和模块化设计

若记录相邻两次Countnum_reg的差值,便可通过以下的公式计算光栅读数头移动的距离:

通过Avalon总线与NiosII实现光栅电子细分系统的集成和模块化设计

式中:N为插值芯片的插值因子,d为光栅栅距。

4.3 二次细分测速组件设计

光栅读数头的移动速度应在一定范围之内,否则会造成丢数等误差。测速组件主要对读数头的移动速度进行实时监控,从而实现过速报警。其设计过程与二次细分辨向组件类似。移动速度的计算公式如下:

通过Avalon总线与NiosII实现光栅电子细分系统的集成和模块化设计

式中:d为光栅栅距,f为插值芯片输出正交信号的频率,N为插值芯片的插值因子,n为t时间内正交信号的个数。由此可知,只要测出频率f即可求得移动速度。

寄存器描述文件中定义了4个寄存器,如表1所列。

通过Avalon总线与NiosII实现光栅电子细分系统的集成和模块化设计

任务逻辑设计采用测周期的方法,即根据Div_reg中的分频因子对待测信号tclk进行分频,在分频后信号的高电平内记录标准信号sclk的个数,并在其下降沿将计数值存到Count_reg中。同时,在其低电平内将Count_ready_reg置1,通知Avalon主设备计数值已就绪。待测频率的计算公式如下:

通过Avalon总线与NiosII实现光栅电子细分系统的集成和模块化设计

该方法可能会产生±1个标准脉冲的测量误差,由于系统标准频率与待测正交信号相比为高频信号,因此能实现高精度的频率测量。

4.4 LCD控制组件的设计

本系统中使用的LCD为128×64的点阵黑白屏,其内嵌控制器为KS0107/KS0108。该液晶模块的D/I引脚用于指示模块处理数据/命令;R/W引脚控制读/写操作;EN引脚为使能信号,CS1/CS2为屏幕的左右半屏控制器片选信号。

本系统在NiosII IDE开发环境中设计应用程序,其程序流程如图9所示。

通过Avalon总线与NiosII实现光栅电子细分系统的集成和模块化设计

5 结 论

①与传统的分立元件细分电路相比,本系统中使用了专用的插值芯片IC-NV,不但提高了系统集成度,而且在简化PCB设计的同时提高了细分数。NiosII嵌入式处理器使用,既提高了系统性能,又降低了费用。利用Component Editor工具设计的二次细分辨向模块、测速模块及LCD控制模块,可以随时根据需要更改驱动程序并可重复利用,实现了系统的集成和模块化。

②仿真结果表明,该系统设计简单灵活,稳定性高,实时性强,可通过调节插值芯片的插值数实现高达64倍的细分。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 传感器
    +关注

    关注

    2551

    文章

    51097

    浏览量

    753508
  • 处理器
    +关注

    关注

    68

    文章

    19286

    浏览量

    229804
  • 芯片
    +关注

    关注

    455

    文章

    50812

    浏览量

    423545
收藏 人收藏

    评论

    相关推荐

    模块化仪器的技术原理和应用场景

    输入/输出通道,或者根据特定应用定制其测量能力。 计算机集成模块化仪器与计算机高度集成通过共享元器件、高速总线和用户定义的开放式软件,
    发表于 11-28 15:09

    采用NiosII实现USB接口模块设计

    到外设插入、拔出或者数据发送错误、超时、数据溢出等异常情况时,通过将intrq置高电平通知Nios II。3.2 USB接口模块设计 AVALON总线为用户提供了非常友好的接口,使得
    发表于 05-05 09:29

    采用NiosII实现图形用户接口设计

    实现。3 VGA数据缓存模块设计 数据缓存模块通过Altera提供的SOPC工具中,Avalon总线
    发表于 06-21 05:00

    采用NI PXI平台实现模块化电子战模拟系统

    挑战:使用最新的商业现成技术,设计和部署灵活、可扩展的模块化电子战模拟系统。解决方案:使用多个PXI系统和任意波形发生器,通过T-Clock
    发表于 07-19 07:49

    Avalon设备怎么定制?

    SoPCBuilder环境下加载使用,方便了用户开发一个自定制的片上系统。本文通过在NiosⅡ嵌入式系统内部集成了基于Avalon
    发表于 08-21 08:20

    如何设计一个基于Avalon总线接口的UPFC控制器IP核?

    本文利用Altera公司的Quartus开发工具设计了一个基于Avalon总线接口的UPFC控制器IP核,以便于和NiosII组成一个完整的控制系统
    发表于 04-08 06:25

    求一种基于Nios II的光栅细分电路系统设计

    组件、测速组件及LCD控制组件,并通过Avalon总线NiosII软核处理器进行连接,实现系统
    发表于 04-20 06:33

    光栅电子细分原理和方法

    光栅电子细分一. 细分的原理和方法1、原理:在忽略高次谐波的情况下,光电元件输出的电压U和光栅位移x之间的关系为 &n
    发表于 07-04 13:01 0次下载

    基于FPGA的精密离心机光栅信号细分系统

    在航空、航天领域中的一些应用于惯性测试的精密离心机,其转速信号通常是由分体式光栅测量系统输出的光栅信号经过具有细分、辨向、整形功能的电子系统
    发表于 05-26 10:58 985次阅读
    基于FPGA的精密离心机<b class='flag-5'>光栅</b>信号<b class='flag-5'>细分系统</b>

    基于Nios系统Avalon总线概述

    Nios系统的所有外设都是通过Avalon总线与Nios CPU相接的,Avalon总线是一种协
    的头像 发表于 01-27 22:03 4892次阅读

    基于Avalon总线的PWM外设实现NiosⅡ嵌入式处理器的设计

    SoPCBuilder环境下加载使用,方便了用户开发一个自定制的片上系统。本文通过在NiosⅡ嵌入式系统内部集成了基于Avalon
    的头像 发表于 03-18 08:00 1968次阅读
    基于<b class='flag-5'>Avalon</b><b class='flag-5'>总线</b>的PWM外设<b class='flag-5'>实现</b>NiosⅡ嵌入式处理器的设计

    锆石FPGA A4_Nano开发板视频:Avalon总线规范的讲解

    Nios系统的所有外设都是通过Avalon总线与Nios CPU相接的,Avalon总线是一种协
    的头像 发表于 09-30 07:04 1440次阅读
    锆石FPGA A4_Nano开发板视频:<b class='flag-5'>Avalon</b><b class='flag-5'>总线</b>规范的讲解

    通信行业对模块化UPS有哪些技术要求

    模块化UPS系统本身具有并联冗余、在线扩容的特性, 所以通过模块化UPS的组合应用可以实现高保障等级的不间断供电
    的头像 发表于 12-26 06:49 709次阅读

    电子系统设计的模块化

    标市场吸收,为Raspberry Pi的目标用户提供了更大的价值。这种成本优势被传递给了工业部门。集成商和原始设备制造商利用了树莓派平台的模块化,使用 HAT 扩展总线添加自己的自定义接口模块
    的头像 发表于 11-22 15:46 683次阅读

    机载CAN总线节点的模块化设计与实现

    电子发烧友网站提供《机载CAN总线节点的模块化设计与实现.pdf》资料免费下载
    发表于 10-31 10:15 0次下载
    机载CAN<b class='flag-5'>总线</b>节点的<b class='flag-5'>模块化</b>设计与<b class='flag-5'>实现</b>