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

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

3天内不再提示

浅谈一种用于MEMS姿态检测的FIFO设计

电子工程师 来源: 微型机与应用 作者:金安 2021-04-15 11:23 次阅读

摘 要: 通过在MEMS信号处理电路中设计一个异步结构的FIFO,可以有效地降低系统对MEMS的频繁访问。设计一个具有多种工作模式的FIFO,可以满足一些特殊的姿态检测需求,更好地满足系统智能化操作需要。实现了一个具体可行的方案,可以实际应用到各种MEMS电路模块中。

MEMS传感器是采用微电子微机械加工技术制造出来的新型传感器。目前,加速度计已普遍用于智能终端(如智能手机)中,未来几年,陀螺仪也将普遍应用到智能终端中。同时,组合传感器,如3轴加速度计+3轴磁力计,3轴加速度计+3轴陀螺仪,甚至9轴组合传感器未来都会得到广泛应用,相应地也会带来数据处理量的增加。

目前的加速度计、陀螺仪和磁力计等MEMS电路的数据输出速率一般在几赫兹到几百赫兹之间。主系统处理单元一般通过串行通信接口I2C或者SPI访问MEMS电路来获取数据,除了需要实时响应的一些数据以外,主系统单元有时可能不希望频繁地用串行接口去检测MEMS电路状态,看内部数据是否已经准备好,然后读取有效数据,因为这样会降低整个系统的工作效率。对于类似于智能手机的智能终端而言,随着功能越来越强大,系统处理的任务也越来越多,如何平衡将是一个问题。

针对上述情况,本文设计了一个48 bit数据宽度、64级存储深度的异步FIFO(First In First Out),可以有效解决主系统单元频繁访问MEMS电路的问题。这个FIFO具有旁路模式、连续模式、先入先出模式和中断模式4种工作模式,在中断模式下,通过设置不同的条件,可以在不需要主系统单元干涉的情况下自动抓取一些特殊状态的数据。这样可以节省很多系统资源。

1 FIFO系统设计

传统异步FIFO[1-2]采用触发器同步异步输入信号来降低出现亚稳态的几率,然后地址通过格雷码编码方式来消除地址多位变化导致的空满状态误判,需要用到真正的双端口RAM。采用触发器同步虽然可以降低亚稳态的几率,但也带来了时序分析和综合后仿真的难点。格雷码带来了设计的复杂性,可以通过时序逻辑的设计方式,在布局布线时插入时钟树来避免空满状态的不定。同时真正的双端口RAM不是每个集成电路工艺线都支持的,采用伪双端口RAM更实际,也能使设计适用范围更广泛。

整个系统实现还要包括I2C和SPI接口模块、信号处理模块以及中断检测模块,本文仅仅描述FIFO模块。FIFO模块的实现框图如图1所示。写时钟是MEMS数据采样时钟,读时钟是串口I2C或者SPI读数据时钟。为了消除读写同时进行产生的冲突,增加了一个写使能信号,其与写时钟同时由内部逻辑产生,写时钟比读时钟优先级高。

这样可能会引入一个问题,那就是读写恰好同时进行的时候,读的数据依然是上一个数据,但可以设置为先入先出模式,数据满了之后不再更新,这样就不会有这个问题。模式设置和水印阈值设置通过串口I2C或者SPI写入。同步双端口RAM采用SMIC 0.18 m工艺Memory Compiler综合出来的64×48 bit的IP模块,这是一个伪双端口RAM,读写时钟是共用的。48 bit数据宽度可以同时存储3个轴的MEMS检测数据,每个轴16 bit数据宽度,基本可以满足目前的MEMS精度要求。

o4YBAGB3sUaACy43AABFk6i7CTw496.png

2 功能模块设计

2.1 读地址产生逻辑

读地址产生逻辑,根据工作模式和FIFO的状态,生成读地址指针。假如读时钟有效,并且FIFO不为空,则读地址加1,假如FIFO为空,则读地址保持不变。在连续工作模式下,由于数据不断滚动更新,当数据满的情况下,假如写入有效,读地址加1,保证读地址指针指向最先写入的数据地址。

2.2 写地址产生逻辑

假如写入有效,写地址指针自动加1。通过控制RAM时钟,在先入先出模式下,假如FIFO满,终止写入新的数据到RAM中,因此写地址指针不再更新,除非重新使能整个FIFO模块。

2.3 状态生成逻辑

