随着数字电子系统设计规模的扩大,一些实际应用系统中往往含有多个时钟,数据不可避免地要在不同的时钟域之间传递。如何在异步时钟之间传输数据,是数据传输中一个至关重要的问题,而采用FIFO正是解决这一问题的有效方法。异步FIFO是一种在电子系统中得到广泛应用的器件,多数情况下它都是以一个独立芯片的方式在系统中应用。本文介绍一种充分利用FPGA内部的RAM资源,在FPGA内部实现异步FIFO模块的设计方法。这种异步FIFO比外部 FIFO 芯片更能提高系统的稳定性。
1 FIFO的基本结构和工作原理
FIFO(First In First Out)是一种采用环形存储结构的先进先出存储器。其使用一个双端口存储器存放数据,数据发送方在一端写入数据,接收方在另一端读出数据,能够协调好两个时钟域的工作,满足高时钟频率的要求。FIFO在FPGA设计中主要用来缓冲数据和隔离时钟或相位差异。访问FIFO时不需要地址线,只需要数据线和读写控制信号线,且数据地址由内部读写指针自动加1完成,因此利用FIFO实现数据的缓存具有接口简单、读写方便的优点。
根据FIFO的工作时钟,可将FIFO分为同步FIFO和异步FIFO。同步FIFO是指读时钟和写时钟为同一个时钟,在时钟沿来临时同时进行读写操作;异步FIFO是指读写时钟不是同一个时钟,而是相互独立的。实际上,工作在同一时钟的FIFO很少用到,多数都是读写时钟独立的异步FIFO。本文设计的异步FIFO位宽为8,深度(即FIFO可以存储8位数据的个数)为1 024。异步FIFO的结构如图1所示。

双端口RAM存储器具有独立的读写端口。如果用一个单端口RAM存储器实现异步FIFO,还应该包含一个仲裁器来保证同一时刻只能有一种操作(读或写操作)。本文选择的双端口RAM并不一定是真正的双端口,只要有独立的读写端口即可。读写控制逻辑由加法计数器构成,实现读写地址的自动加1功能。空/满标志位的产生逻辑给系统提供空(empty)和满(full)信号。
2 异步FIFO设计中的问题与解决办法
2.1 亚稳态问题
在含有触发器的电路中往往会出现亚稳态问题。亚稳态会使异步FIFO的读写地址发生错误,产生误读或者误写。为此异步FIFO设计中亚稳态问题也是一个比较重要的问题。亚稳态不可能完全消除,只能使其出现的概率降到最低。主要有2种方法来降低亚稳态出现的概率:
①采用触发器冗余方式。即采用多个触发器级联的方式,使本来出现概率为P的亚稳态,其出现概率降低到P2,但这种方式会导致延时增加。
②使用格雷码。格雷码的相临码元之间只有一位发生变化,这就大大地降低了亚稳态出现的概率。本文采用格雷码方式。
2.2 空/满标志位的判断
为保证数据的正确写入和读出,不发生写满和读空操作,怎样判断空/满标志位的产生就成为异步FIFO设计的核心问题。异步FIFO是环形存储的,当读写地址指针相等时,意味着空标志位或者满标志位的产生。但是却不能确定是写满还是读空状态。为解决这一问题,本文将转换为格雷码后的读写地址指针分别经过检测和计数器。每当读写指针遍历一圈(当读写地址指针指向双端口RAM的最后一个地址)时,写计数i加1,读计数j加1。这样写满状态和读空状态的判断就需要同时满足两个条件。下面分别给出写满和读空状态的判断。
①写满状态的判别:当读地址指针等于写地址指针,并且i》j时,产生满标志。
②读空状态的判别:当写地址指针等于读地址指针,并且i=j时,产生空标志。
由于空/满标志位产生的结构图对称,故本文只给出满标志位产生的结构图,如图2所示。其中,主数i为写地址指针遍历的圈数,计数j为读地址指针遍历的圈数。

从图2中可看出,地址指针转换为格雷码后,经过检测和计数环节,将读写地址和读写指针遍历的圈数分别送入比较器进行比较,从而准确地产生满标志位。
3 FPGA内部软异步FIFO设计
本设计中FPGA采用的是Xilinx Spartan3系列中的XC3S400PQ208。内部有56 Kb的分布式RAM和288 Kb的RAM,以及4个DCM(数字时钟管理器)单元,为系统提供独立的读写时钟频率。可以利用这些资源在FPGA内部实现异步FIFO模块。本文采用 VHDL语言对双端口RAM的读写操作进行编程,实现FPGA内部软FIFO的设计。部分读写双端口RAM和空/满标志位的判断源程序如下:


