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

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

3天内不再提示

基于FPGA技术实现编码器脉冲的M法测速逻辑电路

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

1基于FPGA的可重构原理

FPGA(现场可编程门阵列)是一种可编程逻辑器件,他是在PAL,GAL等逻辑器件的基础上发 展起来的。同以往的PAL,GAL等相比,FPGA的规模大得多,而单位逻辑门的成本却低得多,多容量、低成本为FPGA在印花系统的应用创造了条件。利用FPGA可以实现I/O处理,脉冲发生、计数,数学运算等功能,可以大大简化数控系统的设计。FPGA最大的特点就是他的内 部逻辑的在线可重构性。目前主流的FPGA都是基于查找表结构的,查找表(160kUP Table)简称为LUT,LUT本质上就是一个RAM。如图1所示。在CMOS分离逻辑电路设计当中,通常采用图1(a)的方法实现反相器。但是在FPGA中,却是使用LUT来实现这一功能,如图1(b)所示。MUX的控制输入SEL被作为逻辑输入,而IN1,IN2则是反向器的查找表。这样做的原因有2点:

1) LUT是通用的,可以实现任何逻辑。

2) LUT可以高效地在硅片上实现。

由于SRAM的易失性,在系统上电后需要对FPGA进行配置,才能使FPGA进入工作状态。配置信息通常存放在PROM或者 FLASH存储器当中,但是也可以使用其他设备,比如CPU完成这个工作。因此可以利用CPU对FPGA进行配置,将配置信息存储在CPU系统的存储器内,不但降低了成本,而且可以根据实际需要选择不同的配置信息。由于配置过程时间很短,通常在几百毫秒 内,因此可以在系统工作过程中重新对FPGA进行配置,实现实时可重构。

基于FPGA技术实现编码器脉冲的M法测速逻辑电路

2光电编码器的输出波型及其测速方法

光电编码器通常输出相差为90°的两路方波A相和B相,按照转向的不同,A相或者超前B相。在使用光电编码器测速时需要完成误计数抑制、鉴向和测速3大功能。

在误计数抑制方面,有模拟方式和数字方式。模拟的方法采用RC电路将编码器传送来的方波信号转换为脉冲信号。数字方式多采用D触发器对方波信号进行延迟之后再将经过延迟的波形进行逻辑运算,并根据两路波型之间相差90°的逻辑关系,消除因抖动或干 扰而可能带来的误计数,消除因振荡或电路干扰产生的毛刺的影响。其中D触发器使用的级数对误计数的抑制有直接关系。在干扰严重的情况下,可以选择具有长线驱动接口的编码器,他将A、B相信号用RS 422(差动方式)分为A、A和B、B四根信号线传输。这样可以有效地抑制共模干扰,提高传输距离。

测速功能的算法主要有M法、T法、M/T法、M法和T法都简单容易实现,但是精度受速度的影 响。M/T法具有较高精度,M/T法和变M/T法是目前公认的高精度测速方法。

在测速实现方法上主要有纯硬件、纯软件、软硬件结合等方法。纯硬件方法的优点是不需要CPU的干预自动完成,缺点是外围器件较多、只能实现M法和T法。纯软件方法光电编码器的信号线与CPU中断输入和I/O口相连。优点是外部器件使用较少,缺点是占用CPU时间过多且测量精度不高。例如80C196,时钟频率为12 MHz,经过分频,T1定时器的基准频率是0.75 MHz,无论采用M法、T法、M/T法,精度都受到基准频率的限制,无法进一步提高。但是FPGA则可以大大提高基准频率,可以在本质上提高测速的精度。软硬结合的方法是误计数抑制、鉴相的功能由外部硬件电路完成,而计数的功能由CPU完成,是以上2种方法的折衷,但是精度仍然受到限制。?

3采用FPGA的可重构设计

综上所述,利用FPGA内部可编程、可重构的特点,可以将以往分离设计的逻辑电路,利用FP GA内部丰富的逻辑资源,以及VerilogHDL具有语言门级电路描述强的特点,集成到系统内部 。可以根据应用的要求实现各种测速方法且不需要CPU的干预,将他作为一个功能 模块嵌入在系统当中,且可以根据不同的需要,选择不同的测速方法,而不需要修改硬 件电路,实现重构造。

1) M法可重构设计的实现

