用FPGA實現低成本高性能的數據采集和控制卡
帶有dsp cpu的現成的數據采集和控制卡經常只能達到預期性能的一小部分。隨著通道數目的增加或者采樣頻率的提高,在達到全部通道性能之前,dsp cpu已經開始呈現出超載現象。
當今市場的壓力迫使數據采集和控制卡的供應商在增加數據采集卡的通道數和提高采樣頻率的同時還要考慮降低成本。而且,卡的實際功能可以由生產或者在系統配置時決定。有時候,同一種卡在同一個系統的不同插槽中需要完成不同的功能。
本文引用地址:http://www.104case.com/article/20552.htm當通道數增加時,dsp的負荷也隨之增加。在多數應用中,大部分的dsp cpu的帶寬被前端預處理任務(偏移校正、增益調整、預濾波等)所消耗。而且這種代碼的開發也是費時費力的,因為出于效率方面的原因,它通常需要用匯編語言來編寫。即使采樣數據從每個通道到不同的存儲器之間的傳送過程由dma來處理,cpu的性能仍然會因可用的存儲器帶寬減小而降低。采樣頻率越高,處理器可用的執行諸如信號分析、視頻處理、壓縮等的實際dsp功能的時間就越少。
由于dsp處理器不得不從一個通道切換到下一個通道,因此高速緩存器進一步降低了可用的總線帶寬。除了處理數據以外,dsp cpu還必須管理數據(緩沖、數據移動等)、通過背板將處理完的數據傳送到主處理器、處理背板協議等。
要滿足通道數目增加時的處理要求,dsp cpu的性能必須呈指數型的提高。對提升dsp性能的要求可以通過提高處理器的工作頻率(將導致更高的總線傳輸頻率、使用更快的存儲器和外設接口芯片)或使用功能更為強大的處理器這兩種方法來滿足。無論哪種方法都會大大地增加電路板的成本。
本文提出的體系結構能夠在給定的dsp cpu的基礎上,經濟地增加通道數和每個通道的采樣頻率。它通過采用低成本的latticeecp和 latticeec fpga作為 dsp cpu的協處理器,在降低預處理和非dsp工作負荷的同時保持了靈活性,可以適應多種不同的應用。由于這些fpga器件提供了充足的局域存儲器,因此可以實現一種能夠進一步提高性能的可編程的數據流結構:一旦所有操作數就緒,數據流結構將幫助dsp處理器執行計算任務。它取代了需要等待操作數就緒的順序執行的方式。

圖1 數據采集和控制卡結構
結構圖1顯示了如今的數據采集和控制卡結構。該卡被設計成能夠處理來自adc板塊的20m的采樣數據。
從左邊開始,多個高頻模擬信號被adc板塊量化并通過一個lvds接口被傳送到fpga中。fpga通過dma將數據直接傳送到連在dsp cpu上的sram中。dsp cpu處理存儲器中的數據,并將分析過的數據通過pci背板傳送到主處理器中。在cpu的命令下,fpga產生用于與外部數字子系統通信的控制信號。該板的基準產能是能夠處理4個5m采樣頻率的通道。在這樣的速率下,已經沒有剩余的可用于模擬控制(用數字i/o驅動dac)或者分析調理過的信號的處理能力了。因為dsp cpu已經在處理所有的任務(包括預處理功能、與主處理器通信等),任何新增的處理要求只能由下一代的、配備了更昂貴的dsp cpu的數據采集卡來完成。另一種可選方案是通過減少輸入通道數來處理額外的工作。
ecp fpga中的dsp模塊
在分析實際應用的結構圖之前,先描述一下內嵌在latticeecp-dsp fpga中的獨特靈活的dsp模塊是很有幫助的。這種模塊經過配置可以用于許多種dsp應用。每片ecp-dsp器件有4到10個sysdsp模塊。它們可以通過多個通道實現并行的dsp處理。借助軟件,每個sysdsp模塊可以配置成下列的模式之一:
36x36模式
一個36x36的乘法器
18x18模式
四個乘法器
兩個52位的乘法累加器
兩個各含兩個18x18乘法器的求和器
一個含四個18x18乘法器的求和器
9x9模式
八個乘法器
兩個34位的乘法累加器
四個各含兩個9x9乘法器的求和器
兩個各含四個9x9乘法器的求和器
sysdsp模塊提供的靈活性可以被用來實現許多種dsp任務。以下是sysdsp模塊在18x18模式下的配置示意圖,見圖2。

