用FPGA來(lái)實(shí)現DSP解決方案的兩大理由
例如,FPGA可以生成一個(gè)定制硬件設計,從而控制邏輯能夠在硬件中實(shí)現。工程師將不必再利用精確的時(shí)鐘周期來(lái)實(shí)現控制功能。此外,通過(guò)裁減硬件架構,FPGA可以提供額外的性能。如果最重要的設計考慮因素是速度,那么可以在FPGA中設計完全并行的算法處理方案。今天,用FPGA來(lái)執行DSP功能的最常見(jiàn)應用之一是視頻處理。其它可從FPGA的更高性能中受益的應用包括雷達、超聲波和高速調制解調器等。
使用FPGA進(jìn)行數字信號處理的另一個(gè)理由是今天的許多系統已經(jīng)包含了一個(gè)FPGA,用于協(xié)議轉換、膠合邏輯或一些其它系統功能。如果那個(gè)FPGA沒(méi)有被完全利用,那么把DSP功能加入其中可以為系統節約成本。而且如果標準發(fā)生改變,使用FPGA就不會(huì )有任何風(fēng)險。FPGA的配置文件能夠像軟件那樣升級,盡管它們必須被存儲在系統的非易失性存儲器中。
當用FPGA進(jìn)行設計時(shí),如果有可能,最好堅持使用定點(diǎn)數系統。這有幾個(gè)原因。首先,所有嵌入在FPGA中的邏輯(乘法器、累加器)已經(jīng)被設計成定點(diǎn)運算單元,為FPGA用途而設計的大多數內核也是如此。其次,浮點(diǎn)的實(shí)現很復雜,而且需要規模相當大的硬件。在產(chǎn)品的開(kāi)發(fā)成本或每單位成本中,浮點(diǎn)解決方案的費用過(guò)高,因而可能不值得我們這樣做。最后,FPGA內部的定點(diǎn)格式為用戶(hù)提供了足夠的靈活性,因為表示一個(gè)數字的位數可以由用戶(hù)選擇,而且用戶(hù)可以在任何需要的地方設計舍位和進(jìn)位方式,從而使定點(diǎn)實(shí)現很實(shí)用。
當決定在定點(diǎn)實(shí)現中應該使用多少位數時(shí),請記住每增加一位會(huì )使信噪比提高約6dB。
正如市面上有許多軟件,而且某些軟件比其它軟件更適合于不同的場(chǎng)合一樣,創(chuàng )建FPGA設計的方法也有許多種。第一種設計技術(shù)是使用IP核來(lái)進(jìn)行設計。這是最容易的技術(shù),因為內核已經(jīng)是設計好并經(jīng)過(guò)優(yōu)化的。該技術(shù)通常能提供最佳的結果,因為專(zhuān)家在設計內核時(shí)已經(jīng)針對應用和FPGA架構采用了最佳的實(shí)現方式。
今天的大多數內核非常便于配置,例如,可選擇并行實(shí)現、串行實(shí)現或對稱(chēng)操作。因此,我們很有可能找到可以滿(mǎn)足大部分需求的內核。一些工具供應商和FPGA供應商甚至提供能夠使用傳統DSP系統設計軟件(諸如Matlab之類(lèi)的工具)來(lái)實(shí)現的內核,所以學(xué)習的過(guò)程并不是那么艱難。許多常見(jiàn)的內核對用戶(hù)是免費的,如FIR濾波器和乘法器。更為復雜的內核通常需要許可費,在多數情況下,這是一次性費用??偠灾?,如果設計人員缺乏FPGA設計經(jīng)驗且能以適當的價(jià)格發(fā)現適合其需要的內核,那么這種技術(shù)是最佳選擇。
尋找合適的內核
然而,我們并不是總能找到一個(gè)可以滿(mǎn)足系統特定需求的內核,或者,找到的內核只能提供設計的部分功能。在這種情況下,設計人員有必要使用一種現有的HDL語(yǔ)言來(lái)設計硬件。傳統的HDL包括VHDL和Verilog。然而,C語(yǔ)言也正在演變成一種HDL,而且越來(lái)越多的工具開(kāi)始支持C代碼的硬件綜合。HDL允許你完全定制自己的設計,而且可以與IP核一起使用:IP核只是簡(jiǎn)單地被HDL代碼“引用”或調用。在學(xué)習HDL時(shí),設計人員還需要學(xué)會(huì )如何使用邏輯綜合儀,它讀取HDL代碼并將它們映射成實(shí)際的硬件。傳統的HDL,即VHDL和Verilog,有更好的支持工具,但可能要求設計人員學(xué)習新的東西。大多數DSP工程師已經(jīng)懂得C語(yǔ)言,但軟件支持不是那么強大,所以可能更難達到最優(yōu)的設計性能。
如果已經(jīng)決定用C語(yǔ)言作為HDL,那么重要的事情不僅是要復用已被用于DSP軟件實(shí)現的C代碼,而且要把它們映射到硬件中。這將產(chǎn)生一種非常欠優(yōu)化的實(shí)現結果。設計人員希望使用一種已經(jīng)熟悉的語(yǔ)言,只有在為了獲得這種便利性時(shí)才應該采用C語(yǔ)言。代碼應該在實(shí)現方案已經(jīng)確定之后再編寫(xiě),以便代碼能反映實(shí)現方案。在硬件中執行并行操作既是有可能的,也是設計人員所期望的,而這在C語(yǔ)言中是不可能的,因為它是為純粹按順序執行的軟件而設計的。因此,已經(jīng)進(jìn)行了某些修改以允許C語(yǔ)言支持并行操作。在設計硬件之前,設計人員應該學(xué)會(huì )如何在C語(yǔ)言中高效地編寫(xiě)并行結構。這些結構因工具供應商的不同而略有差別。
現在,你可以開(kāi)始在FPGA中實(shí)現DSP功能了。在實(shí)現你的設計時(shí)要記住以下最重要的事情:
1)學(xué)習你選中的FPGA的架構和特性,在決定實(shí)現方案時(shí)努力利用它們。
2)了解DSP應用的性能需求。要了解的最重要指標包括:采樣率、采樣的位分辨率和系數、濾波器的級數或傅立葉變換(FFT)的數據點(diǎn)數。
3)根據性能需求決定FPGA架構。
4)在實(shí)現設計時(shí),要記住利用FPGA架構。
作者: Susannah Martin
高級設計工程師
Xilinx公司
評論