模仿传统的D触发器+计数器的结构,如图2所示。通过VerilogHDL构造了两个4级D触发器串联的误差抑制电路(图2中encode模块)和鉴向电路,同时利用Quarts提供的Mega Fu nction功能实现一个16位同步可逆计数器(图2中lpm_couter模块),以及一个16位的锁存器(图2中d模块)完成对编码器脉冲的M法测速逻辑电路。

基于FPGA技术实现编码器脉冲的M法测速逻辑电路

仿真结果如图3所示,CHA,CHB信号进入FPGA,在分别经过第三、第四个触发器延时后的波 行为A3,A4和B3,B4,经过鉴向以后得到DIR和REV信号,且这两路信号是原来A相或者B相频 率的4倍。为了说明方便,图3的计数器仅测量了一个信号(DIR或REV)周期的时钟数。 由于 每次测量完成以后计数器的数值都会被复位,因而必须将计数器的数值进行锁存,这样CPU读出的才是有效的速度(图2的d模块)。从图3中可以看到,在经过d模块以后,speed_ou t信号稳定输出。此例中基准时钟信号CLOCK的频率为50 MHz。

基于FPGA技术实现编码器脉冲的M法测速逻辑电路

2) M/T法可重构的实现

由于结合了M法和T法的优点,测速比较准确,缺点是需要扩展大量的外围芯片和占用单片机 中断,编程相对复杂[5]。利用FPGA内部丰富的逻辑资源和有限状态机的方法,实现M/T测速逻辑。状态机是由组合电路和时序电路构成的硬件时序电路。状态的转移取决于当前的状态和状态机的输入状态,这种状态机为米里(Mealy)型状态机;状态的转移只取决于当前状态的称为莫尔(Moore)型状态机。莫尔型状态机可以看作是米里型状态机的一个特例。

本设计采用米里(Mealy)型状态机。在接收到复位信号以后,状态机进入(00)状态。在 (00)状态中,主要完成计时器?T的复位,m1,m2计数器的复位。当第一个脉冲到来的时刻,状态机进入(01)状态。此时计时器T开始记时,同时m1,m2开始计数。Tg到时以后,进入(10)状态。此时m1,m2 继续计数,当最后一个脉冲到来以后,进入(11)状态。将m1,m2的数值锁存进入锁存器以后,自动复位到(00)状态。

基于FPGA技术实现编码器脉冲的M法测速逻辑电路

采用模块化设计的思想,将测速逻辑分为4个部分,其中pluse_couter和clock_coute r计数器是采用Quarts提供的Mega Function功能构造出来的加法计数器,分别完成对编码器脉冲m1和基准时钟脉冲m2的计数功能。

Encode模块完成对编码器信号CHA、CHB信号的鉴向信号REV和DIR、锁存信号LOCK、计数器复位信号COUTER_RST、方向信号UPDOWN的控制。D_ TRIGGER单元完成两个计数器结果的锁存,同时将UP_DOWN信号和编码器脉冲计数器测量得到的结果(7位)组合到一起构成8位的PULSE_D,这样得到的脉冲数值就是有方向的脉冲数量。D_TRIGGER的输出PULSE_D[7.0]和CLOCK_D[15.0]就是最终测量得到的结果。最终的仿真结果如图7所示,采用了50 MHz的基准信号, CHA,CHB是0.5 MHz,相差为90°的方波。对两相信号进行4倍频,得到DIR和REV两路方向脉冲信号。在有限状态机(STA)的控制下,锁定信号(LOCK),计数器复位信号(COUTER_RST)和两个计数器单元PULSE_NUM_OUT和CLOCK_NUM_OUT按照预定的时序工作,达到了设计的需要。程序编译完成以后,共占用68个逻辑单元(logic cells),最大延时13.8 ns。

基于FPGA技术实现编码器脉冲的M法测速逻辑电路

4结论

利用FPGA的可重构特性,减少了外围器件、简化了CPU程序的设计。可以根据现场的要求灵活选用M法、T法、M/T法。对于变M/T法和直接测量频率法等测速电路同样可以采用这种嵌入式设计的方式。通过构造与CPU的接口,对于CPU而言,FPGA就如同一个外部RAM一样访问,不需要对测速过程进行任何干预。同时如果将测速时间和基准频率设计成外部可以控制的参数单元,就可以很方便地修改参数,实现不同场合、不同要求的情况下更高精度的控制。