FIFO的状态可以直接用写地址指针减去读地址指针来获得,但也需要考虑到当FIFO满的时候,读地址指针和写地址指针是指向同一个地址的,这时候减出来数据就为0了。因此需要增加中间寄存器,在未满的时候输出减法器的数值,在满的时候输出全1数值。满和空状态信号、水印标记信号和FIFO停止信号都由时序逻辑生成,满信号逻辑电路图如图2所示,用RAM时钟的反相信号来触发。

水印标记可以通过设置水印的阈值来获得,阈值范围可以是0~63。当FIFO的状态值超过设置的阈值,就产生水印标记中断;当FIFO的状态小于设置的阈值,水印标记中断就清除,这可以让主系统根据应用场合灵活选择。FIFO停止信号有两种情况,在先入先出模式下,满了之后产生FIFO停止信号,RAM数据停止更新;在中断模式下,在中断信号产生之前,不产生FIFO停止信号,中断信号产生之后,根据满状态信号产生FIFO停止信号。

o4YBAGB3sW2AXI0jAAAezRGbZpI706.png

3 工作模式

3.1 旁路模式

在旁路模式下,复位信号有效,FIFO不工作,主系统单元直接读出ADC输出的数据。

3.2 连续模式

在连续模式下,数据在FIFO里面不断更新,相应地,读地址指针和写地址指针也不断滚动更新,读地址指针指向最先输入的RAM地址。在连续模式下,假如数据满了之后,写时钟有效,读地址指针和写地址指针需要同时加1,因为最先的数据已经被覆盖了。同时在写时钟无效的时候,读时钟有效,读地址指针也要加1。

3.3 先入先出模式

在先入先出模式下,数据填充满了就自动终止,产生满中断信号。在没有读时钟的情况下,最终读地址指针和写地址指针将会同时指向地址0。相应地,在未充满的情况下,假如读时钟有效,最终读地址指针和写地址指针会同时指向中间某一个地址。

3.4 中断模式

o4YBAGB3sXuAOfdYAABRuHf3I8M128.png

在中断模式下,数据先是以连续模式工作,假如中断信号有效,进入先入先出模式,数据填充满了就自动终止。工作时序图如图3所示,数据在未填充满的情况下,产生中断信号,数据填充满了就产生终止信号,满中断信号置1,数据开始读出之后,满中断信号清0,当数据完全读完后,空中断信号置1。假如FIFO需要重复上面的工作流程,需要清中断,重新启动FIFO,在数据开始重新写入FIFO时,空中断信号清0。

与传统的异步FIFO不同,本文实现了一个更加简单、并且实际可行的FIFO结构,操作灵活可靠。通过在MEMS信号处理电路中加入异步FIFO设计,可以更好地满足系统对低功耗和操作灵活性的需求。通过DC综合并流片验证,该FIFO电路已经应用到多个MEMS电路产品中,得到很好的效果。特别对于未来MEMS组合传感器、数据量的增加以及特殊姿态的处理,引入更多灵活性的FIFO将会带来更多的优越性。

参考文献

[1] 于海,樊晓桠.基于FPGA异步FIFO的研究与实现[J].微电子学与计算机,2007(3):210-213.

[2] 刘祥远,陈书明.一种高性能的异步FIFO结构[J].电子学报,2007(11):2098-2104.
编辑:jq

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

    关注

    128

    文章

    3729

    浏览量

    188615
  • RAM
    RAM
    +关注

    关注

    7

    文章

    1317

    浏览量

    113697
  • fifo
    +关注

    关注

    3

    文章

    369

    浏览量

    43059
  • 智能终端
    +关注

    关注

    6

    文章

    815

    浏览量

    34279
