利用FPGA平臺解決接口的總線速度瓶頸
發(fā)布時間:2008/5/26 0:00:00 訪問次數(shù):721
    
    
    
    目前,嵌入式系統(tǒng)已經(jīng)廣泛應用于通信、消費類電子產(chǎn)品等許多領域。然而,在許多應用中,處理器的接口總線速度成為制約系統(tǒng)性能的瓶頸。本文將以嵌入式實時視頻數(shù)據(jù)存儲系統(tǒng)為例,說明如何利用fpga作為嵌入式處理器的數(shù)據(jù)協(xié)處理器,利用cpld進行主處理器與協(xié)處理器之間數(shù)據(jù)通信的方案來解決處理器接口總線速度對系統(tǒng)性能的影響。該方案對解決類似的問題具有一定的參考作用。
    1 系統(tǒng)組成
    如圖l所示,系統(tǒng)主要由4部分組成:嵌入式處理器、cpld、fpga及視頻圖像壓縮輸入部分。
    (1)嵌入式處理器
    采用sigma design生產(chǎn)的雙核結(jié)構(gòu)的數(shù)字圖像處理芯片em8560。它內(nèi)嵌arm7 tdmi內(nèi)核和一個mepg rjsc解碼引擎,支持許多音/視頻解碼標準,如vcd、dvd-video、ac-3.aac以及mp3;支持avi.is0 mpeg-4、divx格式以及靜態(tài)jpeg圖像;內(nèi)置8kb指令cache和8kb數(shù)據(jù)cache及8kb sram,片外最大支持32位16 m b sdram系統(tǒng)內(nèi)存和最大16 32位8mb f1ash;i/o接口部分支持標準ide (ata/atapi-4/ultra dma)接口,支持16位地址/數(shù)據(jù)localbus總線。該總線采用異步方式進行數(shù)據(jù)傳輸,因此數(shù)據(jù)傳輸速率低,可靠傳輸1kb數(shù)據(jù)一般需用時100 us左右。
    (2)fpga與cpld
    采用lattice的cpld和a1tera的cyclone fpga,要求cpld的引腳到引腳延時盡量小,來滿足兩片sdram數(shù)據(jù)切換的要求。
    (3)視頻圖像壓縮輸入部分
    視頻a/d及編碼部分采用philips公司的saa7114芯片,將輸入模擬信號轉(zhuǎn)換為itu 656格式數(shù)字圖像數(shù)據(jù)。mpeg.4編碼壓縮部分采用intime公司的ime6400編碼芯片,將數(shù)字圖像數(shù)據(jù)壓縮為mpeg-4的圖像數(shù)據(jù)輸出。其中ime6400輸出接口有1kb的壓縮數(shù)據(jù)輸出緩沖區(qū)。該緩沖區(qū)數(shù)據(jù)最大保持時間為400 u s,即若在400 u s內(nèi)不取完緩沖區(qū)數(shù)據(jù),后來的壓縮編碼數(shù)據(jù)就會沖掉前面壓縮的數(shù)據(jù),造成視頻數(shù)據(jù)的丟失。
    
    2 系統(tǒng)原理與實現(xiàn)
    為了說明本設計如何利用fpga和cpld來解決慢速總線local bus對擴充系統(tǒng)性能的瓶頸限制,下面將分兩部分來說明。
    (1)local bus總線速度對系統(tǒng)性能的影響
    由圖1中虛線處所示,本系統(tǒng)的設計思想是將多路輸入視頻數(shù)據(jù)經(jīng)過壓縮編碼后通過local bus總線輸入到嵌入式處理器em8560的內(nèi)存中,再從內(nèi)存寫入ide硬盤上進行存儲。這也是em8560設計的一個主要功能。但是,這種設計由于受到local bus總線速度的制約,一般只能輸入兩路分辨率為d1的數(shù)字視頻圖像,要如框圖中增加為4路、8路或更多路數(shù)據(jù)輸入是不可能的。首先,mpeg-4編碼芯片ime6400的1kb輸出數(shù)據(jù)緩沖區(qū)的數(shù)據(jù)最多只能保持400 u s時間。400 us時間一到,ime6400將會向緩沖區(qū)寫入新的數(shù)據(jù);如果舊數(shù)據(jù)讀不完,就會丟失數(shù)據(jù)。其次,local bus數(shù)據(jù)傳輸率低,ime6400通過向em8560發(fā)中斷到em8560,通過local bus將ime6400 1kb輸出緩沖區(qū)的數(shù)據(jù)讀入需要100 us時間。最后,由于local bus總線接口內(nèi)部不具有真正的dma控制器,所以數(shù)據(jù)的傳輸需要占用處理器cpu的時間。如果em8560正在將內(nèi)存中數(shù)據(jù)向硬盤中寫操作,ime6400中斷到來,這時處理器要停止當前的寫硬盤工作,執(zhí)行中斷處理程序,花100 us左右時間讀入ime6400的編碼數(shù)據(jù);如果在這100 us內(nèi),又有一片ime6400的編碼數(shù)據(jù)滿發(fā)出中斷,則處理器讀完當前片的數(shù)據(jù)后又要去讀另一片的數(shù)據(jù);如果另一片ime6400在內(nèi)存中的數(shù)據(jù)還沒有寫入硬盤,則新數(shù)據(jù)將會覆蓋原來的數(shù)據(jù),造成視頻數(shù)據(jù)的丟失。同時,如果輸入超過2片,那cpu幾乎都在中斷的觸發(fā)下讀數(shù)據(jù),無時間寫硬盤,造成視頻數(shù)據(jù)的丟失,也無時間去做其它的事情,這顯然是不行的。因此,要想用這種設計在400 u s內(nèi)傳輸4路圖像或更多路圖像數(shù)據(jù)到em8560內(nèi)存中是不能實現(xiàn)的。
    (2)解決locai bus總線速度對系統(tǒng)性能的影響
    在嵌入式系統(tǒng)中,處理器外部總線的主要目的是將外部的數(shù)據(jù)塊輸入到處理器內(nèi)部緩存中,外部總線速度一般是不會超過處理器訪問它的外存(如sdram)的速度,否則會引起數(shù)據(jù)內(nèi)部擁塞而丟失數(shù)據(jù)。因此,在一些需要傳輸大量數(shù)據(jù)到處理器內(nèi)存的嵌入式系統(tǒng)中,能否使從外部輸入到內(nèi)存的數(shù)據(jù)以處理器訪問內(nèi)存的速率在處理器外部直接放入外存呢?答案是肯定的。我們可以通過cpld和fpga來實現(xiàn),如系統(tǒng)框圖中所示。下面說明這樣實現(xiàn)的方法。 首先,就處理器內(nèi)
    
    
    
    目前,嵌入式系統(tǒng)已經(jīng)廣泛應用于通信、消費類電子產(chǎn)品等許多領域。然而,在許多應用中,處理器的接口總線速度成為制約系統(tǒng)性能的瓶頸。本文將以嵌入式實時視頻數(shù)據(jù)存儲系統(tǒng)為例,說明如何利用fpga作為嵌入式處理器的數(shù)據(jù)協(xié)處理器,利用cpld進行主處理器與協(xié)處理器之間數(shù)據(jù)通信的方案來解決處理器接口總線速度對系統(tǒng)性能的影響。該方案對解決類似的問題具有一定的參考作用。
    1 系統(tǒng)組成
    如圖l所示,系統(tǒng)主要由4部分組成:嵌入式處理器、cpld、fpga及視頻圖像壓縮輸入部分。
    (1)嵌入式處理器
    采用sigma design生產(chǎn)的雙核結(jié)構(gòu)的數(shù)字圖像處理芯片em8560。它內(nèi)嵌arm7 tdmi內(nèi)核和一個mepg rjsc解碼引擎,支持許多音/視頻解碼標準,如vcd、dvd-video、ac-3.aac以及mp3;支持avi.is0 mpeg-4、divx格式以及靜態(tài)jpeg圖像;內(nèi)置8kb指令cache和8kb數(shù)據(jù)cache及8kb sram,片外最大支持32位16 m b sdram系統(tǒng)內(nèi)存和最大16 32位8mb f1ash;i/o接口部分支持標準ide (ata/atapi-4/ultra dma)接口,支持16位地址/數(shù)據(jù)localbus總線。該總線采用異步方式進行數(shù)據(jù)傳輸,因此數(shù)據(jù)傳輸速率低,可靠傳輸1kb數(shù)據(jù)一般需用時100 us左右。
    (2)fpga與cpld
    采用lattice的cpld和a1tera的cyclone fpga,要求cpld的引腳到引腳延時盡量小,來滿足兩片sdram數(shù)據(jù)切換的要求。
    (3)視頻圖像壓縮輸入部分
    視頻a/d及編碼部分采用philips公司的saa7114芯片,將輸入模擬信號轉(zhuǎn)換為itu 656格式數(shù)字圖像數(shù)據(jù)。mpeg.4編碼壓縮部分采用intime公司的ime6400編碼芯片,將數(shù)字圖像數(shù)據(jù)壓縮為mpeg-4的圖像數(shù)據(jù)輸出。其中ime6400輸出接口有1kb的壓縮數(shù)據(jù)輸出緩沖區(qū)。該緩沖區(qū)數(shù)據(jù)最大保持時間為400 u s,即若在400 u s內(nèi)不取完緩沖區(qū)數(shù)據(jù),后來的壓縮編碼數(shù)據(jù)就會沖掉前面壓縮的數(shù)據(jù),造成視頻數(shù)據(jù)的丟失。
    
    2 系統(tǒng)原理與實現(xiàn)
    為了說明本設計如何利用fpga和cpld來解決慢速總線local bus對擴充系統(tǒng)性能的瓶頸限制,下面將分兩部分來說明。
    (1)local bus總線速度對系統(tǒng)性能的影響
    由圖1中虛線處所示,本系統(tǒng)的設計思想是將多路輸入視頻數(shù)據(jù)經(jīng)過壓縮編碼后通過local bus總線輸入到嵌入式處理器em8560的內(nèi)存中,再從內(nèi)存寫入ide硬盤上進行存儲。這也是em8560設計的一個主要功能。但是,這種設計由于受到local bus總線速度的制約,一般只能輸入兩路分辨率為d1的數(shù)字視頻圖像,要如框圖中增加為4路、8路或更多路數(shù)據(jù)輸入是不可能的。首先,mpeg-4編碼芯片ime6400的1kb輸出數(shù)據(jù)緩沖區(qū)的數(shù)據(jù)最多只能保持400 u s時間。400 us時間一到,ime6400將會向緩沖區(qū)寫入新的數(shù)據(jù);如果舊數(shù)據(jù)讀不完,就會丟失數(shù)據(jù)。其次,local bus數(shù)據(jù)傳輸率低,ime6400通過向em8560發(fā)中斷到em8560,通過local bus將ime6400 1kb輸出緩沖區(qū)的數(shù)據(jù)讀入需要100 us時間。最后,由于local bus總線接口內(nèi)部不具有真正的dma控制器,所以數(shù)據(jù)的傳輸需要占用處理器cpu的時間。如果em8560正在將內(nèi)存中數(shù)據(jù)向硬盤中寫操作,ime6400中斷到來,這時處理器要停止當前的寫硬盤工作,執(zhí)行中斷處理程序,花100 us左右時間讀入ime6400的編碼數(shù)據(jù);如果在這100 us內(nèi),又有一片ime6400的編碼數(shù)據(jù)滿發(fā)出中斷,則處理器讀完當前片的數(shù)據(jù)后又要去讀另一片的數(shù)據(jù);如果另一片ime6400在內(nèi)存中的數(shù)據(jù)還沒有寫入硬盤,則新數(shù)據(jù)將會覆蓋原來的數(shù)據(jù),造成視頻數(shù)據(jù)的丟失。同時,如果輸入超過2片,那cpu幾乎都在中斷的觸發(fā)下讀數(shù)據(jù),無時間寫硬盤,造成視頻數(shù)據(jù)的丟失,也無時間去做其它的事情,這顯然是不行的。因此,要想用這種設計在400 u s內(nèi)傳輸4路圖像或更多路圖像數(shù)據(jù)到em8560內(nèi)存中是不能實現(xiàn)的。
    (2)解決locai bus總線速度對系統(tǒng)性能的影響
    在嵌入式系統(tǒng)中,處理器外部總線的主要目的是將外部的數(shù)據(jù)塊輸入到處理器內(nèi)部緩存中,外部總線速度一般是不會超過處理器訪問它的外存(如sdram)的速度,否則會引起數(shù)據(jù)內(nèi)部擁塞而丟失數(shù)據(jù)。因此,在一些需要傳輸大量數(shù)據(jù)到處理器內(nèi)存的嵌入式系統(tǒng)中,能否使從外部輸入到內(nèi)存的數(shù)據(jù)以處理器訪問內(nèi)存的速率在處理器外部直接放入外存呢?答案是肯定的。我們可以通過cpld和fpga來實現(xiàn),如系統(tǒng)框圖中所示。下面說明這樣實現(xiàn)的方法。 首先,就處理器內(nèi)