基于 fpga 中软异步 fifo 设计和实现

26
基基 FPGA 基基基基 FIFO 基基基基基 SA10225236 2009 基 9 基

Upload: kellsie

Post on 11-Jan-2016

258 views

Category:

Documents


0 download

DESCRIPTION

基于 FPGA 中软异步 FIFO 设计和实现. 宋文 SA10225236. 2009 年 9 月. 概况. 什么是 FIFO FIFO 是英文 First In First Out 的缩写,是一种先进先出的数据缓存器,他与普通存储器的区别是没有外部读写地址线,这样使用起来非常简单,但缺点就是只能顺序写入数据,顺序的读出数据,其数据地址由内部读写指针自动加 1 完成,不能像普通存储器那样可以由地址线决定读取或写入某个指定的地址。异步是指读写不是由一个时钟信号控制的,用于解决高速器件和低速器件之间数据暂存问题。. 概况. 什么是 FPGA - PowerPoint PPT Presentation

TRANSCRIPT

基于 FPGA中软异步 FIFO设计和实现

宋文SA10225236

2009年 9 月

概况

♦什么是 FIFO FIFO 是英文 First In First Out 的缩写,是一

种先进先出的数据缓存器,他与普通存储器的区别是没有外部读写地址线,这样使用起来非常简单,但缺点就是只能顺序写入数据,顺序的读出数据,其数据地址由内部读写指针自动加 1 完成,不能像普通存储器那样可以由地址线决定读取或写入某个指定的地址。异步是指读写不是由一个时钟信号控制的,用于解决高速器件和低速器件之间数据暂存问题。

概况

♦什么是 FPGA FPGA( Field- Programmable Gate

Array ),即现场可编程门阵列,它是在PAL、 GAL、 CPLD 等可编程器件的基础上进一步发展的产物。它是作为专用集成电路( ASIC )领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。

概况♦ FIFO 的应用背景 随着计算机、多媒体和数据通信技术的高速发

展,数字图像、语音等数据传输技术近年来得到了极大的重视和长足的发展,并取得了广泛的应用。

如何保障这些语音、图像等数据传输的准确性、及时性?

如何高效率高速度地传输这些数据? 这些都是当今信息领域的科研人员所必须回 答和解决的问题。

概况 而往往在数据传输系统中,会遇到不同系统接口间数

据的传输。 通常在两个相连接的不同电路系统之间(因为每个

系统的数据传输速度不同,在系统的接口部分就会出现数据输入速度和输出速度不同)会发生数据传输速率不匹配的问题。这种情况往往会让传输的数据产生复写或者丢失,降低数据的传输速率,同时也因为数据复写、丢失和无效数据的读入,将会产生数据出错。

因此需要在不同系统的接口处设计数据传输单元来实现数据的高速高效传输。

概况♦ 在现代的系统设计中,为了提高系统的性能,

设计者对数据的传输率、数据的传输量,对系统各部分之间的接口部分不同的数据输入和接收传输率的匹配有越来越高的要求,而 FIFO 存储器以其合理的价格、使用的方便灵活性以及上述的对速度匹配的应用而成为解决这类问题的理想途径,因此 FIFO 存储器在计算机、多媒体和数据通信领域都有着广泛的应用,因此对 FIFO 的研究与设计应用具有理论上和实际应用上的双重意义。

主流解决方案♦ 目前市场上实现 FIFO 的方案

A.一 . 基于 FPGA 的双端口的 RAM

B.二 . ASIC 的专用电路 C.三 . 基于单片机的单端口 RAM

方案优缺点比较基于 FPGA的双端口的

RAM

ASIC 的专用电路

基于单片机的单端口

RAM

优点 在现场可编程,容量可改动性大,实现简单,生产周期短,速度快,开发时间快,可移

植性好

功耗极低,抗干扰能力强,单位价格便宜,可靠性高

价格便宜,实现简单,功耗较低

缺点 抗干扰能力较差,功耗较大,价格较

研发周期长,生产时间长,容量大小

固定

读取速度慢,容量小

适用场合 民用高性能电子产品

军用,强电磁干扰,强辐射,高性能

计算机系统

工业控制,低成本电子系统