4 系统仿真
如果系统的读时钟频率大于写时钟频率,就有可能出现读空的情况;如果系统的写时钟频率大于读时钟频率,就可能出现写满的情况。在实际系统中,一般都设置写时钟频率大于读时钟频率,故本文只考虑后一种情况。
本系统采用QuartusIl8.1对系统进行仿真,由于系统深度较大,所以设定仿真时间为100 μs。系统刚上电时,双端口RAM中暂时没有数据,此时系统处于读空状态,empty变为高电平,full保持低电平,如图3所示。随着RAM中数据的不断写入,系统进入写满状态,此时full变为高电平,而empty变为低电平,如图4所示。


结 语
本文根据异步FIFO设计的难点和要点,提出了具体的解决方案。在空/满标志位产生条件的判断上提出了“检测+计数器”的新思路,使系统设计方便实用,并采用格雷码方式降低了亚稳态出现的概率。通过验证,这种方法在有效判断空/满标志位方面有很大的优势。
责任编辑:gt
相关推荐
理解Verilog编码技巧掌握FPGA中状态机的写法掌握非重叠序列检测代器Verilog代码编写
发烧友学院发表于 2020-04-21 00:00
•
20482次阅读

SOPC技术是一种基于FPGA解决方案的SOC,由美国Altera公司于2000年提出。基于SOPC....
发表于 2020-07-21 17:14•
0次阅读

设计的复杂度并不是唯一的限制因素。Altera公司技术营销高级经理Phil Simpson指出,如果....
发表于 2020-07-21 17:02•
4次阅读

在本次慕尼黑电子展上,兆易创新联合全球合作伙伴带来了的AIoT、电机控制和工业应用等GD32 MCU....
发表于 2020-07-21 15:23•
35次阅读

在一个领域中,如果唯一不变的是变化,那么不需要对电子技术和设计方法的发展变化做多少回顾,就能见证到变化是如何使...
发表于 2020-07-21 15:09•
0次阅读

1.入门首先要掌握HDL(HDL=verilog+VHDL)
第一句话是:还没学数电的先学数电。然后你可以选择verilog或...
发表于 2020-07-21 14:45•
0次阅读

THS1206有4个模拟信号输入端,每个输入端既可作为4个单独的非极性信号的输入通道,也可作为2个差....
发表于 2020-07-21 10:17•
33次阅读

嗨,我正在使用fpga来控制ov5642相机。
我已经设法通过i2c协议访问寄存器并设置它们的一些值:寄存器值0x3017 0x7f0x...
发表于 2020-07-21 06:52•
0次阅读

I2C(Inter Integrated Circuit)双向二线制串行总线,是由飞利浦公司制定的。....
发表于 2020-07-20 18:08•
58次阅读

英国格拉斯哥大学称,该校科学家通过使用现场可编程逻辑门阵列(FPGA)芯片系统,能够以高出目前标准处....
发表于 2020-07-20 18:04•
101次阅读

脉冲宽度调制(PWM) 是英文“Pluse Width Modulation”的缩写,简称脉宽调制。....
发表于 2020-07-20 17:59•
66次阅读

随着便携和以电池供电的应用快速增加,低功耗设计已成为延长电池寿命所不可或缺的任务。此外,在决定产品尺....
发表于 2020-07-20 17:53•
117次阅读

与开发成本很高的ASIC相比,FPGA可重复编程的性能正受到系统设计者的青睐。此外, FPGA的性能....
发表于 2020-07-20 17:35•
60次阅读

数字化中频(DIF)频谱分析仪在高中频实现数字化处理,具有分析带宽大、RBW小、测量时长短,可对复杂....
发表于 2020-07-20 17:26•
53次阅读

当然,并非所有的可编程逻辑技术都能很好地满足低功耗要求。事实上,当今市场某些所谓的“低功耗”器件的电....
发表于 2020-07-20 17:20•
54次阅读

在FPGA系统设计中,按键是最常见的人机交互接口部件。在没有微控制器参与的情况下,FPGA系统中按键....
发表于 2020-07-20 17:13•
47次阅读

Trion Titanium FPGA 是基于16纳米工艺节点,并采用易灵思的 “Quantum™ ....
发表于 2020-07-20 17:01•
86次阅读

并行MRAM是大多数手机、移动设备、膝上机、PC等数字产品的存储器的潜在替代产品。从MRAM芯片技术....
发表于 2020-07-20 15:33•
47次阅读