收藏 人收藏

    评论

    相关推荐

    adxl加速度mems测量低频振动的效果如何?

    之前选用了adxl372 和adxl345,我想请问下,这些mems对低频振动的检测效果如何 目前项目需求测量0.5Hz-1000kHz频率的振动,量程大概在±20g 以上两
    发表于 12-28 07:09

    一种使用fifo节约资源降低功耗的设计方法

    本案例中,我们讲解一种使用fifo节约资源,降低功耗的设计。
    的头像 发表于 12-15 16:34 260次阅读
    <b class='flag-5'>一种</b>使用<b class='flag-5'>fifo</b>节约资源降低功耗的设计方法

    不使用摄像头怎么检测人的姿态或者手势?

    不使用摄像头怎么检测人的姿态或者手势 距离大概1米到2米之间
    发表于 11-06 07:00

    简述一种fifo读控制的不合理设计案例

    本文将简述一种fifo读控制的不合理设计案例,在此案例中,异常报文将会堵在fifo中,造成头阻塞。
    的头像 发表于 10-30 14:25 184次阅读
    简述<b class='flag-5'>一种</b><b class='flag-5'>fifo</b>读控制的不合理设计案例

    同步FIFO和异步FIFO的区别 同步FIFO和异步FIFO各在什么情况下应用

    简单的一种,其特点是输入和输出都与时钟信号同步,当时钟到来时,数据总是处于稳定状态,因此容易实现数据的传输和存储。 而异步FIFO则是在波形的上升沿和下降沿上进行处理,在输入输出端口处分别增加输入和输出指针,用于管理数据的读写。
    的头像 发表于 10-18 15:23 1002次阅读

    浅谈FIFO设计思路

    FIFO在设计是一个非常常见并且非常重要的模块,很多公司有成熟的IP,所以一部分人并没有人真正研究写过FIFO,本文仅简述FIFO中部分值得保留的设计思路。
    的头像 发表于 09-11 17:05 399次阅读
    <b class='flag-5'>浅谈</b><b class='flag-5'>FIFO</b>设计思路

    一种简单的、真实的基于循环序列的FIFO缓存设计

    FIFO缓存是介于两个子系统之间的弹性存储器,其概念图如图1所示。它有两个控制信号,wr和rd,用于读操作和写操作
    发表于 09-11 09:12 269次阅读
    <b class='flag-5'>一种</b>简单的、真实的基于循环序列的<b class='flag-5'>FIFO</b>缓存设计

    磁粉检测,磁粉检测一种无损检测方式

    检测
    jf_38631377
    发布于 :2023年07月26日 11:46:09

    浅谈CAN总线入侵检测的精度

    浅谈CAN总线入侵检测的精度
    发表于 07-12 10:39 232次阅读
    <b class='flag-5'>浅谈</b>CAN总线入侵<b class='flag-5'>检测</b>的精度

    利用opencv+openpose实现人体姿态检测

    利用opencv+openpose实现人体姿态检测,附详细代码。 通过一个偶然机会,我了解到了人体姿态解算,在学习K210之余,我便想着通过opencv实现这个功能,查找了很多资料,发现可以
    的头像 发表于 06-26 10:15 2268次阅读
    利用opencv+openpose实现人体<b class='flag-5'>姿态</b><b class='flag-5'>检测</b>

    不同类型MEMS传感器的比较 MEMS传感器的工作原理

    由于MEMS传感器测量的外部信号不同,不同类型的MEMS传感器技术差异较大。MEMS惯性传感器主要检测物体的运动,需要将传感器安装在载体上用于
    发表于 06-13 09:08 3689次阅读
    不同类型<b class='flag-5'>MEMS</b>传感器的比较 <b class='flag-5'>MEMS</b>传感器的工作原理

    FIFO设计—异步FIFO

    异步FIFO主要由五部分组成:写控制端、读控制端、FIFO Memory和两个时钟同步端
    发表于 05-26 16:17 1034次阅读
    <b class='flag-5'>FIFO</b>设计—异步<b class='flag-5'>FIFO</b>

    基于Labview的mpu6050姿态检测上位机设计

    Labview陀螺仪姿态测试系统设计 本实验主要是检测陀螺仪的姿态数据包括俯仰角、横滚角、航向角数据,并将检测的数据用3D模块的飞机在3D背景中的姿
    发表于 05-09 11:16 2次下载
    基于Labview的mpu6050<b class='flag-5'>姿态</b><b class='flag-5'>检测</b>上位机设计

    MEMS惯性传感器——万物姿态测控新技

    陀螺仪是测量角速率的一种器件,是惯性系统的重要组成部分,主要用于导航定位、姿态感知、状态监测、平台稳定等应用领域。MEMS陀螺仪的核心是一颗微机械(
    的头像 发表于 04-28 09:59 6444次阅读
    <b class='flag-5'>MEMS</b>惯性传感器——万物<b class='flag-5'>姿态</b>测控新技

    FIFO使用及其各条件仿真介绍

    FIFO(First In First Out )先入先出存储器,在FPG设计中常用于跨时钟域的处理,FIFO可简单分为同步FIFO和异步FIFO
    的头像 发表于 04-25 15:55 3019次阅读
    <b class='flag-5'>FIFO</b>使用及其各条件仿真介绍