基于FPGA技术实现编码器脉冲的M法测速逻辑电路


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

    关注

    1626

    文章

    21679

    浏览量

    602121
  • 编码器
    +关注

    关注

    45

    文章

    3602

    浏览量

    134214
  • 脉冲
    +关注

    关注

    20

    文章

    886

    浏览量

    95565
收藏 人收藏

    评论

    相关推荐

    FPGA基础学习笔记--组合逻辑电路-编码器和译码

    `FPGA基础学习笔记--组合逻辑电路-编码器和译码编码器4输入2输出编码器代码如下modul
    发表于 02-20 15:36

    AB相编码器-变M/T测速,10ms定时,测6000转伺服电机!

    本帖最后由 SXST_T 于 2017-9-13 12:11 编辑 适用所有线数编码器,此方法主要解决M测低速分辨率不足,T测高速分辨率高,
    发表于 09-13 12:07

    【原创】组合逻辑电路详解、实现及其应用

    脉冲的宽度一般都很窄,在可能产生尖峰干扰脉冲的门电路输出端与地之间接入一个容量为几十皮的电容就可吸收掉尖峰干扰脉冲。4)修改
    发表于 04-24 15:07

    MT测速单片机程序设计

    MT测速单片机程序设计M、T
    发表于 09-02 06:01

    增量式编码器倍频技术M究竟是怎样测速

    增量式编码器输出的脉冲波形信号形式常见的有哪几种?增量式编码器倍频技术M究竟是怎样
    发表于 11-09 07:08

    介绍在FPGA开发板上组合逻辑电路的设计实现

    FPGA开发板上组合逻辑电路实现,这些实例包括在数字逻辑设计课程中所熟知的部分中规模集成电路:优先编码
    发表于 07-21 15:38

    FPGA开发板上实现优先编码器的设计

    介绍FPGA开发板上组合逻辑电路实现,这些实例包括在数字逻辑设计课程中所熟知的部分中规模集成电路:优先
    发表于 08-04 17:39

    编码器计数原理与电机测速原理之多图解析

    ,此时编码器能够分辨的最小角度为0.15°。  3.2 M测速  又叫做频率测量。该方法是在一个固定的时间内(以秒为单位),统计这段时间
    发表于 03-30 14:57

    电子技术--组合逻辑电路

    电子技术--组合逻辑电路掌握组合逻辑电路的分析方法与设计方法掌握利用二进制译码和数据选择进行逻辑
    发表于 04-12 17:52 0次下载

    基本组合逻辑电路

    基本组合逻辑电路 一、 实验目的?⒈ 掌握一般组合逻辑电路的分析和设计方法。?⒉ 熟悉集成优先编码器逻辑功能及简单应用。
    发表于 09-24 22:14 2634次阅读

    遥测脉码调制(PCM)编码逻辑电路实现

    遥测脉码调制(PCM)编码逻辑电路实现
    发表于 02-07 15:05 16次下载

    测速编码器工作原理

     测速编码器一般与轴相联,测速编码器脉冲量是固定的,在轴旋转的时候,测速
    的头像 发表于 11-07 09:36 2.1w次阅读

    基于FPGA的增量式光电编码器的接口电路设计与实现浅析

    现场可编程逻辑阵列(FPGA)资源丰富,结构灵活,近年来发展迅猛。针对其特点,本文设计了基于FPGA的增量式光电编码器的接口电路
    的头像 发表于 04-27 13:57 4507次阅读
    基于<b class='flag-5'>FPGA</b>的增量式光电<b class='flag-5'>编码器</b>的接口<b class='flag-5'>电路</b>设计与<b class='flag-5'>实现</b>浅析

    STM32——编码器测速原理及STM32编码器模式

    本问讲解了编码器测速原理及STM32编码器模式,文末有STM32编码器模式例程。
    发表于 11-26 11:36 270次下载
    STM32——<b class='flag-5'>编码器</b><b class='flag-5'>测速</b>原理及STM32<b class='flag-5'>编码器</b>模式

    编码器M测速CubeMax配置

    为了进行测速,我们一共需要3个定时,作用分别是:①输出PWM;②编码器模式进行脉冲计数;③计时,确定每次测速的时间间隔。 其中,用于定时的
    的头像 发表于 11-10 15:31 1156次阅读
    <b class='flag-5'>编码器</b><b class='flag-5'>M</b><b class='flag-5'>法</b><b class='flag-5'>测速</b>CubeMax配置