首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 单元电路介绍 > 其它电路
FPGA异步FIFO设计中的问题与解决办法
来源:本站整理  作者:佚名  2009-09-18 10:14:00




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 系统仿真
    如果系统的读时钟频率大于写时钟频率,就有可能出现读空的情况;如果系统的写时钟频率大于读时钟频率,就可能出现写满的情况。在实际系统中,一般都设置写时钟频率大于读时钟频率,故本文只考虑后一种情况。

上一页  [1] [2] [3] 

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)

推荐阅读

图文阅读

热门阅读

Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:22,289.06000 毫秒