方案选择 对以上三种方案的对比,鉴于 FPGA 的在现场可编程,容量可改动性大,实现简单,生产周期短,速度快,开发时间快,可移植性好的优点,以及学校实验室提供的软硬件平台,我们选择基于 FPGA 作为工程实践的方案。 所设计的 FIFO 用于图像采集中的数据缓冲器,连接图像采集器和图像处理器。

方案设计 ♦ FIFO 的基本单元是寄存器,作为存储

器件, FIFO 的存储能力是由其内部定义的存储寄存器的数量决定的。

端口说明♦ 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 存储 器已经读空

异步 FIFO控制器模块划分 异步FIFO

控制器

写地址和写状态位产生模块

双口RAM存储器模块

读写地址比较模块

读地址和读状态位产生模块

写地址产生模块

写控制信号产生模块

读控制信号产生模块

读地址产生模块

简要程序框图

需要解决的技术难题♦ 要完成一个异步 FIFO 的设计 , 必须要解决

2 个问题:

1.避免亚稳态的产生 2. 产生正确的空、满标志

1. 亚稳态♦ 亚稳态产生的原因 在时序电路中 , 通常采用触发器和锁存

器作为存储单元。对于触发器 , 在时钟沿触发前后有一段判决时间 , 这段判决时间由建立时间 ( set up time) 和保持时间 (hold time) 组成 , 输入信号在这段时间内 , 必须保持稳定。否则 , 无法输出一个确定的值 ,如图 1中 rdata1 所示。

1. 亚稳态

1. 亚稳态 wdata1 在时钟 rclk 的上升沿时刻发生翻转 ,则采样结果 rdata1 可能是 0 , 也可能是 1 , 或是 0 、 1 之间的某个值 , 并且在未知时刻会固定到高电平或低电平。此时寄存器进入亚稳态 ,亚稳态产生后若不做处理 ,直接把信号送到组合电路中 ,经过布线延迟再经过各种逻辑门将产生不可预知的后果。

1. 亚稳态解决方法 在涉及到触发器的电路中,亚稳态无法彻底消除,只能想办法将其发生的概率降到最低。其中的一个方法就是使用格雷码。格雷码在相邻的两个码元之间只由一位变换 (二进制码在很多情况下是很多码元在同时变化 ) 。这就会避免计数器与时钟同步的时候发生亚稳态现象 。

2.空满判断 空 /满标志产生的原则是:写满不溢出,

读空不多读。即无论在什么情况下都不应出现读写地址同时对一个存储器地址操作的情况。在读写地址相等或相差一个或多个地址的时候,满标志应该有效,表示此时 FIFO已满,外部电路应对 FIFO 发数据。在满信号有效时写数据,应根据设计的要求,或保持、或抛弃重发。

2.空满判断♦ 在读写有效的情况下,根据系统读地址信号和写

地址信号的对比来控制是否产生读空标志或是写满标志:若是读地址加 1 与写地址相等,则产生读空标志;若是写地址加 1 与读地址相等,则产生写满标志。

改进之处♦ 功耗的控制 通过采用对异步读写指针的前两个状态位直接比较的方法 ,减少格雷码向二进制转换的电路 , 并增加门控时钟电路 ,从而大大降低了存储器的动态功耗。

采用门控时钟技术 , 是对 RTL 级降低功耗的有效手段。此技术主要是对触发器或锁存器的时钟输入进行门控。当子模块处于空闲状态时关断其时钟 , 既可以使本模块时序电路保持静态 , 又可以使其后组合逻辑没有翻转。因此门控时钟技术很好地达到了关闭子电路的目的 , 有效地降低了时钟功耗。

门控时钟电路 在本设计中 , 时钟模块主要是读写指针的产生电路。对于写指针电路而言 , 如图 所示 , 当写复位 (wrst) 有效或满标志 (full) 有效或写指针增加量 (inwptr) 为零时 ,关断写时钟 ,使其不翻转 , 这样减少了大量触发器的工作。从而降低了写指针产生电路的功耗。

开发与测试环境♦ FPGA采用的是 Xilinx公司的软硬件♦ Modelsim 6.5a 用于前期功能设计♦ 编程语言选用 Verilog HDL

预期目标♦ 完成一个通用型低功耗的 FIFO 的软核或硬核

主要参考文献♦ Verilong 数字系统设计教程 夏宇文 北京航空航天大学出版社

♦ 数字系统设计(第四版)【美】M.Morris mano & Michael D.Ciletti 电子工业出版社

谢谢大家!