180 likes | 401 Views
FPGA 中软 FIFO 设计和实现. SA10225517 王瑜. 需求与目标. 随着 计算机 、 多媒体 和 数据通信技术 的高速发展, 数字图像 、 语音 等数据传输技术近年来得到了极大的重视和长足的发展,并取得了广泛的应用。. 需求与目标.
E N D
FPGA中软FIFO设计和实现 SA10225517 王瑜
需求与目标 随着计算机、多媒体和数据通信技术的高速发展,数字图像、语音等数据传输技术近年来得到了极大的重视和长足的发展,并取得了广泛的应用。
需求与目标 信息社会每时每刻要接触大量的数据,如监控、摄像、雷达跟踪、机载拍摄等,要从众多的信息中获取有用的数据进行相关的分析和处理,就需对数据进行存储。随着信息获取技术水平的提高和对获得的数据质量要求的提高, 高速数据的存储也因其数据量巨大,数据输出速率快等因素,成为一个不易解决的问题。
需求与目标 • 在现代的集成电路芯片中,随着设计规模的不断扩大,一个系统中往往含有数个时钟。多时钟域带来的一个问题就是,如何设计异步时钟之间的接口电路。异步FIFO(First In First Out)是解决这个问题一种简便、快捷的解决方案。 使用异步FIFO可以在两个不同时钟系统之间快速而方便地传输实时数据。在网络接口、图像处理等方面,异步FIFO得到了广泛的应用。
方案比较 • 主要列举ASIC和FPGA两种实现方法 • ASIC相对于FPGA的优势:功耗极低,抗干扰能力强,单位价格便宜,可靠性高 ,设计密度大。 • FPGA与ASIC相比的优势:设计周期段,开发成本低,设计灵活,可移植性好
方案选择 • 针对FPGA开放周期短,设计成本低等特点,结合实验室的硬件资源,选用Xilinx公司的Virtex-5来实现异步FIFO的功能。 • 运用Modelsim 6.5a前期功能设计,后期运用Xilinx ISE 10.1对系统进行综合实现和仿真 • 编程语言选用Verilog HDL
FPGA 芯片 • Modelsim仿真软件 • Ise 综合软件
实现功能 • FIFO 的功能为:在写满标志无效时(为低电平) ,只要写使能信号有效就可以把数据写入FIFO 中,一直到写满它的存储空间为止,这时写满标志为高表明不允许再写;当读空标志无效时,读使能信号有效,数据可以一个一个读出,最先写入的数据最先读出(读出一个数据FIFO 中就少一个) ,直到FIFO 中没有数据为止,此时读空标志有效为高电平,不允许再读。
框图介绍 • 整个系统分为两个完全独立的时钟域——读时钟域和写时间域;FIFO的存储介质为一块双端口RAM,可以同时进行读写操作。在写时钟域部分,由写地址产生逻辑产生写控制信号和写地址;读时钟部分由读地址产生逻辑产生读控制信号和读地址。在空/满标志产生部分,由读写地址相互比较产生空/满标志。双端口RAM 是用来存储数据的,它的读和写是两个独立的过程,互不干扰。满空标志模块用来产生写满、读空标志,该模块的功能还包括实现读写地址的同步比较和二进制与格雷码的转换。
模块端口说明 wdata:输入数据端口; rdata:输出数据端口 rinc: 读使能端,当rinc=1时,可以读出数据 rclk: 读时钟,rclk上升沿时才能读出数据 winc: 写使能端,当rinc=1时,可以写入数据 wclk: 写时钟,wclk上升沿时才能写入数据 rst_n: 清零端,rst_n=0时,读写都被清零(即:读写地 址指针都指向0) full: FIFO状态信号,full=1时,表明该FIFO存储器已 经写满 empty:FIFO状态信号,empty=1时,表明该FIFO存储 器已经读空
技术要点 • 1.避免亚稳态的产生 • 2.产生正确的空、满标志
亚稳态 • 亚稳态: 在涉及到触发器的电路中,亚稳态无法彻底消除,只能想办法将其发生的概率降到最低。一种有效的方法就是使用格雷码。格雷码在相邻的两个码元之间只由一位变换(二进制码在很多情况下是很多码元在同时变化)。这就会避免计数器与时钟同步的时候发生亚稳态现象 。
空/满标志 • 空/满标志产生的原则是:写满不溢出,读空不多读。即无论在什么情况下都不应出现读写地址同时对一个存储器地址操作的情况。 在读写地址相等或相差一个或多个地址的时候,满标志应该有效,表示此时FIFO已满,外部电路应对FIFO发数据。在满信号有效时写数据,应根据设计的要求,或保持、或抛弃重发。