随着工业生产与科学技术的发展,大型水轮机组的自动化水平也在不断提高。而这些设备一旦发生故障,将会给人....
发表于 2020-07-20 15:19•
65次阅读

如果我们连接运放的输出到它的反相输入端,然后在同相输入端施加一个电压信号,我们会发现运放的输出电压会....
发表于 2020-07-20 14:57•
122次阅读

DS1620是Dallas公司推出的数字温度测控器件。 2.7~ 5.0V供电电压,测量温度范围为-....
发表于 2020-07-20 14:41•
60次阅读

从芯片器件的角度讲,FPGA本身构成了半定制电路中的典型集成电路,其中含有数字管理模块、内嵌式单元、....
发表于 2020-07-20 14:26•
267次阅读

在为线性调频的雷达视频目标产生模拟信号的过程中,为了得到高质量的视频模拟信号,其前端通常采用数字信号....
发表于 2020-07-20 11:03•
59次阅读

ADuC845是ADI公司新推出的高性能24位数据采集与处理系统,它内部集成有两个高分辨率的Δ-∑A....
发表于 2020-07-20 10:32•
51次阅读

你好,
在哪里可以找到未编程V7的用户I / O引脚的电气描述(交流阻抗,直流电流)?
(我想这个问题也可以扩展到...
发表于 2020-07-20 10:28•
0次阅读

存储器虚拟化有多种不同形式,包括聚合或汇聚、仿真,以及对不同物理存储层进行抽象,提供物理资源的透明度....
发表于 2020-07-20 09:47•
76次阅读

通常设计数字电路大都采用自顶向下将系统按功能逐层分割的层次化设计方法,这比传统自下向上的EDA设计方....
发表于 2020-07-20 09:00•
99次阅读

喜:
现在,我正在设计7系列FPGA的DPR(动态部分重配置),我已经在shell中使用Tcl命令完成了DPR,并生成...
发表于 2020-07-20 08:01•
0次阅读

亲爱的同事,
我必须为我的固件做出Zed Board和virtex -7设备的决定。
我理解这个事实,选择的选择取决于你想做什...
发表于 2020-07-20 07:07•
0次阅读

发表于 2020-07-19 22:30•
90次阅读

我的一个客户正在考虑Kintex部件,并转而启动SPI闪存,支持FPGA,
到目前为止,他们说,
哦,我们希望有2个...
发表于 2020-07-19 15:33•
0次阅读

我是fpga开发板的新手,我想知道如何开始使用引脚分配,特别是usb / serial引脚连接。
任何其他pin信息都会有所帮助
...
发表于 2020-07-19 11:47•
0次阅读

还有半年毕业,之前一直搞得单片机。想在学点东西。FPGA与嵌入式Linux那个发展前途好些?
转cs也...
发表于 2020-07-19 08:08•
0次阅读

近日在做一个项目的过程中,要对大量的串行E2PROM AT24C系列进行读写。起初欲设计一块简单的读....
发表于 2020-07-18 11:36•
252次阅读

一种基于MQK气体传感器和PIC单片机的气体泄漏报警系统设计的。这个该报警器的设计方法简单、可靠、高....
发表于 2020-07-18 11:35•
421次阅读

轮式移动机器人是机器人研究领域的一项重要内容.它集机械、电子、检测技术与智能控制于一体。在各种移动机....
发表于 2020-07-18 11:35•
375次阅读

借助系统模型,阐明GSM模块收发短信的基本概念以及串口控制SMS的基本原理。详细介绍单片机控制GSM....
发表于 2020-07-18 11:08•
202次阅读

在针对大批量应用开发系统时,要考虑的一个重要因素是成本。有多个方面会影响总体拥有成本,而不仅仅是每个....
发表于 2020-07-17 18:08•
111次阅读

数字信号处理技术和大规模集成电路技术的迅猛发展,为我们设计数字电路提供了新思路和新方法。当前数字系统....
发表于 2020-07-17 17:56•
381次阅读

综上所述,随着系统设备功能要求的不断增加,系统级芯片的设计愈趋复杂,并且在设计周期、灵活度和NRE成....
发表于 2020-07-17 17:33•
300次阅读

随着大规模集成电路水平的发展,以数字信号处理器(Digital Signal Process,DSP....
发表于 2020-07-17 17:18•
173次阅读

如果您对使用国产fpga芯片的电路板设计经验有限或没有经验,那么在新项目中使用国产fpga芯片的前景....
发表于 2020-07-17 17:14•
182次阅读

Xilinx的Vivado中集成的图像增强(Image Enhancement)IP可以有效降低图像....
发表于 2020-07-17 17:06•
59次阅读

通常认为,SOPC是FPGA设计中的鸡肋,“弃之可惜,食之无味”。诚然,SOPC一直不是FPGA的主....
发表于 2020-07-17 16:52•
58次阅读

视频本身承载有大量数据,这些数据使得信号处理和数据存储任务变得相当复杂。通过丢弃无用的信息、只传递图....
发表于 2020-07-17 15:59•
50次阅读

MRAM是一种使用电子自旋来存储信息的存储技术。MRAM具有成为通用存储器的潜力-能够将存储存储器的....
发表于 2020-07-17 15:36•
63次阅读

ARM是应用,FPGA是芯片设计,前者是软件,后面是硬件,ARM就像单片机,但是它本身的资源是生产厂....
发表于 2020-07-17 11:23•
112次阅读

易灵思销售总监张永慧先生出席授牌仪式,并表示:易灵思产品和新晔电子的市场覆盖相结合,必将为双方在中国....
发表于 2020-07-17 10:17•
308次阅读

一、概述 在大规模ASIC或FPGA设计中,多时钟系统往往是不可避免的,这样就产生了不同时钟域数据传....
发表于 2020-07-17 09:38•
39次阅读

组合逻辑可以得到两种常用的RTL 级描述方式。第一种是always 模块的触发事件为电平敏感信号列表....
发表于 2020-07-17 09:11•
52次阅读

据了解,武汉新芯50纳米闪存技术于2019年12月取得突破,随后投入量产准备。从65纳米到50纳....
发表于 2020-07-17 08:19•
473次阅读

实现这一编程思想的转变,是因为 FPGA 借助 OpenCL 实现了编程,程序员只需要通过 C/C+....
发表于 2020-07-16 17:58•
94次阅读

虽然很多 FPGA 工程师都是写代码,但是作为硬件编程工程师,如果不熟悉 FPGA 的底层资源和架构....
发表于 2020-07-16 17:53•
169次阅读

ASIC 是 Application Specific Integrated Circuit 的英文....
发表于 2020-07-16 17:47•
232次阅读

异步 FIFO 读写分别采用相互异步的不同时钟。在现代集成电路芯片中,随着设计规模的不断扩大,一个系....
发表于 2020-07-16 17:41•
96次阅读

工业电子产品的发展趋势是更小的电路板尺寸、更时尚的外形和更具成本效益。由于这些趋势,电子系统设计人员....
发表于 2020-07-16 17:32•
107次阅读

随着网络技术发展,移动网络速度不断提升,为移动互联网业务带来了良好的发展条件,但同时带来的爆炸式数据....
发表于 2020-07-16 17:24•
125次阅读

RISC-V开放指令集可以帮助航空航天和国防设计人员通过优化指令集,为每个特定的应用程序提供最有效的....
发表于 2020-07-16 17:13•
92次阅读

关于诸如FPGA之类的可编程解决方案的传统想法是,您必须愿意在灵活性方面做出很多权衡。在许多情况下确....
发表于 2020-07-16 17:12•
268次阅读

图像采集和处理技术在机器视觉和图像分析等诸多领域应用十分广泛。随着高速的 PCI Express(P....
发表于 2020-07-16 17:02•
44次阅读

SRAM不需要刷新电路即能保存它内部存储的数据。SRAM存储器具有较高的性能,但是SRAM芯片也有它....
发表于 2020-07-16 14:07•
35次阅读

同一器件同一时间完成多种测试:功能测试,V-I曲线测试,温度拐点系数测试,连接状态测试,管脚电压测试....
发表于 2020-07-16 10:17•
50次阅读

V-I曲线测试具有单通道探笔测试功能,方便分立器件的V-I曲线测试LSI大规模集成电路在线功能及状态....
发表于 2020-07-16 09:47•
42次阅读

新型多通道通用信号处理平台主要包括高速AD芯片、Xilinx最新UltraScale系列FPGA和T....
发表于 2020-07-16 09:25•
82次阅读

DSP 即数字信号处理技术, DSP 芯片即指能够实现数字信号处理技术的芯片。 DSP芯片是一种快速....
发表于 2020-07-15 22:19•
372次阅读

随着近些年深度学习的迅速发展和广泛的应用,卷积神经网络(CNN)已经成为检测和识别领域最好的方法,它....
发表于 2020-07-15 21:00•
191次阅读

评论