利用FPGA平臺解決接口的總線速度瓶頸
發布時間:2008/5/26 0:00:00 訪問次數:700
    
    
    
    目前,嵌入式系統已經廣泛應用于通信、消費類電子產品等許多領域。然而,在許多應用中,處理器的接口總線速度成為制約系統性能的瓶頸。本文將以嵌入式實時視頻數據存儲系統為例,說明如何利用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接口的數字攝像系統設計