圖2 sysdsp模塊在18x18模式下的配置示意圖 這些模塊可以實現250mhz速度下的所有功能,總的處理能力達一萬個mmac(百萬乘法累加操作)。由于待處理的數據通過硬件送到這些sysdsp模塊中(與微處理器需要從它的存儲器中讀取數據不同),所以這些模塊的性能非常接近基準期望值。這些流水線寄存器可以使dsp處理任務在最高運行速度下執行。這種sysdsp模塊可以在同一個模塊中實現乘法累加、求和、加法或減法運算,而無需使用外部的fpga結構,因此避免了這些結構的布線延時。
這些fpga結構可以編程實現所要求的數據管理功能,從而減輕dsp cpu處理非dsp工作的負擔。
重新配置改善性能
結構圖3采用了相同的dsp cpu來實現所有的新增性能。在通道容量倍增的同時,其成本比采用更新的dsp cpu的板子低得多。
從左側開始,adc板塊現在可以實現8路高頻模擬信號的采樣,并且通過lvds信號接口與latticeecp-dsp進行通信。ecp器件同時在所有通道中實時地執行所有信號預處理功能。通過這個fpga,經過整形的待處理的采樣數據被寫入ddr存儲器。

圖3 采用latticeecp、ec的結構圖 在ecp fpga中實現的cpu總線接口(64位)能夠在觸發模式下在高性能ddr存儲器和cpu高速緩存之間傳送數據和指令。ecp fpga還提供內部存儲器來緩沖待處理的數據,降低了非順序存取ddr存儲器帶來的損失。當cpu在高速緩存中處理數據時,在ecp fpga中實現的智能總線仲裁器和切換邏輯能夠與外圍器件(latticeecp,pci背板,數字i/o接口)之間交換數據。
這種結構提高了dsp cpu的效率。主要表現在降低dsp cpu的預處理負荷;減少必不可少的通道切換的中斷時間;減輕非dsp工作的負荷;通過使用更快的ddr存儲器來增加存儲器的帶寬;在處理任務時,減少了非順序存取ddr存儲器的次數。dsp cpu的這種新增能力可以用來增加輸入和輸出的通道數。
ecp-dsp fpga實現的功能
高速adc接口;
每個通道的實時預處理,實現諸如偏移校正、增益調整、有限脈沖相應濾波器等功能;
根據應用要求配置數字i/o接口;
經過緩沖,數字接口也可以驅動dac;
與latticeecp fpga之間的高速通信接口。
ec fpga實現的功能
64位dsp cpu接口;
ddr接口;
用局部存儲器存放經過部分處理的數據;
cpci/pxi接口;
用存放在主cpu中的配置來配置lattice ec器件的邏輯;
與lattice ecp fpga之間的高速通信接口; 將由cpu執行的啟動代碼傳送至ddr存儲器的邏輯;
用從主cpu收到的最新代碼更新啟動代碼閃存;
管理lattice ecp、存儲器、cpci背板等之間數據傳送所需的智能總線仲裁邏輯功能。
在不同的應用中配置電路板
這種電路板既可以通過背板接口進行在系統配置也可以在制造的過程中進行配置。
(1)通過背板配置
供dsp cpu使用的啟動rom中的代碼能夠和主處理器通信,連接在latticeec fpga上的spi配置閃存可以裝載配置以實現上述所有功能。
當卡插入插槽后,latticeec fpga進行配置,將rom中的代碼送入ddr存儲器中,并且給power manager發信號結束對cpu的復位操作。dsp cpu與主處理器進行通信并開始將dsp處理規則送入ddr存儲器。同時,通過由latticeec fpga控制的sysconfig端口,預處理配置被直接載入ecp。 這樣,latticeecp fpga就可以根據這個插槽的要求開始處理信號了。
(2)在制造時進行配置
dsp的處理規則存放在啟動rom中而fpga的配置存放在它們各自的spi配置閃存中。
當卡插入插槽后,latticeec器件通過spi閃存自行實現配置(在此過程中,power manager將cpu置成復位狀態)并且將啟動rom中的內容送入ddr存儲器。與此同時,latticeecp fpga也通過自己的spi配置閃存實現自我配置。當兩個fpga配置完成后,power manager發送信號結束對cpu的復位。
結語
與舊的方案相比,在采用相同的dsp cpu的情況下,新的結構能使板的性能提高一倍以上。性能的改善首先得益于取消了舊設計中費時的匯編代碼和難以維護的預處理功能,其次得益于使用了更快、更便宜的ddr存儲器。其結果是在提供了類似性能、保持了同樣的靈活性的前提下,設計成本大幅下降。
評論