利用FPGA平台解决接口的总线速度瓶颈
发布时间:2008/5/26 0:00:00 访问次数:716
    
    
    
    目前,嵌入式系统已经广泛应用于通信、消费类电子产品等许多领域。然而,在许多应用中,处理器的接口总线速度成为制约系统性能的瓶颈。本文将以嵌入式实时视频数据存储系统为例,说明如何利用fpga作为嵌入式处理器的数据协处理器,利用cpld进行主处理器与协处理器之间数据通信的方案来解决处理器接口总线速度对系统性能的影响。该方案对解决类似的问题具有一定的参考作用。
    1 系统组成
    如图l所示,系统主要由4部分组成:嵌入式处理器、cpld、fpga及视频图像压缩输入部分。
    (1)嵌入式处理器
    采用sigma design生产的双核结构的数字图像处理芯片em8560。它内嵌arm7 tdmi内核和一个mepg rjsc解码引擎,支持许多音/视频解码标准,如vcd、dvd-video、ac-3.aac以及mp3;支持avi.is0 mpeg-4、divx格式以及静态jpeg图像;内置8kb指令cache和8kb数据cache及8kb sram,片外最大支持32位16 m b sdram系统内存和最大16 32位8mb f1ash;i/o接口部分支持标准ide (ata/atapi-4/ultra dma)接口,支持16位地址/数据localbus总线。该总线采用异步方式进行数据传输,因此数据传输速率低,可靠传输1kb数据一般需用时100 us左右。
    (2)fpga与cpld
    采用lattice的cpld和a1tera的cyclone fpga,要求cpld的引脚到引脚延时尽量小,来满足两片sdram数据切换的要求。
    (3)视频图像压缩输入部分
    视频a/d及编码部分采用philips公司的saa7114芯片,将输入模拟信号转换为itu 656格式数字图像数据。mpeg.4编码压缩部分采用intime公司的ime6400编码芯片,将数字图像数据压缩为mpeg-4的图像数据输出。其中ime6400输出接口有1kb的压缩数据输出缓冲区。该缓冲区数据最大保持时间为400 u s,即若在400 u s内不取完缓冲区数据,后来的压缩编码数据就会冲掉前面压缩的数据,造成视频数据的丢失。
    
    2 系统原理与实现
    为了说明本设计如何利用fpga和cpld来解决慢速总线local bus对扩充系统性能的瓶颈限制,下面将分两部分来说明。
    (1)local bus总线速度对系统性能的影响
    由图1中虚线处所示,本系统的设计思想是将多路输入视频数据经过压缩编码后通过local bus总线输入到嵌入式处理器em8560的内存中,再从内存写入ide硬盘上进行存储。这也是em8560设计的一个主要功能。但是,这种设计由于受到local bus总线速度的制约,一般只能输入两路分辨率为d1的数字视频图像,要如框图中增加为4路、8路或更多路数据输入是不可能的。首先,mpeg-4编码芯片ime6400的1kb输出数据缓冲区的数据最多只能保持400 u s时间。400 us时间一到,ime6400将会向缓冲区写入新的数据;如果旧数据读不完,就会丢失数据。其次,local bus数据传输率低,ime6400通过向em8560发中断到em8560,通过local bus将ime6400 1kb输出缓冲区的数据读入需要100 us时间。最后,由于local bus总线接口内部不具有真正的dma控制器,所以数据的传输需要占用处理器cpu的时间。如果em8560正在将内存中数据向硬盘中写操作,ime6400中断到来,这时处理器要停止当前的写硬盘工作,执行中断处理程序,花100 us左右时间读入ime6400的编码数据;如果在这100 us内,又有一片ime6400的编码数据满发出中断,则处理器读完当前片的数据后又要去读另一片的数据;如果另一片ime6400在内存中的数据还没有写入硬盘,则新数据将会覆盖原来的数据,造成视频数据的丢失。同时,如果输入超过2片,那cpu几乎都在中断的触发下读数据,无时间写硬盘,造成视频数据的丢失,也无时间去做其它的事情,这显然是不行的。因此,要想用这种设计在400 u s内传输4路图像或更多路图像数据到em8560内存中是不能实现的。
    (2)解决locai bus总线速度对系统性能的影响
    在嵌入式系统中,处理器外部总线的主要目的是将外部的数据块输入到处理器内部缓存中,外部总线速度一般是不会超过处理器访问它的外存(如sdram)的速度,否则会引起数据内部拥塞而丢失数据。因此,在一些需要传输大量数据到处理器内存的嵌入式系统中,能否使从外部输入到内存的数据以处理器访问内存的速率在处理器外部直接放入外存呢?答案是肯定的。我们可以通过cpld和fpga来实现,如系统框图中所示。下面说明这样实现的方法。 首先,就处理器内
    
    
    
    目前,嵌入式系统已经广泛应用于通信、消费类电子产品等许多领域。然而,在许多应用中,处理器的接口总线速度成为制约系统性能的瓶颈。本文将以嵌入式实时视频数据存储系统为例,说明如何利用fpga作为嵌入式处理器的数据协处理器,利用cpld进行主处理器与协处理器之间数据通信的方案来解决处理器接口总线速度对系统性能的影响。该方案对解决类似的问题具有一定的参考作用。
    1 系统组成
    如图l所示,系统主要由4部分组成:嵌入式处理器、cpld、fpga及视频图像压缩输入部分。
    (1)嵌入式处理器
    采用sigma design生产的双核结构的数字图像处理芯片em8560。它内嵌arm7 tdmi内核和一个mepg rjsc解码引擎,支持许多音/视频解码标准,如vcd、dvd-video、ac-3.aac以及mp3;支持avi.is0 mpeg-4、divx格式以及静态jpeg图像;内置8kb指令cache和8kb数据cache及8kb sram,片外最大支持32位16 m b sdram系统内存和最大16 32位8mb f1ash;i/o接口部分支持标准ide (ata/atapi-4/ultra dma)接口,支持16位地址/数据localbus总线。该总线采用异步方式进行数据传输,因此数据传输速率低,可靠传输1kb数据一般需用时100 us左右。
    (2)fpga与cpld
    采用lattice的cpld和a1tera的cyclone fpga,要求cpld的引脚到引脚延时尽量小,来满足两片sdram数据切换的要求。
    (3)视频图像压缩输入部分
    视频a/d及编码部分采用philips公司的saa7114芯片,将输入模拟信号转换为itu 656格式数字图像数据。mpeg.4编码压缩部分采用intime公司的ime6400编码芯片,将数字图像数据压缩为mpeg-4的图像数据输出。其中ime6400输出接口有1kb的压缩数据输出缓冲区。该缓冲区数据最大保持时间为400 u s,即若在400 u s内不取完缓冲区数据,后来的压缩编码数据就会冲掉前面压缩的数据,造成视频数据的丢失。
    
    2 系统原理与实现
    为了说明本设计如何利用fpga和cpld来解决慢速总线local bus对扩充系统性能的瓶颈限制,下面将分两部分来说明。
    (1)local bus总线速度对系统性能的影响
    由图1中虚线处所示,本系统的设计思想是将多路输入视频数据经过压缩编码后通过local bus总线输入到嵌入式处理器em8560的内存中,再从内存写入ide硬盘上进行存储。这也是em8560设计的一个主要功能。但是,这种设计由于受到local bus总线速度的制约,一般只能输入两路分辨率为d1的数字视频图像,要如框图中增加为4路、8路或更多路数据输入是不可能的。首先,mpeg-4编码芯片ime6400的1kb输出数据缓冲区的数据最多只能保持400 u s时间。400 us时间一到,ime6400将会向缓冲区写入新的数据;如果旧数据读不完,就会丢失数据。其次,local bus数据传输率低,ime6400通过向em8560发中断到em8560,通过local bus将ime6400 1kb输出缓冲区的数据读入需要100 us时间。最后,由于local bus总线接口内部不具有真正的dma控制器,所以数据的传输需要占用处理器cpu的时间。如果em8560正在将内存中数据向硬盘中写操作,ime6400中断到来,这时处理器要停止当前的写硬盘工作,执行中断处理程序,花100 us左右时间读入ime6400的编码数据;如果在这100 us内,又有一片ime6400的编码数据满发出中断,则处理器读完当前片的数据后又要去读另一片的数据;如果另一片ime6400在内存中的数据还没有写入硬盘,则新数据将会覆盖原来的数据,造成视频数据的丢失。同时,如果输入超过2片,那cpu几乎都在中断的触发下读数据,无时间写硬盘,造成视频数据的丢失,也无时间去做其它的事情,这显然是不行的。因此,要想用这种设计在400 u s内传输4路图像或更多路图像数据到em8560内存中是不能实现的。
    (2)解决locai bus总线速度对系统性能的影响
    在嵌入式系统中,处理器外部总线的主要目的是将外部的数据块输入到处理器内部缓存中,外部总线速度一般是不会超过处理器访问它的外存(如sdram)的速度,否则会引起数据内部拥塞而丢失数据。因此,在一些需要传输大量数据到处理器内存的嵌入式系统中,能否使从外部输入到内存的数据以处理器访问内存的速率在处理器外部直接放入外存呢?答案是肯定的。我们可以通过cpld和fpga来实现,如系统框图中所示。下面说明这样实现的方法。 首先,就处理器内
上一篇:USB接口的数字摄像系统设计