陳林軍,劉鵬,2,姜智譯
(1.后勤工程學院 后勤信息工程系,重慶401311;2.重慶通信學院;3.65113部隊)
?
DSP和FPGA的雙核并行通信方法設計與應用※*
陳林軍1,劉鵬1,2,姜智譯3
(1.后勤工程學院 后勤信息工程系,重慶401311;2.重慶通信學院;3.65113部隊)
摘要:為解決雷達信號處理系統雙核通信問題,設計了兩種DSP和FPGA之間的并行通信方法,分別通過DSP的外部接口XINTF訪問FPGA內部FIFO和雙口RAM,利用DSP的讀寫使能信號作為FIFO和RAM的讀寫時鐘信號。通過對兩種并行通信方法進行對比分析,指出雷達信號處理系統中雙核通信應該采用DSP和FPGA內部FIFO的方法。
關鍵詞:DSP;FPGA;并行通信;外部接口XINTF;FIFO;雙口RAM
引言

1DSP與FPGA內部FIFO并行通信方法
1.1設計思想
在雷達信號處理系統中,數據的流向如圖1所示。首先FPGA接收高速并行A/D轉換的數字信號,DSP讀取FPGA獲取的信號序列并進行數字信號處理,得到距離信息,然后DSP將距離信息發送至FPGA,FPGA控制LCD顯示屏顯示距離信息。

圖1 數據的流向
FPGA的設計采用VHDL硬件描述語言,利用內部RAM資源生成FIFO模塊,將FPGA的FIFO模塊作為DSP的外圍設備,DSP根據FIFO的存儲狀態,通過外部接口XINTF對FIFO模塊進行讀寫操作。
1.2硬件設計
根據設計思想,搭建了DSP和FPGA通信的硬件實驗平臺,硬件連接示意圖如圖2所示。

圖2 DSP與FPGA連接示意圖

1.3軟件設計
1.3.1FPGA內部FIFO模塊設計
利用Altera公司的QuartusII集成開發環境,在FPGA中實現FIFO有兩種方式:通過編寫VHDL程序實現和利用軟件中MegaWizard Plug-In Manager進行配置[6]。本文選用第二種實現方式,通過向導配置FIFO的數據寬度、深度和控制信號等參數。讀寫使能信號根據FIFO的空、滿狀態,通過編寫VHDL程序在FPGA內部邏輯實現。
DSP每進行一次讀(寫)操作,時序分為3個階段[7]:前導(Lead)、有效(Active)和跟蹤(Trail)。在有效階段讀(寫)使能信號拉低一次,為此,本設計將DSP讀(寫)使能信號經過非門取反后作為FIFO的讀(寫)時鐘信號,FIFO的讀(寫)使能信號有效時,在時鐘信號的上升沿數據將被讀出(寫入)FIFO。系統通過數據總線進行數據的讀寫操作,因此FPGA的數據線引腳設置為雙向傳輸(BIDIR)模式。FIFO模塊圖略——編者注,當FIFO的讀使能有效(rdreq=1)時,數據只能由q端口經三態門輸出;當FIFO的寫使能有效(wrreq=1)時,數據只能經三態門寫入到data端口。
1.3.2DSP模塊設計
在本文中,DSP的工作流程如圖3所示。

圖3 系統工作流程圖

1.4DSP與FPGA內部FIFO的并行通信實驗
根據硬件設計,制作了連接DSP核心板和FPGA核心板的底板,搭建了DSP和FPGA通信的實驗平臺。在該實驗平臺上開展實測實驗,并通過CCS4.2開發環境,觀察DSP寫入和讀出FIFO的數據的結果如圖4所示。

