用CPLD和外部SRAM构成大容量FIFO的设计.docVIP

用CPLD和外部SRAM构成大容量FIFO的设计.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
用CPLD和外部SRAM构成大容量FIFO的设计

用CPLD和外部SRAM构成大容量FIFO的设计 用CPLD和外部SRAM构成大容量FIFO的设计 2001-7-19 随着数字电视技术的进一步成熟,利用支持软件丰富、运算速度不断提高、具有较高性价比的微机来代替昂贵的专用设备作为视频服务器具有一定的实际意义,但是一般的桌面操作系统定时不够精确、处理大量并发任务效率不高以及突发传送等问题影响了复用后码流的质量,为了保证复用后的码流可以均匀平滑地传送到调制器,还考虑到微机的工作效率,就需要用FIFO来进行码流的缓冲。如果FIFO的容量足够大,微机就可以通过DMA方式一次发送大量的数据,再经过FIFO的缓冲,按照预设频率均匀送出。 在其它许多实际应用中,也会利用到FIFO来完成数据流的平滑,消除突发传送带来的数据抖动。FIFO的容量和速度直接影响到缓冲的效果,但是目前大容量FIFO价格昂贵,这就影响到了FIFO的进一步实际应用。本文介绍了一种利用外部SRAM和CPLD构成廉价、高速、大容量先进先出缓冲器FIFO的设计方法。 为了用外部SRAM来实现FIFO,要解决以下问题: *区分同时到达的读写信号,并且产生间隔的对外部SRAM的读写信号; *在SRAM顺序寻址的基础上实现数据的先进先出; *全空、全满、半空、半满状态的判定; *尽量降低对器件速度的要求。 在系统中地址产生、比较器结果输出、FIFO各种状态的输出都采用同步触发方式,全部按照系统时钟统一进行,这能在很大程度上消除异步方式引起的逻辑状态变化时间的不确定和毛刺的产生,但也不是在所有的地方都强求按同步设计,只要能符合要求,也采用异步方式,目的都是为了减少设计的复杂性和占用的资源并提高系统的可靠性。 在Altera公司的MAX+plus II V9.6软件下设计,采用原理图的方式,可以方便地进行时序控制和仿真。 以下的设计都是在CPLD为EPM7128SQC100-6,SRAM为IDT71128-12的条件下进行。对FIFO的最高要求为双向同时读写,时钟RCLK和WCLK为10MHz,脉冲宽度为50ns,系统时钟CLK为50MHz,脉冲宽度为10ns。对于较低速度的读写,50MHz的系统时钟也可以适应,如果外部要求降低,也可按照与RCLK、WCLK的等比例换用较低的系统时钟。外部数据在上升沿有效,FIFO的输出也是上升沿有效。 系统采用独立的系统时钟CLK。为区分同时到达的外部读写信号,内部产生的读写信号分别用系统时钟的上升沿和下降沿触发,同时让产生的内部读写信号互斥,以得到间隔的对外部SRAM的读写信号;考虑到实际的需要以及器件和内部时钟的速度,按照四个脉冲宽度的方式产生读写信号,以保证在最小10个脉冲时间内各有一次有效读写。 外部读写时钟RCLK、WCLK先经过各自的使能控制信号REN、WEN进入CPLD;为保证读写互斥,外部读写异步锁存之后,读信号锁存后面的第一个上升沿,写信号锁存后面的第一个下降沿,并且用各自的前三个脉冲控制对方锁存第一个脉冲。 通过对各种情况的分析,基本读写脉冲OE和MW之间的最小间隔是一个脉冲,在有连续两个外部读或写的情况下所产生的两个OE或MW之间的最小间隔是两个脉冲。 基本信号产生的原理图如图1所示。 读写各有一个地址指针,每读出一个数,读地址加一,读指针就指向下一个最早写入的数,经过SRAM阵列的最高地址后,又从起始地址开始,这样就可以达到先进先出的效果;只有有效的读写脉冲才能触发地址计数器;为使整个系统的动作时间一致,读写都选择上升沿触发计数器变化。 地址发生器采用计数器宏单元。FIFO容量的大小由计数器决定,简单地增加计数器的位数和SRAM的数量,就可以扩大FIFO的容量。读写地址产生之后,经过一个总线复用器后输出作为对外部SRAM读写的地址线;总线复用器的选择由MW信号控制,只有在MW有效的时候才输出为写地址,其它时间都是读地址。 读写地址在由计数器产生经过总线复用时,会产生静态冒险;对于读写地址比较器,因为它锁存的时刻距离地址变化后两个脉冲,而且比较器输入的地址不经过总线复用,这就可以保证在比较器锁存的时刻地址比较结果已经稳定而且不受静态冒险的影响;对于到SRAM的读写地址,在读写控制脉冲/OE、/WE有效前还有两个脉冲的时间稳定,不会因为地址不稳定产生错误操作。 读写地址相等时比较器输出相等标志EF,除最高位以外的地址都相等的情况输出半满标志EHF(见图2)。 1、小于半满LHFULL 在上电或复位之后,LHFULL立刻有效。利用另一个触发器上电或者复位时的清零,置位LHFULL触发器,使其有效,但在第一个写之后这个触发器就不再对LHFULL的变化有影响。在地址比较器输出半满的时候再来一个读,就判定为小于半满。当经过一个写从小于半满到半满时,在地址比较器输出半满使LHF

文档评论(0)

sy78219 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档