当前位置:首页 > 嵌入式 > 嵌入式硬件

摘 要: 分析了异步FIFO的结构和关键技术,在与利用格雷码作为异步FIFO指针编码对比的基础上,提出了一种采用移位码编码方式的FIFO,不仅减小了亚稳态出现的概率,也简化了电路结构,降低了电路面积和功耗,在此基础上也缩短了电路的关键路径,工作频率明显提升。根据仿真和综合结果显示,本文设计的FIFO工作性能稳定可靠。
关键词: 专用集成电路(ASIC);异步FIFO;移位码;亚稳态

在现代集成电路设计中,随着集成度的不断提升,常常会遇到数据缓存与不同时钟域之间数据传递的问题,在不同系统间如不能设计出有效的接口单元,将会产生数据传输过程中的复写、丢失和无效数据的读入等错误,同时亚稳态现象也会出现在不同时钟域之间的数据传递过程中。此时,如何实现数据高速有效的传输并克服跨时钟域间数据传递时的亚稳态成为一个关键点问题。由于异步FIFO(First In First Out)能够有效解决不同传输速度和不同时钟域之间数据传递的问题,异步FIFO在实际电路中得到广泛的运用。本文介绍一种基于ASIC的高速异步FIFO的设计和实现方案。
1 异步FIFO的基本功能和结构
异步FIFO指在不同时钟域之间,由一个时钟域写入,待写入数据稳定之后,由另一个时钟域读出。图1为异步FIFO的基本结构框图,FIFO的存储单元采用双端口RAM的解决方式,同步模块SYNC完成异步读写时钟域之间指针信号的同步过程,将同步前后的指针送到wrfull、rdempty模块,产生wrfull、rdempty信号,从而构成一个完整的FIFO。
表1所示为图1中各信号的具体意义。

2 异步信号同步的关键问题
 在不同时钟域之间传递的信号,由于两个时钟之间没有清楚的相位和频率关系,很容易出现亚稳态现象。亚稳态是指触发器无法在某个规定的时间段内达到一个可以确认的状态。当一个触发器进入亚稳态时,触发器会输出一些中间电平,或者可能处于振荡状态。在数字电路中,如果将亚稳态信号直接应用于后续的组合逻辑,将会产生难以预测的结果。图2所示为异步时钟的亚稳态现象,图中CLK_A和CLK_B为异步时钟。
亚稳态是不可避免的,但可以采用合适的方法将其降低到一个合适的低概率水平。

首先可以从读写地址指针的编码入手。若采用传统的二进制计数,地址指针的每次增加,则有可能出现从全1到全0的所有位的同时跳变,这种情况使得出现亚稳态的概率大大增加。本文将采用一种特殊的编码方式,使得地址指针的每次增加只会出现一位改变,从而减小亚稳态发生的概率。
其次可以采用两级锁存的办法。如图3所示,在一个信号进入另一个时钟域前,将该信号用两级触发器进行锁存,即使第一级触发器的输出出现亚稳态,经过一个时钟周期之后,进入第二级触发器的信号已经稳定到一个确定的电平,从而两级锁存的输出可以有效减小亚稳态发生的概率。

3 异步FIFO的具体结构
3.1 读写指针

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

在嵌入式系统开发、调试和测试过程中,J-Link作为一种高效的调试工具,为开发者提供了极大的便利。然而,要想充分发挥J-Link的功能,首先需要正确安装其驱动程序。本文将详细介绍J-Link驱动的安装过程,并深入解析其中...

关键字: jlink 嵌入式系统 嵌入式开发

与谷歌的合作使 Nordic 能够在 nRF Connect SDK 中嵌入开发人员软件,以构建与安卓移动设备兼容的谷歌Find My Device和未知跟踪器警报服务

关键字: 谷歌 SoC 嵌入式开发

嵌入式开发作为当今电子工程和信息技术领域的核心分支,涵盖了广泛的软硬件技术和系统集成方法,用于构建高性能、低成本、低功耗、体积小巧且功能专一的嵌入式系统。这些系统无处不在,从微型传感器节点到复杂的工业控制设备,从日常使用...

关键字: 嵌入式开发 Python

嵌入式开发是当今信息技术领域不可或缺的一部分,它融合了硬件设计、软件开发和系统集成等多个学科,专门用于创建那些被嵌入到特定设备或系统中的专用计算机系统。嵌入式开发的主要过程包括利用分立元件或集成器件进行电路设计、结构设计...

关键字: 嵌入式开发 硬件设计 软件开发

嵌入式开发作为一种专业且技术密集型的领域,涵盖了从硬件底层驱动、中间件到应用层软件开发等多个层面的工作,其所需的工具种类繁多,各有针对性,旨在提升开发效率、保证代码质量以及简化调试过程。

关键字: 嵌入式开发 keil

嵌入式开发作为信息技术领域的重要分支,其涉及的语言种类繁多,各具特色。这些语言的选择取决于目标平台的特性、性能需求、开发者的熟练程度以及项目的具体要求。本文将详细介绍几种常见的嵌入式开发语言,包括C语言、C++、汇编语言...

关键字: 嵌入式开发 C语言

嵌入式开发是一项综合了硬件设计、软件编程以及系统整合的技术活动,其目的是为了创造出能够在特定环境中高效、稳定运行的嵌入式系统。这一流程涵盖了多个紧密关联且不可或缺的阶段,从最初的客户需求分析到最终的产品测试和交付,每个环...

关键字: 嵌入式开发 硬件设计

嵌入式开发作为一个融合了计算机软硬件和系统工程的综合性领域,其成功与否往往取决于三个核心要素的有效整合与协调。这三个要素分别是:硬件平台的选择与设计、软件开发及其优化、以及系统级的设计与集成。深入理解并熟练掌握这三个方面...

关键字: 嵌入式开发 ARM

嵌入式开发作为信息技术的关键支柱,在全球数字化转型浪潮中扮演着无可替代的角色。从传统的嵌入式微控制器到如今先进的片上系统(SoC),再到与云计算、人工智能深度融合的智能终端,嵌入式系统的演进与发展始终紧跟时代脉搏。本文将...

关键字: 嵌入式开发 智能应用

嵌入式开发是一种专门针对特定硬件平台设计和实现软件系统的工程实践,它涵盖了从需求分析、系统设计、编程实现、调试测试直到产品部署及维护的全过程。本文将深入探讨嵌入式开发的主要阶段,分解其流程并阐述每个步骤的关键要点,以便于...

关键字: 嵌入式开发 嵌入式软件
关闭
关闭