圖4 DSP與FPGA內部FIFO并行通信實驗結果
從圖4中可以看出,生成的發送數據Send和接收到的數據Receive完全一樣。實驗結果表明,本文實現了DSP的XINTF接口到FPGA內部FIFO的雙向并行通信,DSP能夠通過寫操作將數據傳送至FPGA,通過讀操作將數據從FPGA傳送至DSP。
2DSP與FPGA雙口RAM并行通信方法
2.1設計思想
FPGA內部的存儲器資源可以配置成單口RAM、雙口RAM和三口RAM[8],雷達信號處理板涉及到DSP對RAM的讀寫操作和FPGA本身對內部RAM的讀寫操作,因此本文采用雙口RAM,實現DSP對其的讀寫操作。主要設計思想如下:DSP作為主設備,FPGA作為從設備,DSP通過XINTF的地址總線對FPGA內部的雙口RAM進行尋址,過程與DSP讀寫外擴存儲器芯片相似,本文使用16位數據寬度實現32個16位數據的雙向傳輸。
2.2硬件設計
根據設計思想,搭建DSP和FPGA通信的硬件實驗平臺,其中,DSP和FPGA之間的硬件連接示意圖如圖5所示。

圖5 DSP與FPGA連接示意圖

2.3軟件實現
2.3.1FPGA內部RAM模塊設計

2.3.2DSP模塊設計
DSP與FPGA內部RAM模塊通信時的工作流程如圖6所示,首先進行DSP的初始化設置,這一步與DSP訪問FIFO模塊類似;然后生成待寫入到RAM中的數據(本文設置為整數32~1,共32個數)并存儲到數組Send;隨后生成數據寫入的目標地址,ZONE7的尋址范圍為0x20 0000~0x2F FFFF,本文設計的RAM模塊大小為32×16位,因此尋址范圍為0x20 0000~0x20 001F,編程將數據1~32逆序寫入到RAM地址0x00~0x1F,然后將數據按地址從小到大順序讀出到數組Receive;順序讀完數據后,再按照先奇數地址后偶數地址的順序讀取數據到Receive1。

圖6 系統工作流程圖
2.4DSP與雙口RAM的并行通信實現
利用搭建好的包含DSP核心板和FPGA核心板的實驗平臺進行通信實測實驗,根據硬件連接關系,給FPGA模塊內的各信號分配引腳。完成后編譯生成.sof文件,將.sof文件下載到FPGA中運行;然后通過CCS4.2和XDS100V2仿真器編譯連接到DSP,運行DSP中的C語言程序,在Memory窗口中觀察DSP讀取的數據結果如圖7所示。

圖7 DSP與雙口RAM并行通信實驗結果
從圖7中可以看出,生成的發送數據Send和接收到的數據Receive完全一樣,而Receive1的數據則是先偶數、后奇數的排列,分別對應Send中奇數序號和偶數序號所指向的數據。實驗結果表明,該實驗方案可以實現DSP和FPGA之間的雙向并行通信,DSP可以通過尋址方式讀寫FPGA內部雙口RAM的數據。
3兩種通信方法對比分析
上述兩種方法都能夠實現DSP和FPGA之間的雙向并行通信,而且都是通過DSP的XINTF接口和FPGA的通用I/O引腳相連,構成數據交換的通道,由FPGA分別配置生成FIFO和雙口RAM,DSP利用XINTF接口的片選信號和讀寫使能信號作為控制FIFO和雙口RAM讀寫的控制信號,完成DSP和FPGA之間的雙向并行通信。
兩種通信方法最大的區別在于:FIFO不需要地址線,數據只能按照先后順序存儲和讀出,先存則先讀,后存則后讀,存滿后產生滿信號,不能再存,讀完后產生空信號,不能繼續讀;RAM有地址線,必須通過地址線才能對其進行讀寫,讀寫地址沒有順序的要求,可以讀寫RAM地址范圍內的任意地址所指向的數據,對同一地址的數據可以多次讀取而不會產生變化,但是對同一地址多次寫入則會覆蓋之前的數據。
由分析可知,本文設計的兩種DSP和FPGA之間的雙向并行通信方法各有優劣。DSP和FPGA內部FIFO之間的通信,硬件結構簡單,所需I/O引腳較少,數據的讀寫過程清新,不會造成數據順序的錯亂,然而,這種方法缺乏靈活性,不能隨意調用存儲器中的特定數據。而DSP和FPGA內部雙口RAM之間的通信在硬件上的開銷相對較大,占用較多的I/O引腳資源,讀寫RAM要首先生成目標地址,而后根據目標地址進行尋址讀寫數據,對雙口RAM的讀寫比較靈活,可以只取所需而不用將數據都讀出。
雷達信號處理系統所處理的數據是一系列離散時間序列,而A/D轉換器采集的數據就是離散時間序列,FPGA對這些數據進行存儲和DSP對這些數據的讀取都不需要有順序的變化,讀寫過程簡單,再考慮到芯片I/O引腳有限,所以在雷達信號處理系統中適合采用DSP和FPGA之間通過FIFO方式進行雙向并行通信。
結語
本文設計了兩種DSP和FPGA之間的并行通信方法,搭建了雙核并行通信硬件實驗平臺,實現了兩者間的雙向并行通信。在FPGA內部實現FIFO和雙口RAM,DSP作為主設備,通過外部接口XINTF對FPGA的內部FIFO和雙口RAM進行讀寫操作,從而完成兩者的通信。對兩種并行通信方法進行了對比分析,結合雷達信號處理系統的需求,認為雷達信號處理系統適合采用DSP與FPGA通過內部FIFO進行通信的方法。

