基于FPGA的數(shù)字音頻廣播系統(tǒng)信號(hào)調(diào)制系統(tǒng)的實(shí)現(xiàn)
引言
數(shù)字音頻廣播(Digital Audio Broadcasting,DAB)是廣播通信系統(tǒng)由模擬向數(shù)字化演進(jìn)的產(chǎn)物。在眾多的數(shù)字音頻系統(tǒng)方案中,Eureka 147 DAB系統(tǒng)是起源最早,也是技術(shù)發(fā)展最為完善的數(shù)字音頻系統(tǒng)。本文所設(shè)計(jì)的DAB基帶信號(hào)調(diào)制系統(tǒng)依據(jù)Eureka 147系統(tǒng)的技術(shù)要求。本文采用基于模型的系統(tǒng)沒(méi)計(jì)方法,首先對(duì)DAB基帶信號(hào)調(diào)制系統(tǒng)的各個(gè)模塊進(jìn)行算法層建模,之后利用Simulink平臺(tái)以及Xilinx公司提供的可編程硬件模型庫(kù),將系統(tǒng)的算法層模型轉(zhuǎn)換為可編程硬件模型,最后利用Xilinx公司的System Generator軟件將經(jīng)過(guò)驗(yàn)證的Simulink模型自動(dòng)轉(zhuǎn)換為FPGA可實(shí)現(xiàn)工程。
1 DAB信號(hào)調(diào)制系統(tǒng)簡(jiǎn)介
DAB系統(tǒng)基帶信號(hào)處理鏈可以分為三個(gè)主要模塊:第一個(gè)模塊為信源編碼系統(tǒng),負(fù)責(zé)輸入音頻及數(shù)據(jù)源文件,并按照相關(guān)標(biāo)準(zhǔn)對(duì)不同的源文件進(jìn)行信源編碼,然后將編碼后的數(shù)據(jù)流復(fù)用轉(zhuǎn)換為特定的幀結(jié)構(gòu);第二個(gè)模塊對(duì)經(jīng)過(guò)信源編碼的幀數(shù)據(jù)進(jìn)行時(shí)域交織、信道編碼等處理,然后將處理得到的數(shù)據(jù)復(fù)用轉(zhuǎn)換為比特流;最后一個(gè)模塊為信號(hào)調(diào)制系統(tǒng),這部分系統(tǒng)將對(duì)輸入的比特流進(jìn)行正交相移鍵控調(diào)制、頻域交織、差分調(diào)制、正交頻分復(fù)用等一系列處理,并最終輸出完整的DAB基帶信號(hào)。圖1給出了DAB信號(hào)調(diào)制系統(tǒng)框圖。
2 DAB信號(hào)調(diào)制系統(tǒng)算法建模
為了能夠最終在FPGA芯片中實(shí)現(xiàn)DAB基帶架構(gòu)信號(hào)調(diào)制系統(tǒng)結(jié),首先對(duì)整個(gè)系統(tǒng)進(jìn)行算法層建模,DAB信號(hào)調(diào)制系統(tǒng)結(jié)構(gòu)框圖如圖2所示。DAB信號(hào)調(diào)制系統(tǒng)的算法層模型具有以下主要模塊:觸發(fā)序列檢測(cè)子系統(tǒng)、系統(tǒng)時(shí)鐘發(fā)生子系統(tǒng)、編碼QPSK映射系統(tǒng)、頻率交織子系統(tǒng)、差分調(diào)制子系統(tǒng)、OFDM子系統(tǒng)等。需要說(shuō)明的是,幾乎每一個(gè)子系統(tǒng)(例如頻率交織系統(tǒng))都有自己的時(shí)鐘域,并且系統(tǒng)時(shí)鐘發(fā)生所提供的輸出遠(yuǎn)比一個(gè)單一時(shí)鐘信號(hào)復(fù)雜。
2.1 觸發(fā)序列檢測(cè)及系統(tǒng)時(shí)鐘子系統(tǒng)
存DAB信號(hào)調(diào)制系統(tǒng)中,需要沒(méi)計(jì)一個(gè)相應(yīng)的序列檢測(cè)系統(tǒng)來(lái)識(shí)別所接收到的數(shù)據(jù)流,當(dāng)數(shù)據(jù)流中不包含觸發(fā)序列時(shí),DAB信號(hào)調(diào)制系統(tǒng)處于休眠狀態(tài),系統(tǒng)輸出為零;當(dāng)檢測(cè)到觸發(fā)序列時(shí),序列檢測(cè)系統(tǒng)將發(fā)出使能信號(hào),使DAB信號(hào)調(diào)制系統(tǒng)對(duì)觸發(fā)序列之后的數(shù)據(jù)流進(jìn)行處理。
狀態(tài)機(jī)是實(shí)現(xiàn)這個(gè)觸發(fā)序列識(shí)別子系統(tǒng)的一個(gè)直觀有效的方法。由于所要設(shè)計(jì)的DAB信號(hào)調(diào)制系統(tǒng)是一個(gè)復(fù)雜的實(shí)時(shí)信號(hào)處理系統(tǒng),因此需要為系統(tǒng)建立全局時(shí)鐘來(lái)規(guī)范處理時(shí)序。還需注意,系統(tǒng)的各個(gè)子系統(tǒng)之間的處理時(shí)序必須協(xié)調(diào)一致,否則輸出端的DAB基帶信號(hào)其物理層或邏輯層的幀結(jié)構(gòu)會(huì)遭到破壞,全局時(shí)鐘為各個(gè)子系統(tǒng)的協(xié)調(diào)工作提供了一個(gè)整體時(shí)序框架。同時(shí),那些需要進(jìn)行復(fù)雜處理的子系統(tǒng)(例如頻率交織子系統(tǒng)、差分調(diào)制子系統(tǒng)等)可以以全局時(shí)鐘為架構(gòu),建立自己的時(shí)鐘域以及處理控制信號(hào)。全局時(shí)鐘系統(tǒng)的建立主要依靠計(jì)數(shù)器及邏輯比較模塊的組合使用。
2.2 編碼QPSK映射子系統(tǒng)
假設(shè)DAB信號(hào)調(diào)制系統(tǒng)所接收到的比特碼流中已經(jīng)包含了塊劃分結(jié)構(gòu)的信息,QPSK符號(hào)映射子系統(tǒng)將從接收到的編碼數(shù)據(jù)流中將包含塊劃分的碼元對(duì)還原,并對(duì)碼流進(jìn)行QPSK調(diào)制,即將還原的碼元對(duì)映射為QPSK符號(hào)。這個(gè)子系統(tǒng)的算法較為直觀,在還原碼元對(duì)的處理中,涉及到的串并轉(zhuǎn)換利用解時(shí)分復(fù)用算法實(shí)現(xiàn),而QPSK符號(hào)的映射通過(guò)查找表實(shí)現(xiàn)。
2.3 頻率交織子系統(tǒng)
頻率交織算法將改變QPSK符號(hào)與載波之間的對(duì)應(yīng)順序。實(shí)時(shí)處理要求大大增加了頻率交織子系統(tǒng)的算法模型復(fù)雜度。為了實(shí)現(xiàn)對(duì)輸入QPSK符號(hào)流的實(shí)時(shí)頻率交織處理,本文設(shè)計(jì)了雙緩沖空間算法模型,如圖3所示。
雙緩沖空間算法模型核心思想是提供兩個(gè)并行的緩沖空間。在同一OFDM符號(hào)周期(384個(gè)QPSK符號(hào)周期),一個(gè)緩沖空間接收QPSK碼流,而另一個(gè)緩沖空間處于讀入鎖定狀態(tài),并進(jìn)行靜態(tài)頻率交織處理。此時(shí)系統(tǒng)的輸入端連接至前一個(gè)緩沖空間,而系統(tǒng)的輸出則由第二個(gè)緩沖空間提供。在一個(gè)OFDM符號(hào)周期結(jié)束后,兩個(gè)緩沖空間的工作狀態(tài)對(duì)調(diào),之前接收QPSK碼流的緩沖空間處于讀入鎖定狀態(tài),進(jìn)行靜態(tài)頻率交織處理并提供系統(tǒng)輸出;而之前進(jìn)行頻率交織的緩沖空間則處于讀入狀態(tài),并從系統(tǒng)的輸入端接收串行的QPSK碼流。
2.4 差分調(diào)制子系統(tǒng)
經(jīng)過(guò)頻率交織子系統(tǒng)的處理,經(jīng)過(guò)QPSK涮制的符號(hào)流,其在一個(gè)OFDM符號(hào)周期內(nèi)的載波對(duì)應(yīng)關(guān)系發(fā)生了改變,從而使頻域的信息流得到了一定程度的無(wú)序化,提高了信號(hào)抗衰落的能力。但是,由于調(diào)制方式為QPSK,信息被調(diào)制在載波的絕對(duì)相位上,這就要求接收端的參考基準(zhǔn)相位具有很高的穩(wěn)定性,否則可能會(huì)發(fā)生由于參考基準(zhǔn)相位的不穩(wěn)定而導(dǎo)致碼信息的誤譯情況。為了進(jìn)一步增強(qiáng)系統(tǒng)的可靠性,DAB基帶信號(hào)處理過(guò)程中引入了差分調(diào)制,將QPSK符號(hào)流轉(zhuǎn)換為DQPSK符號(hào)流,從而將信息調(diào)制在載波的相對(duì)相位信息上,提高了系統(tǒng)的穩(wěn)定性。
在差分調(diào)制系統(tǒng)算法模型中,需要一個(gè)本地存儲(chǔ)區(qū)存儲(chǔ)頻率參考符號(hào),每一幀信號(hào)的差分調(diào)制處理流程如下。存幀頭空符號(hào)輸入的時(shí)候,系統(tǒng)不做任何處理,直接輸出空信號(hào)。在頻率參考符號(hào)周期內(nèi),系統(tǒng)的輸入端依舊是空信號(hào),但是本地存儲(chǔ)區(qū)將會(huì)在系統(tǒng)的輸出端提供頻率參考符號(hào),同時(shí)將頻率參考符號(hào)引入反饋緩沖區(qū)。當(dāng)?shù)谝粋€(gè)FIC符號(hào)輸入的時(shí)候,反饋緩沖區(qū)的頻率參考符號(hào)會(huì)與之同步,對(duì)應(yīng)的QPSK符號(hào)做模8相加,相應(yīng)的子載波進(jìn)行了差分調(diào)制,同時(shí)輸出端經(jīng)過(guò)模8相加的編碼DQPSK符號(hào)被引入反饋緩沖區(qū)。當(dāng)?shù)诙€(gè)FIC符號(hào)輸入的時(shí)候,以反饋緩沖區(qū)中經(jīng)過(guò)差分調(diào)制的前一個(gè)OFDM符號(hào)為基準(zhǔn)進(jìn)行模8相加,當(dāng)一幀信號(hào)的所有OFDM符號(hào)都經(jīng)過(guò)處理后,反饋緩沖區(qū)將被清零,為相位參考符號(hào)的冉次裝載做準(zhǔn)備。圖4描述了差分調(diào)制系統(tǒng)的算法模型。
經(jīng)過(guò)差分調(diào)制得到的DQPSK符號(hào)流將通過(guò)零值插入子系統(tǒng)、OFDM子系統(tǒng)和數(shù)據(jù)成形子系統(tǒng)的處理。零值插入子系統(tǒng)的算法模型與雙緩沖區(qū)算法模型類(lèi)似,OFDM子系統(tǒng)的核心算法為快速傅里葉逆變換,數(shù)據(jù)成形子系統(tǒng)將會(huì)淵整經(jīng)過(guò)處理得到的OFDM符號(hào)的數(shù)據(jù)格式并向輸出端提供最終的DAB基帶信號(hào)數(shù)據(jù)流。
3 DAB信號(hào)調(diào)制系統(tǒng)的Simulink模型
利用Xilinx公司提供的可編譯硬件模型庫(kù),在Simulink平臺(tái)中建立硬件層DAB系統(tǒng)模型來(lái)實(shí)現(xiàn)算法層模型的功能。本節(jié)僅簡(jiǎn)要介紹部分子系統(tǒng)的頂層Simulink模型。圖5為頻率交織子系統(tǒng)Simulink頂層模型。
整個(gè)頻率交織子系統(tǒng)Simulink模型可以劃分為兩個(gè)主體:一個(gè)是時(shí)鐘控制部分,一個(gè)是緩沖空間部分。在Simulink平臺(tái)中,使用地址可控移位寄存器(AddressableShift Register,ASR)作為緩沖空間,ASR具有三個(gè)輸入端口,一個(gè)數(shù)據(jù)輸入端,兩個(gè)控制端,可以通過(guò)兩個(gè)控制端來(lái)實(shí)現(xiàn)對(duì)緩沖區(qū)的控制。具體的說(shuō),當(dāng)使能信號(hào)有效時(shí),ASR將輸入端數(shù)據(jù)讀入,同時(shí)根據(jù)地址端口的控制信號(hào)輸出指定地址區(qū)的內(nèi)容;當(dāng)使能信號(hào)無(wú)效時(shí),ASR將不會(huì)讀入任何數(shù)據(jù),但會(huì)在輸出端輸出指定地址區(qū)的內(nèi)容。使用兩個(gè)深度為384的ASR來(lái)構(gòu)成頻率交織系統(tǒng)的雙緩沖區(qū),根據(jù)圖3所示,要想獲得要求的交織輸出,需要在雙緩沖區(qū)的兩個(gè)輸出端之問(wèn)恰當(dāng)?shù)那袚Q。因此,使用復(fù)用模塊(Mux)來(lái)整合兩個(gè)緩沖區(qū)的輸出,從而得到頻率交織子系統(tǒng)的輸出。
圖6為差分調(diào)制系統(tǒng)的Simulink頂層模型,整個(gè)模型具有三個(gè)輸入端口,在圖中做出標(biāo)記的為數(shù)據(jù)輸入端口,經(jīng)過(guò)頻率交織子系統(tǒng)處理的QPSK碼流通過(guò)這個(gè)端口輸入差分調(diào)制子系統(tǒng)。其余兩個(gè)端口輸入的為系統(tǒng)時(shí)鐘信息。其中,一個(gè)為系統(tǒng)時(shí)鐘框架中的幀同步時(shí)鐘,另一個(gè)為系統(tǒng)時(shí)鐘框架中的粗同步信號(hào)指示時(shí)鐘?;谶@兩個(gè)系統(tǒng)時(shí)鐘信號(hào),相關(guān)的計(jì)算單元計(jì)算產(chǎn)生差分調(diào)制系統(tǒng)的本地時(shí)鐘,并進(jìn)一步得到相關(guān)模塊的控制時(shí)序。
本地存儲(chǔ)單元為一個(gè)深度為384存儲(chǔ)單元的單端口只讀存儲(chǔ)器,本地存儲(chǔ)單元中存放著事先計(jì)算得到的編碼相位參考符號(hào),在控制時(shí)序的控制下,差分調(diào)制系統(tǒng)在每幀信號(hào)的幀頭適時(shí)地從本地存儲(chǔ)單元中讀出相位參考符號(hào),并將其放入反饋緩沖區(qū)中,為幀結(jié)構(gòu)整合以及差分調(diào)制做準(zhǔn)備。反饋緩沖區(qū)為一個(gè)移位寄存器,它將為輸入的幀符號(hào)流提供差分調(diào)制的基準(zhǔn)符號(hào)差分調(diào)制將由編碼QPSK符號(hào)流的模8相加計(jì)算實(shí)現(xiàn),為了增強(qiáng)系統(tǒng)的穩(wěn)定性,使用加法模塊與一個(gè)查找表實(shí)現(xiàn)模8相加計(jì)算。從圖6中可以清楚地看到,經(jīng)過(guò)差分調(diào)制的碼流通過(guò)反饋回路引入復(fù)用模塊,在嚴(yán)格的時(shí)序控制下參與后續(xù)碼流的差分調(diào)制。
4 DAB信號(hào)調(diào)制系統(tǒng)的實(shí)際測(cè)試
利用Xilinx公司的System Generator軟件將在Simulink平臺(tái)中經(jīng)過(guò)仿真驗(yàn)證的DAB信號(hào)調(diào)制系統(tǒng)硬件模型自動(dòng)轉(zhuǎn)換為可實(shí)現(xiàn)在FPGA芯片中的硬件工程。所選用的FPGA芯片為Xilinx公司的Virtex 6系列,型號(hào)為xc6vlx240t-1fff1156。
為了測(cè)試FPGA芯片內(nèi)部所實(shí)現(xiàn)的DAB信號(hào)調(diào)制系統(tǒng),從電腦端通過(guò)PCIe向FPGA芯片傳送一個(gè)任意數(shù)據(jù)文件,作為激勵(lì)整數(shù)源,這個(gè)數(shù)據(jù)文件的起始部分包含了十六進(jìn)制數(shù)據(jù)串“DEAD BEEF”,用來(lái)開(kāi)啟FPGA芯片中的DAB信號(hào)調(diào)制系統(tǒng)。經(jīng)過(guò)信號(hào)調(diào)制系統(tǒng)實(shí)時(shí)處理后的信號(hào)數(shù)據(jù)被傳回電腦端,并記錄在一個(gè)名為dabout.data的數(shù)據(jù)文件中,利用MATLAB軟件打開(kāi)并分析這個(gè)數(shù)據(jù)文件,驗(yàn)證其所記錄的信號(hào)是否具有要求的時(shí)域幀結(jié)構(gòu)及OFDM信號(hào)的頻譜特性。測(cè)試平臺(tái)的搭建如圖7所示。
通過(guò)對(duì)dabout.data文件的分析,DAB信號(hào)調(diào)制系統(tǒng)所實(shí)時(shí)處理輸出的信號(hào)具備完整的幀結(jié)構(gòu),并且其頻譜特性良好,圖8、圖9為分析得到的時(shí)域及頻域結(jié)果。
結(jié)語(yǔ)
本文利用基于模型沒(méi)汁的思想,通過(guò)算法層和硬件層建模,利用Simulink平臺(tái)和Xilinx公司提供的可編譯硬件模型庫(kù),設(shè)計(jì)并在FPGA芯片中實(shí)現(xiàn)了Eureka 147數(shù)字音頻廣播基帶信號(hào)處理鏈中的信號(hào)調(diào)制系統(tǒng)。實(shí)際測(cè)試表明,所沒(méi)汁的系統(tǒng)能夠?qū)崟r(shí)處理輸入數(shù)據(jù)流,并且所提供的輸出信號(hào)滿(mǎn)足DAB基帶信號(hào)的時(shí)域幀結(jié)構(gòu)和頻域譜特征的要求。
評(píng)論