用CPLD和外部SRAM构成大容量FIFO的设计
发布时间:2008/5/28 0:00:00 访问次数:574
关键词:视频服务器、码流平滑、fpga/cpld、fifo
the design of fifo consisted of cpld and sram
ren sanjun hu wenjie
dsp center of institute of acoustics, chinese academy of science, beijing 100080
abstract: according to the signal of general fifo and the special need of video server, implement a cheap, high -volume and high-speed fifo with cpld and external sram. besides meeting the buffer need of video stream in video server, it can be a general high-volume fifo.
keywords:video server, stream buffering, fpga/cpld, fifo
随着数字电视技术的进一步成熟,在视频服务器方面,利用支持软件丰富、运算速度不断提高、具有较高性能价格比的微机来代替昂贵的专用设备实现数字视频码流的复用具有一定的实际意义,但是一般的桌面操作系统定时不够精确、处理大量并发任务效率不高以及突发传送等问题影响了复用后码流的质量,为了保证复用后的码流可以均匀平滑地传送到调制器,还考虑到微机的工作效率,就需要用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之间的最小间隔是两个脉冲。
读写地址信号
读写各有一个地址指针,每读出一个数读地址加一,读指针就指向下一个最早写入的数,经过sram阵列的最高地址后,又从起始地址开始,这样就可以达到先进先出的效果;只有有效的读写脉冲才能触发地址计数器;为使整个系统的动作时间一致,采用同步设计,读写都统一选择上升沿触发计数器变化;地址改变先于后面的/we、/oe脉冲的产生。
地址发生器采用计数器宏单元。fifo容量的大小由计数器决定,简单地增加计数器的位数和sram的数量,就可以扩大fifo的容量。读写地址产生之后,经过一个总线复用器后输出作为对外部sram读写的地址线;总线复用器的选择由mw信号控制,只有在mw有效的时候才输出为写地址,其它时间都是读地
关键词:视频服务器、码流平滑、fpga/cpld、fifo
the design of fifo consisted of cpld and sram
ren sanjun hu wenjie
dsp center of institute of acoustics, chinese academy of science, beijing 100080
abstract: according to the signal of general fifo and the special need of video server, implement a cheap, high -volume and high-speed fifo with cpld and external sram. besides meeting the buffer need of video stream in video server, it can be a general high-volume fifo.
keywords:video server, stream buffering, fpga/cpld, fifo
随着数字电视技术的进一步成熟,在视频服务器方面,利用支持软件丰富、运算速度不断提高、具有较高性能价格比的微机来代替昂贵的专用设备实现数字视频码流的复用具有一定的实际意义,但是一般的桌面操作系统定时不够精确、处理大量并发任务效率不高以及突发传送等问题影响了复用后码流的质量,为了保证复用后的码流可以均匀平滑地传送到调制器,还考虑到微机的工作效率,就需要用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之间的最小间隔是两个脉冲。
读写地址信号
读写各有一个地址指针,每读出一个数读地址加一,读指针就指向下一个最早写入的数,经过sram阵列的最高地址后,又从起始地址开始,这样就可以达到先进先出的效果;只有有效的读写脉冲才能触发地址计数器;为使整个系统的动作时间一致,采用同步设计,读写都统一选择上升沿触发计数器变化;地址改变先于后面的/we、/oe脉冲的产生。
地址发生器采用计数器宏单元。fifo容量的大小由计数器决定,简单地增加计数器的位数和sram的数量,就可以扩大fifo的容量。读写地址产生之后,经过一个总线复用器后输出作为对外部sram读写的地址线;总线复用器的选择由mw信号控制,只有在mw有效的时候才输出为写地址,其它时间都是读地