基于FPGA的水聲信號采樣存儲系統(tǒng)設(shè)計
摘要:為了提高水聲傳感器網(wǎng)絡(luò)通信系統(tǒng)試驗(yàn)和算法研究的效率,水聲傳感器網(wǎng)絡(luò)節(jié)點(diǎn)需要具有水聲通信的原始波形數(shù)據(jù)的記錄功能。本文設(shè)計了一種水聲信號采樣存儲系統(tǒng),實(shí)現(xiàn)了數(shù)據(jù)變速率AD采集、數(shù)據(jù)環(huán)形存儲、數(shù)據(jù)連續(xù)讀取、數(shù)據(jù)飛讀等功能。該系統(tǒng)具有結(jié)構(gòu)清晰,集成度高,工作可靠等優(yōu)點(diǎn),可以有效提高水聲傳感器網(wǎng)絡(luò)試驗(yàn)的效率。
1 引言
近幾十年來,隨著世界各國對海洋開發(fā)和利用步伐的加快,對海洋信息進(jìn)行連續(xù)實(shí)時監(jiān) 測的意義越來越重要。水聲無線傳感器網(wǎng)絡(luò)(Underwater AcouSTic sensor network,簡稱 UW-ASN)是海洋環(huán)境立體監(jiān)測系統(tǒng)中的研究熱點(diǎn),它由大量具有計算和通信能力的傳感器 節(jié)點(diǎn)組成,各節(jié)點(diǎn)被分布在指定的海域,執(zhí)行連續(xù)的協(xié)同監(jiān)測任務(wù)。鑒于水聲信道的帶寬有 限、海洋噪聲復(fù)雜、具有多途效應(yīng)和多普勒效應(yīng)[1],這些特殊性給UW-ASN 中的水聲通信、 協(xié)議設(shè)計等方面帶來了很大的挑戰(zhàn),增加了傳感器網(wǎng)絡(luò)設(shè)計的復(fù)雜性。
為了充分了解水聲通信過程中的數(shù)據(jù)變化,方便對于信道特性分析以及通信方式的選 擇,以及大量傳感器網(wǎng)絡(luò)節(jié)點(diǎn)之間通信數(shù)據(jù)的存儲,傳感器節(jié)點(diǎn)必須具備數(shù)據(jù)采集功能。傳 統(tǒng)的水聲數(shù)據(jù)采集存儲系統(tǒng)主要由數(shù)據(jù)采集板卡組成,能夠滿足數(shù)據(jù)采集功能,缺點(diǎn)是體積 大,便攜性差,難以作為傳感器節(jié)點(diǎn)的組成部分應(yīng)用于實(shí)際設(shè)計中。
本文針對這一問題,提出了基于SOPC(System ON Programmable Chip)的設(shè)計方案[2],利 用其配置靈活、擴(kuò)展性強(qiáng)、接口豐富等優(yōu)點(diǎn),以Altera 公司的Cyclone II 系列FPGA 為基 礎(chǔ),設(shè)計傳感器節(jié)點(diǎn)數(shù)據(jù)采集存儲系統(tǒng),降低了設(shè)計的風(fēng)險,完善了傳感器節(jié)點(diǎn)功能要求。
2 采樣存儲系統(tǒng)概述
本設(shè)計系統(tǒng)的結(jié)構(gòu)如圖1 所示,在整個傳感器節(jié)點(diǎn)的系統(tǒng)當(dāng)中,將AD 芯片輸出的12 位數(shù)據(jù),通過設(shè)計SDRAM 控制IP 核,實(shí)現(xiàn)數(shù)據(jù)變速率AD 采集、數(shù)據(jù)環(huán)形存儲、數(shù)據(jù)環(huán) 形讀取、以及數(shù)據(jù)飛讀(實(shí)時數(shù)據(jù)讀?。┑裙δ?。同時,對于NiosII CPU 設(shè)計串口(UART) 協(xié)議,以便前置機(jī)與傳感器節(jié)點(diǎn)通信,實(shí)現(xiàn)不同命令操作功能,方便對水聲試驗(yàn)過程中波形 數(shù)據(jù)的變化進(jìn)行仿真處理,以滿足試驗(yàn)要求。
本設(shè)計采用 MICRO 公司的MT48LC32M8A2 型號容量為32Mbyte 的SDRAM,芯片地 址線為25 位,每個地址存儲16 位數(shù)據(jù)。根據(jù)水聲通信試驗(yàn)要求,聲波頻率為40KHz,每 個正弦波采樣16 個點(diǎn),則采樣時鐘要求至少640KHz,本系統(tǒng)設(shè)計采樣時鐘最大40MHz。 同時,環(huán)形存儲深度最大為32Mbyte,每次采樣存儲數(shù)據(jù)占2byte,則至少可以采樣25 秒正 弦波數(shù)據(jù)。環(huán)形存儲區(qū)域大小,以及采樣時鐘都可以進(jìn)行參數(shù)化配置,能夠滿足試驗(yàn)要求。 系統(tǒng)整體分為硬件邏輯設(shè)計,與軟件程序設(shè)計兩部分。
3 系統(tǒng)整體設(shè)計
3.1 硬件邏輯設(shè)計
硬件邏輯設(shè)計主要包括主控IP 核設(shè)計與主端口IP 核設(shè)計兩部分工作,分別實(shí)現(xiàn)對于 AD 采樣數(shù)據(jù)的存儲和讀取時序控制,以及AVALON 總線的主端口建立的目的。硬件邏輯 利用IP 核模塊化,移植性好的特點(diǎn),方便整合到傳感器節(jié)點(diǎn)的整體設(shè)計當(dāng)中。作為傳感器 節(jié)點(diǎn)的組成部分,為水聲通信試驗(yàn)的順利進(jìn)行提供可靠保證。 硬件邏輯設(shè)計圖,如圖 2 所示。
3.1.1 SDRAM 主控IP 核設(shè)計
主控IP 核通過對于QuartusII 自帶的SDRAM 控制器進(jìn)行控制,實(shí)現(xiàn)變速率AD 采樣的 功能,以及讀寫SDRAM 的邏輯功能。由于SDRAM 控制器實(shí)現(xiàn)了對于SDRAM 芯片的時 序操作,所以讀寫時序設(shè)計是針對SDRAM 控制器進(jìn)行[3]。
系統(tǒng)讀 SDRAM 操作分為數(shù)據(jù)飛讀與數(shù)據(jù)環(huán)形讀取兩種功能[4]。其中,數(shù)據(jù)飛讀是將當(dāng)前AD 采樣值送回至CPU,并通過串口返回到前置機(jī),方便實(shí)時數(shù)據(jù)監(jiān)控。對于數(shù)據(jù)環(huán)形 讀取SDRAM 操作,通過設(shè)置首地址指針寄存器,在每次寫操作之后自動加一,實(shí)現(xiàn)環(huán)形 存儲水聲通信數(shù)據(jù)的目的。在每次環(huán)形數(shù)據(jù)讀取操作發(fā)起之前,預(yù)讀首地址指針寄存器,以 此為起始地址,始終讀取最新時刻的采樣存儲數(shù)據(jù)。 讀操作過程主要狀態(tài)機(jī),如圖 3 所示。
其中 work 過程包含的獨(dú)立狀態(tài)機(jī),由如下四部分構(gòu)成:
(1)first:片選有效,讀使能有效,送讀SDRAM 地址。
(2)second:讀使能有效,滿足SDRAM 控制器讀時序要求。
(3)third:判斷sdram_read_wait 信號值,如果為1,則維持當(dāng)前狀態(tài),同時讀使能信號置位;如果為0,則進(jìn)入下一狀態(tài)。
(4)fourth:判斷sdram_read_valid 信號值,如果為0,則維持當(dāng)前狀態(tài);如果為1,將讀回數(shù)據(jù)寫入讀SDRAM 數(shù)據(jù)寄存器,同時讀使能信號復(fù)位。
變速率AD 采集與數(shù)據(jù)環(huán)形存儲操作主要是由主控IP 核寫SDRAM 的過程實(shí)現(xiàn)。為保 持采樣時刻數(shù)據(jù)的穩(wěn)定性,系統(tǒng)對AD 時鐘進(jìn)行分頻,通過設(shè)置不同分頻寄存器,實(shí)現(xiàn)變速 率采樣的目的。數(shù)據(jù)環(huán)形存儲SDRAM 操作是靠每次分頻時鐘SDRAM_WRITE_CLK 的上 升沿觸發(fā),基本時序過程與讀過程狀態(tài)機(jī)類似。系統(tǒng)從0 地址開始寫操作,一旦寫滿預(yù)設(shè)存 儲區(qū)域,則從下一寫時刻開始,數(shù)據(jù)寫入初始地址,以此類推,實(shí)現(xiàn)環(huán)形存儲操作。同時, 讀寫操作不能進(jìn)行同時進(jìn)行,通過讀寫選擇控制器的設(shè)置,分別按照不同狀態(tài)進(jìn)行操作。
3.1.2 主端口IP 核
因?yàn)镾DRAM 主控IP 核在NiosII 軟核CPU 總線控制下作為從端口,所以不能主動發(fā)起 讀寫操作,因此必須新建第二條AVALON 總線,設(shè)計讀寫主端口IP 核,才能實(shí)現(xiàn)讀寫外接 SDRAM 芯片的功能。主端口IP 核的時序操作,是對主控IP 核的時序轉(zhuǎn)接,面向SDRAM 控制器進(jìn)行控制。根據(jù)讀寫使能信號不同,進(jìn)行不同時序傳送。
3.2 軟件程序設(shè)計
NiosII CPU 作為軟核,可方便進(jìn)行模塊化操作,具有可移植,可配置,易整合的特點(diǎn)。 在本設(shè)計當(dāng)中,軟件設(shè)計主要實(shí)現(xiàn)以下五種主要功能:單點(diǎn)寫SDRAM,單點(diǎn)讀SDRAM, 數(shù)據(jù)飛讀,連續(xù)寫SDRAM,連續(xù)讀SDRAM 的功能。在程序當(dāng)中留有接口,方便其他功能 整合,符合模塊化設(shè)計的要求。
首先,完成功能的初始化,主要是設(shè)置選擇操作模式與存儲 AD 數(shù)據(jù)的時鐘分頻系數(shù)。 作為SDRAM 的讀操作必須滿足寫滿之后,方可進(jìn)行,所以初始化主控IP 核為寫SDRAM 操作。設(shè)置分頻系數(shù)可以按照如下公式計算:
其次,通過對于串口進(jìn)行協(xié)議解析,分別實(shí)現(xiàn)五部分預(yù)設(shè)功能。主程序操作流程如圖4所示。
實(shí)現(xiàn)的五部分功能依次為:
(1) 單點(diǎn)寫SDRAM 操作:CPU 給出地址,數(shù)據(jù),以及寫操作選擇信號。
(2) 連續(xù)寫SDRAM 操作:CPU 只是給出寫操作選擇信號,由主控IP 核將AD 數(shù)據(jù)寫入至SDRAM 環(huán)形存儲區(qū)域內(nèi)。
(3) 數(shù)據(jù)飛讀操作:只需要讀取飛讀數(shù)據(jù)寄存器,可以將當(dāng)前狀態(tài)AD 輸入值送回至CPU,偵測當(dāng)前狀態(tài)。
(4) 單點(diǎn)讀SDRAM 操作:CPU 送出讀SDRAM 地址,然后選擇讀操作,設(shè)置控制寄存器為0x00000001,啟動讀操作。最后將讀回數(shù)據(jù)通過串口實(shí)時回傳。
(5) 連續(xù)讀SDRAM 操作:是將基本讀操作進(jìn)行循環(huán)執(zhí)行。設(shè)置串口回傳緩沖區(qū)為80 字節(jié),連續(xù)讀SDRAM 數(shù)據(jù)并連續(xù)填寫緩沖區(qū),一旦填滿,則啟動串口發(fā)送。同時,讀地址在每次讀操作結(jié)束后自動加一,當(dāng)操作次數(shù)達(dá)到環(huán)形空間最大存儲數(shù)量時,停止連續(xù)讀操作。
4 結(jié)束語
本設(shè)計作為水下無線傳感器網(wǎng)絡(luò)(UW-ASN)節(jié)點(diǎn)的設(shè)計組成部分,具有結(jié)構(gòu)清楚,功 能完善,整合性強(qiáng),性能可靠的特點(diǎn)。設(shè)計整體架構(gòu)的模塊化操作以及可編程性,使得整個 設(shè)計開發(fā)的具有靈活性與低風(fēng)險性。經(jīng)項(xiàng)目試驗(yàn)驗(yàn)證,該數(shù)據(jù)采集與存儲設(shè)計滿足傳感器節(jié) 點(diǎn)的功能要求,為水聲通信試驗(yàn)順利進(jìn)行以及水下無線傳感器網(wǎng)絡(luò)的功能完善提供可靠保證。
本文創(chuàng)新點(diǎn):在系統(tǒng)功能設(shè)計當(dāng)中,充分考慮了模塊的可重用性和可移植性,通過IP核的設(shè)計實(shí)現(xiàn)底層驅(qū)動,提高系統(tǒng)集成度,充分發(fā)揮了SOPC技術(shù)的優(yōu)勢。