參考文獻
[1] 劉良兵.頻率估計的信息融合方法及其應用[D] .重慶:后勤工程學院,2008.
[2] KENEFIC R J,NUTTALL A H.Maximum likelihood estimation of the parameters of a tone using real discrete data[J] .IEEE Journal of Oceanic Engineering,1987,12(1):279-280.
[3] 肖瑋,涂亞慶,劉良兵,等.頻率估計的一種多段同頻正弦信號頻譜相關算法[J] .電子與信息學報,2012,(3):564-570.
[4] 張卿杰.手把手教你學DSP——基于TMS320F28335[M] .北京:北京航空航天大學出版社,2015.
[5] 林琳.基于FPGA的雷達信號處理板設計與實現[J] .現代電子技術,2014(11):51-56.
[6] Altera.SCFIFO and DCFIFO IP Cores User Guide[EB/OL].[2015-08].https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/ug/ug_fifo.pdf.
[7] Texas Instruments.TMS320x2833x, 2823x DSC External Interface (XINTF) Reference Guide[EB/OL].[2015-08].http://www.ti.com/lit/ug/spru949d/spru949d.pdf.
[8] Altera.Internal Memory (RAM and ROM) User Guide[EB/OL].[2015-08].https://www.altera.com/en_US/pdfs/literature/an/an207.pdf.
陳林軍(碩士研究生),主要研究方向為檢測技術與自動化裝置;劉鵬(講師),主要研究方向為嵌入式控制系統;姜智譯(助理工程師),主要從事油庫自動化工作。
Design and Application of Dual-core Parallel Communication Method for FPGA and DSP※
Chen Linjun1,Liu Peng1,2,Jiang Zhiyi3
(1.Department of Information Engineering,Logistical Engineering University,Chongqing 401311,China;
2.Chongqing Communication Institute;3.Unit 65113)
Abstract:In order to solve the problem of dual-core communication in the radar signal processing system,two methods of parallel communication between DSP and FPGA are designed.The two methods access FPGA internal FIFO and dual-port RAM through the external interface XINTF of DSP.The read and write enable signals of DSP are used as the read and write clock signals of FIFO and dual-port RAM of FPGA.The internal FIFO dual-core communication between DSP and FPGA is a better choice in the radar signal processing system after comparing the two methods.
Key words:DSP;FPGA;parallel communication;external interface XINTF;FIFO;dual-port RAM
收稿日期:(責任編輯:薛士然2015-08-04)
基金項目:*國家自然科學基金(頻率估計的多段信號頻譜融合法及應用基礎,61271449,離散頻譜的變頻融合校正法及應用基礎研究,61302175);重慶市研究生科研創新項目(短時信號頻率估計的相位匹配方法及其應用,CYB14100)。
中圖分類號:TN919.5
文獻標識碼:A